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

@@ -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