extends VBoxContainer var item: Bot: set(val): item = val update() func _ready() -> void: for team_name in Team.teams.keys(): $TeamOptionButton.add_item(team_name) for role_name in Role.roles.keys(): var role: Role = Role.roles[role_name] $RoleOptionButton.add_item(role_name) #$RoleOptionButton func _player_alive_changed(alive: bool) -> void: $AliveLabel.text = "ALIVE" if alive else "DEAD" func _process(delta: float) -> void: if item != null: var knowledge_text: String = "" for player in item.player_knowledge.keys(): if player == null: continue #if !player.alive: #continue var knowledge: Bot.PlayerKnowledge = item.player_knowledge[player] var trust: float = knowledge.trustworthiness var trust_colour: String = Color(min(1.0-trust,1.0),min(1.0+trust,1.0),0.0).to_html(false) knowledge_text += "%s:[color=%s]T%.2f[/color] P%.2f\n" % [player.player_name, trust_colour, knowledge.trustworthiness, knowledge.power] $KnowledgeLabel.text = knowledge_text func update(): $Label.text = item.player_name item.connect("alive_changed", _player_alive_changed) item.connect("role_changed", func(role:Role): _select_option_button_by_name(role.name, $RoleOptionButton)) item.connect("team_changed", func(team:Team): _select_option_button_by_name(team.name, $TeamOptionButton)) func _select_option_button_by_name(name: String, option_button: OptionButton) -> void: option_button.selected = -1 for i in range(option_button.item_count): if option_button.get_item_text(i) == name: option_button.select(i) break func _on_team_option_button_item_selected(index: int) -> void: var team_name: String = $TeamOptionButton.get_item_text(index) item.team = Team.teams[team_name] func _on_role_option_button_item_selected(index: int) -> void: var role_name: String = $RoleOptionButton.get_item_text(index) item.role = Role.roles[role_name]