extends PanelContainer #warning-ignore-all:shadowed_variable signal clicked const PC := preload('res://PC.tscn') var PCs = [] var data := {} var dummy_data := { 'characters': [ {'character_id': 0}, {'character_id': 1}, {'character_id': 2}, {'character_id': 3}, ], 'game_time_frames': randi() % 0x01000000, 'character_names_decoded': ['Butz', 'Lenna', 'Galuf', 'Faris', 'Krile'], 'config': {'menu_color_r': randi()%32, 'menu_color_g': randi()%32, 'menu_color_b': randi()%32}, 'slot_in_use': true, } func _init_dummy(): for i in 4: var c = dummy_data.characters[i] c.level = 1 + (randi()%99) c.current_job_id = randi()%22 c.hp_max = (50*c.level) + (randi()%(100 + 50*c.level)) c.hp_current = 1 + (randi()%c.hp_max) dummy_data.characters.shuffle() func set_data(data: Dictionary): self.data = data self.material.set_shader_param('MenuBGColour', Color(data.config.menu_color_r/31.0, data.config.menu_color_g/31.0, data.config.menu_color_b/31.0)) for i in 4: var char_id: int = data.characters[i].character_id var job_id: int = data.characters[i].current_job_id var sprite_id := (char_id * 22) + job_id PCs[i].material.set_shader_param('palette', SpriteLoader.character_battle_sprite_palette_textures[sprite_id]) PCs[i].texture = SpriteLoader.strip_textures[sprite_id] $'%lbl_level_num'.text = '%d' % data.characters[0].level $'%lbl_gametime'.text = Common.game_time_frames_to_hhmm(data.game_time_frames) $'%lbl_name'.text = data.character_names_decoded[data.characters[0].character_id] $'%lbl_hp'.text = '%d/%4d' % [data.characters[0].hp_current, data.characters[0].hp_max] $HBoxContainer.visible = data.slot_in_use $lbl_not_in_use.visible = !data.slot_in_use # Called when the node enters the scene tree for the first time. func _ready() -> void: _init_dummy() self.material = self.material.duplicate() for i in 4: var pc = PC.instance() pc.set_position(Vector2(i*24, 8)) $'%PCs'.add_child(pc) PCs.append(pc) set_data(dummy_data) func _input(event: InputEvent) -> void: if (event is InputEventMouseButton or event is InputEventScreenTouch) and event.pressed: if get_rect().has_point(event.position): # print(event.position) get_tree().set_input_as_handled() emit_signal('clicked')