Eine Kommandozeilenoberfläche ("DOS-Fenster") für RGSS.
Verwendungsbeispiel:
Code:
CommandLine.start do
puts 'Hallo', 'Welt'
note 'Ist dieser Text grün?'
if read == :yes
puts 'Stimmt!'
warning 'Aber dieser ist orange!'
else
error 'Leider falsch.'
end
sleep 20
cls
puts 'Weißt du was...'
pause
puts 'Ach, nix'
exit
end
Ich denke das Beispiel ist relativ selbsterklärend. Wenn nicht, mal beide Skripte einfügen (das untere zuoberst und umgekehrt ^^) und ausprobieren.
Sooo, keine Ahnung wofür man sowas brauchen kann, aber ist lustig, RGSS mal selber zu kontrollieren ^^
Code:
#==============================================================================
# ** RGSS Command line interface
#------------------------------------------------------------------------------
# If you start your game with the command line parameter Import, a command
# line (DOS-like) interface is shown that will help you to import scripts
# permanently.
#==============================================================================
class CommandLine
def self.start font_size = 20, &block
new.instance_eval &block
end
def initialize font_size = 20
@font_size = font_size
@s = Sprite.new
@s.bitmap = Bitmap.new 640, 480 + [email protected]_size
@s.bitmap.font.size = @font_size
@row_count = 480 / @font_size
@row = 0
end
def puts *texts
# Prepare for transition
Graphics.freeze
texts = texts[[email protected]_count, @row_count] if texts.length > @row_count
too_many = @row - @row_count + texts.length
if too_many > 0
b = Bitmap.new 640, 480 + [email protected]_size
b.font.size = @font_size
b.font.color = @s.bitmap.font.color
b.blt 0, [email protected]_size*too_many, @s.bitmap, @s.bitmap.rect
@s.bitmap, b = b, @s.bitmap
b.dispose
@row = @row_count - too_many
end
texts.each do |text|
@s.bitmap.draw_text 0, @row * @font_size - 3, 640, [email protected]_size, text
@row += 1 if @row < @row_count
end
# Execute transition
Graphics.transition(5)
end
def note *texts
@s.bitmap.font.color.set 0, 255, 0
puts *texts
@s.bitmap.font.color.set 255, 255, 255
end
def warning head, *texts
@s.bitmap.font.color.set 255, 140, 0
puts 'WARNING: ' + head, *texts
@s.bitmap.font.color.set 255, 255, 255
end
def error head, *texts
@s.bitmap.font.color.set 255, 0, 0
puts 'ERROR: ' + head, *texts
@s.bitmap.font.color.set 255, 255, 255
end
def cls
@s.bitmap.clear
@row = 0
end
def read
puts ' (Enter = yes, Esc = no)'
loop do
Input.update
if Input.trigger? Input::B
return :no
elsif Input.trigger? Input::C
return :yes
end
Graphics.update
end
end
def sleep time
start = Graphics.frame_count
loop do
Graphics.update
if Graphics.frame_count - start == time
break
end
end
end
def pause
puts ' (Press any key to continue)'
loop do
Input.update
for i in 1..18
if Input.trigger?(i)
return
end
end
Graphics.update
end
end
def exit
puts '', 'Goodbye!'
pause
Graphics.freeze
@s.bitmap.dispose
@s.dispose
Graphics.transition 20
exit! 0
end
end
__________________
"So, und jetzt Schluss mit dem Lamentieren - lasst uns etwas Kunst machen!!!" - GS_Raphael