#==============================================================================
# * 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