Advertisement
Zetu

Scriptletter v1.02

Jul 8th, 2011
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.51 KB | None | 0 0
  1. #===============================================================================
  2. # Scripletter v1.02 by Zetu
  3. #===============================================================================
  4.  
  5. module Z
  6.   INPUT_LETTERS = [
  7.    'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
  8.    'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
  9.    'U', 'V', 'W', 'X', 'Y', 'Z'
  10.   ]
  11.   INPUT_NUMBERS = [
  12.    '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'
  13.   ]
  14.   SHIFT_NUM = {
  15.    1 => '!', 2 => '@', 3 => '#', 4 => '$', 5 => '%',
  16.    6 => '^', 7 => '&', 8 => '*', 9 => '(', 0 => ')'
  17.   }
  18. end
  19.  
  20. class Scriptletter
  21.   attr_accessor :active
  22.   attr_reader   :text
  23.   attr_reader   :width
  24.  
  25.   def initialize(x, y, width)
  26.     @window = Script_Input_Window.new(x, y, width)
  27.     @width = width
  28.     @text = ""
  29.     @active = true
  30.   end
  31.  
  32.   def height
  33.     return 56
  34.   end
  35.  
  36.   def clear
  37.     @text = ""
  38.     @window.text = @text
  39.   end
  40.  
  41.   def add_key(value)
  42.     Sound.play_decision
  43.     @text += value
  44.     @window.text = @text
  45.   end
  46.  
  47.   def remove_key
  48.     Sound.play_cancel
  49.     @text = @text.chop
  50.     @window.text = @text
  51.   end
  52.  
  53.   def update
  54.     return unless @active
  55.     JetInput.update
  56.     check_key_input_letters
  57.     check_key_input_numbers
  58.     check_special
  59.     @window.refresh
  60.   end
  61.  
  62.   def check_key_input_letters
  63.     for key in Z::INPUT_LETTERS
  64.       if eval("JetInput.trigger?(JetInput::#{key})")
  65.         if JetInput.shift_state
  66.           add_key(key.upcase)
  67.         else
  68.           add_key(key.downcase)
  69.         end
  70.         return
  71.       end
  72.     end
  73.   end
  74.  
  75.   def check_key_input_numbers
  76.     for key in Z::INPUT_NUMBERS
  77.       if eval("JetInput.trigger?(JetInput::NUM_#{key})")
  78.         if JetInput.press?(JetInput::SHIFT)
  79.           add_key(Z::SHIFT_NUM[eval(key)])
  80.         else
  81.           add_key(key)
  82.         end
  83.         return
  84.       end
  85.     end
  86.   end
  87.  
  88.   def check_special
  89.     if JetInput.trigger?(JetInput::BACK) or JetInput.trigger?(JetInput::DELETE)
  90.       remove_key
  91.     elsif JetInput.trigger?(JetInput::SPACE)
  92.       add_key(" ")
  93.     end
  94.   end
  95.  
  96.   def dispose
  97.     @window.dispose
  98.     @window = nil
  99.   end
  100.  
  101. end
  102.  
  103. class Script_Input_Window < Window_Base
  104.   attr_accessor  :text
  105.  
  106.   def initialize(x, y, width)
  107.     super(x, y, width, 56)
  108.     @text = ""
  109.   end
  110.  
  111.   def refresh
  112.     self.contents.clear
  113.     text = "@> #{@text}"
  114.     text += "|" if (Graphics.frame_count % Graphics.frame_rate) > 40 if active
  115.     self.contents.draw_text(0, 0, self.contents.width, WLH, text)
  116.   end
  117.  
  118. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement