first draft of the new card gameplay

This commit is contained in:
2025-06-26 02:32:45 +10:00
parent 0cd8715468
commit a6c503b8ff
32 changed files with 388 additions and 179 deletions

View File

@@ -79,6 +79,10 @@ func card_picked_up(card_item: CardItem) -> void:
func _on_static_body_3d_button_interacted(_value: int, reply: Hero) -> void:
reply_player = reply
if reply.energy >= 3:
reply.energy -= 3
else:
return
button_collider.disabled = true
$StaticBody3D/AudioStreamPlayer3D.play()
randomize_cards(reply.hero_class.faction)

View File

@@ -29,8 +29,8 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.847404, 0.610684)
collision_layer = 16
collision_mask = 0
script = ExtResource("4_eavi1")
press_cost = 15
hover_text = "[center]#Interact# draft a card for $15"
press_cost = 3
hover_text = "[center]#Interact# draft a card for 3 Energy"
[node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 0.866025, -0.5, 0, 0.5, 0.866025, -6.55949e-05, 0.349496, -0.579584)

View File

@@ -4,6 +4,8 @@ class_name TowerBase extends StaticBody3D
@export var block: Node3D
@export var collider: CollisionShape3D
@export var minimap_icon: Sprite3D
@export var duration_label: Label
@export var duration_sprites: Array[Sprite3D] = []
var game_manager: GameManager
var owner_id: int
@@ -14,6 +16,12 @@ var has_card: bool :
return
get:
return inventory.size != 0
var duration: int = 0 :
set(value):
duration = value
duration_label.text = str(value)
get():
return duration
func set_color(color: Color) -> void:
@@ -36,24 +44,44 @@ func toggle_collision() -> void:
collider.disabled = !collider.disabled
func iterate_duration() -> void:
duration -= 1
if duration <= 0:
networked_remove_tower.rpc()
func enable_duration_sprites() -> void:
for sprite: Sprite3D in duration_sprites:
sprite.visible = true
func disable_duration_sprites() -> void:
for sprite: Sprite3D in duration_sprites:
sprite.visible = false
@rpc("reliable", "call_local", "any_peer")
func networked_spawn_tower(card_index: int, caller_id: int) -> void:
var card: Card = Data.cards[card_index]
inventory.add(card)
tower = inventory.contents.keys()[0].turret_scene.instantiate() as Tower
tower.stats = inventory.contents.keys()[0].tower_stats
tower = inventory.item_at(0).turret_scene.instantiate() as Tower
tower.stats = inventory.item_at(0).tower_stats
tower.name = "tower"
tower.base_name = name
tower.owner_id = caller_id
tower.position = Vector3(0, 1.2, 0)
minimap_icon.modulate = Color.RED
duration = card.duration
enable_duration_sprites()
add_child(tower)
@rpc("reliable", "call_local", "any_peer")
func networked_remove_tower() -> void:
game_manager.connected_players_nodes[tower.owner_id].add_card(inventory.remove_at(0))
game_manager.connected_players_nodes[tower.owner_id].unready_self()
inventory.remove_at(0)
#game_manager.connected_players_nodes[tower.owner_id].add_card(inventory.remove_at(0))
#game_manager.connected_players_nodes[tower.owner_id].unready_self()
tower.queue_free()
disable_duration_sprites()
tower = null
minimap_icon.modulate = Color.GREEN

View File

@@ -1,21 +1,26 @@
[gd_scene load_steps=7 format=3 uid="uid://ddbbwx0yy16lh"]
[gd_scene load_steps=8 format=3 uid="uid://ddbbwx0yy16lh"]
[ext_resource type="Script" uid="uid://si58bm4r7r2i" path="res://Scenes/TowerBase/tower_base.gd" id="1_kalmg"]
[ext_resource type="Script" uid="uid://do24iuot0j7d7" path="res://Scripts/inventory.gd" id="2_m0oxx"]
[ext_resource type="Material" uid="uid://bi0grduhgdma4" path="res://Scenes/TowerBase/new_shader_material.tres" id="3_ueedj"]
[ext_resource type="ArrayMesh" uid="uid://cr83c74ys8rll" path="res://Scenes/TowerBase/textmesh.res" id="4_8j8ue"]
[ext_resource type="ArrayMesh" uid="uid://cm5xjp442ew0y" path="res://Scenes/TowerBase/textmesh.res" id="4_8j8ue"]
[ext_resource type="Texture2D" uid="uid://ba85u6i558x4w" path="res://Assets/Textures/minimap_node.png" id="4_lbvtm"]
[sub_resource type="BoxShape3D" id="BoxShape3D_lc72v"]
size = Vector3(1.381, 1.377, 1.381)
[node name="TowerBase" type="StaticBody3D" node_paths=PackedStringArray("inventory", "block", "collider", "minimap_icon") groups=["TowerBases"]]
[sub_resource type="ViewportTexture" id="ViewportTexture_ueedj"]
viewport_path = NodePath("SubViewport")
[node name="TowerBase" type="StaticBody3D" node_paths=PackedStringArray("inventory", "block", "collider", "minimap_icon", "duration_label", "duration_sprites") groups=["TowerBases"]]
collision_layer = 17
script = ExtResource("1_kalmg")
inventory = NodePath("Inventory")
block = NodePath("MeshInstance3D")
collider = NodePath("CollisionShape3D")
minimap_icon = NodePath("MinimapIcon")
duration_label = NodePath("SubViewport/Label")
duration_sprites = [NodePath("Sprite3D"), NodePath("Sprite3D2"), NodePath("Sprite3D3"), NodePath("Sprite3D4")]
[node name="Inventory" type="Node" parent="."]
script = ExtResource("2_m0oxx")
@@ -35,3 +40,42 @@ layers = 4
modulate = Color(0, 1, 0, 1)
texture_filter = 0
texture = ExtResource("4_lbvtm")
[node name="SubViewport" type="SubViewport" parent="."]
transparent_bg = true
size = Vector2i(128, 128)
[node name="Label" type="Label" parent="SubViewport"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_font_sizes/font_size = 128
text = "4"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Sprite3D" type="Sprite3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0.6)
visible = false
double_sided = false
texture = SubResource("ViewportTexture_ueedj")
[node name="Sprite3D2" type="Sprite3D" parent="."]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0, 2, -0.6)
visible = false
double_sided = false
texture = SubResource("ViewportTexture_ueedj")
[node name="Sprite3D3" type="Sprite3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0.6, 2, 0)
visible = false
double_sided = false
texture = SubResource("ViewportTexture_ueedj")
[node name="Sprite3D4" type="Sprite3D" parent="."]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -0.6, 2, 0)
visible = false
double_sided = false
texture = SubResource("ViewportTexture_ueedj")

View File

@@ -4,12 +4,14 @@
[ext_resource type="Texture2D" uid="uid://dlqnhs8or4ik2" path="res://Assets/Textures/cardhand.png" id="1_d5oo3"]
[ext_resource type="Texture2D" uid="uid://buf8t5gc7iw3a" path="res://Assets/TextureAtlases/rarityborders.tres" id="3_pclfx"]
[node name="Node2D" type="Node2D" node_paths=PackedStringArray("rarity_sprite", "title_text", "description", "target_label")]
[node name="Node2D" type="Node2D" node_paths=PackedStringArray("rarity_sprite", "title_text", "description", "target_label", "energy_cost", "duration")]
script = ExtResource("1_2cfmh")
rarity_sprite = NodePath("Sprite2D2")
title_text = NodePath("Title")
description = NodePath("Description")
target_label = NodePath("Title2")
energy_cost = NodePath("EnergyCost")
duration = NodePath("Duration")
[node name="Sprite2D" type="Sprite2D" parent="."]
texture_filter = 1
@@ -60,3 +62,23 @@ text = "In here goes some card text that really be quite long sometimes if you'r
In fact, sometimes its really really really rediculously long, when it needs to be and im too dumb to shorten it"
fit_content = true
[node name="EnergyCost" type="Label" parent="."]
offset_left = 340.0
offset_top = 55.0
offset_right = 40.0
offset_bottom = 40.0
theme_override_colors/font_color = Color(0.228497, 0.570097, 0.884935, 1)
text = "3"
horizontal_alignment = 1
vertical_alignment = 1
[node name="Duration" type="Label" parent="."]
offset_left = 125.0
offset_top = 55.0
offset_right = 42.0
offset_bottom = 95.0
theme_override_colors/font_color = Color(0.228497, 0.570097, 0.884935, 1)
text = "4"
horizontal_alignment = 1
vertical_alignment = 1