diff --git a/components/explosive_damage_component.gd b/components/explosive_damage_component.gd
index 31b2a0e..5d5184f 100644
--- a/components/explosive_damage_component.gd
+++ b/components/explosive_damage_component.gd
@@ -17,10 +17,10 @@ class_name ExplosiveDamageComponent extends Area3D
@export var damage : int = 100
@export var impulse_force : int = 1000
-func _physics_process(_delta):
+func _physics_process(_delta : float) -> void:
for body in get_overlapping_bodies():
if body is RigidBody3D:
- var direction = (body.global_position - global_position).normalized()
+ var direction : Vector3 = (body.global_position - global_position).normalized()
body.apply_central_impulse(direction * impulse_force)
for area in get_overlapping_areas():
diff --git a/components/flag_carry_component.gd b/components/flag_carry_component.gd
index 424b9a5..af4e18c 100644
--- a/components/flag_carry_component.gd
+++ b/components/flag_carry_component.gd
@@ -24,20 +24,20 @@ class_name FlagCarryComponent extends Node
var _carried_flag : Flag
-func _ready():
+func _ready() -> void:
sensor.body_entered.connect(_sensor_on_body_entered)
-func _process(_delta):
+func _process(_delta : float) -> void:
if _is_carrying():
_carried_flag.global_position = attachment.global_position
_carried_flag.global_rotation = attachment.global_rotation
-func _grab(flag : Flag):
+func _grab(flag : Flag) -> void:
if not _is_carrying():
flag.grab()
_carried_flag = flag
-func _release(inherited_velocity : Vector3, throw_speed : float):
+func _release(inherited_velocity : Vector3, throw_speed : float) -> void:
if _is_carrying():
_carried_flag.drop()
_carried_flag.rotation_degrees.x = 0.0
@@ -49,12 +49,12 @@ func _release(inherited_velocity : Vector3, throw_speed : float):
func _is_carrying() -> bool:
return _carried_flag != null
-func _sensor_on_body_entered(collider):
+func _sensor_on_body_entered(collider : Flag) -> void:
if collider is Flag:
_grab(collider)
-func drop():
+func drop() -> void:
_release(Vector3.ZERO, 0.0)
-func throw(inherited_velocity : Vector3):
+func throw(inherited_velocity : Vector3) -> void:
_release(inherited_velocity, max_throw_speed)
diff --git a/components/health_component.gd b/components/health_component.gd
index 1d13446..26e175b 100644
--- a/components/health_component.gd
+++ b/components/health_component.gd
@@ -23,7 +23,7 @@ class_name HealthComponent extends Area3D
signal health_zeroed
signal health_changed(value : int)
-func _ready():
+func _ready() -> void:
heal_full()
@rpc("call_local")
@@ -33,10 +33,10 @@ func damage(amount : int) -> void:
health_zeroed.emit()
@rpc("call_local")
-func _heal(amount : int):
+func _heal(amount : int) -> void:
health = clampf(health + amount, 0.0, max_health)
-func heal_full():
+func heal_full() -> void:
if not is_multiplayer_authority():
return
diff --git a/entities/flag/flag.gd b/entities/flag/flag.gd
index f9daf1f..cbda81c 100644
--- a/entities/flag/flag.gd
+++ b/entities/flag/flag.gd
@@ -4,14 +4,14 @@ enum FlagState { FLAG_STATE_ON_STAND, FLAG_STATE_DROPPED, FLAG_STATE_TAKEN }
@export var flag_state : FlagState = FlagState.FLAG_STATE_ON_STAND
-func can_be_grabbed():
+func can_be_grabbed() -> bool:
return flag_state != FlagState.FLAG_STATE_TAKEN
-func grab():
+func grab() -> void:
if flag_state != FlagState.FLAG_STATE_TAKEN:
flag_state = FlagState.FLAG_STATE_TAKEN
-func drop():
+func drop() -> void:
if flag_state == FlagState.FLAG_STATE_TAKEN:
flag_state = FlagState.FLAG_STATE_DROPPED
diff --git a/entities/player/assets/vanguard.gd b/entities/player/assets/vanguard.gd
index 281e919..62fa98f 100644
--- a/entities/player/assets/vanguard.gd
+++ b/entities/player/assets/vanguard.gd
@@ -3,23 +3,23 @@ class_name Vanguard extends Node
@export var spine_ik_target_attachment : Node3D
@onready var animation_tree : AnimationTree = $AnimationTree
-@onready var spine_ik = $Node/Skeleton3D/SpineIK
-@onready var spine_ik_target = $SpineIKTarget
+@onready var spine_ik : SkeletonIK3D = $Node/Skeleton3D/SpineIK
+@onready var spine_ik_target : Node3D = $SpineIKTarget
enum GroundState { GROUND_STATE_GROUNDED, GROUND_STATE_MID_AIR, GROUND_STATE_DEAD }
-func _ready():
+func _ready() -> void:
spine_ik.start()
-func _process(_delta):
+func _process(_delta : float) -> void:
spine_ik_target.global_transform = spine_ik_target_attachment.global_transform
func set_locomotion(locomotion : Vector2, ground_speed_factor : float) -> void:
animation_tree.set("parameters/Locomotion/blend_position", locomotion)
animation_tree.set("parameters/GroundSpeed/scale", ground_speed_factor)
-func set_ground_state(ground_state : GroundState):
- var transition_name = "grounded"
+func set_ground_state(ground_state : GroundState) -> void:
+ var transition_name : String = "grounded"
if ground_state == GroundState.GROUND_STATE_MID_AIR:
transition_name = "mid_air"
if ground_state == GroundState.GROUND_STATE_DEAD:
diff --git a/entities/player/assets/vanguard.tscn b/entities/player/assets/vanguard.tscn
index 27531b5..910ead8 100644
--- a/entities/player/assets/vanguard.tscn
+++ b/entities/player/assets/vanguard.tscn
@@ -2,9 +2,9 @@
[ext_resource type="PackedScene" uid="uid://4naw661fqmjg" path="res://entities/player/assets/vanguard.glb" id="1_d2ik6"]
[ext_resource type="Script" path="res://entities/player/assets/vanguard.gd" id="2_c22xr"]
-[ext_resource type="PackedScene" uid="uid://clq4uym4arpv3" path="res://weapons/space_gun/assets/SpaceGun.glb" id="2_elp0s"]
+[ext_resource type="PackedScene" uid="uid://clq4uym4arpv3" path="res://entities/weapons/space_gun/assets/SpaceGun.glb" id="3_1d68x"]
-[sub_resource type="Animation" id="Animation_a1qf3"]
+[sub_resource type="Animation" id="Animation_mhn14"]
resource_name = "t_pose"
length = 0.0333333
tracks/0/type = "position_3d"
@@ -379,7 +379,7 @@ tracks/52/interp = 1
tracks/52/loop_wrap = true
tracks/52/keys = PackedFloat32Array(0, 1, 0.354872, -0.0338185, -0.004324, 0.934293)
-[sub_resource type="Animation" id="Animation_e1ctx"]
+[sub_resource type="Animation" id="Animation_qqdab"]
resource_name = "run_left"
length = 0.5
loop_mode = 1
@@ -755,7 +755,7 @@ tracks/52/interp = 1
tracks/52/loop_wrap = true
tracks/52/keys = PackedFloat32Array(0, 1, 0.624011, -9.44547e-08, 0.04919, 0.779865)
-[sub_resource type="Animation" id="Animation_rxqgf"]
+[sub_resource type="Animation" id="Animation_q80px"]
resource_name = "jump_up"
length = 0.533333
tracks/0/type = "position_3d"
@@ -1130,7 +1130,7 @@ tracks/52/interp = 1
tracks/52/loop_wrap = true
tracks/52/keys = PackedFloat32Array(0, 1, 0.624011, -9.44547e-08, 0.04919, 0.779865)
-[sub_resource type="Animation" id="Animation_4kiku"]
+[sub_resource type="Animation" id="Animation_nq3cu"]
resource_name = "idle"
length = 2.1
loop_mode = 1
@@ -1506,7 +1506,7 @@ tracks/52/interp = 1
tracks/52/loop_wrap = true
tracks/52/keys = PackedFloat32Array(0, 1, 0.624011, -9.44547e-08, 0.04919, 0.779865)
-[sub_resource type="Animation" id="Animation_x1sal"]
+[sub_resource type="Animation" id="Animation_wavlm"]
resource_name = "run_backward"
length = 0.5
loop_mode = 1
@@ -1882,7 +1882,7 @@ tracks/52/interp = 1
tracks/52/loop_wrap = true
tracks/52/keys = PackedFloat32Array(0, 1, 0.624011, -9.44547e-08, 0.04919, 0.779865)
-[sub_resource type="Animation" id="Animation_te6dm"]
+[sub_resource type="Animation" id="Animation_px8go"]
resource_name = "run_forward"
length = 0.5
loop_mode = 1
@@ -2258,7 +2258,7 @@ tracks/52/interp = 1
tracks/52/loop_wrap = true
tracks/52/keys = PackedFloat32Array(0, 1, 0.624011, -9.44547e-08, 0.04919, 0.779865)
-[sub_resource type="Animation" id="Animation_i0yri"]
+[sub_resource type="Animation" id="Animation_3t7lf"]
resource_name = "run_right"
length = 0.5
loop_mode = 1
@@ -2634,7 +2634,7 @@ tracks/52/interp = 1
tracks/52/loop_wrap = true
tracks/52/keys = PackedFloat32Array(0, 1, 0.624011, -9.44547e-08, 0.04919, 0.779865)
-[sub_resource type="Animation" id="Animation_m6nqq"]
+[sub_resource type="Animation" id="Animation_cwvpf"]
resource_name = "death"
length = 2.83333
tracks/0/type = "position_3d"
@@ -3009,7 +3009,7 @@ tracks/52/interp = 1
tracks/52/loop_wrap = true
tracks/52/keys = PackedFloat32Array(0, 1, 0.624011, -9.44547e-08, 0.04919, 0.779865)
-[sub_resource type="Animation" id="Animation_tgrrp"]
+[sub_resource type="Animation" id="Animation_iawti"]
resource_name = "jump_loop"
loop_mode = 1
tracks/0/type = "position_3d"
@@ -3384,17 +3384,17 @@ tracks/52/interp = 1
tracks/52/loop_wrap = true
tracks/52/keys = PackedFloat32Array(0, 1, 0.624011, -9.44547e-08, 0.04919, 0.779865)
-[sub_resource type="AnimationLibrary" id="AnimationLibrary_jf6yk"]
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_cfog3"]
_data = {
-"death": SubResource("Animation_m6nqq"),
-"idle": SubResource("Animation_4kiku"),
-"jump": SubResource("Animation_tgrrp"),
-"jump_up": SubResource("Animation_rxqgf"),
-"run_backward": SubResource("Animation_x1sal"),
-"run_forward": SubResource("Animation_te6dm"),
-"run_left": SubResource("Animation_e1ctx"),
-"run_right": SubResource("Animation_i0yri"),
-"t_pose": SubResource("Animation_a1qf3")
+"death": SubResource("Animation_cwvpf"),
+"idle": SubResource("Animation_nq3cu"),
+"jump": SubResource("Animation_iawti"),
+"jump_up": SubResource("Animation_q80px"),
+"run_backward": SubResource("Animation_wavlm"),
+"run_forward": SubResource("Animation_px8go"),
+"run_left": SubResource("Animation_qqdab"),
+"run_right": SubResource("Animation_3t7lf"),
+"t_pose": SubResource("Animation_mhn14")
}
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_lw37l"]
@@ -3477,15 +3477,15 @@ node_connections = [&"Death", 0, &"Death 2", &"GroundSpeed", 0, &"Locomotion", &
script = ExtResource("2_c22xr")
[node name="Skeleton3D" parent="Node" index="0"]
-bones/0/position = Vector3(-0.0110252, 0.984399, 0.0113551)
-bones/0/rotation = Quaternion(-0.0346631, -0.421473, -0.031884, 0.905617)
-bones/2/rotation = Quaternion(0.00115413, 0.00432654, 0.00309339, 0.999985)
-bones/4/rotation = Quaternion(0.0693399, 0.00506471, 0.0139101, 0.997483)
-bones/6/rotation = Quaternion(0.159577, 0.00861707, 0.0109217, 0.987087)
-bones/8/rotation = Quaternion(0.687877, -0.396941, 0.388779, 0.467026)
-bones/10/rotation = Quaternion(0.244437, -0.0824007, -0.28381, 0.923533)
-bones/12/rotation = Quaternion(0.0818169, 0.211072, -0.754901, 0.615531)
-bones/14/rotation = Quaternion(0.0191213, 0.0755681, -0.152771, 0.985183)
+bones/0/position = Vector3(-0.00173, 0.968097, 0.0102844)
+bones/0/rotation = Quaternion(-0.0376647, -0.435369, -0.0400344, 0.898573)
+bones/2/rotation = Quaternion(0.00816777, 0.00677155, 0.00042395, 0.999944)
+bones/4/rotation = Quaternion(0.0731821, 0.00505516, 0.0168974, 0.997163)
+bones/6/rotation = Quaternion(0.168044, 0.010812, 0.0113512, 0.985655)
+bones/8/rotation = Quaternion(0.687995, -0.407168, 0.399605, 0.448546)
+bones/10/rotation = Quaternion(0.232583, -0.0669989, -0.309712, 0.919508)
+bones/12/rotation = Quaternion(0.0848093, 0.214035, -0.748836, 0.621483)
+bones/14/rotation = Quaternion(0.0439883, 0.072675, -0.153509, 0.984489)
bones/20/rotation = Quaternion(-0.123455, 0.0248346, 0.23344, 0.964183)
bones/24/rotation = Quaternion(0.0450683, -0.000817796, 0.0508488, 0.997689)
bones/26/rotation = Quaternion(0.100545, -1.16532e-07, 0.00792588, 0.994901)
@@ -3499,12 +3499,12 @@ bones/44/rotation = Quaternion(0.633142, 6.48257e-09, 0.04991, 0.772425)
bones/50/rotation = Quaternion(0.729888, -4.88266e-08, 0.0575362, 0.681141)
bones/52/rotation = Quaternion(0.624011, -9.63141e-08, 0.04919, 0.779865)
bones/54/rotation = Quaternion(-1.18924e-16, 2.81961e-21, -4.50738e-10, 1)
-bones/56/rotation = Quaternion(-0.024556, 0.0446797, -0.0067562, 0.998677)
-bones/58/rotation = Quaternion(-0.009168, 0.301287, -0.0413145, 0.952594)
-bones/62/rotation = Quaternion(0.693486, 0.36321, -0.399714, 0.476848)
-bones/64/rotation = Quaternion(0.33601, -0.304998, 0.117904, 0.883274)
-bones/66/rotation = Quaternion(0.562383, -0.570974, 0.40924, 0.436162)
-bones/68/rotation = Quaternion(-0.00653908, -0.261386, 0.0645819, 0.963049)
+bones/56/rotation = Quaternion(-0.027387, 0.0477242, -0.0102335, 0.998433)
+bones/58/rotation = Quaternion(-0.0272967, 0.307174, -0.0493656, 0.94998)
+bones/62/rotation = Quaternion(0.693539, 0.362122, -0.415845, 0.463622)
+bones/64/rotation = Quaternion(0.324204, -0.30741, 0.122213, 0.886259)
+bones/66/rotation = Quaternion(0.570764, -0.560023, 0.419045, 0.430121)
+bones/68/rotation = Quaternion(-0.0159497, -0.258891, 0.0744964, 0.962897)
bones/70/rotation = Quaternion(0.155965, 0.0109114, -0.00107202, 0.987702)
bones/72/rotation = Quaternion(0.563923, 4.19095e-08, -0.0577906, 0.823803)
bones/74/rotation = Quaternion(0.285209, 0.0197164, -0.0936782, 0.953673)
@@ -3521,21 +3521,21 @@ bones/100/rotation = Quaternion(-6.44756e-14, -1.4372e-11, -3.12192e-10, 1)
bones/102/rotation = Quaternion(0.179829, 0.0890365, -0.000307644, 0.97966)
bones/104/rotation = Quaternion(0.388149, 1.28057e-07, -0.0397774, 0.920738)
bones/106/rotation = Quaternion(0.372324, -1.37021e-07, -0.0381557, 0.927318)
-bones/110/rotation = Quaternion(-0.116972, 0.113122, 0.979413, 0.119461)
-bones/112/rotation = Quaternion(-0.344137, -0.000622203, -0.00428585, 0.93891)
-bones/114/rotation = Quaternion(0.449077, 0.0417981, -0.0071573, 0.892486)
-bones/116/rotation = Quaternion(0.424844, 0.0902863, 0.0296051, 0.900266)
-bones/120/rotation = Quaternion(0.102629, 0.24689, 0.953163, -0.141395)
-bones/122/rotation = Quaternion(-0.324519, -0.0831649, 0.0282907, 0.941791)
-bones/124/rotation = Quaternion(0.40683, -0.0639519, -0.00334525, 0.911257)
-bones/126/rotation = Quaternion(0.33772, -0.0673337, -0.0175452, 0.938671)
+bones/110/rotation = Quaternion(-0.0838619, 0.187447, 0.974965, 0.0852912)
+bones/112/rotation = Quaternion(-0.467849, 0.0166342, -0.0112761, 0.88358)
+bones/114/rotation = Quaternion(0.449729, 0.0515854, 0.00300445, 0.891669)
+bones/116/rotation = Quaternion(0.372768, 0.0597713, 0.0286748, 0.925553)
+bones/120/rotation = Quaternion(0.122412, 0.250244, 0.948794, -0.148942)
+bones/122/rotation = Quaternion(-0.341409, -0.0816528, 0.0267745, 0.935979)
+bones/124/rotation = Quaternion(0.404856, -0.0684155, -0.00791205, 0.911783)
+bones/126/rotation = Quaternion(0.379454, -0.0779287, -0.0184118, 0.921739)
[node name="HandAttachment" type="BoneAttachment3D" parent="Node/Skeleton3D" index="0"]
-transform = Transform3D(-0.173147, 0.0543575, 0.983395, 0.931783, 0.332502, 0.14568, -0.319062, 0.941535, -0.108221, -0.250617, 1.17554, 0.101266)
+transform = Transform3D(-0.174592, 0.0530693, 0.98321, 0.930948, 0.334134, 0.147277, -0.320708, 0.94103, -0.107742, -0.243063, 1.16434, 0.0953343)
bone_name = "mixamorigRightHand"
bone_idx = 14
-[node name="SpaceGun" parent="Node/Skeleton3D/HandAttachment" index="0" instance=ExtResource("2_elp0s")]
+[node name="SpaceGun" parent="Node/Skeleton3D/HandAttachment" index="0" instance=ExtResource("3_1d68x")]
transform = Transform3D(-0.0109711, 0.094734, -0.0300857, -0.00595679, 0.0295874, 0.095337, 0.0992177, 0.0122517, 0.00239707, -0.173344, 0.519761, 0.10355)
[node name="SpineIK" type="SkeletonIK3D" parent="Node/Skeleton3D" index="3"]
@@ -3551,7 +3551,7 @@ playback_default_blend_time = 0.2
[node name="AnimationTree" type="AnimationTree" parent="." index="2"]
libraries = {
-"": SubResource("AnimationLibrary_jf6yk")
+"": SubResource("AnimationLibrary_cfog3")
}
tree_root = SubResource("AnimationNodeBlendTree_1ok7t")
anim_player = NodePath("../AnimationPlayer")
diff --git a/entities/player/player.gd b/entities/player/player.gd
index 2dbb9a6..5cb7f67 100644
--- a/entities/player/player.gd
+++ b/entities/player/player.gd
@@ -32,7 +32,7 @@ enum PlayerState { PLAYER_ALIVE, PLAYER_DEAD }
@export var jetpack_vertical_force : float = 800
@export_group("State")
-@export var player_state = PlayerState.PLAYER_ALIVE
+@export var player_state : PlayerState = PlayerState.PLAYER_ALIVE
@export var player_id : int = 1:
set(id):
player_id = id
@@ -41,26 +41,26 @@ enum PlayerState { PLAYER_ALIVE, PLAYER_DEAD }
@onready var input : PlayerInput = $PlayerInput
@onready var camera : Camera3D = $SpringArm3D/Camera3D
-@onready var hud = $HUD
-@onready var iff = $ThirdPerson/IFF
+@onready var hud : CanvasLayer = $HUD
+@onready var iff : Node2D = $ThirdPerson/IFF
@onready var shape_cast : ShapeCast3D = $ShapeCast3D
-@onready var weapon = $SpringArm3D/Inventory/SpaceGun
+@onready var weapon : Node3D = $SpringArm3D/Inventory/SpaceGun
@onready var animation_player : AnimationPlayer = $AnimationPlayer
-@onready var health_component = $HealthComponent
+@onready var health_component : Area3D = $HealthComponent
@onready var flag_carry_component : FlagCarryComponent = $FlagCarryComponent
-@onready var spring_arm_height = $SpringArm3D.position.y
+@onready var spring_arm_height : float = $SpringArm3D.position.y
@onready var _original_weapon_transform : Transform3D = weapon.transform
-@onready var flag_carry_attachment = $SpringArm3D/FlagCarryAttachment
-@onready var _game_settings : GameSettings = get_node("/root/GlobalSettings")
+@onready var flag_carry_attachment : Node3D = $SpringArm3D/FlagCarryAttachment
+@onready var _game_settings : Settings = get_node("/root/GlobalSettings")
-signal died(player)
-signal energy_changed(energy)
+signal died(player : Player)
+signal energy_changed(energy : float)
var g : float = ProjectSettings.get_setting("physics/3d/default_gravity") # in m/s²
var gravity : Vector3 = g * ProjectSettings.get_setting("physics/3d/default_gravity_vector")
-var _jumping = false
+var _jumping : bool = false
-func _ready():
+func _ready() -> void:
energy_changed.connect(hud._on_energy_changed)
if _is_pawn():
health_component.health_changed.connect(hud._on_health_changed)
@@ -79,15 +79,15 @@ func _ready():
input.jumped.connect(_jump)
input.throwed_flag.connect(_throw_flag)
-func _is_pawn():
+func _is_pawn() -> bool:
return player_id == multiplayer.get_unique_id()
-func _fire_primary():
+func _fire_primary() -> void:
if _is_player_dead():
return
if not weapon.can_fire():
return
- var current_weapon_transform = weapon.transform
+ var current_weapon_transform : Transform3D = weapon.transform
weapon.transform = _original_weapon_transform
weapon.fire_primary()
weapon.transform = current_weapon_transform
@@ -95,18 +95,18 @@ func _fire_primary():
animation_player.stop()
animation_player.play("shoot")
-func _jump():
+func _jump() -> void:
if _is_player_dead():
return
_jumping = true
-func _throw_flag():
+func _throw_flag() -> void:
flag_carry_component.throw(linear_velocity)
func is_on_floor() -> bool:
if shape_cast.is_colliding():
for i in shape_cast.get_collision_count():
- var collider = shape_cast.get_collider(i)
+ var collider : Object = shape_cast.get_collider(i)
if collider is Terrain3D:
return true
return false
@@ -114,15 +114,15 @@ func is_on_floor() -> bool:
func _is_skiing() -> bool:
return input.skiing
-func _handle_aerial_control(direction):
+func _handle_aerial_control(direction : Vector3) -> void:
if not input.jetting and not is_on_floor():
apply_force(direction * aerial_control_force)
-func _handle_jetpack(delta, direction):
+func _handle_jetpack(delta : float, direction : Vector3) -> void:
if input.jetting:
if energy > 0:
- var up_vector = Vector3.UP * jetpack_vertical_force * jetpack_force_factor
- var side_vector = direction * jetpack_horizontal_force * jetpack_force_factor
+ var up_vector : Vector3 = Vector3.UP * jetpack_vertical_force * jetpack_force_factor
+ var side_vector : Vector3 = direction * jetpack_horizontal_force * jetpack_force_factor
apply_force(up_vector + side_vector)
energy -= energy_drain_rate * delta
else:
@@ -131,7 +131,7 @@ func _handle_jetpack(delta, direction):
energy = clamp(energy, 0, energy_max)
energy_changed.emit(energy)
-func _process(_delta):
+func _process(_delta : float) -> void:
if _is_player_dead():
iff.hide()
return
@@ -146,11 +146,11 @@ func _process(_delta):
animation_player.play("idle")
%SpringArm3D.global_transform.basis = Basis.from_euler(Vector3(input.camera_rotation.y, input.camera_rotation.x, 0.0))
-func _physics_process(delta):
+func _physics_process(delta : float) -> void:
# retrieve user's direction vector
- var _input_dir = input.direction
+ var _input_dir : Vector2 = input.direction
# compute direction in local space
- var _direction = (transform.basis * Vector3(_input_dir.x, 0, _input_dir.y)).normalized()
+ var _direction : Vector3 = (transform.basis * Vector3(_input_dir.x, 0, _input_dir.y)).normalized()
_update_third_person_animations()
if _is_player_dead():
@@ -171,9 +171,9 @@ func _physics_process(delta):
if is_on_floor():
if not _direction.is_zero_approx() and not _is_skiing():
# retrieve collision normal
- var normal = shape_cast.get_collision_normal(0)
+ var normal : Vector3 = shape_cast.get_collision_normal(0)
# calculate the angle between the ground normal and the up vector
- var slope_angle = rad_to_deg(acos(normal.dot(Vector3.UP)))
+ var slope_angle : float = rad_to_deg(acos(normal.dot(Vector3.UP)))
# check if the slope angle exceeds the maximum slope angle
if slope_angle <= max_floor_angle:
# adjust direction based on the floor normal to align with the slope
@@ -181,14 +181,14 @@ func _physics_process(delta):
linear_velocity = lerp(linear_velocity, _direction * ground_speed, .1)
-func _integrate_forces(_state):
+func _integrate_forces(_state : PhysicsDirectBodyState3D) -> void:
if is_on_floor() and _jumping:
- var v = sqrt(2 * g * jump_height)
+ var v : float = sqrt(2 * g * jump_height)
apply_central_impulse(Vector3(0, mass * v, 0))
_jumping = false
-func _update_third_person_animations():
+func _update_third_person_animations() -> void:
if _is_pawn():
return
@@ -202,21 +202,21 @@ func _update_third_person_animations():
tp_player.set_ground_state(Vanguard.GroundState.GROUND_STATE_GROUNDED)
else:
tp_player.set_ground_state(Vanguard.GroundState.GROUND_STATE_MID_AIR)
- var local_velocity = (tp_player.global_basis.inverse() * linear_velocity)
+ var local_velocity : Vector3 = (tp_player.global_basis.inverse() * linear_velocity)
const bias : float = 1.2 # Basically match feet speed with ground speed
tp_player.set_locomotion(Vector2(local_velocity.x, local_velocity.z), bias)
-func _is_player_dead():
+func _is_player_dead() -> bool:
return player_state == PlayerState.PLAYER_DEAD
-func die():
+func die() -> void:
player_state = PlayerState.PLAYER_DEAD
if _is_pawn():
animation_player.stop()
animation_player.play("death")
- var tween = create_tween()
+ var tween : Tween = create_tween()
tween.tween_interval(4)
- tween.tween_callback(func():
+ tween.tween_callback(func() -> void:
died.emit(self)
if _is_pawn():
animation_player.stop()
@@ -224,10 +224,10 @@ func die():
flag_carry_component.drop()
@rpc("call_local")
-func set_nickname(value):
+func set_nickname(value : String) -> void:
nickname = value
-func respawn(location):
+func respawn(location : Vector3) -> void:
linear_velocity = Vector3()
health_component.heal_full()
position = location
diff --git a/entities/player/player.tscn b/entities/player/player.tscn
index 5f5463d..1d30188 100644
--- a/entities/player/player.tscn
+++ b/entities/player/player.tscn
@@ -4,8 +4,8 @@
[ext_resource type="PackedScene" uid="uid://drbefw6akui2v" path="res://entities/player/assets/vanguard.tscn" id="2_beyex"]
[ext_resource type="Shape3D" uid="uid://cb8esdlnottdn" path="res://entities/player/collision_shape.tres" id="2_vjqny"]
[ext_resource type="PackedScene" uid="uid://bcv81ku26xo" path="res://interfaces/hud/hud.tscn" id="3_ccety"]
-[ext_resource type="PackedScene" uid="uid://c8co0qa2omjmh" path="res://weapons/space_gun/space_gun.tscn" id="4_lhn5w"]
-[ext_resource type="PackedScene" uid="uid://dn1tcakam5egs" path="res://weapons/space_gun/projectile.tscn" id="5_lvaut"]
+[ext_resource type="PackedScene" uid="uid://c8co0qa2omjmh" path="res://entities/weapons/space_gun/space_gun.tscn" id="4_6jh57"]
+[ext_resource type="PackedScene" uid="uid://dn1tcakam5egs" path="res://entities/weapons/space_gun/projectile.tscn" id="5_2xh36"]
[ext_resource type="PackedScene" uid="uid://bof3mg7wgxrmn" path="res://components/health_component.tscn" id="5_t6i6e"]
[ext_resource type="Script" path="res://entities/player/player_input.gd" id="6_ymcrr"]
[ext_resource type="PackedScene" uid="uid://dsysi2rd3bu76" path="res://interfaces/hud/iff.tscn" id="7_8hc80"]
@@ -244,9 +244,9 @@ near = 0.1
[node name="Inventory" type="Node3D" parent="SpringArm3D"]
-[node name="SpaceGun" parent="SpringArm3D/Inventory" instance=ExtResource("4_lhn5w")]
+[node name="SpaceGun" parent="SpringArm3D/Inventory" instance=ExtResource("4_6jh57")]
transform = Transform3D(-1, 0, 2.53518e-06, 0, 1, 0, -2.53518e-06, 0, -1, 0.244668, -0.229311, -0.30332)
-PROJECTILE = ExtResource("5_lvaut")
+PROJECTILE = ExtResource("5_2xh36")
[node name="SpineIKTarget" type="Node3D" parent="SpringArm3D"]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
@@ -265,9 +265,8 @@ sensor = NodePath("../Sensor")
[node name="ThirdPerson" type="Node3D" parent="."]
-[node name="PlayerMesh" parent="ThirdPerson" node_paths=PackedStringArray("spine_ik_target_attachment") instance=ExtResource("2_beyex")]
+[node name="PlayerMesh" parent="ThirdPerson" instance=ExtResource("2_beyex")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
-spine_ik_target_attachment = NodePath("../../SpringArm3D/SpineIKTarget")
[node name="IFFAttachment" type="Node3D" parent="ThirdPerson"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.27457, 0)
diff --git a/entities/player/player_input.gd b/entities/player/player_input.gd
index 6ac28b0..5880053 100644
--- a/entities/player/player_input.gd
+++ b/entities/player/player_input.gd
@@ -14,9 +14,9 @@
# along with this program. If not, see .
class_name PlayerInput extends MultiplayerSynchronizer
-@export var jetting = false
-@export var skiing = false
-@export var direction = Vector2.ZERO
+@export var jetting : bool = false
+@export var skiing : bool = false
+@export var direction : Vector2 = Vector2.ZERO
@export var camera_rotation : Vector2
@export var MOUSE_SENSITIVITY : float = .6
@export var inverted_y_axis : bool = false
@@ -25,13 +25,13 @@ signal jumped
signal fired_primary
signal throwed_flag
-func _ready():
- var has_authority = is_multiplayer_authority()
+func _ready() -> void:
+ var has_authority : bool = is_multiplayer_authority()
set_process(has_authority)
set_process_unhandled_input(has_authority)
func _unhandled_input(event: InputEvent) -> void:
- var mouse_mode = Input.get_mouse_mode()
+ var mouse_mode : Input.MouseMode = Input.get_mouse_mode()
# isolate mouse events
if event is InputEventMouseMotion:
@@ -49,7 +49,7 @@ func _update_camera(relative_motion : Vector2) -> void:
camera_rotation.x -= relative_motion.x * MOUSE_SENSITIVITY / 100
camera_rotation.x = wrapf(camera_rotation.x, deg_to_rad(0.0),deg_to_rad(360.0))
-func _process(delta):
+func _process(_delta : float) -> void:
direction = Input.get_vector("left", "right", "forward", "backward")
if Input.is_action_just_pressed("jump_and_jet"):
_jump.rpc()
@@ -61,13 +61,13 @@ func _process(delta):
skiing = Input.is_action_pressed("ski")
@rpc("call_local")
-func _jump():
+func _jump() -> void:
jumped.emit()
@rpc("call_local")
-func _fire_primary():
+func _fire_primary() -> void:
fired_primary.emit()
@rpc("call_local")
-func _throw_flag():
+func _throw_flag() -> void:
throwed_flag.emit()
diff --git a/entities/target_dummy/target_dummy.gd b/entities/target_dummy/target_dummy.gd
index 60b22ee..84850db 100644
--- a/entities/target_dummy/target_dummy.gd
+++ b/entities/target_dummy/target_dummy.gd
@@ -25,7 +25,7 @@ func _ready() -> void:
health_component.health_zeroed.connect(spawn)
start_pos = global_position
-func spawn():
+func spawn() -> void:
hide()
collision_shape_3d.disabled = true
await get_tree().create_timer(respawn_time).timeout
diff --git a/weapons/space_gun/assets/SpaceGun.glb b/entities/weapons/space_gun/assets/SpaceGun.glb
similarity index 100%
rename from weapons/space_gun/assets/SpaceGun.glb
rename to entities/weapons/space_gun/assets/SpaceGun.glb
diff --git a/weapons/space_gun/assets/albedo.png b/entities/weapons/space_gun/assets/albedo.png
similarity index 100%
rename from weapons/space_gun/assets/albedo.png
rename to entities/weapons/space_gun/assets/albedo.png
diff --git a/weapons/space_gun/assets/material.tres b/entities/weapons/space_gun/assets/material.tres
similarity index 100%
rename from weapons/space_gun/assets/material.tres
rename to entities/weapons/space_gun/assets/material.tres
diff --git a/weapons/space_gun/assets/textures/albedo0.png b/entities/weapons/space_gun/assets/textures/albedo0.png
similarity index 100%
rename from weapons/space_gun/assets/textures/albedo0.png
rename to entities/weapons/space_gun/assets/textures/albedo0.png
diff --git a/weapons/space_gun/projectile.gd b/entities/weapons/space_gun/projectile.gd
similarity index 73%
rename from weapons/space_gun/projectile.gd
rename to entities/weapons/space_gun/projectile.gd
index d2d47e8..8705a1d 100644
--- a/weapons/space_gun/projectile.gd
+++ b/entities/weapons/space_gun/projectile.gd
@@ -19,32 +19,32 @@ class_name Projectile extends Node3D
@export var speed : float = 78.4 # m/s
@export var lifespan : float = 5.0 # in seconds
-@onready var shape_cast = $ShapeCast3D
-@onready var game = get_tree().get_current_scene()
+@onready var shape_cast : ShapeCast3D = $ShapeCast3D
+@onready var game : Node3D = get_tree().get_current_scene()
var velocity : Vector3 = Vector3.ZERO
-func _ready():
- var lifespan_timer = Timer.new()
+func _ready() -> void:
+ var lifespan_timer : Timer = Timer.new()
lifespan_timer.wait_time = lifespan
lifespan_timer.one_shot = true
lifespan_timer.autostart = true
lifespan_timer.timeout.connect(self_destruct)
add_child(lifespan_timer)
-func self_destruct():
+func self_destruct() -> void:
explode(position)
-func explode(spawn_location):
- var spawned_explosion = EXPLOSION.instantiate()
+func explode(spawn_location : Vector3) -> void:
+ var spawned_explosion : Node = EXPLOSION.instantiate()
spawned_explosion.position = spawn_location
game.add_child(spawned_explosion)
queue_free()
-func _physics_process(delta):
- var previous_position = global_position
+func _physics_process(delta : float) -> void:
+ var previous_position : Vector3 = global_position
global_position += velocity * delta
shape_cast.target_position = to_local(previous_position)
if shape_cast.is_colliding():
- var contact_point = shape_cast.collision_result[0].point
+ var contact_point : Vector3 = shape_cast.collision_result[0].point
explode(contact_point)
diff --git a/weapons/space_gun/projectile.tscn b/entities/weapons/space_gun/projectile.tscn
similarity index 84%
rename from weapons/space_gun/projectile.tscn
rename to entities/weapons/space_gun/projectile.tscn
index 4afdd57..f760ff9 100644
--- a/weapons/space_gun/projectile.tscn
+++ b/entities/weapons/space_gun/projectile.tscn
@@ -1,8 +1,8 @@
[gd_scene load_steps=7 format=3 uid="uid://dn1tcakam5egs"]
-[ext_resource type="Script" path="res://weapons/space_gun/projectile.gd" id="1_4j1dp"]
-[ext_resource type="PackedScene" uid="uid://8atq41j7wd55" path="res://weapons/space_gun/projectile_explosion.tscn" id="2_llml6"]
-[ext_resource type="Script" path="res://weapons/space_gun/projectile_trail.gd" id="3_ygqbh"]
+[ext_resource type="Script" path="res://entities/weapons/space_gun/projectile.gd" id="1_4j1dp"]
+[ext_resource type="PackedScene" uid="uid://8atq41j7wd55" path="res://entities/weapons/space_gun/projectile_explosion.tscn" id="2_llml6"]
+[ext_resource type="Script" path="res://entities/weapons/space_gun/projectile_trail.gd" id="3_ygqbh"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4a265"]
transparency = 1
diff --git a/weapons/space_gun/projectile_explosion.gd b/entities/weapons/space_gun/projectile_explosion.gd
similarity index 87%
rename from weapons/space_gun/projectile_explosion.gd
rename to entities/weapons/space_gun/projectile_explosion.gd
index 05aa422..d3d7121 100644
--- a/weapons/space_gun/projectile_explosion.gd
+++ b/entities/weapons/space_gun/projectile_explosion.gd
@@ -14,10 +14,10 @@
# along with this program. If not, see .
extends Node3D
-@onready var fire = $Fire
+@onready var fire : GPUParticles3D = $Fire
@onready var explosive_damage : ExplosiveDamageComponent = $ExplosiveDamageComponent
var explosion_effect_pending : bool = false
-func _ready():
+func _ready() -> void:
fire.emitting = true
- fire.finished.connect(func(): queue_free())
+ fire.finished.connect(func() -> void: queue_free())
diff --git a/weapons/space_gun/projectile_explosion.tscn b/entities/weapons/space_gun/projectile_explosion.tscn
similarity index 93%
rename from weapons/space_gun/projectile_explosion.tscn
rename to entities/weapons/space_gun/projectile_explosion.tscn
index 8f60cfa..d1e26f0 100644
--- a/weapons/space_gun/projectile_explosion.tscn
+++ b/entities/weapons/space_gun/projectile_explosion.tscn
@@ -1,6 +1,6 @@
[gd_scene load_steps=9 format=3 uid="uid://8atq41j7wd55"]
-[ext_resource type="Script" path="res://weapons/space_gun/projectile_explosion.gd" id="1_fp5td"]
+[ext_resource type="Script" path="res://entities/weapons/space_gun/projectile_explosion.gd" id="1_fp5td"]
[ext_resource type="PackedScene" uid="uid://ds1hekx1dq1bg" path="res://components/explosive_damage_component.tscn" id="2_d4sf4"]
[sub_resource type="Curve" id="Curve_rg204"]
diff --git a/weapons/space_gun/projectile_trail.gd b/entities/weapons/space_gun/projectile_trail.gd
similarity index 80%
rename from weapons/space_gun/projectile_trail.gd
rename to entities/weapons/space_gun/projectile_trail.gd
index ac8606a..a5b36bf 100644
--- a/weapons/space_gun/projectile_trail.gd
+++ b/entities/weapons/space_gun/projectile_trail.gd
@@ -14,9 +14,9 @@
# along with this program. If not, see .
class_name Trail3D extends MeshInstance3D
-var _points = [] # 3D points of trail
-var _widths = [] # Calculated widths of trail
-var _lifespans = [] # Trail point lifespans
+var _points : Array = [] # 3D points of trail
+var _widths : Array = [] # Calculated widths of trail
+var _lifespans : Array = [] # Trail point lifespans
@export var _trail_enabled : bool = true # Is trail shown?
@@ -33,7 +33,7 @@ var _lifespans = [] # Trail point lifespans
var _old_pos : Vector3 # Previous pos
-func _append_point():
+func _append_point() -> void:
_points.append(get_global_transform().origin)
_widths.append([
get_global_transform().basis.x * _from_width,
@@ -41,23 +41,23 @@ func _append_point():
])
_lifespans.append(0.0)
-func _remove_point(i):
+func _remove_point(i : int) -> void:
_points.remove_at(i)
_widths.remove_at(i)
_lifespans.remove_at(i)
-func _ready():
+func _ready() -> void:
_old_pos = get_global_transform().origin
mesh = ImmediateMesh.new()
-func _process(delta):
+func _process(delta : float) -> void:
if(_old_pos - get_global_transform().origin).length() > _motion_delta and _trail_enabled:
_append_point() # Create new point
_old_pos = get_global_transform().origin # Update previous position to current position coordinates
# Update the lifespan
- var p = 0
- var max_points = _points.size()
+ var p : int = 0
+ var max_points : int = _points.size()
while p < max_points:
_lifespans[p] += delta
if _lifespans[p] > _lifespan:
@@ -78,14 +78,14 @@ func _process(delta):
mesh.surface_begin(Mesh.PRIMITIVE_TRIANGLE_STRIP)
for i in range(_points.size()):
- var t = float(i) / (_points.size() - 1.0)
- var curr_color = _start_color.lerp(_end_color, 1 - t)
+ var t : float = float(i) / (_points.size() - 1.0)
+ var curr_color : Color = _start_color.lerp(_end_color, 1 - t)
mesh.surface_set_color(curr_color)
- var curr_width = _widths[i][0] - pow(1 - t, _scale_acceleration) * _widths[i][1]
+ var curr_width : Vector3 = _widths[i][0] - pow(1 - t, _scale_acceleration) * _widths[i][1]
- var t0 = i / _points.size()
- var t1 = t
+ var t0 : float = i / _points.size()
+ var t1 : float = t
mesh.surface_set_uv(Vector2(t0, 0))
mesh.surface_add_vertex(to_local(_points[i] + curr_width))
diff --git a/weapons/space_gun/space_gun.gd b/entities/weapons/space_gun/space_gun.gd
similarity index 82%
rename from weapons/space_gun/space_gun.gd
rename to entities/weapons/space_gun/space_gun.gd
index 03e7766..e0ea769 100644
--- a/weapons/space_gun/space_gun.gd
+++ b/entities/weapons/space_gun/space_gun.gd
@@ -17,8 +17,8 @@ class_name SpaceGun
@export var PROJECTILE : PackedScene
-@onready var nozzle = $Nozzle
-@onready var inventory = get_parent()
+@onready var nozzle : Node3D = $Nozzle
+@onready var inventory : Node3D = get_parent()
enum WeaponState { WEAPON_READY, WEAPON_RELOADING }
@@ -27,20 +27,20 @@ var weapon_state : WeaponState = WeaponState.WEAPON_READY
const inheritance : float = .5 # ratio
const reload_time : float = 1. # seconds
-func can_fire():
+func can_fire() -> bool:
return weapon_state == WeaponState.WEAPON_READY
-func fire_primary():
+func fire_primary() -> void:
if not can_fire():
return
- var projectile = PROJECTILE.instantiate()
+ var projectile : Node = PROJECTILE.instantiate()
projectile.transform = nozzle.global_transform
projectile.velocity = nozzle.global_basis.z.normalized() * projectile.speed
- var inheritance_factor = clamp(inheritance, 0., 1.)
+ var inheritance_factor : float = clamp(inheritance, 0., 1.)
projectile.velocity += (inventory.owner.linear_velocity * inheritance_factor)
inventory.owner.add_sibling(projectile)
- var collider = projectile.shape_cast
+ var collider : ShapeCast3D = projectile.shape_cast
collider.add_exception(inventory.owner)
weapon_state = WeaponState.WEAPON_RELOADING
await get_tree().create_timer(reload_time).timeout
diff --git a/weapons/space_gun/space_gun.tscn b/entities/weapons/space_gun/space_gun.tscn
similarity index 99%
rename from weapons/space_gun/space_gun.tscn
rename to entities/weapons/space_gun/space_gun.tscn
index 1a25121..2bd8578 100644
--- a/weapons/space_gun/space_gun.tscn
+++ b/entities/weapons/space_gun/space_gun.tscn
@@ -1,7 +1,7 @@
[gd_scene load_steps=5 format=3 uid="uid://c8co0qa2omjmh"]
-[ext_resource type="Script" path="res://weapons/space_gun/space_gun.gd" id="1_6sm4s"]
-[ext_resource type="Material" uid="uid://de6t4olk7hrs1" path="res://weapons/space_gun/assets/material.tres" id="1_uaehs"]
+[ext_resource type="Script" path="res://entities/weapons/space_gun/space_gun.gd" id="1_6sm4s"]
+[ext_resource type="Material" uid="uid://de6t4olk7hrs1" path="res://entities/weapons/space_gun/assets/material.tres" id="1_uaehs"]
[sub_resource type="ArrayMesh" id="ArrayMesh_2hpnh"]
_surfaces = [{
diff --git a/environments/default.tres b/environments/default.tres
index eb27dd6..b8548dd 100644
--- a/environments/default.tres
+++ b/environments/default.tres
@@ -1,6 +1,6 @@
[gd_resource type="Environment" load_steps=4 format=3 uid="uid://d2ahijqqspw5f"]
-[ext_resource type="Texture2D" uid="uid://btdbu0qbe1646" path="res://environments/skyboxes/kloppenheim_06_puresky_2k.exr" id="1_k44rf"]
+[ext_resource type="Texture2D" uid="uid://odwhjbebqfcn" path="res://environments/skyboxes/kloppenheim_06_puresky_2k.exr" id="1_k44rf"]
[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_7tawh"]
panorama = ExtResource("1_k44rf")
diff --git a/interfaces/hud/hud.tscn b/interfaces/hud/hud.tscn
index 384c94c..14be9b5 100644
--- a/interfaces/hud/hud.tscn
+++ b/interfaces/hud/hud.tscn
@@ -6,23 +6,23 @@
script/source = "extends CanvasLayer
class_name HUD
-@onready var _health_bar = $HealthBar
-@onready var _energy_bar = $EnergyBar
+@onready var _health_bar : ProgressBar = $HealthBar
+@onready var _energy_bar : ProgressBar = $EnergyBar
-func _ready():
- _update_health_bar(100)
- _update_energy_bar(100)
+func _ready() -> void:
+ _update_health_bar(100.)
+ _update_energy_bar(100.)
-func _update_energy_bar(energy) -> void:
+func _update_energy_bar(energy : float) -> void:
_energy_bar.value = energy
-func _on_energy_changed(new_energy) -> void:
+func _on_energy_changed(new_energy : float) -> void:
_update_energy_bar(new_energy)
-func _update_health_bar(health) -> void:
+func _update_health_bar(health : float) -> void:
_health_bar.value = health
-func _on_health_changed(new_health) -> void:
+func _on_health_changed(new_health : float) -> void:
_update_health_bar(new_health)
"
@@ -34,14 +34,14 @@ bg_color = Color(0, 0.454902, 0.992157, 1)
[sub_resource type="GDScript" id="GDScript_w8l21"]
script/source = "extends Label
-@onready var player = get_parent().owner
+@onready var player : Player = get_parent().owner
# Called when the node enters the scene tree for the first time.
-func _ready():
+func _ready() -> void:
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
-func _process(_delta):
+func _process(_delta : float) -> void:
text = \"\"
text += \"fps: %s\\n\" % str(Engine.get_frames_per_second())
text += \"position: %d, %d, %d\\n\" % [player.position.x, player.position.y, player.position.z]
diff --git a/interfaces/hud/iff.gd b/interfaces/hud/iff.gd
index 41d0941..03d8dab 100644
--- a/interfaces/hud/iff.gd
+++ b/interfaces/hud/iff.gd
@@ -17,11 +17,11 @@ extends Node2D
@export var attach_point : Node3D
@export var player : Player
-@onready var _player_name_label = $Offset/VBoxContainer/PlayerNameLabel
-@onready var _health_bar = $Offset/VBoxContainer/HealthBar
-@onready var _v_box_container = $Offset/VBoxContainer
+@onready var _player_name_label : Label = $Offset/VBoxContainer/PlayerNameLabel
+@onready var _health_bar : ProgressBar = $Offset/VBoxContainer/HealthBar
+@onready var _v_box_container : VBoxContainer = $Offset/VBoxContainer
-func _process(_delta):
+func _process(_delta : float) -> void:
var camera : Camera3D = get_viewport().get_camera_3d()
if camera.is_position_behind(attach_point.global_position):
_v_box_container.hide()
@@ -34,8 +34,8 @@ func _process(_delta):
position.x = clampf(position.x, 0, viewport_size.x - _v_box_container.size.x)
position.y = clampf(position.y, _v_box_container.size.y, viewport_size.y)
-func _update_health_bar(health) -> void:
+func _update_health_bar(health : float) -> void:
_health_bar.value = health
-func _on_health_changed(new_health) -> void:
+func _on_health_changed(new_health : float) -> void:
_update_health_bar(new_health)
diff --git a/interfaces/menus/boot/boot.tscn b/interfaces/menus/boot/boot.tscn
index fc8c34e..cf90759 100644
--- a/interfaces/menus/boot/boot.tscn
+++ b/interfaces/menus/boot/boot.tscn
@@ -9,22 +9,22 @@ script/source = "class_name BootMenu extends CanvasLayer
signal start_demo
-func _ready():
+func _ready() -> void:
$Settings.menu_pressed.connect(_on_menu_pressed)
-func _on_demo_pressed():
+func _on_demo_pressed() -> void:
start_demo.emit()
-func _on_multiplayer_pressed():
+func _on_multiplayer_pressed() -> void:
_show_menu($Multiplayer)
-func _on_settings_pressed():
+func _on_settings_pressed() -> void:
_show_menu($Settings)
-func _on_quit_pressed():
+func _on_quit_pressed() -> void:
get_tree().quit()
-func _on_menu_pressed():
+func _on_menu_pressed() -> void:
_show_menu($Main)
func _show_menu(menu : PanelContainer) -> void:
@@ -49,20 +49,20 @@ var _join_address : RegEx = RegEx.new()
var _registered_ports : RegEx = RegEx.new()
var _config_file : ConfigFile = ConfigFile.new()
-signal start_server(port)
-signal join_server(host, port)
+signal start_server(port : int)
+signal join_server(host : String, port : int)
@onready var modal : Control = $Modal
@onready var menu : CanvasLayer = get_parent()
-func _ready():
+func _ready() -> void:
# see https://datatracker.ietf.org/doc/html/rfc1700
_registered_ports.compile(r'^(?:102[4-9]|10[3-9]\\d|1[1-9]\\d{2}|[2-9]\\d{3}|[1-5]\\d{4}|6[0-4]\\d{3}|65[0-4]\\d{2}|655[0-2]\\d|6553[0-5])$')
_join_address.compile(r'^(?[a-zA-Z0-9.-]+)(:(?:102[4-9]|10[3-9]\\d|1[1-9]\\d{2}|[2-9]\\d{3}|[1-5]\\d{4}|6[0-4]\\d{3}|65[0-4]\\d{2}|655[0-2]\\d|6553[0-5]))?$')
_load_config()
hide() # start hidden
-func _load_config():
+func _load_config() -> void:
var error : Error = _config_file.load(CONFIG_FILE_PATH)
if error != OK:
return
@@ -70,22 +70,22 @@ func _load_config():
var profile_name : String = _config_file.get_value(\"profile\", \"name\", \"Newblood\")
%ProfileName.text = profile_name
-func _on_save_pressed():
+func _on_save_pressed() -> void:
_config_file.set_value(\"profile\", \"name\", %ProfileName.text)
_config_file.save(CONFIG_FILE_PATH)
-func _on_menu_pressed():
+func _on_menu_pressed() -> void:
hide()
owner.get_node(\"Main\").show()
-func _on_quit_pressed():
+func _on_quit_pressed() -> void:
get_tree().quit()
-func _on_host_pressed():
- var port = DEFAULT_PORT
+func _on_host_pressed() -> void:
+ var port : int = DEFAULT_PORT
# check for registered ports number matches
if %ServerPort.text:
- var result = _registered_ports.search(%ServerPort.text)
+ var result : RegExMatch = _registered_ports.search(%ServerPort.text)
if result: # port is valid
port = int(result.get_string())
else: # port is not valid
@@ -94,23 +94,23 @@ func _on_host_pressed():
start_server.emit(port, %ProfileName.text)
-func _on_join_pressed():
- var addr = [DEFAULT_HOST, DEFAULT_PORT]
+func _on_join_pressed() -> void:
+ var addr : Array = [DEFAULT_HOST, DEFAULT_PORT]
# validate join address input
- var result = _join_address.search(%JoinAddress.text)
+ var result : RegExMatch = _join_address.search(%JoinAddress.text)
if result: # address is valid
addr[0] = result.get_string(\"host\")
- var rport = result.get_string(\"port\")
+ var rport : String = result.get_string(\"port\")
if rport: addr[1] = int(rport)
$Modal.show()
join_server.emit(addr[0], addr[1], %ProfileName.text)
-func _on_connected_to_server():
+func _on_connected_to_server() -> void:
$Modal.hide()
menu.hide()
-func _on_connection_failed():
+func _on_connection_failed() -> void:
$Modal.hide()
"
diff --git a/interfaces/menus/boot/settings.tscn b/interfaces/menus/boot/settings.tscn
index d3e4b55..36bb49b 100644
--- a/interfaces/menus/boot/settings.tscn
+++ b/interfaces/menus/boot/settings.tscn
@@ -5,30 +5,29 @@ bg_color = Color(0.5, 0.5, 0.5, 0.25)
[sub_resource type="GDScript" id="GDScript_gbnwv"]
resource_name = "Settings"
-script/source = "class_name Settings extends PanelContainer
+script/source = "extends PanelContainer
const WINDOW_MODE_OPTIONS = [DisplayServer.WINDOW_MODE_WINDOWED, DisplayServer.WINDOW_MODE_FULLSCREEN]
-@onready var _game_settings : GameSettings = get_node(\"/root/GlobalSettings\")
+@onready var _game_settings : Settings = get_node(\"/root/GlobalSettings\")
signal menu_pressed
-func _ready():
+func _ready() -> void:
%FOVSpinBox.value = _game_settings.fov
%SensitivitySpinBox.value = _game_settings.mouse_sensitivity
var window_mode : int = 1 if _game_settings.fullscreen else 0
%InvertedYCheckbox.button_pressed = _game_settings.inverted_y_axis
%WindowModeOptionButton.select(window_mode)
-func _on_save_pressed():
+func _on_save_pressed() -> void:
_game_settings.fov = %FOVSpinBox.value
_game_settings.mouse_sensitivity = %SensitivitySpinBox.value
_game_settings.inverted_y_axis = %InvertedYCheckbox.button_pressed
_game_settings.fullscreen = %WindowModeOptionButton.selected == 1
_game_settings.save_to_file()
-
-func _on_menu_pressed():
+func _on_menu_pressed() -> void:
menu_pressed.emit()
"
diff --git a/main.tscn b/main.tscn
index a4d2e35..198b578 100644
--- a/main.tscn
+++ b/main.tscn
@@ -13,33 +13,33 @@ script/source = "class_name Game extends Node3D
var mode : Node
-func _ready():
+func _ready() -> void:
$BootMenu.start_demo.connect(_start_demo)
$BootMenu/Multiplayer.start_server.connect(_start_server)
$BootMenu/Multiplayer.join_server.connect(_join_server)
-func _start_demo():
+func _start_demo() -> void:
_set_game_mode(SINGLEPLAYER.instantiate())
$BootMenu.hide()
-func _start_server(port, nickname):
+func _start_server(port : int, nickname : String) -> void:
_set_game_mode(MULTIPLAYER.instantiate())
mode.start_server(port, nickname)
$BootMenu.hide()
-func _join_server(host, port, nickname):
+func _join_server(host : String, port : int, nickname : String) -> void:
_set_game_mode(MULTIPLAYER.instantiate())
mode.connected_to_server.connect($BootMenu/Multiplayer._on_connected_to_server)
mode.connection_failed.connect($BootMenu/Multiplayer._on_connection_failed)
mode.join_server(host, port, nickname)
-func _input(event):
+func _input(event : InputEvent) -> void:
if event.is_action_pressed(\"exit\"):
_set_game_mode(null)
multiplayer.multiplayer_peer.close()
$BootMenu.show()
-func _set_game_mode(new_mode : Node):
+func _set_game_mode(new_mode : Node) -> void:
if mode != null:
remove_child(mode)
mode.queue_free()
@@ -50,7 +50,7 @@ func _set_game_mode(new_mode : Node):
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
add_child(mode)
-func _unhandled_input(event):
+func _unhandled_input(_event : InputEvent) -> void:
# switch mouse mode
if OS.is_debug_build() and Input.is_action_just_pressed(\"toggle_mouse_capture\"):
if Input.mouse_mode == Input.MOUSE_MODE_VISIBLE:
diff --git a/maps/genesis/genesis.tscn b/maps/genesis/genesis.tscn
index 761cade..1914b75 100644
--- a/maps/genesis/genesis.tscn
+++ b/maps/genesis/genesis.tscn
@@ -5,18 +5,17 @@
[ext_resource type="Terrain3DMaterial" uid="uid://bd4lr5sxu8xu" path="res://maps/genesis/resources/material.res" id="2_o2y3d"]
[ext_resource type="Terrain3DTextureList" uid="uid://dnqa8kxgm3xuw" path="res://maps/genesis/resources/textures.res" id="3_1cww7"]
-[node name="Map" type="Node3D"]
-
-[node name="Sunlight" type="DirectionalLight3D" parent="."]
-transform = Transform3D(-0.866024, -0.433016, 0.250001, 0, 0.499998, 0.866026, -0.500003, 0.749999, -0.43301, 0, 0, 0)
-shadow_enabled = true
-
-[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
-environment = ExtResource("1_3nr12")
-
-[node name="Terrain3D" type="Terrain3D" parent="."]
+[node name="Terrain3D" type="Terrain3D"]
storage = ExtResource("1_a88qe")
material = ExtResource("2_o2y3d")
texture_list = ExtResource("3_1cww7")
collision_layer = 2147483648
collision_mask = 2147483648
+mesh_size = 24
+
+[node name="Sunlight" type="DirectionalLight3D" parent="."]
+transform = Transform3D(-0.866024, -0.433016, 0.250001, 0, 0.499998, 0.866027, -0.500003, 0.75, -0.43301, 0, 100, 0)
+shadow_enabled = true
+
+[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
+environment = ExtResource("1_3nr12")
diff --git a/modes/demo.tscn b/modes/demo.tscn
index 4c08007..cff78a6 100644
--- a/modes/demo.tscn
+++ b/modes/demo.tscn
@@ -9,14 +9,14 @@
script/source = "extends Node
@onready var player_node : Player = $Player
-@onready var target_dummy = $TargetDummy
+@onready var target_dummy : RigidBody3D = $TargetDummy
-@onready var player_respawn_location = player_node.position
+@onready var player_respawn_location : Vector3 = player_node.position
-func _ready():
+func _ready() -> void:
player_node.died.connect(respawn_player)
-func respawn_player(player):
+func respawn_player(player : Player) -> void:
player.respawn(player_respawn_location)
"
diff --git a/modes/multiplayer.tscn b/modes/multiplayer.tscn
index e17e2c7..06df1c4 100644
--- a/modes/multiplayer.tscn
+++ b/modes/multiplayer.tscn
@@ -13,18 +13,18 @@ script/source = "class_name Multiplayer extends Node
@export var FLAG : PackedScene
@export var MAX_CLIENTS : int = 24
-@onready var map = $Map
-@onready var players = $Players
-@onready var objectives = $Objectives
+@onready var map : Node = $Map
+@onready var players : Node = $Players
+@onready var objectives : Node = $Objectives
signal connected_to_server
signal connection_failed
-func load_map(scene : PackedScene):
+func load_map(scene : PackedScene) -> void:
map.add_child(scene.instantiate())
-func start_server(port, nickname):
- var peer = ENetMultiplayerPeer.new()
+func start_server(port : int, nickname : String) -> void:
+ var peer : ENetMultiplayerPeer = ENetMultiplayerPeer.new()
peer.create_server(port, MAX_CLIENTS)
multiplayer.multiplayer_peer = peer
@@ -38,24 +38,24 @@ func start_server(port, nickname):
add_flag()
-func join_server(host, port, nickname):
- var peer = ENetMultiplayerPeer.new()
+func join_server(host : String, port : int, nickname : String) -> void:
+ var peer : ENetMultiplayerPeer= ENetMultiplayerPeer.new()
peer.create_client(host, port)
multiplayer.connected_to_server.connect(_on_connected_to_server.bind(nickname))
multiplayer.connection_failed.connect(_on_connection_failed)
multiplayer.multiplayer_peer = peer
-func _on_connected_to_server(nickname):
+func _on_connected_to_server(nickname : String) -> void:
connected_to_server.emit()
_join_match.rpc(nickname)
-func _on_connection_failed():
+func _on_connection_failed() -> void:
connection_failed.emit()
-func respawn_player(player):
+func respawn_player(player : Player) -> void:
player.respawn(Vector3(0.0, 150.0, 0.0))
-func add_player(peer_id : int, nickname : String):
+func add_player(peer_id : int, nickname : String) -> void:
var player : Player = PLAYER.instantiate()
player.name = str(peer_id)
player.player_id = peer_id
@@ -65,8 +65,8 @@ func add_player(peer_id : int, nickname : String):
player.died.connect(respawn_player)
print(\"Peer `%s` connected\" % player.name)
-func remove_player(peer_id : int):
- var node_name = str(peer_id)
+func remove_player(peer_id : int) -> void:
+ var node_name : String = str(peer_id)
if players.has_node(node_name):
var player : Player = players.get_node(node_name)
player.die()
@@ -74,17 +74,17 @@ func remove_player(peer_id : int):
print(\"Peer `%s` disconnected\" % node_name)
@rpc(\"any_peer\")
-func _join_match(nickname):
+func _join_match(nickname : String) -> void:
if multiplayer.is_server():
add_player(multiplayer.get_remote_sender_id(), nickname)
-func add_flag():
+func add_flag() -> void:
var flag : Flag = FLAG.instantiate()
flag.position = Vector3(5.0, 100.0, 0.0)
objectives.add_child(flag)
-func _exit_tree():
+func _exit_tree() -> void:
if multiplayer.is_server():
multiplayer.peer_connected.disconnect(add_player)
multiplayer.peer_disconnected.disconnect(remove_player)
diff --git a/project.godot b/project.godot
index 96a4943..6fcb923 100644
--- a/project.godot
+++ b/project.godot
@@ -17,7 +17,29 @@ config/icon="res://icon.svg"
[autoload]
-GlobalSettings="*res://game_settings.gd"
+GlobalSettings="*res://systems/settings.gd"
+
+[debug]
+
+gdscript/warnings/unassigned_variable=2
+gdscript/warnings/unassigned_variable_op_assign=2
+gdscript/warnings/unused_variable=2
+gdscript/warnings/unused_local_constant=2
+gdscript/warnings/unused_private_class_variable=2
+gdscript/warnings/unused_parameter=2
+gdscript/warnings/unused_signal=2
+gdscript/warnings/shadowed_variable=2
+gdscript/warnings/shadowed_variable_base_class=2
+gdscript/warnings/shadowed_global_identifier=2
+gdscript/warnings/unreachable_code=2
+gdscript/warnings/unreachable_pattern=2
+gdscript/warnings/standalone_expression=2
+gdscript/warnings/standalone_ternary=2
+gdscript/warnings/incompatible_ternary=2
+gdscript/warnings/property_used_as_function=2
+gdscript/warnings/constant_used_as_function=2
+gdscript/warnings/function_used_as_property=2
+gdscript/warnings/untyped_declaration=2
[editor]
diff --git a/shaders/bg.gdshader b/shaders/bg.gdshader
deleted file mode 100644
index 0abdba8..0000000
--- a/shaders/bg.gdshader
+++ /dev/null
@@ -1,8 +0,0 @@
-shader_type canvas_item;
-
-uniform sampler2D background : source_color;
-
-void fragment() {
- COLOR = texture(background, UV);
-}
-
diff --git a/game_settings.gd b/systems/settings.gd
similarity index 90%
rename from game_settings.gd
rename to systems/settings.gd
index fd57b9b..c7c9db6 100644
--- a/game_settings.gd
+++ b/systems/settings.gd
@@ -1,4 +1,4 @@
-class_name GameSettings extends Node
+class_name Settings extends Node
var _config_file : ConfigFile = ConfigFile.new()
@@ -9,7 +9,7 @@ var fullscreen : bool
const SETTINGS_FILE_PATH : String = "user://settings.cfg"
-func _ready():
+func _ready() -> void:
var error : Error = _config_file.load(SETTINGS_FILE_PATH)
if error != OK:
print("Settings not found, using defaults")
@@ -21,7 +21,7 @@ func _ready():
fullscreen = _config_file.get_value("graphics", "fullscreen", false)
_update_screen()
-func save_to_file():
+func save_to_file() -> void:
_config_file.set_value("gameplay", "fov", fov)
_config_file.set_value("gameplay", "mouse_sensitivity", mouse_sensitivity)
_config_file.set_value("gameplay", "inverted_y_axis", inverted_y_axis)
@@ -29,7 +29,7 @@ func save_to_file():
_update_screen()
_config_file.save(SETTINGS_FILE_PATH)
-func _update_screen():
+func _update_screen() -> void:
if fullscreen:
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
else:
diff --git a/weapons/space_gun/assets/SpaceGun.glb.import b/weapons/space_gun/assets/SpaceGun.glb.import
deleted file mode 100644
index e677290..0000000
--- a/weapons/space_gun/assets/SpaceGun.glb.import
+++ /dev/null
@@ -1,45 +0,0 @@
-[remap]
-
-importer="scene"
-importer_version=1
-type="PackedScene"
-uid="uid://clq4uym4arpv3"
-path="res://.godot/imported/SpaceGun.glb-ee1e940c9dd77150eaf36c6537feefef.scn"
-
-[deps]
-
-source_file="res://weapons/space_gun/assets/SpaceGun.glb"
-dest_files=["res://.godot/imported/SpaceGun.glb-ee1e940c9dd77150eaf36c6537feefef.scn"]
-
-[params]
-
-nodes/root_type=""
-nodes/root_name=""
-nodes/apply_root_scale=true
-nodes/root_scale=1.0
-meshes/ensure_tangents=true
-meshes/generate_lods=true
-meshes/create_shadow_meshes=true
-meshes/light_baking=1
-meshes/lightmap_texel_size=0.2
-meshes/force_disable_compression=false
-skins/use_named_skins=true
-animation/import=true
-animation/fps=30
-animation/trimming=false
-animation/remove_immutable_tracks=true
-import_script/path=""
-_subresources={
-"materials": {
-"_defaultMat": {
-"use_external/enabled": true,
-"use_external/path": ""
-},
-"dark": {
-"use_external/enabled": true,
-"use_external/path": ""
-}
-}
-}
-gltf/naming_version=1
-gltf/embedded_image_handling=2
diff --git a/weapons/space_gun/assets/albedo.png.import b/weapons/space_gun/assets/albedo.png.import
deleted file mode 100644
index 786b04a..0000000
--- a/weapons/space_gun/assets/albedo.png.import
+++ /dev/null
@@ -1,35 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://cvtqt0k2ewd07"
-path.s3tc="res://.godot/imported/albedo.png-7f543d432ab75668956abd5bcc51a13b.s3tc.ctex"
-metadata={
-"imported_formats": ["s3tc_bptc"],
-"vram_texture": true
-}
-
-[deps]
-
-source_file="res://weapons/space_gun/assets/albedo.png"
-dest_files=["res://.godot/imported/albedo.png-7f543d432ab75668956abd5bcc51a13b.s3tc.ctex"]
-
-[params]
-
-compress/mode=2
-compress/high_quality=false
-compress/lossy_quality=0.7
-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/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
diff --git a/weapons/space_gun/assets/textures/albedo0.png.import b/weapons/space_gun/assets/textures/albedo0.png.import
deleted file mode 100644
index 40f0fc4..0000000
--- a/weapons/space_gun/assets/textures/albedo0.png.import
+++ /dev/null
@@ -1,34 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://b30y3pq4u5r0h"
-path="res://.godot/imported/albedo0.png-8dedb9e51f95ee8e69f9a00bccf9fb16.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://weapons/space_gun/assets/textures/albedo0.png"
-dest_files=["res://.godot/imported/albedo0.png-8dedb9e51f95ee8e69f9a00bccf9fb16.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-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/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