added support for obstacles to levels again
This commit is contained in:
@@ -5,4 +5,3 @@ class_name LevelSpecs extends Resource
|
||||
@export var waves: Array[WaveConfig]
|
||||
@export var points_blocked: Array[int]
|
||||
@export var zone_scene: PackedScene
|
||||
@export var data_path: String
|
||||
|
||||
@@ -89,12 +89,12 @@ func networked_set_wave(wave_number: int) -> void:
|
||||
set_upcoming_wave()
|
||||
|
||||
|
||||
func spawn_level(scene: PackedScene, path: String) -> void:
|
||||
func spawn_level(scene: PackedScene) -> void:
|
||||
level = scene.instantiate() as Level
|
||||
var flow_field: FlowField = FlowField.new()
|
||||
level.flow_field = flow_field
|
||||
level.add_child(flow_field)
|
||||
flow_field.load_from_data(FlowFieldTool.load_flow_field_from_disc(path))
|
||||
flow_field.load_from_data(FlowFieldTool.load_flow_field_from_disc(level.data_path))
|
||||
level.load_flow_field()
|
||||
level.game_manager = self
|
||||
for x: EnemySpawner in level.enemy_spawns:
|
||||
@@ -106,6 +106,7 @@ func spawn_level(scene: PackedScene, path: String) -> void:
|
||||
root_scene.add_child(level)
|
||||
for spawner: EnemySpawner in level.enemy_spawns:
|
||||
spawner.create_path()
|
||||
level.generate_obstacle(level_specs.points_blocked)
|
||||
|
||||
|
||||
func spawn_players() -> void:
|
||||
@@ -298,7 +299,8 @@ func end_wave() -> void:
|
||||
#else:
|
||||
#shop_chance += 0.09
|
||||
wave_finished.emit()
|
||||
set_upcoming_wave()
|
||||
if wave < wave_limit:
|
||||
set_upcoming_wave()
|
||||
|
||||
|
||||
@rpc("reliable", "call_local")
|
||||
@@ -322,7 +324,7 @@ func setup() -> void:
|
||||
connected_players_nodes.clear()
|
||||
|
||||
#Spawn new stuff
|
||||
spawn_level(level_specs.zone_scene, level_specs.data_path)
|
||||
spawn_level(level_specs.zone_scene)
|
||||
|
||||
#Set starting parameters
|
||||
game_active = false
|
||||
|
||||
@@ -12,6 +12,7 @@ extends Node3D
|
||||
@export var shop: ShopStand
|
||||
@export var obstacle_scenes: Array[PackedScene]
|
||||
@export var obstacles: Array[PackedScene]
|
||||
@export var data_path: String
|
||||
var walls: Dictionary[FlowNode, TowerBase] = {}
|
||||
var wall_id: int = 0
|
||||
var tower_base_scene: PackedScene = load("res://Scenes/TowerBase/tower_base.tscn")
|
||||
@@ -84,6 +85,20 @@ func spawn_wall(point: FlowNode, name_id: int, caller_id: int) -> void:
|
||||
disable_path_tower_frames()
|
||||
|
||||
|
||||
func generate_obstacle(ids: Array[int]) -> void:
|
||||
var points: Array[FlowNode] = []
|
||||
for node: FlowNode in flow_field.nodes:
|
||||
if ids.has(node.node_id):
|
||||
points.append(node)
|
||||
for node: FlowNode in points:
|
||||
var obstacle: Node3D = obstacles[0].instantiate()
|
||||
obstacle.position = node.position
|
||||
flow_field.toggle_buildable(node)
|
||||
if node.traversable:
|
||||
flow_field.toggle_traversable(node)
|
||||
add_child(obstacle)
|
||||
|
||||
|
||||
func generate_obstacles() -> void:
|
||||
pass
|
||||
#print(str(multiplayer.get_unique_id()) + " spawning obstacles with seed: " + str(Game.rng.seed))
|
||||
|
||||
Reference in New Issue
Block a user