From 778bd5aeb9b4b8d5292df73fe8c0edfc9af7b5d1 Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 10 Dec 2021 20:19:00 +0000 Subject: [PATCH] menus have disabeld items --- battle/battle.gd | 12 +++--------- battle/pokemon_menu.gd | 17 ++++++++++------- battle/pokemon_menu.tscn | 2 ++ pokemon/beer/beer.tres | 2 +- trainer/blue.tres | 21 +++++++++++++++++++-- widgets/menu.gd | 13 ++++++++++++- widgets/menu_button.gd | 3 ++- widgets/pokemon_info.gd | 10 +++++++++- 8 files changed, 58 insertions(+), 22 deletions(-) diff --git a/battle/battle.gd b/battle/battle.gd index a48c205..9ce1086 100644 --- a/battle/battle.gd +++ b/battle/battle.gd @@ -53,11 +53,7 @@ func set_player_pokemon_(pokemon) -> void: player_pokemon_graphic_.show_back() player_pokemon_ = pokemon - player_stats_.text = player_pokemon_.name - player_stats_.level = player_pokemon_.level - player_stats_.hp = player_pokemon_.hp - player_stats_.max_hp = player_pokemon_.max_hp - + player_stats_.set_from_pokemon(pokemon) fight_.clear() for move in player_pokemon_.moves: @@ -71,10 +67,7 @@ func set_enemy_pokemon_(pokemon) -> void: enemy_pokemon_graphic_.show_front() enemy_pokemon_ = pokemon - rival_stats_.text = enemy_pokemon_.name - rival_stats_.level = enemy_pokemon_.level - rival_stats_.hp = enemy_pokemon_.hp - rival_stats_.max_hp = enemy_pokemon_.max_hp + rival_stats_.set_from_pokemon(pokemon) func push_menu_(menu) -> void: if not menu_stack_.empty(): @@ -262,6 +255,7 @@ func game_() -> void: yield(info_box_.animate_text("%s fainted." % player_pokemon_.name), "animate_text_done") yield(player_pokemon_graphic_.faint(), "done") push_menu_(pokemon_) + pokemon_.info.animate_text("What do pick?") info_box_.clear_text() player_move = yield(self, "player_chose_move") apply_player_pokemon_(player_move.pokemon) diff --git a/battle/pokemon_menu.gd b/battle/pokemon_menu.gd index d2c7c4c..00219b1 100644 --- a/battle/pokemon_menu.gd +++ b/battle/pokemon_menu.gd @@ -1,21 +1,24 @@ extends Menu -onready var info_ = $info +onready var info = $info export(Array, Resource) var pokemon setget set_pokemon func set_pokemon(value) -> void: pokemon = value - clear() invalidate_() func invalidate_() -> void: + clear() + for p in pokemon: var menu_item = preload("res://widgets/menu_button.tscn").instance() - var contents = preload("res://widgets/pokemon_info_mini.tscn").instance() - menu_item.add_child(contents) + var mini_pokemon_info = preload("res://widgets/pokemon_info_mini.tscn").instance() + mini_pokemon_info.set_from_pokemon(p) + menu_item.add_child(mini_pokemon_info) + menu_item.off = p.hp <= 0 add_menu_item(menu_item) -func _ready(): - info_.animate_text("Bring out which pokemon?") - invalidate_() +func _on_visibility_changed(): + if visible: + invalidate_() diff --git a/battle/pokemon_menu.tscn b/battle/pokemon_menu.tscn index 175077a..06719dc 100644 --- a/battle/pokemon_menu.tscn +++ b/battle/pokemon_menu.tscn @@ -26,3 +26,5 @@ __meta__ = { script = ExtResource( 17 ) [node name="info" parent="." instance=ExtResource( 6 )] + +[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"] diff --git a/pokemon/beer/beer.tres b/pokemon/beer/beer.tres index 835dc5c..fc7e78f 100644 --- a/pokemon/beer/beer.tres +++ b/pokemon/beer/beer.tres @@ -9,7 +9,7 @@ resource_local_to_scene = true script = ExtResource( 1 ) name = "Beer" level = 40 -hp = 15 +hp = 0 max_hp = 20 xp = 10 attack = 50 diff --git a/trainer/blue.tres b/trainer/blue.tres index a704e20..f35d8af 100644 --- a/trainer/blue.tres +++ b/trainer/blue.tres @@ -1,11 +1,28 @@ -[gd_resource type="Resource" load_steps=4 format=2] +[gd_resource type="Resource" load_steps=8 format=2] [ext_resource path="res://trainer/trainer_model.gd" type="Script" id=1] [ext_resource path="res://pokemon/beer/beer.tres" type="Resource" id=2] +[ext_resource path="res://pokemon/pokemon_model.gd" type="Script" id=3] [ext_resource path="res://pokemon/hat/hat.tres" type="Resource" id=4] +[ext_resource path="res://moves/thunderbolt.tres" type="Resource" id=5] +[ext_resource path="res://pokemon/beer/beer_battle_graphic.tscn" type="PackedScene" id=6] + +[sub_resource type="Resource" id=1] +resource_local_to_scene = true +script = ExtResource( 3 ) +name = "Beer" +level = 40 +hp = 5 +max_hp = 20 +xp = 10 +attack = 50 +defense = 1 +speed = 1 +moves = [ ExtResource( 5 ) ] +battle_graphics = ExtResource( 6 ) [resource] script = ExtResource( 1 ) name = "Blue" -pokemon = [ ExtResource( 4 ), ExtResource( 2 ) ] +pokemon = [ ExtResource( 4 ), ExtResource( 2 ), SubResource( 1 ) ] items = [ ] diff --git a/widgets/menu.gd b/widgets/menu.gd index ef57417..49a1a63 100644 --- a/widgets/menu.gd +++ b/widgets/menu.gd @@ -57,7 +57,18 @@ func select_(idx, force := false) -> void: if idx_ == idx and not force: return - get_node(menu_items[idx_]).selected = false + if get_node(menu_items[idx]).off: + for i in menu_items.size(): + var ii = (idx + i + 1) % menu_items.size() + if not get_node(menu_items[ii]).off: + select_(ii, force) + return + + return + + if menu_items.size() > idx_: + get_node(menu_items[idx_]).selected = false + idx_ = idx get_node(menu_items[idx_]).selected = true diff --git a/widgets/menu_button.gd b/widgets/menu_button.gd index 76a907a..e9d7f95 100644 --- a/widgets/menu_button.gd +++ b/widgets/menu_button.gd @@ -4,6 +4,7 @@ extends HBoxContainer export(bool) var capitalize setget set_capitalize export(String) var text setget set_text export(bool) var selected setget set_selected +export(bool) var off func set_text(value) -> void: text = str(value) @@ -15,4 +16,4 @@ func set_capitalize(value:bool) -> void: func set_selected(value:bool) -> void: selected = value - $pointer.modulate.a = 1.0 if value else 0.0 + $pointer.modulate.a = 1.0 if selected else 0.0 diff --git a/widgets/pokemon_info.gd b/widgets/pokemon_info.gd index f071d91..6341d21 100644 --- a/widgets/pokemon_info.gd +++ b/widgets/pokemon_info.gd @@ -5,7 +5,13 @@ signal animate_hp_done export(String) var text setget set_text export(int) var level setget set_level export(int) var hp setget set_hp -export(int) var max_hp = 1 setget set_max_hp +export(int) var max_hp setget set_max_hp + +func set_from_pokemon(pokemon) -> void: + set_text(pokemon.name) + set_level(pokemon.level) + set_max_hp(pokemon.max_hp) + set_hp(pokemon.hp) func set_text(value:String) -> void: text = value @@ -16,6 +22,8 @@ func set_level(value:int) -> void: $level.text = str(value) func set_hp(value) -> void: + if max_hp == 1: + pass hp = value $hp_bar/hp.text = str(int(hp)) + "/ " + str(max_hp) $hp_bar/bar/line.points[1].x = (float(hp) / float(max_hp)) * 48.0 -- GitLab