Finished working on the minimap system for the test level, shows pawns, enemy and friendly traps, and unfinished 'items'
This commit is contained in:
@@ -1,5 +1,14 @@
|
||||
class_name Level extends Node3D
|
||||
|
||||
|
||||
const map_marker_templates : Dictionary[String, PackedScene] = {
|
||||
"pawn" : preload("res://templates/markers/pawn_marker.tscn"),
|
||||
"friendly_trap":preload("res://templates/markers/friendly_trap_marker.tscn"),
|
||||
"enemy_trap": preload("res://templates/markers/enemy_trap_marker.tscn"),
|
||||
"item": preload("res://templates/markers/item_marker.tscn")
|
||||
}
|
||||
|
||||
|
||||
const pawn_controller = preload("res://templates/pawn_controller.tscn")
|
||||
const trap_template = preload("res://templates/trap.tscn")
|
||||
const camera_template = preload("res://templates/pawn_camera.tscn")
|
||||
@@ -13,13 +22,19 @@ const camera_offset = Vector3(0, 10, 5.25)
|
||||
@onready var pawns_node : Node3D = %Pawns
|
||||
@onready var traps_node : Node3D = %Traps
|
||||
@onready var cameras_node : Node3D = %Cameras
|
||||
@onready var map_markers_node : Node3D = %MapMarkers
|
||||
@export var difficulty : int = 1
|
||||
|
||||
var traps : Dictionary[Vector3i, Trap] = {}
|
||||
var pawns : Dictionary[int, PawnController] = {}
|
||||
var cameras : Dictionary[int, PawnCamera] = {}
|
||||
var map_markers : Dictionary[Object, MapMarker] = {}
|
||||
|
||||
func _ready() -> void:
|
||||
Game.level = self
|
||||
if Game.mode == Game.Modes.STORY:
|
||||
setup()
|
||||
add_level_trap.call_deferred(Trap.Type.MINE, Vector3.ZERO, Vector3i(5,0,3))
|
||||
|
||||
func setup() -> void:
|
||||
if Multiplayer.is_host():
|
||||
@@ -120,3 +135,37 @@ func disarm_trap(crd : Vector3i) -> void:
|
||||
var trap = traps[crd]
|
||||
trap.disarm()
|
||||
traps.erase(crd)
|
||||
|
||||
func remove_map_marker(target) -> void:
|
||||
if !map_markers.has(target):
|
||||
printerr("Tried to remove a map marker for %s but marker does not exist!" % target.name)
|
||||
else:
|
||||
map_markers[target].queue_free()
|
||||
map_markers[target] = null
|
||||
|
||||
func add_map_marker(target) -> void:
|
||||
var marker : MapMarker
|
||||
var height : float
|
||||
if target is PawnController:
|
||||
marker = map_marker_templates.pawn.instantiate()
|
||||
height += 40
|
||||
elif target is Trap:
|
||||
if target.trap_owner == Multiplayer.id:
|
||||
marker = map_marker_templates.friendly_trap.instantiate()
|
||||
else:
|
||||
marker = map_marker_templates.enemy_trap.instantiate()
|
||||
marker.visible = false
|
||||
target.revealed.connect(marker._on_trap_revealed)
|
||||
height += 30
|
||||
elif target is Item:
|
||||
marker = map_marker_templates.item.instantiate()
|
||||
height += 10
|
||||
marker.register_target(target)
|
||||
map_markers[target] = marker
|
||||
map_markers_node.add_child(marker)
|
||||
marker.position += Vector3(0, height,0)
|
||||
|
||||
func add_level_trap(type : Trap.Type, facing : Vector3, crd : Vector3i) -> void:
|
||||
var trap = trap_template.instantiate()
|
||||
trap.setup(type, facing, -1)
|
||||
add_trap(trap, crd)
|
||||
|
||||
Reference in New Issue
Block a user