119 lines
4.5 KiB
Ruby
119 lines
4.5 KiB
Ruby
#==============================================================================
|
||
# ■ Window_DebugRight
|
||
#------------------------------------------------------------------------------
|
||
# デバッグ画面で、スイッチや変数を個別に表示するウィンドウです。
|
||
#==============================================================================
|
||
|
||
class Window_DebugRight < Window_Selectable
|
||
#--------------------------------------------------------------------------
|
||
# ● 公開インスタンス変数
|
||
#--------------------------------------------------------------------------
|
||
attr_reader :mode # モード(:switch / :variable)
|
||
attr_reader :top_id # 先頭に表示する ID
|
||
#--------------------------------------------------------------------------
|
||
# ● オブジェクト初期化
|
||
#-------------------------------------------------------------------------
|
||
def initialize(x, y, width)
|
||
super(x, y, width, fitting_height(10))
|
||
@mode = :switch
|
||
@top_id = 1
|
||
refresh
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 項目数の取得
|
||
#--------------------------------------------------------------------------
|
||
def item_max
|
||
return 10
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● リフレッシュ
|
||
#--------------------------------------------------------------------------
|
||
def refresh
|
||
contents.clear
|
||
draw_all_items
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 項目の描画
|
||
#--------------------------------------------------------------------------
|
||
def draw_item(index)
|
||
data_id = @top_id + index
|
||
id_text = sprintf("%04d:", data_id)
|
||
id_width = text_size(id_text).width
|
||
if @mode == :switch
|
||
name = $data_system.switches[data_id]
|
||
status = $game_switches[data_id] ? "[ON]" : "[OFF]"
|
||
else
|
||
name = $data_system.variables[data_id]
|
||
status = $game_variables[data_id]
|
||
end
|
||
name = "" unless name
|
||
rect = item_rect_for_text(index)
|
||
change_color(normal_color)
|
||
draw_text(rect, id_text)
|
||
rect.x += id_width
|
||
rect.width -= id_width + 60
|
||
draw_text(rect, name)
|
||
rect.width += 60
|
||
draw_text(rect, status, 2)
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● モードの設定
|
||
# mode : 新しいモード
|
||
#--------------------------------------------------------------------------
|
||
def mode=(mode)
|
||
if @mode != mode
|
||
@mode = mode
|
||
refresh
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 先頭に表示する ID の設定
|
||
# id : 新しい ID
|
||
#--------------------------------------------------------------------------
|
||
def top_id=(id)
|
||
if @top_id != id
|
||
@top_id = id
|
||
refresh
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 選択中 ID の取得
|
||
#--------------------------------------------------------------------------
|
||
def current_id
|
||
top_id + index
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● フレーム更新
|
||
#--------------------------------------------------------------------------
|
||
def update
|
||
super
|
||
update_switch_mode if active && mode == :switch
|
||
update_variable_mode if active && mode == :variable
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● スイッチモード時の更新
|
||
#--------------------------------------------------------------------------
|
||
def update_switch_mode
|
||
if Input.trigger?(:C)
|
||
Sound.play_ok
|
||
$game_switches[current_id] = !$game_switches[current_id]
|
||
redraw_current_item
|
||
end
|
||
end
|
||
#--------------------------------------------------------------------------
|
||
# ● 変数モード時の更新
|
||
#--------------------------------------------------------------------------
|
||
def update_variable_mode
|
||
return unless $game_variables[current_id].is_a?(Numeric)
|
||
value = $game_variables[current_id]
|
||
value += 1 if Input.repeat?(:RIGHT)
|
||
value -= 1 if Input.repeat?(:LEFT)
|
||
value += 10 if Input.repeat?(:R)
|
||
value -= 10 if Input.repeat?(:L)
|
||
if $game_variables[current_id] != value
|
||
$game_variables[current_id] = value
|
||
Sound.play_cursor
|
||
redraw_current_item
|
||
end
|
||
end
|
||
end
|