4
0
Fork 0
WolfBox/scripts/test_bot_controls.gd

53 lines
1.9 KiB
GDScript3
Raw Normal View History

2025-06-21 14:36:09 +01:00
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]