Add event flags

This commit is contained in:
2025-05-19 22:53:17 -05:00
parent 057ed10851
commit 7cd96e20d2
9 changed files with 229 additions and 7 deletions

View File

@@ -61,7 +61,11 @@ func _on_Battle_pressed():
print("Battle pressed")
func _on_Event_pressed():
print("Event pressed")
close()
if UI.EVENT_FLAG_MENU.isOpen():
UI.EVENT_FLAG_MENU.close()
else:
UI.EVENT_FLAG_MENU.open()
func _on_Inventory_pressed():
close()

View File

@@ -0,0 +1,83 @@
class_name EventFlagMenu extends Panel
@export var flagList:ItemList
@export var grid:GridContainer
var checkboxes:Array[CheckBox] = []
var selectedEvent:int = -1
func _ready() -> void:
while grid.get_child_count() > 0:
var child = grid.get_child(0)
grid.remove_child(child)
child.queue_free()
for i in range(0, EventSystem.EVENT_FLAG_COUNT):
var checkbox:CheckBox = CheckBox.new()
checkbox.text = "Flag %s" % str(i)
grid.add_child(checkbox)
checkboxes.append(checkbox)
checkbox.pressed.connect(_on_CheckboxPressed)
hide()
_updateEventList()
_updateSelectedEvent()
EVENT.eventFlagUpdated.connect(_on_EventFlagUpdated)
flagList.item_selected.connect(_on_EventSelected)
func _exit_tree() -> void:
EVENT.eventFlagUpdated.disconnect(_on_EventFlagUpdated)
flagList.item_selected.disconnect(_on_EventSelected)
for checkbox in checkboxes:
grid.remove_child(checkbox)
checkbox.queue_free()
checkboxes.clear()
func _updateEventList() -> void:
flagList.clear()
flagList.deselect_all()
for event in EventSystem.SpecialEvent:
flagList.add_item(event)
func _updateSelectedEvent() -> void:
if selectedEvent == -1:
for i in range(0, EventSystem.EVENT_FLAG_COUNT):
checkboxes[i].visible = false
return
for i in range(0, EventSystem.EVENT_FLAG_COUNT):
var cb = checkboxes[i]
cb.visible = true
cb.button_pressed = EVENT.eventIsAnyOfFlagsOn(selectedEvent, 1 << i)
func open() -> void:
show()
func close() -> void:
selectedEvent = -1
_updateSelectedEvent()
hide()
func isOpen() -> bool:
return self.visible
func _on_EventFlagUpdated(event:EventSystem.SpecialEvent, flags:int) -> void:
_updateEventList()
_updateSelectedEvent()
func _on_EventSelected(index:int) -> void:
selectedEvent = index
_updateSelectedEvent()
func _on_CheckboxPressed() -> void:
if selectedEvent == -1:
return
var value = 0
for i in range(0, EventSystem.EVENT_FLAG_COUNT):
if checkboxes[i].button_pressed:
value |= (1 << i)
EVENT.eventFlagSetTo(selectedEvent, value)

View File

@@ -0,0 +1 @@
uid://b4a3ne2vn36mt