#==============================================================================
# * Window_NameInput
#------------------------------------------------------------------------------
#  In the name input picture, it is the window which selects letter.
#==============================================================================
class Window_NameInput < Window_Base
  CHARACTER_TABLE =
  [
    "1","2","3","4","5",
    "!","@","#","$","%",
    "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"," "," "," "," ",
    " "," "," "," "," ",
    "6","7","8","9","0",
    "^","&","*","(",")",
    "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"," "," "," "," ",
    " "," "," ", " "," ",
    "๑","๒","๓","๔","๕",
    "<",">","?","฿","-",
    "ก","ข","ฃ","ค","ฅ",
    "ซ","ฌ","ญ","ฎ","ฏ",
    "ต","ถ","ท","ธ","น",
    "ฟ","ภ","ม","ย","ร",
    "ห","ฬ","อ","ฮ","",
    "โ","ใ","ไ","ั","ิ",
    "่","้","๋","๊","็",
    "๖","๗","๘","๙","๐",
    "+","_","/","[","]",
    "ฆ","ง","จ","ฉ","ช",
    "ฐ","ฑ","ฒ","ณ","ด",
    "บ","ป","ผ","ฝ","พ",
    "ล","ว","ศ","ษ","ส",
    "ะ","า","ำ","เ","แ",
    "ี","ึ","ื","ุ","ู",
    " "," "," "," "," ",
  ]
  #--------------------------------------------------------------------------
  # - Object initialization
  #--------------------------------------------------------------------------
  def initialize
    super(0, 128, 640, 352)
    self.contents = Bitmap.new(width - 32, height - 32)
    @index = 0
    refresh
    update_cursor_rect
  end
  #--------------------------------------------------------------------------
  # - Acquisition of letter
  #--------------------------------------------------------------------------
  def character
    return CHARACTER_TABLE[@index]
  end
  #--------------------------------------------------------------------------
  # - Refreshment
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    for i in 0..179
      x = 4 + i / 5 / 9 * 152 + i % 5 * 28
      y = i / 5 % 9 * 32
      self.contents.draw_text(x, y, 28, 32, CHARACTER_TABLE[i], 1)
    end
    self.contents.draw_text(544, 9 * 32, 64, 32, "Accept", 1)
  end
  #--------------------------------------------------------------------------
  # - Rectangle renewal of cursor
  #--------------------------------------------------------------------------
  def update_cursor_rect
    # When cursor position [ decision ] is
    if @index >= 180
      self.cursor_rect.set(544, 9 * 32, 64, 32)
    # When cursor position [ decision ] it is other than
    else
      x = 4 + @index / 5 / 9 * 152 + @index % 5 * 28
      y = @index / 5 % 9 * 32
      self.cursor_rect.set(x, y, 28, 32)
    end
  end
  #--------------------------------------------------------------------------
  # - Frame renewal
  #--------------------------------------------------------------------------
  def update
    super
    # When cursor position [ decision ] is
    if @index >= 180
      # Down cursor
      if Input.trigger?(Input:

OWN)
        $game_system.se_play($data_system.cursor_se)
        @index -= 180
      end
      # Up cursor
      if Input.repeat?(Input::UP)
        $game_system.se_play($data_system.cursor_se)
        @index -= 180 - 40
      end
    # When cursor position [ decision ] it is other than
    else
      # When the right of the direction button is pushed
      if Input.repeat?(Input::RIGHT)
        # Depression state is not repeat when
        # When cursor position is not right hand edge
        if Input.trigger?(Input::RIGHT) or
           @index / 45 < 3 or @index % 5 < 4
          # Moving cursor to the right
          $game_system.se_play($data_system.cursor_se)
          if @index % 5 < 4
            @index += 1
          else
            @index += 45 - 4
          end
          if @index >= 180
            @index -= 180
          end
        end
      end
      # When the left of the direction button is pushed
      if Input.repeat?(Input::LEFT)
        # Depression state is not repeat when
        # When cursor position is not the left edge
        if Input.trigger?(Input::LEFT) or
           @index / 45 > 0 or @index % 5 > 0
          # Moving cursor to the left
          $game_system.se_play($data_system.cursor_se)
          if @index % 5 > 0
            @index -= 1
          else
            @index -= 45 - 4
          end
          if @index < 0
            @index += 180
          end
        end
      end
      # When the bottom of the direction button is pushed
      if Input.repeat?(Input:

OWN)
        # Moving cursor down
        $game_system.se_play($data_system.cursor_se)
        if @index % 45 < 40
          @index += 5
        else
          @index += 180 - 40
        end
      end
      # When the top of the direction button is pushed
      if Input.repeat?(Input::UP)
        # Depression state is not repeat when
        # When cursor position is not the top
        if Input.trigger?(Input::UP) or @index % 45 >= 5
          # Moving cursor up
          $game_system.se_play($data_system.cursor_se)
          if @index % 45 >= 5
            @index -= 5
          else
            @index += 180
          end
        end
      end
      # The L when button or the R button is pushed
      if Input.repeat?(Input::L) or Input.repeat?(Input::R)
        # Hiragana/katakana movement
        $game_system.se_play($data_system.cursor_se)
        if @index / 45 < 2
          @index += 90
        else
          @index -= 90
        end
      end
    end
    update_cursor_rect
  end
end