[Ace] Window.ok_handler funktioniert nicht
Hey Guys,
ich experimentiere wieder etwas mit den Window Klassen, damit ich diese endlich mal erlerne und auch verstehen ^^
So versuche ich grad eine Liste zu machen, die jeden Status anzeigt und dabei angibt, ob der Actor mit diesem Status betroffen ist oder nicht. Wenn man Enter drückt, so soll der Status on/off triggern. Aber der ok-Handler scheint einfach nicht zu funktionieren?
Code:
class Window_DebugStates < Window_SkillList
def col_max
return 1
end
def enable?(item)
return true
end
def include?(item)
return true
end
def make_item_list
@data = $data_states
end
def draw_item(index)
state = @data[index]
if state
rect = item_rect(index)
rect.width -= 4
draw_item_name(state, rect.x, rect.y, enable?(state))
infl = inflicted?(state) ? "[ON]" : "[OFF]"
draw_text(item_rect_for_text(index), infl, 2)
end
end
def inflicted?(state)
return @actor.state?(state)
end
end
Code:
def command_edit_states
@states_window = Window_DebugStates.new(100, 120, 250, 250)
@states_window.actor = @actor
@states_window.set_handler(:ok, method(:on_state_ok))
@states_window.set_handler(:cancel, method(:on_state_cancel))
@states_window.activate
@states_window.refresh
@states_window.select(1)
end
Code:
def on_state_ok
state_id = @states_window.index
if actor.state?(state_id)
@actor.remove_state(state_id)
else
@actor.add_state(state_id)
end
@states_window.select(@states_window.index)
@status_window.refresh
@states_window.activate
end