first draft of the new card gameplay
This commit is contained in:
@@ -7,6 +7,7 @@ enum Faction {
|
||||
MAGE = 2,
|
||||
}
|
||||
|
||||
@export var duration: int
|
||||
@export var rarity: Data.Rarity
|
||||
@export var faction: Faction
|
||||
@export var turret_scene: PackedScene
|
||||
|
||||
@@ -22,6 +22,7 @@ var recharging: bool = false
|
||||
var recharge_speed: float = 0.0
|
||||
var recharge_acceleration: float = 2.0
|
||||
var recharge_max_speed: float = 25.0
|
||||
var duration: int = 0
|
||||
#var time_since_trigger: float = 0.0
|
||||
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ var stats: Card
|
||||
@export var title_text: Label
|
||||
@export var description: RichTextLabel
|
||||
@export var target_label: Label
|
||||
@export var energy_cost: Label
|
||||
@export var duration: Label
|
||||
|
||||
|
||||
func set_card(value: Card) -> void:
|
||||
@@ -13,6 +15,17 @@ func set_card(value: Card) -> void:
|
||||
title_text.text = stats.display_name
|
||||
target_label.text = str(Data.TargetType.keys()[stats.tower_stats.target_type])
|
||||
rarity_sprite.region_rect = Rect2(64 * stats.rarity, 0, 64, 64)
|
||||
if stats.rarity == Data.Rarity.COMMON:
|
||||
energy_cost.text = "1"
|
||||
if stats.rarity == Data.Rarity.UNCOMMON:
|
||||
energy_cost.text = "2"
|
||||
if stats.rarity == Data.Rarity.RARE:
|
||||
energy_cost.text = "3"
|
||||
if stats.rarity == Data.Rarity.EPIC:
|
||||
energy_cost.text = "4"
|
||||
if stats.rarity == Data.Rarity.LEGENDARY:
|
||||
energy_cost.text = "5"
|
||||
duration.text = str(value.duration)
|
||||
|
||||
|
||||
func process_card_text(card_text: CardText) -> String:
|
||||
|
||||
@@ -18,6 +18,7 @@ enum TargetType {UNDEFINED = 0, LAND = 1, AIR = 2, BOTH = 3}
|
||||
enum EnemyType {UNDEFINED = 0, LAND = 1, AIR = 2}
|
||||
enum Rarity {COMMON = 0, UNCOMMON = 1, RARE = 2, EPIC = 3, LEGENDARY = 4}
|
||||
|
||||
static var starting_cash: int = 10
|
||||
static var wall_cost: int = 1
|
||||
static var printer_cost: int = 15
|
||||
static var rarity_weights: Dictionary = {
|
||||
|
||||
@@ -27,7 +27,6 @@ var pot: float
|
||||
var UILayer: CanvasLayer
|
||||
var chatbox: Chatbox
|
||||
var wave_limit: int = 20
|
||||
var starting_cash: int = 25
|
||||
var shop_chance: float = 0.0
|
||||
var stats: RoundStats
|
||||
|
||||
@@ -175,6 +174,8 @@ func spawn_enemy_wave() -> void:
|
||||
#spawn.path.disable_visualization()
|
||||
spawn.visible = false
|
||||
spawn.spawn_wave()
|
||||
for tower_base: TowerBase in level.walls.values():
|
||||
tower_base.disable_duration_sprites()
|
||||
wave_started.emit(wave)
|
||||
|
||||
|
||||
@@ -245,10 +246,18 @@ func damage_goal(enemy: Enemy, penalty: int) -> void:
|
||||
|
||||
func end_wave() -> void:
|
||||
for peer_id: int in connected_players_nodes:
|
||||
connected_players_nodes[peer_id].currency += ceili(pot / connected_players_nodes.size())
|
||||
connected_players_nodes[peer_id].unready_self()
|
||||
var player: Hero = connected_players_nodes[peer_id] as Hero
|
||||
player.currency += ceili(pot / connected_players_nodes.size())
|
||||
player.energy = 8
|
||||
player.iterate_duration()
|
||||
player.draw_to_hand_size()
|
||||
player.unready_self()
|
||||
for spawn: EnemySpawner in level.enemy_spawns:
|
||||
spawn.visible = true
|
||||
for tower_base: TowerBase in level.walls.values():
|
||||
if tower_base.has_card:
|
||||
tower_base.enable_duration_sprites()
|
||||
tower_base.iterate_duration()
|
||||
#level.a_star_graph_3d.enable_non_path_tower_frames()
|
||||
level.enable_non_path_tower_frames()
|
||||
if is_multiplayer_authority():
|
||||
@@ -308,7 +317,10 @@ func start() -> void:
|
||||
#Relies on player list having been decided
|
||||
spawn_players()
|
||||
for peer_id: int in connected_players_nodes:
|
||||
connected_players_nodes[peer_id].currency = ceili(float(starting_cash) / float(connected_players_nodes.size()))
|
||||
connected_players_nodes[peer_id].currency = ceili(float(Data.starting_cash) / float(connected_players_nodes.size()))
|
||||
connected_players_nodes[peer_id].energy = 8
|
||||
connected_players_nodes[peer_id].draw_pile.shuffle()
|
||||
connected_players_nodes[peer_id].draw_to_hand_size()
|
||||
|
||||
#Relies on rng having been seeded
|
||||
set_upcoming_wave()
|
||||
@@ -318,7 +330,7 @@ func start() -> void:
|
||||
level.generate_obstacles()
|
||||
level.enable_non_path_tower_frames()
|
||||
#level.a_star_graph_3d.disable_all_tower_frames()
|
||||
#level.a_star_graph_3d.enable_non_path_tower_frames()z
|
||||
#level.a_star_graph_3d.enable_non_path_tower_frames()
|
||||
#level.a_star_graph_3d.find_path()
|
||||
|
||||
#Start game
|
||||
|
||||
@@ -5,53 +5,58 @@ signal item_added(item: Item)
|
||||
signal item_removed(item: Item)
|
||||
|
||||
@export var max_size: int = 0
|
||||
var contents: Dictionary = {}
|
||||
var shuffle_count: int = 0
|
||||
var contents: Array[Item] = []
|
||||
var size: int :
|
||||
get:
|
||||
var x: int = 0
|
||||
for key: Item in contents:
|
||||
x += contents[key]
|
||||
return x
|
||||
set(_value):
|
||||
return
|
||||
get:
|
||||
return contents.size()
|
||||
|
||||
|
||||
func add(item: Item) -> bool:
|
||||
if item != null and max_size == 0 or size < max_size:
|
||||
if contents.has(item):
|
||||
contents[item] += 1
|
||||
else:
|
||||
contents[item] = 1
|
||||
contents.append(item)
|
||||
item_added.emit(item)
|
||||
#networked_add.rpc(Data.cards.find(item))
|
||||
return true
|
||||
return false
|
||||
|
||||
|
||||
func remove_at(index: int) -> Item:
|
||||
var item: Item = contents.keys()[index]
|
||||
contents[item] -= 1
|
||||
if contents[item] == 0:
|
||||
contents.erase(item)
|
||||
item_removed.emit(item)
|
||||
#networked_remove_at.rpc(index)
|
||||
func item_at(index: int) -> Item:
|
||||
#if size == 0:
|
||||
#return null
|
||||
var item: Item = contents[index]
|
||||
return item
|
||||
|
||||
|
||||
@rpc("reliable", "any_peer")
|
||||
func networked_add(value: int) -> void:
|
||||
var item: Item = Data.cards[value]
|
||||
if contents.has(item):
|
||||
contents[item] += 1
|
||||
else:
|
||||
contents[item] = 1
|
||||
item_added.emit(item)
|
||||
|
||||
|
||||
@rpc("reliable", "any_peer")
|
||||
func networked_remove_at(value: int) -> void:
|
||||
var item: Item = contents.keys()[value]
|
||||
contents[item] -= 1
|
||||
if contents[item] == 0:
|
||||
contents.erase(item)
|
||||
func remove_at(index: int) -> Item:
|
||||
var item: Item = contents.pop_at(index)
|
||||
item_removed.emit(item)
|
||||
return item
|
||||
|
||||
|
||||
func shuffle() -> void:
|
||||
var new_contents: Array[Item] = []
|
||||
for x: int in contents.size():
|
||||
new_contents.append(contents.pop_at(NoiseRandom.randi_in_range(shuffle_count * 9, 0, contents.size() - 1)))
|
||||
contents = new_contents
|
||||
|
||||
|
||||
#@rpc("reliable", "any_peer")
|
||||
#func networked_add(value: int) -> void:
|
||||
#var item: Item = Data.cards[value]
|
||||
#if contents.has(item):
|
||||
#contents[item] += 1
|
||||
#else:
|
||||
#contents[item] = 1
|
||||
#item_added.emit(item)
|
||||
#
|
||||
#
|
||||
#@rpc("reliable", "any_peer")
|
||||
#func networked_remove_at(value: int) -> void:
|
||||
#var item: Item = contents.keys()[value]
|
||||
#contents[item] -= 1
|
||||
#if contents[item] == 0:
|
||||
#contents.erase(item)
|
||||
#item_removed.emit(item)
|
||||
|
||||
@@ -58,7 +58,7 @@ func set_wall(point: FlowNode, caller_id: int) -> void:
|
||||
|
||||
func remove_wall(point: FlowNode) -> void:
|
||||
var wall: TowerBase = walls[point]
|
||||
game_manager.connected_players_nodes[wall.owner_id].currency += Data.wall_cost
|
||||
#game_manager.connected_players_nodes[wall.owner_id].currency += Data.wall_cost
|
||||
game_manager.connected_players_nodes[wall.owner_id].unready_self()
|
||||
walls.erase(point)
|
||||
wall.queue_free()
|
||||
|
||||
@@ -13,7 +13,7 @@ extends Object
|
||||
## Takes in wave number and number of players and returns a spawn power value
|
||||
## intended for passing into the generate_wave method
|
||||
static func calculate_spawn_power(wave_number: int, number_of_players: int) -> int:
|
||||
return (30 * number_of_players) + (6 * wave_number)
|
||||
return (20 * number_of_players) + (5 * wave_number)
|
||||
|
||||
|
||||
## Takes in wave number and number of players and returns the amount of coins
|
||||
|
||||
Reference in New Issue
Block a user