Files
GGJ26/scenes/list/list.gd
minimata 15f95e5ed0
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 12s
Create tag and build when new code gets to main / Export (push) Successful in 1m30s
chara snippet
2026-02-01 17:43:47 +01:00

79 lines
2.1 KiB
GDScript

extends Area2D
class_name List
var current_item = 0
var mask_list: Array[MaskResource]
var guest_list: Array[CharacterResource]
var items: Array
var pref_score_name: Dictionary[CharacterResource.Preference, String] = {
CharacterResource.Preference.LOVE: "Loves ",
CharacterResource.Preference.APPROVE: "Likes ",
CharacterResource.Preference.DONT_CARE: "Doesn't care about ",
CharacterResource.Preference.DISAPPROVE: "Disapproves ",
CharacterResource.Preference.HATE: "Hates ",
}
@onready var chara: Sprite2D = $"../GuestList/Chara"
@onready var label: Label = $Label
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func set_list(_items):
print(name)
for i in _items:
print(i.name)
current_item = 1
if _items.size() == 0:
items = []
label.text = "...\n...\n..."
return
items = _items
cycle_through_items()
func cycle_through_items() -> void:
if items.size() == 0:
label.text = "...\n...\n..."
return
current_item += 1
var index = current_item % items.size()
var item = items.get(index)
if item is MaskResource:
label.text = "\n\n\n\n" + item.name + "\n\n" + item.description
elif item is CharacterResource:
chara.visible = true
chara.texture = item.chara_sprite
label.text = item.name + "\n\nTraits\n"
for guest_trait: Trait in item.traits:
label.text += guest_trait.name + "\n"
label.text += "\n\nPreferences\n"
for other_trait in item.preferences:
var pref = item.preferences[other_trait]
label.text += pref_score_name[pref] + other_trait.name + "\n"
func _on_mouse_entered() -> void:
Input.set_default_cursor_shape(Input.CursorShape.CURSOR_POINTING_HAND)
func _on_mouse_exited() -> void:
Input.set_default_cursor_shape(Input.CursorShape.CURSOR_ARROW)
func _on_input_event(viewport: Node, event: InputEvent, shape_idx: int) -> void:
if event is InputEventMouseButton and event.is_pressed():
Input.set_default_cursor_shape(Input.CursorShape.CURSOR_ARROW)
cycle_through_items()