Finished working on the minimap system for the test level, shows pawns, enemy and friendly traps, and unfinished 'items'
This commit is contained in:
BIN
external/markers.png
vendored
Normal file
BIN
external/markers.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 46 KiB |
40
external/markers.png.import
vendored
Normal file
40
external/markers.png.import
vendored
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://w7sq4ygr5svp"
|
||||||
|
path="res://.godot/imported/markers.png-a608ba5d6f67e2aa5aeb7f89ab7382f2.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://external/markers.png"
|
||||||
|
dest_files=["res://.godot/imported/markers.png-a608ba5d6f67e2aa5aeb7f89ab7382f2.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
@@ -38,6 +38,7 @@ shadow_mesh = SubResource("ArrayMesh_5s8vg")
|
|||||||
[node name="Node3D" type="Node3D"]
|
[node name="Node3D" type="Node3D"]
|
||||||
|
|
||||||
[node name="Ramp" type="MeshInstance3D" parent="."]
|
[node name="Ramp" type="MeshInstance3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.7804582, 0)
|
||||||
cast_shadow = 0
|
cast_shadow = 0
|
||||||
mesh = ExtResource("1_0823e")
|
mesh = ExtResource("1_0823e")
|
||||||
skeleton = NodePath("")
|
skeleton = NodePath("")
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=10 format=3 uid="uid://by6suwmds7xq2"]
|
[gd_scene load_steps=9 format=3 uid="uid://by6suwmds7xq2"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://d3t381vws7vns" path="res://scripts/level.gd" id="1_qcd3b"]
|
[ext_resource type="Script" uid="uid://d3t381vws7vns" path="res://scripts/level.gd" id="1_qcd3b"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bgocskbofewsr" path="res://templates/HUD.tscn" id="1_x4b8f"]
|
[ext_resource type="PackedScene" uid="uid://bgocskbofewsr" path="res://templates/HUD.tscn" id="1_x4b8f"]
|
||||||
@@ -13,11 +13,6 @@ ambient_light_color = Color(1, 1, 1, 1)
|
|||||||
ambient_light_energy = 2.18
|
ambient_light_energy = 2.18
|
||||||
glow_enabled = true
|
glow_enabled = true
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_88ety"]
|
|
||||||
shading_mode = 0
|
|
||||||
albedo_color = Color(0, 0, 0, 1)
|
|
||||||
albedo_texture = ExtResource("5_qcd3b")
|
|
||||||
|
|
||||||
[node name="Level" type="Node3D"]
|
[node name="Level" type="Node3D"]
|
||||||
script = ExtResource("1_qcd3b")
|
script = ExtResource("1_qcd3b")
|
||||||
difficulty = 5
|
difficulty = 5
|
||||||
@@ -93,10 +88,10 @@ unique_name_in_owner = true
|
|||||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||||
environment = SubResource("Environment_x4b8f")
|
environment = SubResource("Environment_x4b8f")
|
||||||
|
|
||||||
[node name="Node3D" type="Node3D" parent="."]
|
[node name="Minimap" type="Node3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 10000, 3)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 10000, 3)
|
||||||
|
|
||||||
[node name="Floor" type="GridMap" parent="Node3D"]
|
[node name="Floor" type="GridMap" parent="Minimap"]
|
||||||
mesh_library = ExtResource("5_ahbqi")
|
mesh_library = ExtResource("5_ahbqi")
|
||||||
cell_size = Vector3(1, 1, 1)
|
cell_size = Vector3(1, 1, 1)
|
||||||
cell_center_y = false
|
cell_center_y = false
|
||||||
@@ -107,7 +102,7 @@ data = {
|
|||||||
}
|
}
|
||||||
metadata/_editor_floor_ = Vector3(0, 0, 0)
|
metadata/_editor_floor_ = Vector3(0, 0, 0)
|
||||||
|
|
||||||
[node name="Ramps" type="GridMap" parent="Node3D"]
|
[node name="Ramps" type="GridMap" parent="Minimap"]
|
||||||
mesh_library = ExtResource("5_ahbqi")
|
mesh_library = ExtResource("5_ahbqi")
|
||||||
cell_size = Vector3(1, 1, 1)
|
cell_size = Vector3(1, 1, 1)
|
||||||
cell_center_y = false
|
cell_center_y = false
|
||||||
@@ -118,7 +113,7 @@ data = {
|
|||||||
}
|
}
|
||||||
metadata/_editor_floor_ = Vector3(0, 0, 0)
|
metadata/_editor_floor_ = Vector3(0, 0, 0)
|
||||||
|
|
||||||
[node name="Markers" type="GridMap" parent="Node3D"]
|
[node name="Markers" type="GridMap" parent="Minimap"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.02, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.02, 0)
|
||||||
mesh_library = ExtResource("5_88ety")
|
mesh_library = ExtResource("5_88ety")
|
||||||
cell_size = Vector3(1, 1, 1)
|
cell_size = Vector3(1, 1, 1)
|
||||||
@@ -127,17 +122,16 @@ collision_layer = 0
|
|||||||
collision_mask = 0
|
collision_mask = 0
|
||||||
metadata/_editor_floor_ = Vector3(0, -1, 0)
|
metadata/_editor_floor_ = Vector3(0, -1, 0)
|
||||||
|
|
||||||
[node name="Sprite3D" type="Sprite3D" parent="Node3D"]
|
[node name="Blackout" type="Sprite3D" parent="Minimap"]
|
||||||
transform = Transform3D(50, 0, 0, 0, -2.1855694e-06, 50, 0, -50, -2.1855694e-06, 0, 0, 0)
|
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 0, 0)
|
||||||
material_override = SubResource("StandardMaterial3D_88ety")
|
|
||||||
cast_shadow = 0
|
|
||||||
texture = ExtResource("5_qcd3b")
|
|
||||||
|
|
||||||
[node name="Sprite3D2" type="Sprite3D" parent="Node3D"]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 12.569536, 100, 2.5275712)
|
|
||||||
layers = 524288
|
layers = 524288
|
||||||
cast_shadow = 0
|
cast_shadow = 0
|
||||||
pixel_size = 0.0156
|
modulate = Color(0, 0, 0, 1)
|
||||||
|
pixel_size = 1.0
|
||||||
texture = ExtResource("5_qcd3b")
|
texture = ExtResource("5_qcd3b")
|
||||||
|
|
||||||
|
[node name="MapMarkers" type="Node3D" parent="Minimap"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 100, 0)
|
||||||
|
|
||||||
[editable path="CanvasLayer/HUD"]
|
[editable path="CanvasLayer/HUD"]
|
||||||
|
|||||||
@@ -1,15 +1,24 @@
|
|||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
|
|
||||||
|
enum Modes{
|
||||||
|
STORY,
|
||||||
|
VS_COM,
|
||||||
|
VS_MAN
|
||||||
|
}
|
||||||
|
|
||||||
const blinder_template = preload("res://templates/blinder.tscn")
|
const blinder_template = preload("res://templates/blinder.tscn")
|
||||||
const one_shot_template = preload("res://templates/one_shot.tscn")
|
const one_shot_template = preload("res://templates/one_shot.tscn")
|
||||||
|
|
||||||
|
const story_level = preload("res://scenes/test_level.tscn")
|
||||||
|
const vs_com_level = preload("res://scenes/test_level.tscn")
|
||||||
const vs_man_level = preload("res://scenes/test_level.tscn")
|
const vs_man_level = preload("res://scenes/test_level.tscn")
|
||||||
const pawn_select_scene = preload("res://scenes/character_select.tscn")
|
const pawn_select_scene = preload("res://scenes/character_select.tscn")
|
||||||
|
|
||||||
var player : PawnController
|
var player : PawnController
|
||||||
var hud : HUD
|
var hud : HUD
|
||||||
var level : Level
|
var level : Level
|
||||||
|
var mode : Modes = Modes.STORY
|
||||||
var multiplayer_game : bool = false
|
var multiplayer_game : bool = false
|
||||||
var num_players : int = 1
|
var num_players : int = 1
|
||||||
var pawns_selected : Dictionary[int, PawnBaseData] = {}
|
var pawns_selected : Dictionary[int, PawnBaseData] = {}
|
||||||
@@ -47,7 +56,13 @@ func start_level(pawns : Dictionary[int, PawnBaseData]) -> void:
|
|||||||
for i in Multiplayer.players.values():
|
for i in Multiplayer.players.values():
|
||||||
level_synced[i] = false
|
level_synced[i] = false
|
||||||
level_synced[1] = true
|
level_synced[1] = true
|
||||||
switch_scene(vs_man_level)
|
match(mode):
|
||||||
|
Modes.STORY:
|
||||||
|
switch_scene(story_level, false)
|
||||||
|
Modes.VS_COM:
|
||||||
|
switch_scene(vs_com_level, false)
|
||||||
|
Modes.VS_MAN:
|
||||||
|
switch_scene(vs_man_level)
|
||||||
|
|
||||||
func switch_scene(packed_scene : PackedScene, spawn : bool = true) -> void:
|
func switch_scene(packed_scene : PackedScene, spawn : bool = true) -> void:
|
||||||
var blinder = blinder_template.instantiate() as TextureRect
|
var blinder = blinder_template.instantiate() as TextureRect
|
||||||
|
|||||||
1
scripts/item.gd
Normal file
1
scripts/item.gd
Normal file
@@ -0,0 +1 @@
|
|||||||
|
class_name Item extends Area3D
|
||||||
1
scripts/item.gd.uid
Normal file
1
scripts/item.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://bjgeppx4pmk66
|
||||||
@@ -1,5 +1,14 @@
|
|||||||
class_name Level extends Node3D
|
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 pawn_controller = preload("res://templates/pawn_controller.tscn")
|
||||||
const trap_template = preload("res://templates/trap.tscn")
|
const trap_template = preload("res://templates/trap.tscn")
|
||||||
const camera_template = preload("res://templates/pawn_camera.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 pawns_node : Node3D = %Pawns
|
||||||
@onready var traps_node : Node3D = %Traps
|
@onready var traps_node : Node3D = %Traps
|
||||||
@onready var cameras_node : Node3D = %Cameras
|
@onready var cameras_node : Node3D = %Cameras
|
||||||
|
@onready var map_markers_node : Node3D = %MapMarkers
|
||||||
@export var difficulty : int = 1
|
@export var difficulty : int = 1
|
||||||
|
|
||||||
var traps : Dictionary[Vector3i, Trap] = {}
|
var traps : Dictionary[Vector3i, Trap] = {}
|
||||||
var pawns : Dictionary[int, PawnController] = {}
|
var pawns : Dictionary[int, PawnController] = {}
|
||||||
var cameras : Dictionary[int, PawnCamera] = {}
|
var cameras : Dictionary[int, PawnCamera] = {}
|
||||||
|
var map_markers : Dictionary[Object, MapMarker] = {}
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
Game.level = self
|
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:
|
func setup() -> void:
|
||||||
if Multiplayer.is_host():
|
if Multiplayer.is_host():
|
||||||
@@ -120,3 +135,37 @@ func disarm_trap(crd : Vector3i) -> void:
|
|||||||
var trap = traps[crd]
|
var trap = traps[crd]
|
||||||
trap.disarm()
|
trap.disarm()
|
||||||
traps.erase(crd)
|
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)
|
||||||
|
|||||||
15
scripts/map_marker.gd
Normal file
15
scripts/map_marker.gd
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
class_name MapMarker extends Node3D
|
||||||
|
|
||||||
|
var target : Node3D
|
||||||
|
|
||||||
|
func register_target(target : Node3D) -> void:
|
||||||
|
self.target = target
|
||||||
|
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
if target:
|
||||||
|
var loc = target.position
|
||||||
|
position = Vector3(loc.x, position.y, loc.z)
|
||||||
|
|
||||||
|
func _on_trap_revealed(is_visible : bool) -> void:
|
||||||
|
visible = is_visible
|
||||||
1
scripts/map_marker.gd.uid
Normal file
1
scripts/map_marker.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://cnrxwj03j5rw3
|
||||||
@@ -9,7 +9,9 @@ enum State {
|
|||||||
DEAD
|
DEAD
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const trap_template = preload("res://templates/trap.tscn")
|
const trap_template = preload("res://templates/trap.tscn")
|
||||||
|
|
||||||
const remove_trap_modal = preload("res://templates/remove_trap_modal.tscn")
|
const remove_trap_modal = preload("res://templates/remove_trap_modal.tscn")
|
||||||
const disarm_trap_modal = preload("res://templates/disarm_trap_modal.tscn")
|
const disarm_trap_modal = preload("res://templates/disarm_trap_modal.tscn")
|
||||||
|
|
||||||
@@ -74,6 +76,13 @@ signal combat_target_changed(melee : bool)
|
|||||||
signal ammo_changed(current : int, max : int)
|
signal ammo_changed(current : int, max : int)
|
||||||
signal struggling(value : float)
|
signal struggling(value : float)
|
||||||
|
|
||||||
|
|
||||||
|
func _enter_tree() -> void:
|
||||||
|
Game.level.add_map_marker(self)
|
||||||
|
|
||||||
|
func _exit_tree() -> void:
|
||||||
|
Game.level.remove_map_marker(self)
|
||||||
|
|
||||||
func _physics_process(delta: float) -> void:
|
func _physics_process(delta: float) -> void:
|
||||||
if attack_timer > 0:
|
if attack_timer > 0:
|
||||||
attack_timer -= delta
|
attack_timer -= delta
|
||||||
@@ -359,7 +368,7 @@ func start_detecting() -> void:
|
|||||||
detecting = true
|
detecting = true
|
||||||
update_detect_region.rpc(false)
|
update_detect_region.rpc(false)
|
||||||
|
|
||||||
@rpc("authority")
|
@rpc("authority", "call_local")
|
||||||
func update_detect_region(update : bool) -> void:
|
func update_detect_region(update : bool) -> void:
|
||||||
var new_square : Vector3i = (global_position - Vector3.ONE * .5).round()
|
var new_square : Vector3i = (global_position - Vector3.ONE * .5).round()
|
||||||
if update and new_square == current_square:
|
if update and new_square == current_square:
|
||||||
|
|||||||
@@ -3,26 +3,32 @@ extends Control
|
|||||||
@onready var menu_list : Array = [
|
@onready var menu_list : Array = [
|
||||||
{
|
{
|
||||||
"option": %STORY,
|
"option": %STORY,
|
||||||
|
"mode" : Game.Modes.STORY,
|
||||||
"scene" : preload("res://scenes/character_select.tscn")
|
"scene" : preload("res://scenes/character_select.tscn")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"option": %"VS-COM",
|
"option": %"VS-COM",
|
||||||
|
"mode" : Game.Modes.VS_COM,
|
||||||
"scene" : preload("res://scenes/character_select.tscn")
|
"scene" : preload("res://scenes/character_select.tscn")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"option": %"VS-MAN",
|
"option": %"VS-MAN",
|
||||||
|
"mode" : Game.Modes.VS_MAN,
|
||||||
"scene" : preload("res://scenes/multiplayer_setup.tscn")
|
"scene" : preload("res://scenes/multiplayer_setup.tscn")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"option": %STORY,
|
"option": %STORY,
|
||||||
|
"mode" : Game.Modes.STORY,
|
||||||
"scene" : preload("res://scenes/character_select.tscn")
|
"scene" : preload("res://scenes/character_select.tscn")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"option": %RECORD,
|
"option": %RECORD,
|
||||||
|
"mode" : Game.Modes.STORY,
|
||||||
"scene" : preload("res://scenes/character_select.tscn")
|
"scene" : preload("res://scenes/character_select.tscn")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"option": %OPTION,
|
"option": %OPTION,
|
||||||
|
"mode" : Game.Modes.STORY,
|
||||||
"scene" : preload("res://scenes/character_select.tscn")
|
"scene" : preload("res://scenes/character_select.tscn")
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -60,7 +66,6 @@ func _process(delta: float) -> void:
|
|||||||
switch_menu(0)
|
switch_menu(0)
|
||||||
|
|
||||||
if opened:
|
if opened:
|
||||||
|
|
||||||
var menu_dir = 0
|
var menu_dir = 0
|
||||||
menu_dir += 1 if Input.is_action_just_pressed("ui_down") else 0
|
menu_dir += 1 if Input.is_action_just_pressed("ui_down") else 0
|
||||||
menu_dir -= 1 if Input.is_action_just_pressed("ui_up") else 0
|
menu_dir -= 1 if Input.is_action_just_pressed("ui_up") else 0
|
||||||
@@ -68,6 +73,7 @@ func _process(delta: float) -> void:
|
|||||||
switch_sound.play()
|
switch_sound.play()
|
||||||
switch_menu(wrapi(menu_choice + menu_dir, 0, len(menu_list)))
|
switch_menu(wrapi(menu_choice + menu_dir, 0, len(menu_list)))
|
||||||
if Input.is_action_just_pressed("ui_accept"):
|
if Input.is_action_just_pressed("ui_accept"):
|
||||||
|
Game.mode = menu_list[menu_choice].mode
|
||||||
Game.switch_scene(menu_list[menu_choice].scene, false)
|
Game.switch_scene(menu_list[menu_choice].scene, false)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -61,6 +61,13 @@ var just_revealed : bool = false
|
|||||||
signal removed(type : Trap.Type)
|
signal removed(type : Trap.Type)
|
||||||
signal disarmed(type : Trap.Type)
|
signal disarmed(type : Trap.Type)
|
||||||
signal activated(type : Trap.Type)
|
signal activated(type : Trap.Type)
|
||||||
|
signal revealed(is_visible : bool)
|
||||||
|
|
||||||
|
func _enter_tree() -> void:
|
||||||
|
Game.level.add_map_marker(self)
|
||||||
|
|
||||||
|
func _exit_tree() -> void:
|
||||||
|
Game.level.remove_map_marker(self)
|
||||||
|
|
||||||
func setup(type : Type, direction : Vector3, trap_owner : int) -> void:
|
func setup(type : Type, direction : Vector3, trap_owner : int) -> void:
|
||||||
self.type = type
|
self.type = type
|
||||||
@@ -84,6 +91,7 @@ func reveal() -> void:
|
|||||||
model.visible = true
|
model.visible = true
|
||||||
reveal_timer.start(5)
|
reveal_timer.start(5)
|
||||||
just_revealed = true
|
just_revealed = true
|
||||||
|
revealed.emit(true)
|
||||||
|
|
||||||
func is_just_revealed() -> bool:
|
func is_just_revealed() -> bool:
|
||||||
return just_revealed
|
return just_revealed
|
||||||
@@ -96,6 +104,7 @@ func _on_reveal_timeout() -> void:
|
|||||||
reveal_timer.start(5)
|
reveal_timer.start(5)
|
||||||
else:
|
else:
|
||||||
model.visible = false
|
model.visible = false
|
||||||
|
revealed.emit(false)
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
var owns_trap = trap_owner == Multiplayer.id
|
var owns_trap = trap_owner == Multiplayer.id
|
||||||
|
|||||||
11
templates/markers/enemy_trap_marker.tscn
Normal file
11
templates/markers/enemy_trap_marker.tscn
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
[gd_scene load_steps=3 format=3 uid="uid://bn1dl7sexxcog"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cnrxwj03j5rw3" path="res://scripts/map_marker.gd" id="1_1gvyj"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bdo6instl47uf" path="res://visuals/images/icons/enemy_trap_marker.png" id="2_43sjg"]
|
||||||
|
|
||||||
|
[node name="EnemyTrapMarker" type="Node3D"]
|
||||||
|
script = ExtResource("1_1gvyj")
|
||||||
|
|
||||||
|
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||||
|
axis = 1
|
||||||
|
texture = ExtResource("2_43sjg")
|
||||||
11
templates/markers/friendly_trap_marker.tscn
Normal file
11
templates/markers/friendly_trap_marker.tscn
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
[gd_scene load_steps=3 format=3 uid="uid://gchb44afbosa"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cnrxwj03j5rw3" path="res://scripts/map_marker.gd" id="1_kw26n"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://c6wke2vs8rfyd" path="res://visuals/images/icons/friendly_trap_marker.png" id="2_rgmxc"]
|
||||||
|
|
||||||
|
[node name="FriendlyTrapMarker" type="Node3D"]
|
||||||
|
script = ExtResource("1_kw26n")
|
||||||
|
|
||||||
|
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||||
|
axis = 1
|
||||||
|
texture = ExtResource("2_rgmxc")
|
||||||
11
templates/markers/item_marker.tscn
Normal file
11
templates/markers/item_marker.tscn
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
[gd_scene load_steps=3 format=3 uid="uid://c7eca16u6brh"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cnrxwj03j5rw3" path="res://scripts/map_marker.gd" id="1_3oank"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cwcbb81pte2jc" path="res://visuals/images/icons/item_marker.png" id="2_pnwq7"]
|
||||||
|
|
||||||
|
[node name="ItemMarker" type="Node3D"]
|
||||||
|
script = ExtResource("1_3oank")
|
||||||
|
|
||||||
|
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||||
|
axis = 1
|
||||||
|
texture = ExtResource("2_pnwq7")
|
||||||
11
templates/markers/pawn_marker.tscn
Normal file
11
templates/markers/pawn_marker.tscn
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
[gd_scene load_steps=3 format=3 uid="uid://2fulq4e0q1n2"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://cnrxwj03j5rw3" path="res://scripts/map_marker.gd" id="1_7mb27"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://co81os2o2bn28" path="res://visuals/images/icons/pawn_marker.png" id="2_cp67f"]
|
||||||
|
|
||||||
|
[node name="PawnMarker" type="Node3D"]
|
||||||
|
script = ExtResource("1_7mb27")
|
||||||
|
|
||||||
|
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||||
|
axis = 1
|
||||||
|
texture = ExtResource("2_cp67f")
|
||||||
File diff suppressed because one or more lines are too long
BIN
visuals/images/icons/enemy_trap_marker.png
Normal file
BIN
visuals/images/icons/enemy_trap_marker.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.2 KiB |
41
visuals/images/icons/enemy_trap_marker.png.import
Normal file
41
visuals/images/icons/enemy_trap_marker.png.import
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bdo6instl47uf"
|
||||||
|
path.s3tc="res://.godot/imported/enemy_trap_marker.png-1c5b7ca7cafa418b711651f11cd5afcf.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://visuals/images/icons/enemy_trap_marker.png"
|
||||||
|
dest_files=["res://.godot/imported/enemy_trap_marker.png-1c5b7ca7cafa418b711651f11cd5afcf.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=0
|
||||||
BIN
visuals/images/icons/friendly_trap_marker.png
Normal file
BIN
visuals/images/icons/friendly_trap_marker.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.2 KiB |
41
visuals/images/icons/friendly_trap_marker.png.import
Normal file
41
visuals/images/icons/friendly_trap_marker.png.import
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c6wke2vs8rfyd"
|
||||||
|
path.s3tc="res://.godot/imported/friendly_trap_marker.png-620ca5c48decec71f2637c2f41c9f3ba.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://visuals/images/icons/friendly_trap_marker.png"
|
||||||
|
dest_files=["res://.godot/imported/friendly_trap_marker.png-620ca5c48decec71f2637c2f41c9f3ba.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=0
|
||||||
BIN
visuals/images/icons/item_marker.png
Normal file
BIN
visuals/images/icons/item_marker.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.1 KiB |
41
visuals/images/icons/item_marker.png.import
Normal file
41
visuals/images/icons/item_marker.png.import
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cwcbb81pte2jc"
|
||||||
|
path.s3tc="res://.godot/imported/item_marker.png-753303dddb4bc5ecbad519650475a1a6.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://visuals/images/icons/item_marker.png"
|
||||||
|
dest_files=["res://.godot/imported/item_marker.png-753303dddb4bc5ecbad519650475a1a6.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=0
|
||||||
BIN
visuals/images/icons/pawn_marker.png
Normal file
BIN
visuals/images/icons/pawn_marker.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.6 KiB |
41
visuals/images/icons/pawn_marker.png.import
Normal file
41
visuals/images/icons/pawn_marker.png.import
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://co81os2o2bn28"
|
||||||
|
path.s3tc="res://.godot/imported/pawn_marker.png-317a3f6c0d3d6deb510efaddbd7ef0d2.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://visuals/images/icons/pawn_marker.png"
|
||||||
|
dest_files=["res://.godot/imported/pawn_marker.png-317a3f6c0d3d6deb510efaddbd7ef0d2.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=0
|
||||||
Reference in New Issue
Block a user