From e89eb7f15c14abdbbbf3a9d0442b5d07cb98b66d Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Sun, 24 Jul 2022 20:53:09 +0100 Subject: [PATCH 01/39] Rename CardView to CardContainer to reflect purpose --- Scenes/BattleScene.tscn | 2 +- UI/{CardView.gd => CardContainer.gd} | 0 UI/{CardView.tscn => CardContainer.tscn} | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) rename UI/{CardView.gd => CardContainer.gd} (100%) rename UI/{CardView.tscn => CardContainer.tscn} (80%) diff --git a/Scenes/BattleScene.tscn b/Scenes/BattleScene.tscn index 7930625..cc26ee0 100644 --- a/Scenes/BattleScene.tscn +++ b/Scenes/BattleScene.tscn @@ -3,7 +3,7 @@ [ext_resource path="res://icon.png" type="Texture" id=1] [ext_resource path="res://Characters/Player.tscn" type="PackedScene" id=2] [ext_resource path="res://Scenes/BattleScene.gd" type="Script" id=3] -[ext_resource path="res://UI/CardView.tscn" type="PackedScene" id=4] +[ext_resource path="res://UI/CardContainer.tscn" type="PackedScene" id=4] [ext_resource path="res://UI/DiceView.tscn" type="PackedScene" id=5] [ext_resource path="res://Assets/TestTile.png" type="Texture" id=6] [ext_resource path="res://Characters/Enemy.tscn" type="PackedScene" id=7] diff --git a/UI/CardView.gd b/UI/CardContainer.gd similarity index 100% rename from UI/CardView.gd rename to UI/CardContainer.gd diff --git a/UI/CardView.tscn b/UI/CardContainer.tscn similarity index 80% rename from UI/CardView.tscn rename to UI/CardContainer.tscn index 91ca274..e117466 100644 --- a/UI/CardView.tscn +++ b/UI/CardContainer.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=2 format=2] -[ext_resource path="res://UI/CardView.gd" type="Script" id=5] +[ext_resource path="res://UI/CardContainer.gd" type="Script" id=5] -[node name="CardView" type="Control"] +[node name="CardContainer" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 script = ExtResource( 5 ) -- 2.39.5 From 6fda66c7e02663331eee2157aa5da823e8b5cfaa Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Sun, 24 Jul 2022 20:55:37 +0100 Subject: [PATCH 02/39] Rename Card to CardView to reflect purpose --- UI/{Card.tscn => CardView.tscn} | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) rename UI/{Card.tscn => CardView.tscn} (80%) diff --git a/UI/Card.tscn b/UI/CardView.tscn similarity index 80% rename from UI/Card.tscn rename to UI/CardView.tscn index c2df587..5cbb834 100644 --- a/UI/Card.tscn +++ b/UI/CardView.tscn @@ -1,11 +1,9 @@ -[gd_scene load_steps=12 format=2] +[gd_scene load_steps=10 format=2] -[ext_resource path="res://UI/Card.gd" type="Script" id=1] -[ext_resource path="res://Assets/CardDB/Default.tres" type="Resource" id=2] -[ext_resource path="res://Assets/Metropolis-font/Metropolis-Bold.ttf" type="DynamicFontData" id=3] -[ext_resource path="res://Assets/DiceInput.png" type="Texture" id=4] -[ext_resource path="res://AutoGridContainer - Full Version/AutoGridContainer.tscn" type="PackedScene" id=5] -[ext_resource path="res://Assets/Metropolis-font/Metropolis-Medium.ttf" type="DynamicFontData" id=6] +[ext_resource path="res://Assets/Metropolis-font/Metropolis-Medium.ttf" type="DynamicFontData" id=2] +[ext_resource path="res://Assets/Metropolis-font/Metropolis-Bold.ttf" type="DynamicFontData" id=4] +[ext_resource path="res://Assets/DiceInput.png" type="Texture" id=5] +[ext_resource path="res://AutoGridContainer - Full Version/AutoGridContainer.tscn" type="PackedScene" id=6] [sub_resource type="StyleBoxFlat" id=8] bg_color = Color( 0.858824, 0.278431, 0.345098, 1 ) @@ -25,20 +23,18 @@ font_data = SubResource( 4 ) [sub_resource type="DynamicFont" id=7] size = 64 use_filter = true -font_data = ExtResource( 6 ) +font_data = ExtResource( 2 ) [sub_resource type="DynamicFont" id=5] size = 20 use_filter = true -font_data = ExtResource( 3 ) +font_data = ExtResource( 4 ) -[node name="Card" type="Control"] +[node name="CardView" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 size_flags_horizontal = 3 size_flags_vertical = 3 -script = ExtResource( 1 ) -card_info = ExtResource( 2 ) [node name="PanelContainer" type="PanelContainer" parent="."] anchor_right = 1.0 @@ -61,7 +57,7 @@ text = "Default" align = 1 autowrap = true -[node name="AutoGrid" parent="VBox" instance=ExtResource( 5 )] +[node name="AutoGrid" parent="VBox" instance=ExtResource( 6 )] margin_top = 35.0 margin_right = 1260.0 margin_bottom = 606.0 @@ -74,7 +70,7 @@ margin_bottom = 155.0 rect_min_size = Vector2( 75, 75 ) size_flags_horizontal = 3 size_flags_vertical = 3 -texture = ExtResource( 4 ) +texture = ExtResource( 5 ) expand = true stretch_mode = 6 -- 2.39.5 From 453330670b8d5dc0fb1a37f09e0441e45b834be2 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Sun, 24 Jul 2022 21:05:40 +0100 Subject: [PATCH 03/39] Remove UI logic from the card --- UI/Card.gd | 84 ++---------------------------------------------------- 1 file changed, 3 insertions(+), 81 deletions(-) diff --git a/UI/Card.gd b/UI/Card.gd index bffbc1b..2ce6130 100644 --- a/UI/Card.gd +++ b/UI/Card.gd @@ -1,5 +1,4 @@ -tool -extends Control +extends Node signal return_dice(dice_number) signal do_movement(movement_range) @@ -7,84 +6,12 @@ signal do_damage(damage, damage_range) signal do_effect(effect, effect_range) signal card_removed(card_self) -const TYPE_COLORS = [ - Color("#db4758"), # DAMAGE - Color("#3cc361"), # UTILITY - Color("#bcb64f"), # SPECIAL - Color("#bc5ec6"), # EFFECT - Color("#a4a4a4"), # MOVEMENT -] - const dice_node = preload("res://UI/Dice.tscn") -const dice_texture_string : String = "res://Assets/Dice/Dice%s.png" export (Resource) var card_info var input_dice = [] -var addition_dice_amount : int setget _set_addition_dice -var hovering_dice setget _set_hovering_dice - - -func _set_hovering_dice(dice_value): - var input_dice0 = $VBox/AutoGrid.get_node_from_grid("InputDice0") - - if hovering_dice == dice_value: - return - - hovering_dice = dice_value - - #remove the dice preview if not hovering - if dice_value == null: - var input_dice_children = input_dice0.get_children() - if len(input_dice_children) <= 1: - return - var old_dice = input_dice_children[1] - input_dice0.remove_child(old_dice) - return - - var new_dice = dice_node.instance() - new_dice.dice_value = dice_value - input_dice0.add_child(new_dice) - - -func _set_addition_dice(new_amount): - addition_dice_amount = new_amount - $VBox/AutoGrid.get_node_from_grid("InputDice0").get_child("Number").text = String(new_amount) - - -func _ready(): - - # change the color of the panel to match the appropriate type - var card_style = $PanelContainer.get('custom_styles/panel').duplicate(true) - card_style.set_bg_color(TYPE_COLORS[card_info.type]) - $PanelContainer.set('custom_styles/panel', card_style) - - # add more input dice if needed - for i in range(1, card_info.number_of_dice): - var new_input_dice = get_node("VBox/AutoGrid/InputDice0").duplicate(true) - new_input_dice.name = "InputDice%s" % i - $VBox/AutoGrid.add_child(new_input_dice) - - # change the name and description - $VBox/Name.text = card_info.name - $VBox/Description.text = card_info.description - - #maybe set the addition amount - if card_info.addition_dice: - self.addition_dice_amount = card_info.addition_amount - - # show the requirements for a dice - # TODO more difference from addition, smaller font, >, <, etc. - if len(card_info.accepted_dice) != 0: - var dice_string : String = "" - for num in card_info.accepted_dice: - dice_string += String(num) - dice_string += "," - - dice_string = dice_string.trim_suffix(",") - - $VBox/AutoGrid/InputDice0/Number.text = dice_string - +var addition_dice_amount = card_info.addition_amount func dice_inputted(dice_number): @@ -122,14 +49,9 @@ func dice_inputted(dice_number): input_dice.remove(0) - # Put the Dice in the slot - var input_dice0 = $VBox/AutoGrid.get_node_from_grid("InputDice0") - input_dice0.texture = load(dice_texture_string % dice_number) - - # -- RUN DICE CHECKS -- if card_info.addition_dice: - self.addition_dice_amount -= dice_number + addition_dice_amount -= dice_number input_dice.remove(0) if addition_dice_amount > 0: return -- 2.39.5 From 238a04b460682d7a96d72a3623cea84d10a4d8be Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Sun, 24 Jul 2022 21:12:58 +0100 Subject: [PATCH 04/39] Improve card.gd clarity --- UI/Card.gd | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/UI/Card.gd b/UI/Card.gd index 2ce6130..4d43a1d 100644 --- a/UI/Card.gd +++ b/UI/Card.gd @@ -6,8 +6,6 @@ signal do_damage(damage, damage_range) signal do_effect(effect, effect_range) signal card_removed(card_self) -const dice_node = preload("res://UI/Dice.tscn") - export (Resource) var card_info var input_dice = [] @@ -50,14 +48,18 @@ func dice_inputted(dice_number): # -- RUN DICE CHECKS -- - if card_info.addition_dice: - addition_dice_amount -= dice_number - input_dice.remove(0) - if addition_dice_amount > 0: - return - else: - run_card() + # if the addition type, then lower the counter by the input dice + # also check (and run) if the amount is reaches and + if card_info.addition_dice: + + addition_dice_amount -= dice_number + + if addition_dice_amount <= 0: + run_card() + return + + # run the card if the correct number of dice have been inputted (and normal dice) if (len(input_dice) == card_info.number_of_dice and not card_info.addition_dice): run_card() -- 2.39.5 From 67143708bcc07304aa82129895dcd72ad398e8c8 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Mon, 25 Jul 2022 09:11:42 +0100 Subject: [PATCH 05/39] Add InputDiceView and disappear animation --- UI/InputDiceView.gd | 9 +++ UI/InputDiceView.tscn | 153 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 162 insertions(+) create mode 100644 UI/InputDiceView.gd create mode 100644 UI/InputDiceView.tscn diff --git a/UI/InputDiceView.gd b/UI/InputDiceView.gd new file mode 100644 index 0000000..8d6c2fb --- /dev/null +++ b/UI/InputDiceView.gd @@ -0,0 +1,9 @@ +tool +extends Control + +func _process(_delta): + + # update the pivot offset to make sure the object's animations + # are always centered + $Sprite.rect_pivot_offset = rect_size/2 + $Particles2D.position = rect_size/2 diff --git a/UI/InputDiceView.tscn b/UI/InputDiceView.tscn new file mode 100644 index 0000000..4c4fe51 --- /dev/null +++ b/UI/InputDiceView.tscn @@ -0,0 +1,153 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://Assets/Metropolis-font/Metropolis-Medium.ttf" type="DynamicFontData" id=1] +[ext_resource path="res://Assets/DiceInput.png" type="Texture" id=2] +[ext_resource path="res://UI/InputDiceView.gd" type="Script" id=3] + +[sub_resource type="Curve" id=10] +_data = [ Vector2( 0, 0.121591 ), 0.0, 4.0026, 0, 0, Vector2( 1, 0 ), -1.48166, 0.0, 0, 0 ] + +[sub_resource type="CurveTexture" id=11] +curve = SubResource( 10 ) + +[sub_resource type="ParticlesMaterial" id=12] +lifetime_randomness = 0.12 +flag_disable_z = true +direction = Vector3( 0, 0, 0 ) +spread = 180.0 +gravity = Vector3( 0, 0, 0 ) +initial_velocity = 44.59 +orbit_velocity = 0.56 +orbit_velocity_random = 0.48 +linear_accel = -1.37 +radial_accel = -11.78 +scale = 0.01 +scale_curve = SubResource( 11 ) +hue_variation = 0.03 +hue_variation_random = 1.0 + +[sub_resource type="DynamicFont" id=7] +size = 64 +use_filter = true +font_data = ExtResource( 1 ) + +[sub_resource type="Animation" id=8] +resource_name = "Disappear" +length = 0.5 +step = 0.01 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:rect_scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.09, 0.11, 0.5 ), +"transitions": PoolRealArray( 0.406125, 0.392292, 2.07053, 3.36359 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1.2, 1.2 ), Vector2( 1.2, 1.2 ), Vector2( 1e-05, 1e-05 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite:rect_rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.09, 0.11, 0.5 ), +"transitions": PoolRealArray( 0.406125, 0.392292, 2.92817, 3.36359 ), +"update": 0, +"values": [ 0.0, 55.0, 55.0, -155.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Particles2D:emitting") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} + +[sub_resource type="Animation" id=9] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:rect_scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite:rect_rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Particles2D:emitting") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} + +[node name="InputDiceView" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 3 ) + +[node name="Particles2D" type="Particles2D" parent="."] +position = Vector2( 640, 360 ) +scale = Vector2( 5, 5 ) +emitting = false +amount = 6 +lifetime = 0.75 +one_shot = true +speed_scale = 2.0 +process_material = SubResource( 12 ) +texture = ExtResource( 2 ) + +[node name="ExtraInfo" type="Label" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_fonts/font = SubResource( 7 ) +align = 1 +valign = 1 + +[node name="Sprite" type="TextureRect" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +rect_min_size = Vector2( 75, 75 ) +rect_pivot_offset = Vector2( 640, 360 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +texture = ExtResource( 2 ) +expand = true +stretch_mode = 6 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/Disappear = SubResource( 8 ) +anims/RESET = SubResource( 9 ) -- 2.39.5 From eab9ca42f6887b9c21ea1a897bee4a81e8748c5d Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Mon, 25 Jul 2022 10:07:39 +0100 Subject: [PATCH 06/39] Make Card a class --- UI/Card.gd | 3 ++- project.godot | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/UI/Card.gd b/UI/Card.gd index 4d43a1d..2b8abd8 100644 --- a/UI/Card.gd +++ b/UI/Card.gd @@ -1,4 +1,5 @@ extends Node +class_name Card signal return_dice(dice_number) signal do_movement(movement_range) @@ -6,7 +7,7 @@ signal do_damage(damage, damage_range) signal do_effect(effect, effect_range) signal card_removed(card_self) -export (Resource) var card_info +export (Resource) var card_info = preload("res://Assets/CardDB/Default.tres") var input_dice = [] var addition_dice_amount = card_info.addition_amount diff --git a/project.godot b/project.godot index 908f128..82d086b 100644 --- a/project.godot +++ b/project.godot @@ -9,6 +9,11 @@ config_version=4 _global_script_classes=[ { +"base": "Node", +"class": "Card", +"language": "GDScript", +"path": "res://UI/Card.gd" +}, { "base": "Resource", "class": "CardResource", "language": "GDScript", @@ -20,6 +25,7 @@ _global_script_classes=[ { "path": "res://Characters/Character.gd" } ] _global_script_class_icons={ +"Card": "", "CardResource": "", "Character": "" } -- 2.39.5 From a9b07decbf637b0b8ba133923e175e97c0dd25e8 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Mon, 25 Jul 2022 11:06:28 +0100 Subject: [PATCH 07/39] Make InputDiceView resize properly in an autogrid --- UI/InputDiceView.tscn | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/UI/InputDiceView.tscn b/UI/InputDiceView.tscn index 4c4fe51..7ede40f 100644 --- a/UI/InputDiceView.tscn +++ b/UI/InputDiceView.tscn @@ -114,6 +114,9 @@ tracks/2/keys = { [node name="InputDiceView" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 +rect_min_size = Vector2( 75, 75 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 script = ExtResource( 3 ) [node name="Particles2D" type="Particles2D" parent="."] @@ -140,7 +143,6 @@ valign = 1 [node name="Sprite" type="TextureRect" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 -rect_min_size = Vector2( 75, 75 ) rect_pivot_offset = Vector2( 640, 360 ) size_flags_horizontal = 3 size_flags_vertical = 3 -- 2.39.5 From 7da22c2461cedf67ae9f8e0277b0fa5ee247dc91 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Mon, 25 Jul 2022 11:13:09 +0100 Subject: [PATCH 08/39] Add basic CardView implementation --- UI/CardView.gd | 46 ++++++++++++++++++++++++++++++++++++++++++ UI/CardView.tscn | 52 ++++++++++++++---------------------------------- 2 files changed, 61 insertions(+), 37 deletions(-) create mode 100644 UI/CardView.gd diff --git a/UI/CardView.gd b/UI/CardView.gd new file mode 100644 index 0000000..c8b44ba --- /dev/null +++ b/UI/CardView.gd @@ -0,0 +1,46 @@ +extends Control + +const TYPE_COLORS = [ + Color("#db4758"), # DAMAGE + Color("#3cc361"), # UTILITY + Color("#bcb64f"), # SPECIAL + Color("#bc5ec6"), # EFFECT + Color("#a4a4a4"), # MOVEMENT +] + +const input_dice_view = preload("res://UI/InputDiceView.tscn") +var input_dice_views = [] + +var card : Card = Card.new() setget update_cardview + + +func _ready(): + update_cardview() + + +func update_cardview(new_card = null): + + # allow the update card function to work with and without setget + if new_card != null: + card = new_card + + # change the color of the panel to match the appropriate type + var card_style = $Background.get('custom_styles/panel').duplicate(true) + card_style.set_bg_color(TYPE_COLORS[card.card_info.type]) + $Background.set('custom_styles/panel', card_style) + + # change the name and description + $VBox/Name.text = card.card_info.name + $VBox/Description.text = card.card_info.description + + # add the correct number of input dice views + for i in card.card_info.number_of_dice: + add_input_dice_view() + + +# add an input_dice_view to the array (for easy management) +# and to the autogrid +func add_input_dice_view(): + var dice_view = input_dice_view.instance() + input_dice_views.append(dice_view) + $"%AutoGrid".add_child(dice_view) diff --git a/UI/CardView.tscn b/UI/CardView.tscn index 5cbb834..d7e1578 100644 --- a/UI/CardView.tscn +++ b/UI/CardView.tscn @@ -1,8 +1,7 @@ -[gd_scene load_steps=10 format=2] +[gd_scene load_steps=8 format=2] -[ext_resource path="res://Assets/Metropolis-font/Metropolis-Medium.ttf" type="DynamicFontData" id=2] +[ext_resource path="res://UI/CardView.gd" type="Script" id=1] [ext_resource path="res://Assets/Metropolis-font/Metropolis-Bold.ttf" type="DynamicFontData" id=4] -[ext_resource path="res://Assets/DiceInput.png" type="Texture" id=5] [ext_resource path="res://AutoGridContainer - Full Version/AutoGridContainer.tscn" type="PackedScene" id=6] [sub_resource type="StyleBoxFlat" id=8] @@ -20,11 +19,6 @@ size = 30 use_filter = true font_data = SubResource( 4 ) -[sub_resource type="DynamicFont" id=7] -size = 64 -use_filter = true -font_data = ExtResource( 2 ) - [sub_resource type="DynamicFont" id=5] size = 20 use_filter = true @@ -33,10 +27,13 @@ font_data = ExtResource( 4 ) [node name="CardView" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 +margin_right = -965.0 +margin_bottom = -325.0 size_flags_horizontal = 3 size_flags_vertical = 3 +script = ExtResource( 1 ) -[node name="PanelContainer" type="PanelContainer" parent="."] +[node name="Background" type="PanelContainer" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 custom_styles/panel = SubResource( 8 ) @@ -50,7 +47,7 @@ margin_right = -10.0 margin_bottom = -10.0 [node name="Name" type="Label" parent="VBox"] -margin_right = 1260.0 +margin_right = 295.0 margin_bottom = 31.0 custom_fonts/font = SubResource( 2 ) text = "Default" @@ -58,36 +55,17 @@ align = 1 autowrap = true [node name="AutoGrid" parent="VBox" instance=ExtResource( 6 )] +unique_name_in_owner = true +anchor_right = 0.0 +anchor_bottom = 0.0 margin_top = 35.0 -margin_right = 1260.0 -margin_bottom = 606.0 - -[node name="InputDice0" type="TextureRect" parent="VBox/AutoGrid"] -margin_left = 42.0 -margin_top = 5.0 -margin_right = 192.0 -margin_bottom = 155.0 -rect_min_size = Vector2( 75, 75 ) -size_flags_horizontal = 3 -size_flags_vertical = 3 -texture = ExtResource( 5 ) -expand = true -stretch_mode = 6 - -[node name="Number" type="Label" parent="VBox/AutoGrid/InputDice0"] -anchor_right = 1.0 -anchor_bottom = 1.0 -size_flags_horizontal = 3 -size_flags_vertical = 3 -custom_colors/font_color = Color( 0, 0, 0, 1 ) -custom_fonts/font = SubResource( 7 ) -align = 1 -valign = 1 +margin_right = 295.0 +margin_bottom = 281.0 [node name="Description" type="Label" parent="VBox"] -margin_top = 610.0 -margin_right = 1260.0 -margin_bottom = 700.0 +margin_top = 285.0 +margin_right = 295.0 +margin_bottom = 375.0 rect_min_size = Vector2( 0, 90 ) custom_fonts/font = SubResource( 5 ) text = "Default Description" -- 2.39.5 From e84ea6786cf35048457f35db7b4e24cccfc748ff Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Mon, 25 Jul 2022 20:23:33 +0100 Subject: [PATCH 09/39] Better support Extra Info --- UI/InputDiceView.gd | 5 +++++ UI/InputDiceView.tscn | 21 +++++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/UI/InputDiceView.gd b/UI/InputDiceView.gd index 8d6c2fb..f39abd3 100644 --- a/UI/InputDiceView.gd +++ b/UI/InputDiceView.gd @@ -1,9 +1,14 @@ tool extends Control + func _process(_delta): # update the pivot offset to make sure the object's animations # are always centered $Sprite.rect_pivot_offset = rect_size/2 $Particles2D.position = rect_size/2 + + +func set_extra_info(text : String): + $"%ExtraInfo".text = text diff --git a/UI/InputDiceView.tscn b/UI/InputDiceView.tscn index 7ede40f..1d34349 100644 --- a/UI/InputDiceView.tscn +++ b/UI/InputDiceView.tscn @@ -130,16 +130,6 @@ speed_scale = 2.0 process_material = SubResource( 12 ) texture = ExtResource( 2 ) -[node name="ExtraInfo" type="Label" parent="."] -anchor_right = 1.0 -anchor_bottom = 1.0 -size_flags_horizontal = 3 -size_flags_vertical = 3 -custom_colors/font_color = Color( 0, 0, 0, 1 ) -custom_fonts/font = SubResource( 7 ) -align = 1 -valign = 1 - [node name="Sprite" type="TextureRect" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 @@ -150,6 +140,17 @@ texture = ExtResource( 2 ) expand = true stretch_mode = 6 +[node name="ExtraInfo" type="Label" parent="."] +unique_name_in_owner = true +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_fonts/font = SubResource( 7 ) +align = 1 +valign = 1 + [node name="AnimationPlayer" type="AnimationPlayer" parent="."] anims/Disappear = SubResource( 8 ) anims/RESET = SubResource( 9 ) -- 2.39.5 From 5216632ee2cb3ac44a7b81098f164bfaecd03836 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Mon, 25 Jul 2022 20:25:57 +0100 Subject: [PATCH 10/39] Basic Extra Info Support --- UI/CardView.gd | 14 ++++++++++++++ UI/CardView.tscn | 6 ++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/UI/CardView.gd b/UI/CardView.gd index c8b44ba..f95583c 100644 --- a/UI/CardView.gd +++ b/UI/CardView.gd @@ -1,3 +1,4 @@ +tool extends Control const TYPE_COLORS = [ @@ -36,6 +37,19 @@ func update_cardview(new_card = null): # add the correct number of input dice views for i in card.card_info.number_of_dice: add_input_dice_view() + + # set the extra info + var extra_text = "" + if card.card_info.addition_dice == true: + extra_text = card.addition_dice_amount + + else: + for dice in card.card_info.accepted_dice: + extra_text += str(dice) + ", " + extra_text = extra_text.trim_suffix(", ") + + for i in input_dice_views: + i.set_extra_info(extra_text) # add an input_dice_view to the array (for easy management) diff --git a/UI/CardView.tscn b/UI/CardView.tscn index d7e1578..6bcb9b2 100644 --- a/UI/CardView.tscn +++ b/UI/CardView.tscn @@ -4,7 +4,7 @@ [ext_resource path="res://Assets/Metropolis-font/Metropolis-Bold.ttf" type="DynamicFontData" id=4] [ext_resource path="res://AutoGridContainer - Full Version/AutoGridContainer.tscn" type="PackedScene" id=6] -[sub_resource type="StyleBoxFlat" id=8] +[sub_resource type="StyleBoxFlat" id=6] bg_color = Color( 0.858824, 0.278431, 0.345098, 1 ) corner_radius_top_left = 20 corner_radius_top_right = 20 @@ -36,7 +36,7 @@ script = ExtResource( 1 ) [node name="Background" type="PanelContainer" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 -custom_styles/panel = SubResource( 8 ) +custom_styles/panel = SubResource( 6 ) [node name="VBox" type="VBoxContainer" parent="."] anchor_right = 1.0 @@ -56,8 +56,6 @@ autowrap = true [node name="AutoGrid" parent="VBox" instance=ExtResource( 6 )] unique_name_in_owner = true -anchor_right = 0.0 -anchor_bottom = 0.0 margin_top = 35.0 margin_right = 295.0 margin_bottom = 281.0 -- 2.39.5 From 8bd768ebdc63ce322d619ad4c373ffe42787f26d Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Mon, 25 Jul 2022 20:39:38 +0100 Subject: [PATCH 11/39] Add bold input dice --- Assets/DiceInputBold.kra | Bin 0 -> 486812 bytes Assets/DiceInputBold.png | Bin 0 -> 73799 bytes Assets/DiceInputBold.png.import | 35 ++++++++++++++++++++++++++++++++ UI/InputDiceView.gd | 11 ++++++++++ 4 files changed, 46 insertions(+) create mode 100644 Assets/DiceInputBold.kra create mode 100644 Assets/DiceInputBold.png create mode 100644 Assets/DiceInputBold.png.import diff --git a/Assets/DiceInputBold.kra b/Assets/DiceInputBold.kra new file mode 100644 index 0000000000000000000000000000000000000000..f951fd54da00f801190d9885a71a3196d02913d5 GIT binary patch literal 486812 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
7LkLX8>;rUBR<%be$Hz+{+|?@i4;dOkIHm^I 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 z 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

)-KL_A6TFs6blbM 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 C*f@Fs literal 0 HcmV?d00001 diff --git a/Assets/DiceInputBold.png b/Assets/DiceInputBold.png new file mode 100644 index 0000000000000000000000000000000000000000..256c0d82443f7abec5e86f021c74b623c17772db GIT binary patch literal 73799 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 &x> zs!q0bLn$v{OL0DZbs#inF{H-~6#x+VEr(w30VMb|YO8tFrEQ|82#a?*$(3EpH!vzUseo z2F4J?&|V*gW8)zU@YJu_3Wv*Q845HsG%%SbcBGibI2f6|vy?1sW=S$CKl_>DbiQ)a zLCjWs;~$gz?P%a6G99&HZF;oC8*r@R<>eI`v2;}~xh$4mRuyNB*oFKH8PK=fVoGoL ztP79Y?9SY4L&s$AX}3|D8uOMAo4fqXq<^;wfpL+yb$2_|%?05`kxm5p@d*kWbWsW}<3250=T3)(!gk^Jm4!9`W@oPB4W%GXHgx;}riM8s%Jn+>ve|<@M=(p`NdpfDtxSLp#wcSmNi&xK-1^6eK-RPm&@&@LJh|#Go zYYe>aub97Oh!z#AsjYpBq`W;dqI>m^Gs!ml1iJJ}c_8V~N39g~n#p9?xM$iyfHLw< zh;FN9pbj-}z)E<)uWuA|=aprCn}e?B@}m{HIR8E$(=2s3Og_3`=J zb%LdA?;2{L&m6rFUs%aiTI?@IE(+YG|Yu9`ZM&!r`P)(A!gv3pD-KzC`fU zt|+nLZ9HaJt~J;=Qr+AogO@2)=Czu-MeVD|ZXNL^nxol#5@}cera4e8%`%vTGG{y0 z7m>SlcXzk;*)O9xpSVZMbGlZx@a5~{F&RZn!2X8-*K=;sU=116KI!V2VIL9Mzu+Q$ z1r%(nlG(BxWPBDPMFy~U8x!Mgb!&dlj;2`{X4Jna z9Yz!;Z`K+`L%!<@?`>Nj6D3@Zna6z0LK+3W;ClOzQq?eWK$X|{pr+SvOAlobcZ?wTN$&Ze6boR*;z`QJ6y56*h;Et(kvx@w zH64e)CIyZZDfH{yH#e+0Un5+$8x99}RqBOUl}VHZ2%5hEvbBOly-Av9ccR%}ET;!F zT7C|~w3a!V3l42{rI)zibo{X^_%hV6%0Ah3t7h5%pwsl6U&onr)cCb0iDUNMBY=LE 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 literal 0 HcmV?d00001 diff --git a/Assets/DiceInputBold.png.import b/Assets/DiceInputBold.png.import new file mode 100644 index 0000000..03b50bb --- /dev/null +++ b/Assets/DiceInputBold.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/DiceInputBold.png-dc499cd822102d68e5e44449ce5835a3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/DiceInputBold.png" +dest_files=[ "res://.import/DiceInputBold.png-dc499cd822102d68e5e44449ce5835a3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/UI/InputDiceView.gd b/UI/InputDiceView.gd index f39abd3..1d63b75 100644 --- a/UI/InputDiceView.gd +++ b/UI/InputDiceView.gd @@ -1,6 +1,8 @@ tool extends Control +export var bold : bool setget set_bold + func _process(_delta): @@ -12,3 +14,12 @@ func _process(_delta): func set_extra_info(text : String): $"%ExtraInfo".text = text + + +func set_bold(is_bold : bool = true): + if is_bold: + $Sprite.texture = load("res://Assets/DiceInputBold.png") + else: + $Sprite.texture = load("res://Assets/DiceInput.png") + + bold = is_bold -- 2.39.5 From 13ac8818090fecdd0f2e737d9ee86271ed631376 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Mon, 25 Jul 2022 20:45:37 +0100 Subject: [PATCH 12/39] Add code support for bold input dice --- UI/CardView.gd | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/UI/CardView.gd b/UI/CardView.gd index f95583c..0e73b31 100644 --- a/UI/CardView.gd +++ b/UI/CardView.gd @@ -41,16 +41,22 @@ func update_cardview(new_card = null): # set the extra info var extra_text = "" if card.card_info.addition_dice == true: - extra_text = card.addition_dice_amount + # set the dice to have the remaining addition + extra_text = str(card.addition_dice_amount) else: + # set the dice to have a list of accepted dice for dice in card.card_info.accepted_dice: extra_text += str(dice) + ", " extra_text = extra_text.trim_suffix(", ") for i in input_dice_views: i.set_extra_info(extra_text) - + + # set bold dice if addition dice + for i in input_dice_views: + i.bold = true + # add an input_dice_view to the array (for easy management) # and to the autogrid -- 2.39.5 From c181c4f70b50059535c487d2ea6e5ab73ad11637 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Mon, 25 Jul 2022 20:45:54 +0100 Subject: [PATCH 13/39] Change the font boldness --- UI/InputDiceView.tscn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UI/InputDiceView.tscn b/UI/InputDiceView.tscn index 1d34349..b8a4a4c 100644 --- a/UI/InputDiceView.tscn +++ b/UI/InputDiceView.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=10 format=2] -[ext_resource path="res://Assets/Metropolis-font/Metropolis-Medium.ttf" type="DynamicFontData" id=1] +[ext_resource path="res://Assets/Metropolis-font/Metropolis-SemiBold.ttf" type="DynamicFontData" id=1] [ext_resource path="res://Assets/DiceInput.png" type="Texture" id=2] [ext_resource path="res://UI/InputDiceView.gd" type="Script" id=3] -- 2.39.5 From f4b9d4718b8d2cd328e8d4e9bea19da081a2f837 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Mon, 25 Jul 2022 21:05:10 +0100 Subject: [PATCH 14/39] Fix always being bold --- UI/CardView.gd | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/UI/CardView.gd b/UI/CardView.gd index 0e73b31..b534df2 100644 --- a/UI/CardView.gd +++ b/UI/CardView.gd @@ -54,8 +54,9 @@ func update_cardview(new_card = null): i.set_extra_info(extra_text) # set bold dice if addition dice - for i in input_dice_views: - i.bold = true + if card.card_info.addition_dice == true: + for i in input_dice_views: + i.bold = true # add an input_dice_view to the array (for easy management) -- 2.39.5 From f019cdd1e3bb83bd834fd2ad4ca3a556427c16c2 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Mon, 25 Jul 2022 21:11:52 +0100 Subject: [PATCH 15/39] Switch to use new Unique Names --- UI/CardView.gd | 8 ++++---- UI/CardView.tscn | 3 +++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/UI/CardView.gd b/UI/CardView.gd index b534df2..a19ef16 100644 --- a/UI/CardView.gd +++ b/UI/CardView.gd @@ -26,13 +26,13 @@ func update_cardview(new_card = null): card = new_card # change the color of the panel to match the appropriate type - var card_style = $Background.get('custom_styles/panel').duplicate(true) + var card_style = $"%Background".get('custom_styles/panel').duplicate(true) card_style.set_bg_color(TYPE_COLORS[card.card_info.type]) - $Background.set('custom_styles/panel', card_style) + $"%Background".set('custom_styles/panel', card_style) # change the name and description - $VBox/Name.text = card.card_info.name - $VBox/Description.text = card.card_info.description + $"%Name".text = card.card_info.name + $"%Description".text = card.card_info.description # add the correct number of input dice views for i in card.card_info.number_of_dice: diff --git a/UI/CardView.tscn b/UI/CardView.tscn index 6bcb9b2..44d17fe 100644 --- a/UI/CardView.tscn +++ b/UI/CardView.tscn @@ -34,6 +34,7 @@ size_flags_vertical = 3 script = ExtResource( 1 ) [node name="Background" type="PanelContainer" parent="."] +unique_name_in_owner = true anchor_right = 1.0 anchor_bottom = 1.0 custom_styles/panel = SubResource( 6 ) @@ -47,6 +48,7 @@ margin_right = -10.0 margin_bottom = -10.0 [node name="Name" type="Label" parent="VBox"] +unique_name_in_owner = true margin_right = 295.0 margin_bottom = 31.0 custom_fonts/font = SubResource( 2 ) @@ -61,6 +63,7 @@ margin_right = 295.0 margin_bottom = 281.0 [node name="Description" type="Label" parent="VBox"] +unique_name_in_owner = true margin_top = 285.0 margin_right = 295.0 margin_bottom = 375.0 -- 2.39.5 From 321defe2282fd3b36662141ca4e6b470f1472914 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Tue, 26 Jul 2022 07:52:58 +0100 Subject: [PATCH 16/39] Add a card fly off animation --- UI/CardView.tscn | 76 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 70 insertions(+), 6 deletions(-) diff --git a/UI/CardView.tscn b/UI/CardView.tscn index 44d17fe..2875d8d 100644 --- a/UI/CardView.tscn +++ b/UI/CardView.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=2] +[gd_scene load_steps=10 format=2] [ext_resource path="res://UI/CardView.gd" type="Script" id=1] [ext_resource path="res://Assets/Metropolis-font/Metropolis-Bold.ttf" type="DynamicFontData" id=4] @@ -24,6 +24,62 @@ size = 20 use_filter = true font_data = ExtResource( 4 ) +[sub_resource type="Animation" id=7] +resource_name = "Fly Off" +length = 0.5 +step = 0.01 +tracks/0/type = "value" +tracks/0/path = NodePath("LocalPosition:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 5, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, -999 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.18, 0.5 ), +"transitions": PoolRealArray( 1, 6.06286, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 1, 1.4 ) ] +} + +[sub_resource type="Animation" id=8] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("LocalPosition:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} + [node name="CardView" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 @@ -33,13 +89,17 @@ size_flags_horizontal = 3 size_flags_vertical = 3 script = ExtResource( 1 ) -[node name="Background" type="PanelContainer" parent="."] +[node name="LocalPosition" type="Control" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Background" type="PanelContainer" parent="LocalPosition"] unique_name_in_owner = true anchor_right = 1.0 anchor_bottom = 1.0 custom_styles/panel = SubResource( 6 ) -[node name="VBox" type="VBoxContainer" parent="."] +[node name="VBox" type="VBoxContainer" parent="LocalPosition"] anchor_right = 1.0 anchor_bottom = 1.0 margin_left = 10.0 @@ -47,7 +107,7 @@ margin_top = 10.0 margin_right = -10.0 margin_bottom = -10.0 -[node name="Name" type="Label" parent="VBox"] +[node name="Name" type="Label" parent="LocalPosition/VBox"] unique_name_in_owner = true margin_right = 295.0 margin_bottom = 31.0 @@ -56,13 +116,13 @@ text = "Default" align = 1 autowrap = true -[node name="AutoGrid" parent="VBox" instance=ExtResource( 6 )] +[node name="AutoGrid" parent="LocalPosition/VBox" instance=ExtResource( 6 )] unique_name_in_owner = true margin_top = 35.0 margin_right = 295.0 margin_bottom = 281.0 -[node name="Description" type="Label" parent="VBox"] +[node name="Description" type="Label" parent="LocalPosition/VBox"] unique_name_in_owner = true margin_top = 285.0 margin_right = 295.0 @@ -73,3 +133,7 @@ text = "Default Description" align = 1 valign = 1 autowrap = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +"anims/Fly Off" = SubResource( 7 ) +anims/RESET = SubResource( 8 ) -- 2.39.5 From 5d0b1933b66f65997d187d1b18d46d88e873ba63 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Tue, 26 Jul 2022 07:58:58 +0100 Subject: [PATCH 17/39] Add connect_signals method for CardView --- UI/CardView.gd | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/UI/CardView.gd b/UI/CardView.gd index a19ef16..223053f 100644 --- a/UI/CardView.gd +++ b/UI/CardView.gd @@ -17,6 +17,7 @@ var card : Card = Card.new() setget update_cardview func _ready(): update_cardview() + connect_signals() func update_cardview(new_card = null): @@ -24,6 +25,7 @@ func update_cardview(new_card = null): # allow the update card function to work with and without setget if new_card != null: card = new_card + connect_signals() # change the color of the panel to match the appropriate type var card_style = $"%Background".get('custom_styles/panel').duplicate(true) @@ -65,3 +67,7 @@ func add_input_dice_view(): var dice_view = input_dice_view.instance() input_dice_views.append(dice_view) $"%AutoGrid".add_child(dice_view) + + +func connect_signals(): + card.connect("card_removed", self, "card_view_use") -- 2.39.5 From 3f2281a155d18a4b64e34f04dea1d85bb2b806c9 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Tue, 26 Jul 2022 08:02:04 +0100 Subject: [PATCH 18/39] Add card_view_run method --- UI/CardView.gd | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/UI/CardView.gd b/UI/CardView.gd index 223053f..82f9cd2 100644 --- a/UI/CardView.gd +++ b/UI/CardView.gd @@ -69,5 +69,15 @@ func add_input_dice_view(): $"%AutoGrid".add_child(dice_view) +# this is run once the card emits card_removed +func card_view_run(): + # play the using animation + $AnimationPlayer.play("Fly Off") + yield($AnimationPlayer, "animation_finished") + + # remove the card completely once used + queue_free() + + func connect_signals(): - card.connect("card_removed", self, "card_view_use") + card.connect("card_removed", self, "card_view_run") -- 2.39.5 From 288cd288e4073351e3ff53859c96dd150660f074 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Tue, 26 Jul 2022 08:09:19 +0100 Subject: [PATCH 19/39] Run input dice disappear animation --- UI/CardView.gd | 6 ++++++ UI/InputDiceView.gd | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/UI/CardView.gd b/UI/CardView.gd index 82f9cd2..3fb2500 100644 --- a/UI/CardView.gd +++ b/UI/CardView.gd @@ -18,6 +18,7 @@ var card : Card = Card.new() setget update_cardview func _ready(): update_cardview() connect_signals() + card_view_run() func update_cardview(new_card = null): @@ -71,6 +72,11 @@ func add_input_dice_view(): # this is run once the card emits card_removed func card_view_run(): + + # play the disappearing input dice animation + for i in input_dice_views: + yield(i.run_disappear_animation(), "completed") + # play the using animation $AnimationPlayer.play("Fly Off") yield($AnimationPlayer, "animation_finished") diff --git a/UI/InputDiceView.gd b/UI/InputDiceView.gd index 1d63b75..faac5c8 100644 --- a/UI/InputDiceView.gd +++ b/UI/InputDiceView.gd @@ -23,3 +23,8 @@ func set_bold(is_bold : bool = true): $Sprite.texture = load("res://Assets/DiceInput.png") bold = is_bold + + +func run_disappear_animation(): + $AnimationPlayer.play("Disappear") + yield($AnimationPlayer, "animation_finished") -- 2.39.5 From eb29b2ce44503d5d3bcca0530a7a17e432032242 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Tue, 26 Jul 2022 08:13:07 +0100 Subject: [PATCH 20/39] Increase Disappear run length --- UI/InputDiceView.tscn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UI/InputDiceView.tscn b/UI/InputDiceView.tscn index b8a4a4c..92b8c00 100644 --- a/UI/InputDiceView.tscn +++ b/UI/InputDiceView.tscn @@ -33,7 +33,7 @@ font_data = ExtResource( 1 ) [sub_resource type="Animation" id=8] resource_name = "Disappear" -length = 0.5 +length = 0.8 step = 0.01 tracks/0/type = "value" tracks/0/path = NodePath("Sprite:rect_scale") -- 2.39.5 From 87a5c280d6571220496daf0116ded9939d800172 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Tue, 26 Jul 2022 08:48:47 +0100 Subject: [PATCH 21/39] Disable animation autorun --- UI/CardView.gd | 1 - 1 file changed, 1 deletion(-) diff --git a/UI/CardView.gd b/UI/CardView.gd index 3fb2500..e7f0be5 100644 --- a/UI/CardView.gd +++ b/UI/CardView.gd @@ -18,7 +18,6 @@ var card : Card = Card.new() setget update_cardview func _ready(): update_cardview() connect_signals() - card_view_run() func update_cardview(new_card = null): -- 2.39.5 From 40fb724000f101e1a5823ee40546342c11e4dd88 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Tue, 26 Jul 2022 08:51:18 +0100 Subject: [PATCH 22/39] Add a few TODOs --- UI/CardView.gd | 3 +++ 1 file changed, 3 insertions(+) diff --git a/UI/CardView.gd b/UI/CardView.gd index e7f0be5..ca594f4 100644 --- a/UI/CardView.gd +++ b/UI/CardView.gd @@ -60,6 +60,9 @@ func update_cardview(new_card = null): for i in input_dice_views: i.bold = true + #TODO: same dice UI support + #TODO: hover UI support maybe + # add an input_dice_view to the array (for easy management) # and to the autogrid -- 2.39.5 From 349a1bf0d3ec0609ee33a15d9fad9ea536116e50 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Tue, 26 Jul 2022 09:57:58 +0100 Subject: [PATCH 23/39] Add a remove animation and method --- UI/CardView.gd | 9 +++++++++ UI/CardView.tscn | 23 ++++++++++++++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/UI/CardView.gd b/UI/CardView.gd index ca594f4..fa570e7 100644 --- a/UI/CardView.gd +++ b/UI/CardView.gd @@ -87,5 +87,14 @@ func card_view_run(): queue_free() +func card_view_remove(): + # play the remove animation + $AnimationPlayer.play("Drop Off") + yield($AnimationPlayer, "animation_finished") + + # remove the card completely once used + queue_free() + + func connect_signals(): card.connect("card_removed", self, "card_view_run") diff --git a/UI/CardView.tscn b/UI/CardView.tscn index 2875d8d..b70d185 100644 --- a/UI/CardView.tscn +++ b/UI/CardView.tscn @@ -1,10 +1,10 @@ -[gd_scene load_steps=10 format=2] +[gd_scene load_steps=11 format=2] [ext_resource path="res://UI/CardView.gd" type="Script" id=1] [ext_resource path="res://Assets/Metropolis-font/Metropolis-Bold.ttf" type="DynamicFontData" id=4] [ext_resource path="res://AutoGridContainer - Full Version/AutoGridContainer.tscn" type="PackedScene" id=6] -[sub_resource type="StyleBoxFlat" id=6] +[sub_resource type="StyleBoxFlat" id=9] bg_color = Color( 0.858824, 0.278431, 0.345098, 1 ) corner_radius_top_left = 20 corner_radius_top_right = 20 @@ -24,6 +24,22 @@ size = 20 use_filter = true font_data = ExtResource( 4 ) +[sub_resource type="Animation" id=10] +resource_name = "Drop Off" +length = 0.5 +tracks/0/type = "value" +tracks/0/path = NodePath("LocalPosition:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 0.297304, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 800 ) ] +} + [sub_resource type="Animation" id=7] resource_name = "Fly Off" length = 0.5 @@ -97,7 +113,7 @@ anchor_bottom = 1.0 unique_name_in_owner = true anchor_right = 1.0 anchor_bottom = 1.0 -custom_styles/panel = SubResource( 6 ) +custom_styles/panel = SubResource( 9 ) [node name="VBox" type="VBoxContainer" parent="LocalPosition"] anchor_right = 1.0 @@ -135,5 +151,6 @@ valign = 1 autowrap = true [node name="AnimationPlayer" type="AnimationPlayer" parent="."] +"anims/Drop Off" = SubResource( 10 ) "anims/Fly Off" = SubResource( 7 ) anims/RESET = SubResource( 8 ) -- 2.39.5 From 40ccd28fb967e016985a3b1be84e66f399e3c4d0 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Fri, 29 Jul 2022 20:49:32 +0100 Subject: [PATCH 24/39] Implement basic CardContainer --- Characters/Character.gd | 12 +++++ UI/CardContainer.gd | 114 ++++++---------------------------------- 2 files changed, 28 insertions(+), 98 deletions(-) diff --git a/Characters/Character.gd b/Characters/Character.gd index 700aab3..89a32f9 100644 --- a/Characters/Character.gd +++ b/Characters/Character.gd @@ -11,10 +11,20 @@ var map_position : Vector2 = Vector2.ZERO onready var target_position : Vector2 = position var moving : bool = false +var cards = [] setget ,get_cards + +func get_cards(): + for child in get_children(): + if "Card" in child.name: + cards.append(child) + + return cards + func level_change(new_level): # when leveing up restore health health = base_max_health * pow(level, 1.5) + level = new_level func _physics_process(delta): @@ -27,11 +37,13 @@ func _physics_process(delta): #TODO: Replace with tween magic position += (target_position - position)/2.5 + func take_damage(damage): health -= damage if health <= 0: die() + func die(): #Animation here queue_free() diff --git a/UI/CardContainer.gd b/UI/CardContainer.gd index 31d9e5a..781bf53 100644 --- a/UI/CardContainer.gd +++ b/UI/CardContainer.gd @@ -1,106 +1,24 @@ extends Control -signal return_dice(dice_number) -signal do_movement(movement_range) -signal do_damage(damage, damage_range) -signal do_effect(effect, effect_range) +const card_view_scene = preload("res://UI/CardView.tscn") -const card = preload("res://UI/Card.tscn") -const card_db_string = "res://Assets/CardDB/%s.tres" +var character : Character = Character.new() setget update_cards_shown +var card_views = [] -var selected : bool = false -var hovering_card = null - -var current_cards = [] - -var currently_holding_dice = null - - -func emit_return_dice(dice_number): - emit_signal("return_dice", dice_number) -func emit_do_movement(movement_range): - emit_signal("do_movement", movement_range) -func emit_do_damage(damage, damage_range): - emit_signal("do_damage", damage, damage_range) -func emit_do_effect(effect, effect_range): - emit_signal("do_effect", effect, effect_range) - - -func set_currently_holding_dice(dice_number : int): - currently_holding_dice = dice_number - - -func remove_card(card): - var card_index = current_cards.find(card) - current_cards.remove(card_index) - - -func _physics_process(delta): +func update_cards_shown(new_character = null): - # no keyboard input if not selected - if not selected: - hovering_card = null - return + # allow the update card shown function to work with and without setget + if new_character != null: + character = new_character - # if selected card is null, add a value - if not hovering_card: - hovering_card = 0 + # remove the old cards + for card_view in card_views: + yield(card_view.card_view_remove(), "completed") - # move the selection forward or backward the list depending on input - if (Input.is_action_just_pressed("ui_down") or - Input.is_action_just_pressed("ui_right")): - - current_cards[hovering_card].hovering_dice = null - - hovering_card += 1 - if hovering_card >= len(current_cards): - hovering_card = 0 - - if (Input.is_action_just_pressed("ui_up") or - Input.is_action_just_pressed("ui_left")): - - current_cards[hovering_card].hovering_dice = null - - hovering_card -= 1 - if hovering_card < 0: - hovering_card = len(current_cards) -1 - - # show the dice over the card if hovering - current_cards[hovering_card].hovering_dice = currently_holding_dice - - #if the enter key is pressed, input the dice into the card - if Input.is_action_just_pressed("ui_accept"): - current_cards[hovering_card].hovering_dice = null - current_cards[hovering_card].dice_inputted(currently_holding_dice) - hovering_card = 0 - selected = false - - -func draw_card(specific_card : String = ""): - # make a new card instance and add it to the grid container - var new_card = card.instance() - - # check if a specific card data exists - var card_data_check = File.new() - var card_data_exists : bool = card_data_check.file_exists(card_db_string % specific_card) - - # if a specifc card choosen, make new card that type - if card_data_exists: - new_card.card_info = load(card_db_string % specific_card) - else: #no card choosen, pick default - new_card.card_info = load(card_db_string % "Default") - - $Margin/HBox.add_child(new_card) - - # connect new_card.x signal to self.x - new_card.connect("return_dice", self, "emit_return_dice") - new_card.connect("do_movement", self, "emit_do_movement") - new_card.connect("do_damage", self, "emit_do_damage") - new_card.connect("do_effect", self, "emit_do_effect") - - # connect the signal remove card signal - new_card.connect("card_removed", self, "remove_card") - - # add the current card to the list of card - current_cards.append(new_card) + # add cards the new cards from the character + for card in character.cards: + var new_card_view = card_view_scene.instance() + new_card_view.card = card + $Margin/HBox.add_child(new_card_view) + card_views.append(new_card_view) -- 2.39.5 From 50028931136e81c32179476b8e0022a16f12cb16 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Fri, 29 Jul 2022 21:29:28 +0100 Subject: [PATCH 25/39] Add card_view_removed signal and fix a few bugs --- UI/CardView.gd | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/UI/CardView.gd b/UI/CardView.gd index fa570e7..01f2518 100644 --- a/UI/CardView.gd +++ b/UI/CardView.gd @@ -1,6 +1,8 @@ tool extends Control +signal card_view_removed(card_view) + const TYPE_COLORS = [ Color("#db4758"), # DAMAGE Color("#3cc361"), # UTILITY @@ -15,15 +17,11 @@ var input_dice_views = [] var card : Card = Card.new() setget update_cardview -func _ready(): - update_cardview() - connect_signals() - - func update_cardview(new_card = null): # allow the update card function to work with and without setget - if new_card != null: + if new_card != null and new_card != card: + disconnect_signals() card = new_card connect_signals() @@ -36,6 +34,11 @@ func update_cardview(new_card = null): $"%Name".text = card.card_info.name $"%Description".text = card.card_info.description + # remove the old input dice views + for i in input_dice_views: + i.queue_free() + input_dice_views = [] + # add the correct number of input dice views for i in card.card_info.number_of_dice: add_input_dice_view() @@ -73,7 +76,9 @@ func add_input_dice_view(): # this is run once the card emits card_removed -func card_view_run(): +func card_view_run(do_emit_signal : bool = true): + # emit card_view_removed signal + if do_emit_signal: emit_signal("card_view_removed", self) # play the disappearing input dice animation for i in input_dice_views: @@ -87,7 +92,10 @@ func card_view_run(): queue_free() -func card_view_remove(): +func card_view_remove(do_emit_signal : bool = true): + # emit card_view_removed signal + if do_emit_signal: emit_signal("card_view_removed", self) + # play the remove animation $AnimationPlayer.play("Drop Off") yield($AnimationPlayer, "animation_finished") @@ -96,5 +104,12 @@ func card_view_remove(): queue_free() +func disconnect_signals(): + if card.get_signal_connection_list("card_removed") == []: + return + + card.disconnect("card_removed", self, "card_view_run") + + func connect_signals(): card.connect("card_removed", self, "card_view_run") -- 2.39.5 From 4f89e0606683fc9ea72c396491e18a5fb1d0008b Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Fri, 29 Jul 2022 21:30:15 +0100 Subject: [PATCH 26/39] Add support for the card_view_removed signal --- UI/CardContainer.gd | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/UI/CardContainer.gd b/UI/CardContainer.gd index 781bf53..f70a2e9 100644 --- a/UI/CardContainer.gd +++ b/UI/CardContainer.gd @@ -14,7 +14,8 @@ func update_cards_shown(new_character = null): # remove the old cards for card_view in card_views: - yield(card_view.card_view_remove(), "completed") + yield(card_view.card_view_remove(false), "completed") + card_views = [] # add cards the new cards from the character for card in character.cards: @@ -22,3 +23,10 @@ func update_cards_shown(new_character = null): new_card_view.card = card $Margin/HBox.add_child(new_card_view) card_views.append(new_card_view) + new_card_view.connect("card_view_removed", self, "remove_from_card_views") + + +func remove_from_card_views(card_view): + var to_remove : int = card_views.find(card_view) + if to_remove != -1: + card_views.remove(to_remove) -- 2.39.5 From 7040c0e09d590b318a4a843cf645c960efee276c Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Fri, 29 Jul 2022 21:30:52 +0100 Subject: [PATCH 27/39] Remove uneeded self vairable from remove_card signal --- UI/Card.gd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/UI/Card.gd b/UI/Card.gd index 2b8abd8..390ab85 100644 --- a/UI/Card.gd +++ b/UI/Card.gd @@ -5,7 +5,7 @@ signal return_dice(dice_number) signal do_movement(movement_range) signal do_damage(damage, damage_range) signal do_effect(effect, effect_range) -signal card_removed(card_self) +signal card_removed() export (Resource) var card_info = preload("res://Assets/CardDB/Default.tres") @@ -138,6 +138,6 @@ func run_card(): input_dice = [] #card is used, disappear - emit_signal("card_removed", self) + emit_signal("card_removed") queue_free() -- 2.39.5 From 53462325c8177378ab40dc32178b66cf67e517b6 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Sat, 30 Jul 2022 15:35:51 +0100 Subject: [PATCH 28/39] Improve card run animation --- .../AutoGridContainer.tscn | 1 + TempBattle.tscn | 64 +++++++++++++++++++ UI/CardView.gd | 9 ++- UI/CardView.tscn | 25 ++++++-- UI/InputDiceView.tscn | 26 +++++++- 5 files changed, 116 insertions(+), 9 deletions(-) create mode 100644 TempBattle.tscn diff --git a/AutoGridContainer - Full Version/AutoGridContainer.tscn b/AutoGridContainer - Full Version/AutoGridContainer.tscn index 1bfeca5..bb4e3a8 100644 --- a/AutoGridContainer - Full Version/AutoGridContainer.tscn +++ b/AutoGridContainer - Full Version/AutoGridContainer.tscn @@ -12,6 +12,7 @@ script = ExtResource( 1 ) [node name="Scroll" type="ScrollContainer" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 +rect_clip_content = false size_flags_horizontal = 3 size_flags_vertical = 3 scroll_horizontal_enabled = false diff --git a/TempBattle.tscn b/TempBattle.tscn new file mode 100644 index 0000000..5083967 --- /dev/null +++ b/TempBattle.tscn @@ -0,0 +1,64 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://Characters/Character.gd" type="Script" id=1] +[ext_resource path="res://UI/CardContainer.tscn" type="PackedScene" id=2] +[ext_resource path="res://UI/Card.gd" type="Script" id=3] +[ext_resource path="res://Assets/CardDB/Broadsword.tres" type="Resource" id=4] +[ext_resource path="res://Assets/CardDB/Poisonous apple.tres" type="Resource" id=5] +[ext_resource path="res://Assets/CardDB/Magic Carving Knife.tres" type="Resource" id=6] + +[sub_resource type="GDScript" id=1] +script/source = "extends Node2D + + +func _ready(): + $CanvasLayer/CardContainer.character = $Character + yield(get_tree().create_timer(1), \"timeout\") + $Character/Card2.run_card() + yield(get_tree().create_timer(5), \"timeout\") + $CanvasLayer/CardContainer.character = $Character2 + + yield(get_tree().create_timer(5), \"timeout\") + $Character2/Card4.run_card() +" + +[node name="TempBattle" type="Node2D"] +script = SubResource( 1 ) + +[node name="CanvasLayer" type="CanvasLayer" parent="."] + +[node name="CardContainer" parent="CanvasLayer" instance=ExtResource( 2 )] +margin_top = 317.0 +margin_right = -321.0 + +[node name="Character" type="Node2D" parent="."] +script = ExtResource( 1 ) + +[node name="Card1" type="Node" parent="Character"] +script = ExtResource( 3 ) +card_info = ExtResource( 4 ) + +[node name="Card2" type="Node" parent="Character"] +script = ExtResource( 3 ) +card_info = ExtResource( 5 ) + +[node name="Card3" type="Node" parent="Character"] +script = ExtResource( 3 ) + +[node name="Character2" type="Node2D" parent="."] +script = ExtResource( 1 ) + +[node name="Card4" type="Node" parent="Character2"] +script = ExtResource( 3 ) +card_info = ExtResource( 4 ) + +[node name="Card5" type="Node" parent="Character2"] +script = ExtResource( 3 ) +card_info = ExtResource( 5 ) + +[node name="Card6" type="Node" parent="Character2"] +script = ExtResource( 3 ) +card_info = ExtResource( 6 ) + +[node name="Character3" type="Node2D" parent="."] +script = ExtResource( 1 ) diff --git a/UI/CardView.gd b/UI/CardView.gd index 01f2518..c4a3430 100644 --- a/UI/CardView.gd +++ b/UI/CardView.gd @@ -1,4 +1,3 @@ -tool extends Control signal card_view_removed(card_view) @@ -81,8 +80,7 @@ func card_view_run(do_emit_signal : bool = true): if do_emit_signal: emit_signal("card_view_removed", self) # play the disappearing input dice animation - for i in input_dice_views: - yield(i.run_disappear_animation(), "completed") + play_input_dice_animations() # play the using animation $AnimationPlayer.play("Fly Off") @@ -104,6 +102,11 @@ func card_view_remove(do_emit_signal : bool = true): queue_free() +func play_input_dice_animations(): + for i in input_dice_views: + i.run_disappear_animation() + + func disconnect_signals(): if card.get_signal_connection_list("card_removed") == []: return diff --git a/UI/CardView.tscn b/UI/CardView.tscn index b70d185..e8f7901 100644 --- a/UI/CardView.tscn +++ b/UI/CardView.tscn @@ -42,7 +42,7 @@ tracks/0/keys = { [sub_resource type="Animation" id=7] resource_name = "Fly Off" -length = 0.5 +length = 1.5 step = 0.01 tracks/0/type = "value" tracks/0/path = NodePath("LocalPosition:rect_position") @@ -51,10 +51,10 @@ tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { -"times": PoolRealArray( 0, 0.5 ), -"transitions": PoolRealArray( 5, 1 ), +"times": PoolRealArray( 0, 0.4, 0.65, 1.3 ), +"transitions": PoolRealArray( 0.647041, 0.647041, 4, 1 ), "update": 0, -"values": [ Vector2( 0, 0 ), Vector2( 0, -999 ) ] +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 20 ), Vector2( 0, -700 ) ] } tracks/1/type = "value" tracks/1/path = NodePath(".:rect_scale") @@ -63,11 +63,25 @@ tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { -"times": PoolRealArray( 0, 0.18, 0.5 ), +"times": PoolRealArray( 0, 0.65, 1.3 ), "transitions": PoolRealArray( 1, 6.06286, 1 ), "update": 0, "values": [ Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 1, 1.4 ) ] } +tracks/2/type = "method" +tracks/2/path = NodePath(".") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "play_input_dice_animations" +} ] +} [sub_resource type="Animation" id=8] length = 0.001 @@ -108,6 +122,7 @@ script = ExtResource( 1 ) [node name="LocalPosition" type="Control" parent="."] anchor_right = 1.0 anchor_bottom = 1.0 +margin_bottom = 6.10352e-05 [node name="Background" type="PanelContainer" parent="LocalPosition"] unique_name_in_owner = true diff --git a/UI/InputDiceView.tscn b/UI/InputDiceView.tscn index 92b8c00..929f92d 100644 --- a/UI/InputDiceView.tscn +++ b/UI/InputDiceView.tscn @@ -71,6 +71,18 @@ tracks/2/keys = { "update": 1, "values": [ false, true ] } +tracks/3/type = "value" +tracks/3/path = NodePath("Sprite/ExtraInfo:modulate") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.25 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ] +} [sub_resource type="Animation" id=9] length = 0.001 @@ -110,6 +122,18 @@ tracks/2/keys = { "update": 0, "values": [ false ] } +tracks/3/type = "value" +tracks/3/path = NodePath("Sprite/ExtraInfo:modulate") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ) ] +} [node name="InputDiceView" type="Control"] anchor_right = 1.0 @@ -140,7 +164,7 @@ texture = ExtResource( 2 ) expand = true stretch_mode = 6 -[node name="ExtraInfo" type="Label" parent="."] +[node name="ExtraInfo" type="Label" parent="Sprite"] unique_name_in_owner = true anchor_right = 1.0 anchor_bottom = 1.0 -- 2.39.5 From d863e991bb3024aa802faa3b4d91a210860c6d5d Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Sun, 31 Jul 2022 17:35:44 +0100 Subject: [PATCH 29/39] Add the ActiveController --- Management/ActiveController.gd | 35 ++++++++++++++++++++++++++++++++ Management/ActiveController.tscn | 6 ++++++ 2 files changed, 41 insertions(+) create mode 100644 Management/ActiveController.gd create mode 100644 Management/ActiveController.tscn diff --git a/Management/ActiveController.gd b/Management/ActiveController.gd new file mode 100644 index 0000000..6b29024 --- /dev/null +++ b/Management/ActiveController.gd @@ -0,0 +1,35 @@ +extends Node + +var current_active : int = 0 + + +func _process(_delta): + the_connecting() + the_pausing() + + +func the_pausing(): + # iterate through the children, allowing only the current active node to run + for i in len(get_children()): + get_child(i).pause_mode = 0 if i == current_active else 1 + + +func the_connecting(): + # iterate through the children and connect up the child_finished method + for i in len(get_children()): + # don't connect the signal if it doesn't exist + if not get_child(i).has_signal("finished_active"): + continue + + # don't connect the signal if already connected + if get_child(i).get_signal_connection_list("finished_active") == []: + continue + + get_child(i).connect("finished_active", self, child_finished()) + + +func child_finished(): + # designed to be called from a signal + current_active += 1 + if current_active >= len(get_children()): + current_active = 0 diff --git a/Management/ActiveController.tscn b/Management/ActiveController.tscn new file mode 100644 index 0000000..a359797 --- /dev/null +++ b/Management/ActiveController.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://Management/ActiveController.gd" type="Script" id=1] + +[node name="ActiveController" type="Node"] +script = ExtResource( 1 ) -- 2.39.5 From a0ad1442adac88ba74341e2639584ea855dbdba3 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Sun, 31 Jul 2022 17:42:04 +0100 Subject: [PATCH 30/39] Remove TempBattle --- TempBattle.tscn | 64 ------------------------------------------------- 1 file changed, 64 deletions(-) delete mode 100644 TempBattle.tscn diff --git a/TempBattle.tscn b/TempBattle.tscn deleted file mode 100644 index 5083967..0000000 --- a/TempBattle.tscn +++ /dev/null @@ -1,64 +0,0 @@ -[gd_scene load_steps=8 format=2] - -[ext_resource path="res://Characters/Character.gd" type="Script" id=1] -[ext_resource path="res://UI/CardContainer.tscn" type="PackedScene" id=2] -[ext_resource path="res://UI/Card.gd" type="Script" id=3] -[ext_resource path="res://Assets/CardDB/Broadsword.tres" type="Resource" id=4] -[ext_resource path="res://Assets/CardDB/Poisonous apple.tres" type="Resource" id=5] -[ext_resource path="res://Assets/CardDB/Magic Carving Knife.tres" type="Resource" id=6] - -[sub_resource type="GDScript" id=1] -script/source = "extends Node2D - - -func _ready(): - $CanvasLayer/CardContainer.character = $Character - yield(get_tree().create_timer(1), \"timeout\") - $Character/Card2.run_card() - yield(get_tree().create_timer(5), \"timeout\") - $CanvasLayer/CardContainer.character = $Character2 - - yield(get_tree().create_timer(5), \"timeout\") - $Character2/Card4.run_card() -" - -[node name="TempBattle" type="Node2D"] -script = SubResource( 1 ) - -[node name="CanvasLayer" type="CanvasLayer" parent="."] - -[node name="CardContainer" parent="CanvasLayer" instance=ExtResource( 2 )] -margin_top = 317.0 -margin_right = -321.0 - -[node name="Character" type="Node2D" parent="."] -script = ExtResource( 1 ) - -[node name="Card1" type="Node" parent="Character"] -script = ExtResource( 3 ) -card_info = ExtResource( 4 ) - -[node name="Card2" type="Node" parent="Character"] -script = ExtResource( 3 ) -card_info = ExtResource( 5 ) - -[node name="Card3" type="Node" parent="Character"] -script = ExtResource( 3 ) - -[node name="Character2" type="Node2D" parent="."] -script = ExtResource( 1 ) - -[node name="Card4" type="Node" parent="Character2"] -script = ExtResource( 3 ) -card_info = ExtResource( 4 ) - -[node name="Card5" type="Node" parent="Character2"] -script = ExtResource( 3 ) -card_info = ExtResource( 5 ) - -[node name="Card6" type="Node" parent="Character2"] -script = ExtResource( 3 ) -card_info = ExtResource( 6 ) - -[node name="Character3" type="Node2D" parent="."] -script = ExtResource( 1 ) -- 2.39.5 From 2176c954170e62525561ee5123acb8e4ed474c27 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Sun, 14 Aug 2022 08:55:10 +0100 Subject: [PATCH 31/39] Add scene_failed signal and fix the_connecting() --- Management/ActiveController.gd | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/Management/ActiveController.gd b/Management/ActiveController.gd index 6b29024..0fb9d2b 100644 --- a/Management/ActiveController.gd +++ b/Management/ActiveController.gd @@ -17,15 +17,21 @@ func the_pausing(): func the_connecting(): # iterate through the children and connect up the child_finished method for i in len(get_children()): - # don't connect the signal if it doesn't exist - if not get_child(i).has_signal("finished_active"): - continue - # don't connect the signal if already connected - if get_child(i).get_signal_connection_list("finished_active") == []: - continue + # connect the finished signal if it exists and + # if the failed finished isn't already connected + if (get_child(i).has_signal("scene_finished") and + get_child(i).get_signal_connection_list("scene_finished") == []): + + get_child(i).connect("scene_finished", self, child_finished()) - get_child(i).connect("finished_active", self, child_finished()) + + # connect the failed signal if it exists and + # if the failed signal isn't already connected + if (get_child(i).has_signal("scene_failed") and + get_child(i).get_signal_connection_list("scene_failed") == []): + + get_child(i).connect("scene_failed", self, child_failed()) func child_finished(): @@ -33,3 +39,10 @@ func child_finished(): current_active += 1 if current_active >= len(get_children()): current_active = 0 + + +func child_failed(): + # designed to be called from a signal + current_active -= 1 + if current_active < 0: + current_active = len(get_children()) - 1 -- 2.39.5 From 47f59a7a6dbfc8aefb99cd617f57c5eccfb7fcbb Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Sun, 14 Aug 2022 09:40:56 +0100 Subject: [PATCH 32/39] Add new Battle Scene for managing character movement and damage (pending) --- Scenes/Battle.gd | 82 ++++++++++++++++++++++++++++++++++++++++++++++ Scenes/Battle.tscn | 48 +++++++++++++++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 Scenes/Battle.gd create mode 100644 Scenes/Battle.tscn diff --git a/Scenes/Battle.gd b/Scenes/Battle.gd new file mode 100644 index 0000000..5ada12a --- /dev/null +++ b/Scenes/Battle.gd @@ -0,0 +1,82 @@ +extends Node2D + +signal scene_finished +signal scene_failed + + +var character = null setget new_character +var movement_queue = [] +var character_original_position : Vector2 = Vector2.ZERO +var character_movement_range = 5 + + + +func new_character(chara): + + # don't allow non-character characters + if not chara.is_in_group("OnMap"): + return + + # clear the movement queue upon a change in character + movement_queue = [] + + # set the character's map postiton + chara.map_position = $TileMap.world_to_map(chara.position) + chara.target_position = $TileMap.map_to_world(chara.map_position) + chara.target_position += $TileMap.cell_size/2 + + # set the original_position + character_original_position = chara.map_position + + character = chara + + +func character_movement_input(): + if Input.is_action_just_pressed("ui_up"): + movement_queue.append(Vector2.UP) + if Input.is_action_just_pressed("ui_down"): + movement_queue.append(Vector2.DOWN) + if Input.is_action_just_pressed("ui_left"): + movement_queue.append(Vector2.LEFT) + if Input.is_action_just_pressed("ui_right"): + movement_queue.append(Vector2.RIGHT) + + if Input.is_action_just_pressed("ui_accept"): + emit_signal("scene_finished") + + +func character_movement(): + #remove uneeded inputs from the queue + for i in len(movement_queue) - 1: + #remove if adjacent values are opposites + if (movement_queue[i].x * movement_queue[i+1].x == -1 or + movement_queue[i].y * movement_queue[i+1].y == -1): + movement_queue[i] = Vector2.ZERO + movement_queue[i+1] = Vector2.ZERO + #remove null values + for i in len(movement_queue): + if movement_queue.find(Vector2.ZERO) != -1: + movement_queue.remove(movement_queue.find(Vector2.ZERO)) + + if len(movement_queue) == 0: + return + + if not character.moving: + + var total_distance = character.map_position + movement_queue[0] + total_distance -= character_original_position + + #if the character is moving too far, cancel movement and empty queue + if total_distance.length() > character_movement_range: + movement_queue = [] + return + + #move the character once space in the queue if not moving + character.map_position += movement_queue.pop_front() + character.target_position = $TileMap.map_to_world(character.map_position) + character.target_position += $TileMap.cell_size/2 + + +func _physics_process(_delta): + character_movement() + character_movement_input() diff --git a/Scenes/Battle.tscn b/Scenes/Battle.tscn new file mode 100644 index 0000000..5449e82 --- /dev/null +++ b/Scenes/Battle.tscn @@ -0,0 +1,48 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://icon.png" type="Texture" id=1] +[ext_resource path="res://Assets/TestTile.png" type="Texture" id=2] +[ext_resource path="res://Scenes/Battle.gd" type="Script" id=3] + +[sub_resource type="TileSet" id=1] +0/name = "icon.png 0" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 8, 4, 51, 19 ) +0/tile_mode = 0 +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape_one_way = false +0/shape_one_way_margin = 0.0 +0/shapes = [ ] +0/z_index = 0 +1/name = "TestTile.png 1" +1/texture = ExtResource( 2 ) +1/tex_offset = Vector2( 16, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 0, 0, 160, 64 ) +1/tile_mode = 0 +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape_one_way = false +1/shape_one_way_margin = 0.0 +1/shapes = [ ] +1/z_index = 0 + +[node name="Battle" type="Node2D"] +unique_name_in_owner = true +script = ExtResource( 3 ) + +[node name="TileMap" type="TileMap" parent="."] +mode = 2 +tile_set = SubResource( 1 ) +cell_size = Vector2( 128, 64 ) +cell_custom_transform = Transform2D( 128, 0, 32, 64, 0, 0 ) +centered_textures = true +format = 1 +tile_data = PoolIntArray( 65538, 1, 0, 65539, 1, 0, 65540, 1, 0, 65541, 1, 0, 131074, 1, 0, 131075, 1, 0, 131076, 1, 0, 131077, 1, 0, 131078, 0, 0, 196610, 1, 0, 196611, 1, 0, 196612, 1, 0, 196613, 1, 0, 196614, 0, 0, 262144, 0, 0, 262145, 0, 0, 262146, 1, 0, 262147, 1, 0, 262148, 1, 0, 262149, 0, 0, 262150, 0, 0, 327681, 0, 0, 327682, 0, 0, 327683, 0, 0, 327684, 0, 0, 327685, 0, 0, 327686, 0, 0, 393217, 0, 0, 393218, 0, 0, 393219, 0, 0, 393220, 0, 0, 393221, 0, 0, 393222, 0, 0, 458754, 0, 0, 458755, 0, 0, 458756, 0, 0, 458757, 0, 0, 524291, 0, 0, 524292, 0, 0 ) -- 2.39.5 From a7256d56edce09fac1fa8844c87bdc6e64730ac2 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Sun, 14 Aug 2022 11:24:48 +0100 Subject: [PATCH 33/39] Partially fix the active controller --- Management/ActiveController.gd | 7 ++++--- Scenes/Battle.gd | 4 ++++ UI/CardContainer.gd | 5 +++++ UI/DiceView.gd | 4 ++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Management/ActiveController.gd b/Management/ActiveController.gd index 0fb9d2b..2515b7a 100644 --- a/Management/ActiveController.gd +++ b/Management/ActiveController.gd @@ -11,7 +11,8 @@ func _process(_delta): func the_pausing(): # iterate through the children, allowing only the current active node to run for i in len(get_children()): - get_child(i).pause_mode = 0 if i == current_active else 1 + if get_child(i).has_signal("scene_finished"): # only change if active var should exist + get_child(i).active = true if i == current_active else false func the_connecting(): @@ -23,7 +24,7 @@ func the_connecting(): if (get_child(i).has_signal("scene_finished") and get_child(i).get_signal_connection_list("scene_finished") == []): - get_child(i).connect("scene_finished", self, child_finished()) + get_child(i).connect("scene_finished", self, "child_finished") # connect the failed signal if it exists and @@ -31,7 +32,7 @@ func the_connecting(): if (get_child(i).has_signal("scene_failed") and get_child(i).get_signal_connection_list("scene_failed") == []): - get_child(i).connect("scene_failed", self, child_failed()) + get_child(i).connect("scene_failed", self, "child_failed") func child_finished(): diff --git a/Scenes/Battle.gd b/Scenes/Battle.gd index 5ada12a..b4df1dd 100644 --- a/Scenes/Battle.gd +++ b/Scenes/Battle.gd @@ -3,6 +3,7 @@ extends Node2D signal scene_finished signal scene_failed +var active : bool = false var character = null setget new_character var movement_queue = [] @@ -78,5 +79,8 @@ func character_movement(): func _physics_process(_delta): + if not active: + return + character_movement() character_movement_input() diff --git a/UI/CardContainer.gd b/UI/CardContainer.gd index f70a2e9..17f1770 100644 --- a/UI/CardContainer.gd +++ b/UI/CardContainer.gd @@ -1,5 +1,10 @@ extends Control +signal scene_finished +signal scene_failed + +var active : bool = false + const card_view_scene = preload("res://UI/CardView.tscn") var character : Character = Character.new() setget update_cards_shown diff --git a/UI/DiceView.gd b/UI/DiceView.gd index c36f194..f2fa098 100644 --- a/UI/DiceView.gd +++ b/UI/DiceView.gd @@ -1,6 +1,10 @@ extends Control signal dice_selected (dice_value) +signal scene_finished +signal scene_failed + +var active : bool = false const dice = preload("res://UI/Dice.tscn") -- 2.39.5 From 59bec36c088b85da191937523cfb39004d593750 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Sun, 14 Aug 2022 11:32:54 +0100 Subject: [PATCH 34/39] Basic half-baked attempt at new battle scene --- Scenes/BattleScene.gd | 120 +--------------------------------------- Scenes/BattleScene.tscn | 100 ++++++--------------------------- 2 files changed, 19 insertions(+), 201 deletions(-) diff --git a/Scenes/BattleScene.gd b/Scenes/BattleScene.gd index a3beb76..a810917 100644 --- a/Scenes/BattleScene.gd +++ b/Scenes/BattleScene.gd @@ -1,121 +1,5 @@ -extends Node2D - -var movement_queue = [] - -var player_to_move : bool = false -var player_original_position : Vector2 = Vector2.ZERO -var player_movement_range = 5 +extends Node func _ready(): - # start with the DiceView being selected - $UI/DiceView.selected = true - $UI/CardView.selected = false - self.player_to_move = false - - $UI/CardView.draw_card("Broadsword") - $UI/CardView.draw_card("Sprint") - $UI/CardView.draw_card("Magic Carving Knife") - - $UI/DiceView.roll_dice() - $UI/DiceView.roll_dice() - $UI/DiceView.roll_dice() - - - # generate all of the OnTile nodes's tile positions - for child in get_children(): - if child.is_in_group("OnMap"): - child.map_position = $TileMap.world_to_map(child.position) - child.target_position = $TileMap.map_to_world(child.map_position) - child.target_position += $TileMap.cell_size/2 - - -func do_damage_around_player(damage, damage_range): - for enemy in get_children(): - - if not enemy.is_in_group("Enemy"): - continue - - if ($Player.map_position - enemy.map_position).length() > damage_range: - continue - - enemy.take_damage(damage) - -func do_effect_around_player(effect, effect_range): - pass - -func set_player_to_move(movement_range : int = 0): - player_to_move = true - player_movement_range = movement_range - - -func _physics_process(delta): - - # player should carry on queued movements no matter what - player_movement() - - # note down the player position before moving - if not player_to_move: - player_original_position = $Player.map_position - - # if the player needs to move, allow the input to be for the player - if player_to_move: - player_movement_input() - return - - # select the card chooser if dice is selected - if (Input.is_action_just_pressed("ui_accept") - and $UI/DiceView.selected == true): - yield(get_tree().create_timer(0.1), "timeout") #TODO BAD WORKAROUND - $UI/DiceView.selected = false - $UI/CardView.selected = true - - # if all 3 parts are done, select the DiceView again - if ($UI/DiceView.selected == false and - $UI/CardView.selected == false and - self.player_to_move == false): - - $UI/DiceView.selected = true - - -func player_movement_input(): - if Input.is_action_just_pressed("ui_up"): - movement_queue.append(Vector2.UP) - if Input.is_action_just_pressed("ui_down"): - movement_queue.append(Vector2.DOWN) - if Input.is_action_just_pressed("ui_left"): - movement_queue.append(Vector2.LEFT) - if Input.is_action_just_pressed("ui_right"): - movement_queue.append(Vector2.RIGHT) - - if Input.is_action_just_pressed("ui_accept"): - player_to_move = false - - -func player_movement(): - #remove uneeded inputs from the queue - for i in len(movement_queue) - 1: - #remove if adjacent values are opposites - if (movement_queue[i].x * movement_queue[i+1].x == -1 or - movement_queue[i].y * movement_queue[i+1].y == -1): - movement_queue[i] = Vector2.ZERO - movement_queue[i+1] = Vector2.ZERO - #remove null values - for i in len(movement_queue): - if movement_queue.find(Vector2.ZERO) != -1: - movement_queue.remove(movement_queue.find(Vector2.ZERO)) - - if len(movement_queue) == 0: - return - - if not $Player.moving: - #if the player is moving too far, cancel movement and empty queue - if (($Player.map_position + movement_queue[0] - - player_original_position).length() > player_movement_range): - movement_queue = [] - return - - #move the character once space in the queue if not moving - $Player.map_position += movement_queue.pop_front() - $Player.target_position = $TileMap.map_to_world($Player.map_position) - $Player.target_position += $TileMap.cell_size/2 + $"%Battle".character = $Player diff --git a/Scenes/BattleScene.tscn b/Scenes/BattleScene.tscn index cc26ee0..8b9708b 100644 --- a/Scenes/BattleScene.tscn +++ b/Scenes/BattleScene.tscn @@ -1,93 +1,27 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=7 format=2] -[ext_resource path="res://icon.png" type="Texture" id=1] +[ext_resource path="res://Scenes/Battle.tscn" type="PackedScene" id=1] [ext_resource path="res://Characters/Player.tscn" type="PackedScene" id=2] [ext_resource path="res://Scenes/BattleScene.gd" type="Script" id=3] [ext_resource path="res://UI/CardContainer.tscn" type="PackedScene" id=4] [ext_resource path="res://UI/DiceView.tscn" type="PackedScene" id=5] -[ext_resource path="res://Assets/TestTile.png" type="Texture" id=6] -[ext_resource path="res://Characters/Enemy.tscn" type="PackedScene" id=7] +[ext_resource path="res://Management/ActiveController.tscn" type="PackedScene" id=8] -[sub_resource type="TileSet" id=1] -0/name = "icon.png 0" -0/texture = ExtResource( 1 ) -0/tex_offset = Vector2( 0, 0 ) -0/modulate = Color( 1, 1, 1, 1 ) -0/region = Rect2( 8, 4, 51, 19 ) -0/tile_mode = 0 -0/occluder_offset = Vector2( 0, 0 ) -0/navigation_offset = Vector2( 0, 0 ) -0/shape_offset = Vector2( 0, 0 ) -0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -0/shape_one_way = false -0/shape_one_way_margin = 0.0 -0/shapes = [ ] -0/z_index = 0 -1/name = "TestTile.png 1" -1/texture = ExtResource( 6 ) -1/tex_offset = Vector2( 16, 0 ) -1/modulate = Color( 1, 1, 1, 1 ) -1/region = Rect2( 0, 0, 160, 64 ) -1/tile_mode = 0 -1/occluder_offset = Vector2( 0, 0 ) -1/navigation_offset = Vector2( 0, 0 ) -1/shape_offset = Vector2( 0, 0 ) -1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -1/shape_one_way = false -1/shape_one_way_margin = 0.0 -1/shapes = [ ] -1/z_index = 0 - -[node name="BattleScene" type="Node2D"] +[node name="BattleScene" type="Node"] script = ExtResource( 3 ) -[node name="TileMap" type="TileMap" parent="."] -mode = 2 -tile_set = SubResource( 1 ) -cell_size = Vector2( 128, 64 ) -cell_custom_transform = Transform2D( 128, 0, 32, 64, 0, 0 ) -centered_textures = true -format = 1 -tile_data = PoolIntArray( 65538, 1, 0, 65539, 1, 0, 65540, 1, 0, 65541, 1, 0, 131074, 1, 0, 131075, 1, 0, 131076, 1, 0, 131077, 1, 0, 131078, 0, 0, 196610, 1, 0, 196611, 1, 0, 196612, 1, 0, 196613, 1, 0, 196614, 0, 0, 262144, 0, 0, 262145, 0, 0, 262146, 1, 0, 262147, 1, 0, 262148, 1, 0, 262149, 0, 0, 262150, 0, 0, 327681, 0, 0, 327682, 0, 0, 327683, 0, 0, 327684, 0, 0, 327685, 0, 0, 327686, 0, 0, 393217, 0, 0, 393218, 0, 0, 393219, 0, 0, 393220, 0, 0, 393221, 0, 0, 393222, 0, 0, 458754, 0, 0, 458755, 0, 0, 458756, 0, 0, 458757, 0, 0, 524291, 0, 0, 524292, 0, 0 ) +[node name="ActiveController" parent="." instance=ExtResource( 8 )] + +[node name="Battle" parent="ActiveController" instance=ExtResource( 1 )] + +[node name="DiceView" parent="ActiveController" instance=ExtResource( 5 )] +unique_name_in_owner = true +margin_left = 782.0 +margin_top = 375.0 + +[node name="CardContainer" parent="ActiveController" instance=ExtResource( 4 )] +unique_name_in_owner = true +margin_top = 351.0 +margin_right = -425.0 [node name="Player" parent="." instance=ExtResource( 2 )] -position = Vector2( 195, 283 ) - -[node name="Camera2D" type="Camera2D" parent="Player"] -offset = Vector2( 0, 200 ) -current = true -drag_margin_h_enabled = true -drag_margin_v_enabled = true -drag_margin_left = 0.3 -drag_margin_top = 0.05 -drag_margin_right = 0.3 - -[node name="Enemy" parent="." instance=ExtResource( 7 )] -position = Vector2( 565, 218 ) - -[node name="Enemy2" parent="." instance=ExtResource( 7 )] -position = Vector2( 916, 218 ) - -[node name="Enemy3" parent="." instance=ExtResource( 7 )] -position = Vector2( 1140, 630 ) - -[node name="UI" type="CanvasLayer" parent="."] - -[node name="CardView" parent="UI" instance=ExtResource( 4 )] -anchor_top = 0.509722 -anchor_right = 0.754687 -margin_top = -7.62939e-06 -margin_right = 1.52588e-05 - -[node name="DiceView" parent="UI" instance=ExtResource( 5 )] -anchor_left = 0.754687 -anchor_top = 0.509722 -margin_left = 1.52588e-05 -margin_top = -7.62939e-06 -grow_horizontal = 0 - -[connection signal="do_damage" from="UI/CardView" to="." method="do_damage_around_player"] -[connection signal="do_effect" from="UI/CardView" to="." method="do_effect_around_player"] -[connection signal="do_movement" from="UI/CardView" to="." method="set_player_to_move"] -[connection signal="return_dice" from="UI/CardView" to="UI/DiceView" method="roll_dice"] -[connection signal="dice_selected" from="UI/DiceView" to="UI/CardView" method="set_currently_holding_dice"] -- 2.39.5 From ea2dde50e3bc77f94378a2d66bf69f4e22796b21 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Mon, 15 Aug 2022 08:32:08 +0100 Subject: [PATCH 35/39] Make the CardContainer.gd generic --- UI/CardContainer.gd | 37 ------------------------------------- UI/CardContainer.tscn | 11 ++++++++--- UI/ItemContainer.gd | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 40 deletions(-) delete mode 100644 UI/CardContainer.gd create mode 100644 UI/ItemContainer.gd diff --git a/UI/CardContainer.gd b/UI/CardContainer.gd deleted file mode 100644 index 17f1770..0000000 --- a/UI/CardContainer.gd +++ /dev/null @@ -1,37 +0,0 @@ -extends Control - -signal scene_finished -signal scene_failed - -var active : bool = false - -const card_view_scene = preload("res://UI/CardView.tscn") - -var character : Character = Character.new() setget update_cards_shown -var card_views = [] - - -func update_cards_shown(new_character = null): - - # allow the update card shown function to work with and without setget - if new_character != null: - character = new_character - - # remove the old cards - for card_view in card_views: - yield(card_view.card_view_remove(false), "completed") - card_views = [] - - # add cards the new cards from the character - for card in character.cards: - var new_card_view = card_view_scene.instance() - new_card_view.card = card - $Margin/HBox.add_child(new_card_view) - card_views.append(new_card_view) - new_card_view.connect("card_view_removed", self, "remove_from_card_views") - - -func remove_from_card_views(card_view): - var to_remove : int = card_views.find(card_view) - if to_remove != -1: - card_views.remove(to_remove) diff --git a/UI/CardContainer.tscn b/UI/CardContainer.tscn index e117466..2cb4d3a 100644 --- a/UI/CardContainer.tscn +++ b/UI/CardContainer.tscn @@ -1,11 +1,16 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=3 format=2] -[ext_resource path="res://UI/CardContainer.gd" type="Script" id=5] +[ext_resource path="res://UI/CardView.tscn" type="PackedScene" id=1] +[ext_resource path="res://UI/ItemContainer.gd" type="Script" id=2] [node name="CardContainer" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 -script = ExtResource( 5 ) +script = ExtResource( 2 ) +item_view_scene = ExtResource( 1 ) +child_holder = NodePath("Margin/HBox") +character_property = "cards" +view_property = "card" [node name="Margin" type="MarginContainer" parent="."] anchor_right = 1.0 diff --git a/UI/ItemContainer.gd b/UI/ItemContainer.gd new file mode 100644 index 0000000..9128dff --- /dev/null +++ b/UI/ItemContainer.gd @@ -0,0 +1,40 @@ +extends Control + +signal scene_finished +signal scene_failed + +var active : bool = false + +export (PackedScene) var item_view_scene +export (NodePath) var child_holder +export (String) var character_property = "items" +export (String) var view_property = "item" + +var character : Character = Character.new() setget update_items_shown +var item_views = [] + + +func update_items_shown(new_character = null): + + # allow the update item shown function to work with and without setget + if new_character != null: + character = new_character + + # remove the old items + for item_view in item_views: + yield(item_view.item_view_remove(false), "completed") + item_views = [] + + # add items the new items from the character + for item in character.get(character_property): + var new_item_view = item_view_scene.instance() + new_item_view.set(view_property, item) + get_node(child_holder).add_child(new_item_view) + item_views.append(new_item_view) + new_item_view.connect("item_view_removed", self, "remove_from_item_views") + + +func remove_from_item_views(item_view): + var to_remove : int = item_views.find(item_view) + if to_remove != -1: + item_views.remove(to_remove) -- 2.39.5 From a2185e081ce92a4bddff385658ca1f66ae9f98b3 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Wed, 17 Aug 2022 21:01:52 +0100 Subject: [PATCH 36/39] Redo basic DiceController with new generic ItemController --- Characters/Character.gd | 2 + UI/Dice.gd | 31 --------------- UI/Dice.tscn | 14 ------- UI/DiceContainer.tscn | 26 +++++++++++++ UI/DiceView.gd | 84 ++++++++--------------------------------- UI/DiceView.tscn | 26 +++++-------- 6 files changed, 53 insertions(+), 130 deletions(-) delete mode 100644 UI/Dice.gd delete mode 100644 UI/Dice.tscn create mode 100644 UI/DiceContainer.tscn diff --git a/Characters/Character.gd b/Characters/Character.gd index 89a32f9..7cb5035 100644 --- a/Characters/Character.gd +++ b/Characters/Character.gd @@ -12,6 +12,8 @@ onready var target_position : Vector2 = position var moving : bool = false var cards = [] setget ,get_cards +var dice = [] + func get_cards(): for child in get_children(): diff --git a/UI/Dice.gd b/UI/Dice.gd deleted file mode 100644 index 5f32cab..0000000 --- a/UI/Dice.gd +++ /dev/null @@ -1,31 +0,0 @@ -tool -extends Control - -const dice_image_string = "res://Assets/Dice/Dice%s.png" -const selected_shader = preload("res://UI/RainbowOutline.tres") - -export (int, 0, 6) var dice_value : int = 0 -export var selected : bool setget _set_selected - - -func _set_selected(new_value): - selected = new_value - if selected: - self.material = selected_shader - else: - self.material = null - - -func _physics_process(delta): - self.texture = load(dice_image_string % dice_value) - - -func _ready(): - randomize() - - if dice_value == 0: - self.dice_value = int(round(rand_range(0.5, 6.49999999))) - - _physics_process(0) - - diff --git a/UI/Dice.tscn b/UI/Dice.tscn deleted file mode 100644 index b95c2e2..0000000 --- a/UI/Dice.tscn +++ /dev/null @@ -1,14 +0,0 @@ -[gd_scene load_steps=3 format=2] - -[ext_resource path="res://Assets/Dice/Dice6.png" type="Texture" id=1] -[ext_resource path="res://UI/Dice.gd" type="Script" id=2] - -[node name="Dice" type="TextureRect"] -margin_right = 100.0 -margin_bottom = 100.0 -size_flags_horizontal = 3 -size_flags_vertical = 3 -texture = ExtResource( 1 ) -expand = true -stretch_mode = 6 -script = ExtResource( 2 ) diff --git a/UI/DiceContainer.tscn b/UI/DiceContainer.tscn new file mode 100644 index 0000000..5230ea5 --- /dev/null +++ b/UI/DiceContainer.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://AutoGridContainer - Full Version/AutoGridContainer.tscn" type="PackedScene" id=1] +[ext_resource path="res://UI/ItemContainer.gd" type="Script" id=2] +[ext_resource path="res://UI/DiceView.tscn" type="PackedScene" id=3] + +[node name="DiceContainer" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 2 ) +item_view_scene = ExtResource( 3 ) +child_holder = NodePath("Margin/AutoGrid") +character_property = "dice" +view_property = "dice_value" + +[node name="Margin" type="MarginContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 30.0 +margin_top = 30.0 +margin_right = -30.0 +margin_bottom = -30.0 + +[node name="AutoGrid" parent="Margin" instance=ExtResource( 1 )] +margin_right = 1220.0 +margin_bottom = 660.0 diff --git a/UI/DiceView.gd b/UI/DiceView.gd index f2fa098..9cd9b73 100644 --- a/UI/DiceView.gd +++ b/UI/DiceView.gd @@ -1,76 +1,22 @@ +tool extends Control -signal dice_selected (dice_value) -signal scene_finished -signal scene_failed +const dice_image_string = "res://Assets/Dice/Dice%s.png" +const selected_shader = preload("res://UI/RainbowOutline.tres") -var active : bool = false - -const dice = preload("res://UI/Dice.tscn") - -var selected : bool = false -var selected_dice = null - -var current_dice = [] +export (int, 0, 6) var dice_value : int = 0 +export var selected : bool setget set_selected -func _physics_process(delta): - - # no keyboard input if not selected - if not selected: - selected_dice = null - return - - # skip turn if the list is empty - if len(current_dice) == 0: - selected = false - return - - # if selected dice is null, add a value - if not selected_dice: - selected_dice = 0 - - # TODO: maybe support actual dicrectional selection - # move the selection forward or backward the list depending on input - if (Input.is_action_just_pressed("ui_up") or - Input.is_action_just_pressed("ui_left")): - - current_dice[selected_dice].selected = false - - selected_dice += 1 - if selected_dice >= len(current_dice): - selected_dice = 0 - - if (Input.is_action_just_pressed("ui_down") or - Input.is_action_just_pressed("ui_right")): - - current_dice[selected_dice].selected = false - - selected_dice -= 1 - if selected_dice < 0: - selected_dice = len(current_dice) -1 - - # enable the selected shader - current_dice[selected_dice].selected = true - - #if the enter key is pressed, remove the selected dice and emit the signal - if Input.is_action_just_pressed("ui_accept"): - emit_signal("dice_selected", current_dice[selected_dice].dice_value) - - current_dice[selected_dice].queue_free() - current_dice.remove(selected_dice) - selected_dice = null - selected = false +func set_selected(new_value): + selected = new_value + if selected: + self.material = selected_shader + else: + self.material = null + + +func _physics_process(_delta): + self.texture = load(dice_image_string % dice_value) -func roll_dice(specific_value : int = 0): - # make a new dice instance and add it to the grid container - var new_dice = dice.instance() - $Margin/AutoGrid.add_child(new_dice) - - # if a specifc dice choosen, make new dice that type - if specific_value in [1, 2, 3, 4, 5, 6]: - new_dice.dice_value = specific_value - - # add the current dice to the list of dice - current_dice.append(new_dice) diff --git a/UI/DiceView.tscn b/UI/DiceView.tscn index 880c24e..62c9dfa 100644 --- a/UI/DiceView.tscn +++ b/UI/DiceView.tscn @@ -1,21 +1,15 @@ [gd_scene load_steps=3 format=2] -[ext_resource path="res://AutoGridContainer - Full Version/AutoGridContainer.tscn" type="PackedScene" id=1] +[ext_resource path="res://Assets/Dice/Dice6.png" type="Texture" id=1] [ext_resource path="res://UI/DiceView.gd" type="Script" id=2] -[node name="DiceView" type="Control"] -anchor_right = 1.0 -anchor_bottom = 1.0 +[node name="DiceView" type="TextureRect"] +margin_right = 100.0 +margin_bottom = 100.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +texture = ExtResource( 1 ) +expand = true +stretch_mode = 6 script = ExtResource( 2 ) - -[node name="Margin" type="MarginContainer" parent="."] -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_left = 30.0 -margin_top = 30.0 -margin_right = -30.0 -margin_bottom = -30.0 - -[node name="AutoGrid" parent="Margin" instance=ExtResource( 1 )] -margin_right = 1220.0 -margin_bottom = 660.0 +dice_value = 6 -- 2.39.5 From 41c2689e1f541deccda83c2f4f4ab18e55a9e780 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Wed, 24 Aug 2022 09:16:30 +0100 Subject: [PATCH 37/39] Add new hovering function to the itemcontainer --- UI/CardView.gd | 18 ++++++++++++++++++ UI/CardView.tscn | 20 +++++++++++++++++++- UI/ItemContainer.gd | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 1 deletion(-) diff --git a/UI/CardView.gd b/UI/CardView.gd index c4a3430..bae4c70 100644 --- a/UI/CardView.gd +++ b/UI/CardView.gd @@ -13,6 +13,8 @@ const TYPE_COLORS = [ const input_dice_view = preload("res://UI/InputDiceView.tscn") var input_dice_views = [] +var hovering : bool = false setget set_hovering + var card : Card = Card.new() setget update_cardview @@ -116,3 +118,19 @@ func disconnect_signals(): func connect_signals(): card.connect("card_removed", self, "card_view_run") + + +func set_hovering(value : bool): + # set the hovering value + hovering = value + + # wait until the old animation is finished + if ($AnimationPlayer.current_animation != "Hovering" + and $AnimationPlayer.current_animation != ""): + yield($AnimationPlayer, "animation_finished") + + if hovering: + $AnimationPlayer.play("Hovering") + + if not hovering: + $AnimationPlayer.play("RESET") diff --git a/UI/CardView.tscn b/UI/CardView.tscn index e8f7901..1e3c9a6 100644 --- a/UI/CardView.tscn +++ b/UI/CardView.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=11 format=2] +[gd_scene load_steps=12 format=2] [ext_resource path="res://UI/CardView.gd" type="Script" id=1] [ext_resource path="res://Assets/Metropolis-font/Metropolis-Bold.ttf" type="DynamicFontData" id=4] @@ -83,6 +83,23 @@ tracks/2/keys = { } ] } +[sub_resource type="Animation" id=11] +resource_name = "Hovering" +length = 0.15 +step = 0.01 +tracks/0/type = "value" +tracks/0/path = NodePath("LocalPosition:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.15 ), +"transitions": PoolRealArray( 6.9644, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, -40 ) ] +} + [sub_resource type="Animation" id=8] length = 0.001 tracks/0/type = "value" @@ -168,4 +185,5 @@ autowrap = true [node name="AnimationPlayer" type="AnimationPlayer" parent="."] "anims/Drop Off" = SubResource( 10 ) "anims/Fly Off" = SubResource( 7 ) +anims/Hovering = SubResource( 11 ) anims/RESET = SubResource( 8 ) diff --git a/UI/ItemContainer.gd b/UI/ItemContainer.gd index 9128dff..4679e35 100644 --- a/UI/ItemContainer.gd +++ b/UI/ItemContainer.gd @@ -13,6 +13,7 @@ export (String) var view_property = "item" var character : Character = Character.new() setget update_items_shown var item_views = [] +var hovering_view : int = -1 func update_items_shown(new_character = null): @@ -38,3 +39,42 @@ func remove_from_item_views(item_view): var to_remove : int = item_views.find(item_view) if to_remove != -1: item_views.remove(to_remove) + + +func _physics_process(_delta): + if not active: + hovering_view = -1 + return + + # set the hovering view if just selected + if hovering_view == -1: + hovering_view = 0 + item_views[hovering_view].hovering = false + + # move the selection forward or backward the list depending on input + if (Input.is_action_just_pressed("ui_down") or + Input.is_action_just_pressed("ui_right")): + + # disable hovering on the previous item + item_views[hovering_view].hovering = false + + # cycle forward + hovering_view += 1 + if hovering_view >= len(item_views): + hovering_view = 0 + + # enable hovering on the present item + item_views[hovering_view].hovering = true + + if (Input.is_action_just_pressed("ui_up") or + Input.is_action_just_pressed("ui_left")): + + item_views[hovering_view].hovering = false + + hovering_view -= 1 + if hovering_view < 0: + hovering_view = len(item_views) -1 + + item_views[hovering_view].hovering = true + + -- 2.39.5 From bf15a8a824afe1d7c0c45d1083ce8bcbb244cce5 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Wed, 24 Aug 2022 09:44:17 +0100 Subject: [PATCH 38/39] Add support for hovering with the DiceView --- UI/DiceView.gd | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/UI/DiceView.gd b/UI/DiceView.gd index 9cd9b73..f9c82c1 100644 --- a/UI/DiceView.gd +++ b/UI/DiceView.gd @@ -2,16 +2,16 @@ tool extends Control const dice_image_string = "res://Assets/Dice/Dice%s.png" -const selected_shader = preload("res://UI/RainbowOutline.tres") +const hovering_shader = preload("res://UI/RainbowOutline.tres") export (int, 0, 6) var dice_value : int = 0 -export var selected : bool setget set_selected +export var hovering : bool setget set_hovering -func set_selected(new_value): - selected = new_value - if selected: - self.material = selected_shader +func set_hovering(new_value): + hovering = new_value + if hovering: + self.material = hovering_shader else: self.material = null -- 2.39.5 From c96ac0e2d2d9b6b51b67ef0a7de811a830598ae9 Mon Sep 17 00:00:00 2001 From: CactiChameleon9 Date: Wed, 24 Aug 2022 09:45:23 +0100 Subject: [PATCH 39/39] Basic battle scene layout --- Scenes/BattleScene.gd | 2 ++ Scenes/BattleScene.tscn | 28 +++++++++++++++++++++------- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/Scenes/BattleScene.gd b/Scenes/BattleScene.gd index a810917..04a8f86 100644 --- a/Scenes/BattleScene.gd +++ b/Scenes/BattleScene.gd @@ -3,3 +3,5 @@ extends Node func _ready(): $"%Battle".character = $Player + $"%CardContainer".character = $Player + $"%DiceContainer".character = $Player diff --git a/Scenes/BattleScene.tscn b/Scenes/BattleScene.tscn index 8b9708b..f614b29 100644 --- a/Scenes/BattleScene.tscn +++ b/Scenes/BattleScene.tscn @@ -1,11 +1,14 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=10 format=2] [ext_resource path="res://Scenes/Battle.tscn" type="PackedScene" id=1] [ext_resource path="res://Characters/Player.tscn" type="PackedScene" id=2] [ext_resource path="res://Scenes/BattleScene.gd" type="Script" id=3] [ext_resource path="res://UI/CardContainer.tscn" type="PackedScene" id=4] -[ext_resource path="res://UI/DiceView.tscn" type="PackedScene" id=5] +[ext_resource path="res://UI/DiceContainer.tscn" type="PackedScene" id=5] +[ext_resource path="res://UI/Card.gd" type="Script" id=6] +[ext_resource path="res://Assets/CardDB/Broadsword.tres" type="Resource" id=7] [ext_resource path="res://Management/ActiveController.tscn" type="PackedScene" id=8] +[ext_resource path="res://Assets/CardDB/Poisonous apple.tres" type="Resource" id=9] [node name="BattleScene" type="Node"] script = ExtResource( 3 ) @@ -14,14 +17,25 @@ script = ExtResource( 3 ) [node name="Battle" parent="ActiveController" instance=ExtResource( 1 )] -[node name="DiceView" parent="ActiveController" instance=ExtResource( 5 )] -unique_name_in_owner = true -margin_left = 782.0 -margin_top = 375.0 - [node name="CardContainer" parent="ActiveController" instance=ExtResource( 4 )] unique_name_in_owner = true margin_top = 351.0 margin_right = -425.0 +[node name="DiceContainer" parent="ActiveController" instance=ExtResource( 5 )] +unique_name_in_owner = true +margin_left = 782.0 +margin_top = 375.0 + [node name="Player" parent="." instance=ExtResource( 2 )] + +[node name="Card1" type="Node" parent="Player"] +script = ExtResource( 6 ) +card_info = ExtResource( 7 ) + +[node name="Card2" type="Node" parent="Player"] +script = ExtResource( 6 ) + +[node name="Card3" type="Node" parent="Player"] +script = ExtResource( 6 ) +card_info = ExtResource( 9 ) -- 2.39.5