#==============================================================================
# ■ Game_Name
#------------------------------------------------------------------------------
# Name
#==============================================================================
class Window_NameInput < Window_Base
CHARACTER_TABLE =
[
"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"," "," "," "," ",
"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"," "," "," "," "
]
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
def initialize
super(0, 128, 640, 352)
self.contents = Bitmap.new(width - 32, height - 32)
@index = 0
refresh
update_cursor_rect
end
#--------------------------------------------------------------------------
# ● 문자의 취득
#--------------------------------------------------------------------------
def character
return CHARACTER_TABLE[@index]
end
#--------------------------------------------------------------------------
# ● 리프레쉬
#--------------------------------------------------------------------------
def refresh
self.contents.clear
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, "ID등록완료", 1)
end
#--------------------------------------------------------------------------
# ● 커서의 구형 갱신
#--------------------------------------------------------------------------
def update_cursor_rect
# 커서 위치가 [결정] 의 경우
if @index >= 180
self.cursor_rect.set(544, 9 * 32, 64, 32)
# 커서 위치가 [결정] 이외의 경우
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
#--------------------------------------------------------------------------
# ● 프레임 갱신
#--------------------------------------------------------------------------
def update
super
# 커서 위치가 [결정] 의 경우
if @index >= 180
# 커서하
if Input.trigger?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
@index -= 180
end
# 커서상
if Input.repeat?(Input::UP)
$game_system.se_play($data_system.cursor_se)
@index -= 180 - 40
end
# 커서 위치가 [결정] 이외의 경우
else
# 방향 버튼의 오른쪽이 밀렸을 경우
if Input.repeat?(Input::RIGHT)
# 압하 상태가 리피트가 아닌 경우인가,
# 커서 위치가 우단이 아닌 경우
if Input.trigger?(Input::RIGHT) or
@index / 45 < 3 or @index % 5 < 4
# 커서를 오른쪽으로 이동
$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
# 방향 버튼의 왼쪽이 밀렸을 경우
if Input.repeat?(Input::LEFT)
# 압하 상태가 리피트가 아닌 경우인가,
# 커서 위치가 좌단이 아닌 경우
if Input.trigger?(Input::LEFT) or
@index / 45 > 0 or @index % 5 > 0
# 커서를 왼쪽으로 이동
$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
# 방향 버튼아래가 밀렸을 경우
if Input.repeat?(Input::DOWN)
# 커서를 아래에 이동
$game_system.se_play($data_system.cursor_se)
if @index % 45 < 40
@index += 5
else
@index += 180 - 40
end
end
# 방향 버튼 위가 밀렸을 경우
if Input.repeat?(Input::UP)
# 압하 상태가 리피트가 아닌 경우인가,
# 커서 위치가 상단이 아닌 경우
if Input.trigger?(Input::UP) or @index % 45 >= 5
# 커서를 위에 이동
$game_system.se_play($data_system.cursor_se)
if @index % 45 >= 5
@index -= 5
else
@index += 180
end
end
end
# L 버튼이나 R 버튼이 밀렸을 경우
if Input.repeat?(Input::L) or Input.repeat?(Input::R)
# 히라가나 / 카타카나 이동
$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
# ■ Game_Name
#------------------------------------------------------------------------------
# Name
#==============================================================================
class Window_NameInput < Window_Base
CHARACTER_TABLE =
[
"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"," "," "," "," ",
"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"," "," "," "," "
]
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
def initialize
super(0, 128, 640, 352)
self.contents = Bitmap.new(width - 32, height - 32)
@index = 0
refresh
update_cursor_rect
end
#--------------------------------------------------------------------------
# ● 문자의 취득
#--------------------------------------------------------------------------
def character
return CHARACTER_TABLE[@index]
end
#--------------------------------------------------------------------------
# ● 리프레쉬
#--------------------------------------------------------------------------
def refresh
self.contents.clear
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, "ID등록완료", 1)
end
#--------------------------------------------------------------------------
# ● 커서의 구형 갱신
#--------------------------------------------------------------------------
def update_cursor_rect
# 커서 위치가 [결정] 의 경우
if @index >= 180
self.cursor_rect.set(544, 9 * 32, 64, 32)
# 커서 위치가 [결정] 이외의 경우
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
#--------------------------------------------------------------------------
# ● 프레임 갱신
#--------------------------------------------------------------------------
def update
super
# 커서 위치가 [결정] 의 경우
if @index >= 180
# 커서하
if Input.trigger?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
@index -= 180
end
# 커서상
if Input.repeat?(Input::UP)
$game_system.se_play($data_system.cursor_se)
@index -= 180 - 40
end
# 커서 위치가 [결정] 이외의 경우
else
# 방향 버튼의 오른쪽이 밀렸을 경우
if Input.repeat?(Input::RIGHT)
# 압하 상태가 리피트가 아닌 경우인가,
# 커서 위치가 우단이 아닌 경우
if Input.trigger?(Input::RIGHT) or
@index / 45 < 3 or @index % 5 < 4
# 커서를 오른쪽으로 이동
$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
# 방향 버튼의 왼쪽이 밀렸을 경우
if Input.repeat?(Input::LEFT)
# 압하 상태가 리피트가 아닌 경우인가,
# 커서 위치가 좌단이 아닌 경우
if Input.trigger?(Input::LEFT) or
@index / 45 > 0 or @index % 5 > 0
# 커서를 왼쪽으로 이동
$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
# 방향 버튼아래가 밀렸을 경우
if Input.repeat?(Input::DOWN)
# 커서를 아래에 이동
$game_system.se_play($data_system.cursor_se)
if @index % 45 < 40
@index += 5
else
@index += 180 - 40
end
end
# 방향 버튼 위가 밀렸을 경우
if Input.repeat?(Input::UP)
# 압하 상태가 리피트가 아닌 경우인가,
# 커서 위치가 상단이 아닌 경우
if Input.trigger?(Input::UP) or @index % 45 >= 5
# 커서를 위에 이동
$game_system.se_play($data_system.cursor_se)
if @index % 45 >= 5
@index -= 5
else
@index += 180
end
end
end
# L 버튼이나 R 버튼이 밀렸을 경우
if Input.repeat?(Input::L) or Input.repeat?(Input::R)
# 히라가나 / 카타카나 이동
$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