make Game.gd not rely on autoload/global
This commit is contained in:
@ -7,13 +7,14 @@ class_name PathEditTool extends Node3D
|
||||
@export var progress_bar: TextureProgressBar
|
||||
|
||||
var enabled: bool = true
|
||||
var point: FlowNode = null
|
||||
var level: Level
|
||||
var point: FlowNode
|
||||
var obstacle_last_point: int = -1
|
||||
var valid_point: bool = false # a point is valid if the path would still be traversable overall if this point was made untraversable
|
||||
var tower_preview: Tower
|
||||
var ray_collider: Object
|
||||
var ray_point: Vector3
|
||||
var last_point: FlowNode = null
|
||||
var last_point: FlowNode
|
||||
var last_tower_base: TowerBase
|
||||
|
||||
var interact_key_held: bool = false
|
||||
@ -66,13 +67,13 @@ func _process(delta: float) -> void:
|
||||
if !interact_key_held:
|
||||
wall_preview.set_visible(true)
|
||||
if is_instance_valid(ray_collider) and ray_collider is TowerBase:
|
||||
Game.level.walls[ray_collider.point].set_float(1.0)
|
||||
level.walls[ray_collider.point].set_float(1.0)
|
||||
ray_collider = ray.get_collider()
|
||||
ray_point = ray.get_collision_point()
|
||||
|
||||
if ray_collider is TowerBase:
|
||||
process_looking_at_tower()
|
||||
elif Game.level:
|
||||
elif level:
|
||||
process_looking_at_level()
|
||||
elif !interact_key_held:
|
||||
reset()
|
||||
@ -84,8 +85,8 @@ func _process(delta: float) -> void:
|
||||
|
||||
|
||||
func reset() -> void:
|
||||
if is_instance_valid(ray_collider) and ray_collider is TowerBase and Game.level.walls.has(ray_collider.point):
|
||||
Game.level.walls[ray_collider.point].set_float(1.0)
|
||||
if is_instance_valid(ray_collider) and ray_collider is TowerBase and level.walls.has(ray_collider.point):
|
||||
level.walls[ray_collider.point].set_float(1.0)
|
||||
ray_collider = null
|
||||
delete_tower_preview()
|
||||
wall_preview.set_visible(false)
|
||||
@ -96,8 +97,8 @@ func reset() -> void:
|
||||
func process_looking_at_level() -> void:
|
||||
if tower_preview:
|
||||
delete_tower_preview()
|
||||
point = Game.level.flow_field.get_closest_buildable_point(ray_point)
|
||||
if Game.level.walls.has(point) or !point.buildable or hero.currency < Data.wall_cost:
|
||||
point = level.flow_field.get_closest_buildable_point(ray_point)
|
||||
if level.walls.has(point) or !point.buildable or hero.currency < Data.wall_cost:
|
||||
wall_preview.set_visible(false)
|
||||
valid_point = false
|
||||
clear_previous_point()
|
||||
@ -106,8 +107,8 @@ func process_looking_at_level() -> void:
|
||||
if last_point != point:
|
||||
clear_previous_point()
|
||||
last_point = point
|
||||
if !Game.level.walls.has(point) and Game.level.flow_field.traversable_after_blocking_point(point):
|
||||
Game.level.flow_field.toggle_traversable(point)
|
||||
if !level.walls.has(point) and level.flow_field.traversable_after_blocking_point(point):
|
||||
level.flow_field.toggle_traversable(point)
|
||||
wall_preview.set_float(0.0)
|
||||
valid_point = true
|
||||
else:
|
||||
@ -115,8 +116,8 @@ func process_looking_at_level() -> void:
|
||||
|
||||
|
||||
func clear_previous_point() -> void:
|
||||
if last_point and !Game.level.walls.has(last_point) and !last_point.traversable:
|
||||
Game.level.flow_field.toggle_traversable(last_point)
|
||||
if last_point and !level.walls.has(last_point) and !last_point.traversable:
|
||||
level.flow_field.toggle_traversable(last_point)
|
||||
|
||||
|
||||
func process_looking_at_tower() -> void:
|
||||
@ -162,7 +163,7 @@ func interact() -> void:
|
||||
func build_wall() -> void:
|
||||
if point and valid_point and hero.currency >= Data.wall_cost:
|
||||
hero.currency -= Data.wall_cost
|
||||
Game.level.set_wall(point, multiplayer.get_unique_id())
|
||||
level.set_wall(point, multiplayer.get_unique_id())
|
||||
wall_preview.visible = false
|
||||
|
||||
|
||||
@ -171,7 +172,7 @@ func refund_wall(wall: TowerBase) -> void:
|
||||
return
|
||||
if wall.has_card:
|
||||
wall.remove_card()
|
||||
Game.level.remove_wall(wall.point)
|
||||
level.remove_wall(wall.point)
|
||||
|
||||
|
||||
func put_card_in_tower_base(tower_base: TowerBase) -> void:
|
||||
|
@ -35,6 +35,7 @@ signal ready_state_changed(state: bool)
|
||||
@export var swap_off_audio: AudioStreamPlayer
|
||||
@export var swap_on_audio: AudioStreamPlayer
|
||||
|
||||
var game_manager: GameManager
|
||||
var hovering_item: InteractButton = null
|
||||
var weapons_spawn_count: int = 0 #Used to prevent node name collisions for multiplayer
|
||||
var inventory_selected_index: int = 0
|
||||
@ -191,10 +192,10 @@ func _process(delta: float) -> void:
|
||||
camera.fov = Data.graphics.hfov * (1.0 / movement.zoom_factor)
|
||||
|
||||
if Input.is_action_just_pressed("View Map"):
|
||||
hud.maximise_minimap(Game.level)
|
||||
hud.maximise_minimap()
|
||||
#Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
||||
if Input.is_action_just_released("View Map"):
|
||||
hud.minimize_minimap(self)
|
||||
hud.minimize_minimap()
|
||||
#Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
check_left_hand_valid()
|
||||
|
||||
@ -222,6 +223,9 @@ func _unhandled_input(event: InputEvent) -> void:
|
||||
if event.is_action_pressed("Pause"):
|
||||
var menu: PauseMenu = pause_menu_scene.instantiate() as PauseMenu
|
||||
pause()
|
||||
menu.game_manager = game_manager
|
||||
menu.quit_to_desktop_pressed.connect(game_manager.quit_to_desktop)
|
||||
menu.quit_to_main_menu_pressed.connect(game_manager.scene_switch_main_menu)
|
||||
menu.closed.connect(unpause)
|
||||
hud.add_child(menu)
|
||||
|
||||
|
12
PCs/hud.gd
12
PCs/hud.gd
@ -12,7 +12,6 @@ var last_lives_count: int = 120
|
||||
@export var minimap_viewport: SubViewport
|
||||
@export var fps_label: Label
|
||||
@export var hover_text: RichTextLabel
|
||||
var minimap_anchor: Node3D
|
||||
var enemy_names: Array[String]
|
||||
@export var enemy_sprites: Array[TextureRect]
|
||||
@export var enemy_counts: Array[Label]
|
||||
@ -25,6 +24,7 @@ var enemy_names: Array[String]
|
||||
@export var enemy_card_scene: PackedScene
|
||||
@export var new_energy_bar: EnergyBar
|
||||
|
||||
var map_anchor: Node3D
|
||||
var audio_guard: bool = false
|
||||
var cards: Array[EnemyCardUI] = []
|
||||
|
||||
@ -131,7 +131,7 @@ func set_upcoming_wave(value: Dictionary) -> void:
|
||||
var wave: Dictionary = {}
|
||||
for key: String in value:
|
||||
var new_enemy: Enemy
|
||||
for enemy: Enemy in Data.enemies:
|
||||
for enemy: Enemy in player.game_manager.level.enemy_pool:
|
||||
if enemy.title == key:
|
||||
new_enemy = enemy
|
||||
wave[new_enemy] = value[key]
|
||||
@ -169,8 +169,8 @@ func set_weapon_energy(value: int, energy_type: Data.EnergyType) -> void:
|
||||
audio_guard = false
|
||||
|
||||
|
||||
func maximise_minimap(anchor: Node3D) -> void:
|
||||
minimap_cam.anchor = anchor
|
||||
func maximise_minimap() -> void:
|
||||
minimap_cam.anchor = map_anchor
|
||||
minimap.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
|
||||
minimap.offset_bottom = -40
|
||||
minimap.offset_top = 40
|
||||
@ -182,8 +182,8 @@ func maximise_minimap(anchor: Node3D) -> void:
|
||||
currency_count.set_visible(false)
|
||||
|
||||
|
||||
func minimize_minimap(anchor: Node3D) -> void:
|
||||
minimap_cam.anchor = anchor
|
||||
func minimize_minimap() -> void:
|
||||
minimap_cam.anchor = player
|
||||
minimap.set_anchors_and_offsets_preset(Control.PRESET_TOP_RIGHT)
|
||||
minimap.offset_right = -40
|
||||
minimap.offset_top = 40
|
||||
|
Reference in New Issue
Block a user