Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #===============================================================================
- # Scripletter v1.03 by Zetu
- #===============================================================================
- module Z
- INPUT_LETTERS = [
- 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
- 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
- 'U', 'V', 'W', 'X', 'Y', 'Z'
- ]
- INPUT_NUMBERS = [
- '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'
- ]
- SHIFT_NUM = {
- 1 => '!', 2 => '@', 3 => '#', 4 => '$', 5 => '%',
- 6 => '^', 7 => '&', 8 => '*', 9 => '(', 0 => ')'
- }
- end
- class Scriptletter
- attr_accessor :active
- attr_reader :text
- attr_reader :width, :x, :y
- def initialize(x, y, width)
- @window = Script_Input_Window.new(x, y, width)
- @x = x
- @y = y
- @width = width
- @text = ""
- @active = true
- end
- def create_output(lines)
- @output.dispose unless @output.nil?
- @output = Output.new(self.x, self.y - lines*24, self.width, lines)
- end
- def height
- return 56
- end
- def clear
- @text = ""
- @window.text = @text
- @window.refresh
- end
- def add_key(value)
- Sound.play_decision
- @text += value
- @window.text = @text
- end
- def remove_key
- Sound.play_cancel
- @text = @text.chop
- @window.text = @text
- end
- def update
- JetInput.update
- return unless @active
- check_key_input_letters
- check_key_input_numbers
- check_special
- #~ detect_input
- @window.refresh
- end
- def detect_input
- for i in 0..0xFF
- if JetInput.trigger?(i)
- print i
- end
- end
- end
- def check_key_input_letters
- for key in Z::INPUT_LETTERS
- if eval("JetInput.trigger?(JetInput::#{key})")
- if JetInput.shift_state
- add_key(key.upcase)
- else
- add_key(key.downcase)
- end
- return
- end
- end
- end
- def check_key_input_numbers
- for key in Z::INPUT_NUMBERS
- if eval("JetInput.trigger?(JetInput::NUM_#{key})")
- if JetInput.press?(JetInput::SHIFT)
- add_key(Z::SHIFT_NUM[eval(key)])
- else
- add_key(key)
- end
- return
- end
- end
- end
- def check_special
- if JetInput.trigger?(JetInput::BACK) or JetInput.trigger?(JetInput::DELETE)
- remove_key
- elsif JetInput.trigger?(JetInput::SPACE)
- add_key(" ")
- elsif JetInput.trigger?(186)
- if JetInput.press?(JetInput::SHIFT)
- add_key(":")
- else
- add_key(";")
- end
- elsif JetInput.trigger?(219)
- unless JetInput.press?(JetInput::SHIFT)
- add_key("[")
- else
- add_key("{")
- end
- elsif JetInput.trigger?(221)
- unless JetInput.press?(JetInput::SHIFT)
- add_key("]")
- else
- add_key("}")
- end
- elsif JetInput.trigger?(222)
- unless JetInput.press?(JetInput::SHIFT)
- add_key("'")
- else
- add_key("\"")
- end
- elsif JetInput.trigger?(188)
- unless JetInput.press?(JetInput::SHIFT)
- add_key(",")
- else
- add_key("<")
- end
- elsif JetInput.trigger?(190)
- unless JetInput.press?(JetInput::SHIFT)
- add_key(".")
- else
- add_key(">")
- end
- elsif JetInput.trigger?(191)
- unless JetInput.press?(JetInput::SHIFT)
- add_key("/")
- else
- add_key("?")
- end
- elsif JetInput.trigger?(220)
- unless JetInput.press?(JetInput::SHIFT)
- add_key("\\")
- else
- add_key("|")
- end
- elsif JetInput.trigger?(189)
- unless JetInput.press?(JetInput::SHIFT)
- add_key("-")
- else
- add_key("_")
- end
- elsif JetInput.trigger?(187)
- unless JetInput.press?(JetInput::SHIFT)
- add_key("=")
- else
- add_key("+")
- end
- end
- end
- def dispose
- @window.dispose
- @output.dispose unless @output.nil?
- end
- def output
- return @output
- end
- end
- class Script_Input_Window < Window_Base
- attr_accessor :text
- def initialize(x, y, width)
- super(x, y, width, 56)
- @text = ""
- self.opacity = 0
- end
- def refresh
- self.contents.clear
- text = "@> #{@text}"
- text += "_" if (Graphics.frame_count % Graphics.frame_rate) > 40 if active
- self.contents.draw_text(0, 0, self.contents.width, WLH, text)
- end
- end
- class Output < Window_Base
- def initialize(x, y, width, lines = 1)
- super(x, y, width, lines*WLH + 32)
- @lines = lines
- @data = []
- self.opacity = 0
- end
- def print(string)
- @data.push(string)
- if @data.size > @lines
- @data.delete_at(0)
- end
- refresh
- end
- def clear
- @data = []
- refresh
- end
- def refresh
- self.contents.clear
- y = self.contents.height - WLH*@data.size
- for i in 0...@data.size
- self.contents.draw_text(0, y+i*WLH, self.contents.width, WLH, "@> #{@data[i]}")
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement