diff --git a/ClearData.tscn b/ClearData.tscn new file mode 100644 index 0000000..3ff7c92 --- /dev/null +++ b/ClearData.tscn @@ -0,0 +1,47 @@ +[gd_scene load_steps=3 format=3 uid="uid://jkbxygidk6ju"] + +[ext_resource type="Script" path="res://scripts/clear_user_data.gd" id="1_4cwiv"] +[ext_resource type="FontFile" uid="uid://d2h2tjhxiv5wo" path="res://assets/fonts/White On Black.ttf" id="2_avdyn"] + +[node name="Control" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_4cwiv") + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -277.018 +offset_top = -174.68 +offset_right = 277.018 +offset_bottom = 174.68 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="ClearData" type="Button" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_fonts/font = ExtResource("2_avdyn") +theme_override_font_sizes/font_size = 150 +text = "Clear save Data" + +[node name="ClearPersistentData" type="Button" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_fonts/font = ExtResource("2_avdyn") +theme_override_font_sizes/font_size = 150 +text = "clear persistent data" + +[connection signal="pressed" from="MarginContainer/VBoxContainer/ClearData" to="." method="_on_clear_data_pressed"] +[connection signal="pressed" from="MarginContainer/VBoxContainer/ClearPersistentData" to="." method="_on_clear_persistent_data_pressed"] diff --git a/assets/blockout_2.tscn b/assets/blockout_2.tscn index abb54c6..c7393c9 100644 --- a/assets/blockout_2.tscn +++ b/assets/blockout_2.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=112 format=4 uid="uid://6agmt1hqlhww"] +[gd_scene load_steps=113 format=4 uid="uid://6agmt1hqlhww"] [ext_resource type="Script" path="res://scripts/LevelManager.gd" id="1_sbpvn"] [ext_resource type="PackedScene" uid="uid://brl0bsqjl5dg3" path="res://assets/mac_10.tscn" id="2_fn4vb"] @@ -24,6 +24,7 @@ [ext_resource type="PackedScene" uid="uid://cnfc8rtk6l1d8" path="res://assets/crate1.tscn" id="12_30nle"] [ext_resource type="PackedScene" uid="uid://dt4t2a48204v1" path="res://assets/spikes_1.tscn" id="12_w4dk0"] [ext_resource type="Script" path="res://scripts/room_manager.gd" id="13_84vop"] +[ext_resource type="PackedScene" uid="uid://bessq6hl7qsh8" path="res://assets/stats.tscn" id="13_gu6tc"] [ext_resource type="PackedScene" uid="uid://cgo4qyul7ix5p" path="res://assets/ladder.tscn" id="13_qu8oi"] [ext_resource type="PackedScene" uid="uid://cdpxctwwi12j" path="res://assets/ladder_collision_check.tscn" id="14_gijx0"] [ext_resource type="PackedScene" uid="uid://b3t8fra7evqfb" path="res://assets/Models/building_1.tscn" id="15_ds1t8"] @@ -1160,6 +1161,9 @@ shape = SubResource("ConcavePolygonShape3D_eyfj3") [node name="Spikes 1" parent="NavigationRegion3D" instance=ExtResource("12_w4dk0")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -27.1833, -5.75175, 34.3513) +[node name="Stats" parent="NavigationRegion3D" instance=ExtResource("13_gu6tc")] +transform = Transform3D(0.0198257, 0, 0.999803, 0, 1, 0, -0.999803, 0, 0.0198257, -3.96477, 2.13145, 11.1771) + [node name="Room1" type="Node" parent="."] script = ExtResource("13_84vop") room_lockdown = true diff --git a/assets/bottle_1_pieces.tscn b/assets/bottle_1_pieces.tscn index 3e9f2ce..d0c42fc 100644 --- a/assets/bottle_1_pieces.tscn +++ b/assets/bottle_1_pieces.tscn @@ -1,8 +1,7 @@ -[gd_scene load_steps=20 format=4 uid="uid://bdy5isxqwbjq8"] +[gd_scene load_steps=19 format=4 uid="uid://bdy5isxqwbjq8"] [ext_resource type="Script" path="res://scripts/broken_object_spawn.gd" id="1_3nyc3"] [ext_resource type="AudioStream" uid="uid://bn4y63ws8jscs" path="res://assets/Audio/glass-break-two-thick-glasses-SBA-300121605.wav" id="1_vmlqu"] -[ext_resource type="Script" path="res://scripts/rigidbody_generic.gd" id="2_hod7s"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3phni"] resource_name = "bottle1" @@ -203,7 +202,6 @@ sound = NodePath("Piece 1/BrokenSound") [node name="Piece 1" type="RigidBody3D" parent="." groups=["scene_rigidbody"]] collision_layer = 32 collision_mask = 125 -script = ExtResource("2_hod7s") [node name="bottle1_broken_cell" type="MeshInstance3D" parent="Piece 1" groups=["scene_rigidbody"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.066139, 0.324223, -0.067418) @@ -220,7 +218,6 @@ stream = ExtResource("1_vmlqu") [node name="Piece 2" type="RigidBody3D" parent="." groups=["scene_rigidbody"]] collision_layer = 32 collision_mask = 125 -script = ExtResource("2_hod7s") [node name="bottle1_broken_cell_001" type="MeshInstance3D" parent="Piece 2" groups=["scene_rigidbody"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00347066, -0.310987, 0.106893) @@ -234,7 +231,6 @@ shape = SubResource("ConvexPolygonShape3D_2ytqg") [node name="Piece 3" type="RigidBody3D" parent="." groups=["scene_rigidbody"]] collision_layer = 32 collision_mask = 125 -script = ExtResource("2_hod7s") [node name="bottle1_broken_cell_002" type="MeshInstance3D" parent="Piece 3" groups=["scene_rigidbody"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0177096, 0.440996, 0.0680487) @@ -248,7 +244,6 @@ shape = SubResource("ConvexPolygonShape3D_78sq8") [node name="Piece 4" type="RigidBody3D" parent="." groups=["scene_rigidbody"]] collision_layer = 32 collision_mask = 125 -script = ExtResource("2_hod7s") [node name="bottle1_broken_cell_003" type="MeshInstance3D" parent="Piece 4" groups=["scene_rigidbody"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.000561402, -0.247355, -0.010017) @@ -262,7 +257,6 @@ shape = SubResource("ConvexPolygonShape3D_xqauf") [node name="Piece 5" type="RigidBody3D" parent="." groups=["scene_rigidbody"]] collision_layer = 32 collision_mask = 125 -script = ExtResource("2_hod7s") [node name="bottle1_broken_cell_004" type="MeshInstance3D" parent="Piece 5" groups=["scene_rigidbody"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.030646, 0.558282, -0.0404844) diff --git a/assets/crown.tscn b/assets/crown.tscn index 32fc7ea..2d78a66 100644 --- a/assets/crown.tscn +++ b/assets/crown.tscn @@ -108,7 +108,7 @@ _data = { [sub_resource type="SphereShape3D" id="SphereShape3D_8rss4"] radius = 2.0 -[node name="Crown" type="Node3D" groups=["persist"]] +[node name="Crown" type="Node3D"] script = ExtResource("1_imbjk") [node name="Cylinder" type="MeshInstance3D" parent="."] diff --git a/assets/player.tscn b/assets/player.tscn index 874fc8c..97baf04 100644 --- a/assets/player.tscn +++ b/assets/player.tscn @@ -171,7 +171,7 @@ script = ExtResource("7_pnp4a") [node name="BulletRay" type="RayCast3D" parent="Head/Recoil/Camera3D"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.487738) target_position = Vector3(0, 0, -200) -collision_mask = 105 +collision_mask = 233 collide_with_areas = true script = ExtResource("10_ektr6") diff --git a/assets/spider2.tscn b/assets/spider2.tscn index 8b9a09e..299f02d 100644 --- a/assets/spider2.tscn +++ b/assets/spider2.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=76 format=4 uid="uid://djr7vnr1hcx82"] +[gd_scene load_steps=75 format=4 uid="uid://djr7vnr1hcx82"] [ext_resource type="Script" path="res://scripts/spider.gd" id="1_7e7fe"] [ext_resource type="Texture2D" uid="uid://dmyn4eq2r12ue" path="res://assets/Models/spider1.albedoRAW.png" id="1_di6b8"] @@ -816,9 +816,6 @@ _surfaces = [{ [sub_resource type="BoxShape3D" id="BoxShape3D_xxx55"] size = Vector3(0.816284, 0.725159, 0.75531) -[sub_resource type="SphereShape3D" id="SphereShape3D_v8dp4"] -radius = 0.201 - [node name="spider" type="CharacterBody3D" groups=["enemy", "persist"]] collision_layer = 8 collision_mask = 9 @@ -1013,10 +1010,6 @@ mesh = SubResource("ArrayMesh_v85cv") transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0258179, 1.03281, 0.00894165) shape = SubResource("BoxShape3D_xxx55") -[node name="CollisionShape3D2" type="CollisionShape3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.33052, 0.429336) -shape = SubResource("SphereShape3D_v8dp4") - [node name="NavigationAgent3D" type="NavigationAgent3D" parent="."] path_height_offset = 0.5 avoidance_enabled = true diff --git a/assets/stats.tscn b/assets/stats.tscn new file mode 100644 index 0000000..8099be0 --- /dev/null +++ b/assets/stats.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=3 format=3 uid="uid://bessq6hl7qsh8"] + +[ext_resource type="Script" path="res://scripts/stat_display.gd" id="1_q47is"] +[ext_resource type="FontFile" uid="uid://d2h2tjhxiv5wo" path="res://assets/fonts/White On Black.ttf" id="2_mtulh"] + +[node name="Stats" type="Node3D"] +script = ExtResource("1_q47is") + +[node name="Kills" type="Label3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.423311, 0) +text = "Test" +font = ExtResource("2_mtulh") +horizontal_alignment = 0 + +[node name="Deaths" type="Label3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.218421, 0) +text = "Test" +font = ExtResource("2_mtulh") +horizontal_alignment = 0 + +[node name="Shots Fired" type="Label3D" parent="."] +text = "Test" +font = ExtResource("2_mtulh") +horizontal_alignment = 0 diff --git a/assets/tracker_marker.tscn b/assets/tracker_marker.tscn index 39b3488..e03306f 100644 --- a/assets/tracker_marker.tscn +++ b/assets/tracker_marker.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://rcixv0spjpvw"] +[gd_scene load_steps=10 format=3 uid="uid://lq83kek13sfy"] [ext_resource type="Script" path="res://scripts/tracker_marker.gd" id="1_pi8qa"] diff --git a/pause_menu.tscn b/pause_menu.tscn index d65bf7a..38fbb9d 100644 --- a/pause_menu.tscn +++ b/pause_menu.tscn @@ -95,13 +95,6 @@ theme_override_fonts/font = ExtResource("3_4nq4f") theme_override_font_sizes/font_size = 150 text = "Resume" -[node name="Load" type="Button" parent="MarginContainer/VBoxContainer"] -visible = false -layout_mode = 2 -theme_override_fonts/font = ExtResource("3_4nq4f") -theme_override_font_sizes/font_size = 150 -text = "load" - [node name="Save & Quit" type="Button" parent="MarginContainer/VBoxContainer"] layout_mode = 2 theme_override_fonts/font = ExtResource("3_4nq4f") @@ -109,5 +102,4 @@ theme_override_font_sizes/font_size = 150 text = "Save & Quit" [connection signal="pressed" from="MarginContainer/VBoxContainer/Resume" to="." method="_on_resume_pressed"] -[connection signal="pressed" from="MarginContainer/VBoxContainer/Load" to="." method="_on_load_pressed"] [connection signal="pressed" from="MarginContainer/VBoxContainer/Save & Quit" to="." method="_on_save__quit_pressed"] diff --git a/scripts/LevelManager.gd b/scripts/LevelManager.gd index 14dfe9b..8666b39 100644 --- a/scripts/LevelManager.gd +++ b/scripts/LevelManager.gd @@ -43,13 +43,16 @@ var engine_time_scale_cache : float = 1.0 # Called when the node enters the scene tree for the first time. func _ready(): - #refresh_scene() + #connect to signals + SignalBus.enemy_count_changed.connect(enemy_count) + ##LOAD DATA SaveLoad.load_persistent_data() - SaveLoad.load_save_game_data() if SaveLoad.data_cleared: refresh_scene() + else: + SaveLoad.load_save_game_data() #Spawn Crown var crown_spawn = crown.instantiate() @@ -140,8 +143,10 @@ func gun_spawn(index): func enemy_count(): var sum = 0 - for i in enemy_hiveminds: - sum += i.enemies.size() + var enemies = get_tree().get_nodes_in_group("enemy") + for i in enemies: + if i.get_class() == "CharacterBody3D": + sum += 1 print("enemies: " + str(sum)) if sum == 0: cleared() @@ -204,6 +209,5 @@ func pause_menu(): paused = !paused func save_quit(): - SaveLoad.save_persistent_data() SaveLoad.save_game_data() get_tree().quit() diff --git a/scripts/blunderbus.gd b/scripts/blunderbus.gd index c4db572..120ed20 100644 --- a/scripts/blunderbus.gd +++ b/scripts/blunderbus.gd @@ -103,7 +103,7 @@ func fire(): player.recoil.add_recoil(Vector3(0,recoil_amount.y,recoil_amount.z),10,10) player.recoil.add_gun_recoil(recoil_amount.x) player.velocity += player.bullet_ray.global_basis * Vector3(0,0, kick_amount) - SaveLoad.shots_fired += 1 + SaveLoad.shots_fired = SaveLoad.null_data_check(SaveLoad.shots_fired, 1) func reload(): if level_control.ammo_current[gun_index] < max_ammo and player.gun.anim_player.get_current_animation() != "reload" and level_control.ammo_reserve[gun_index] > 0: diff --git a/scripts/clear_user_data.gd b/scripts/clear_user_data.gd new file mode 100644 index 0000000..3d209be --- /dev/null +++ b/scripts/clear_user_data.gd @@ -0,0 +1,19 @@ +extends Control + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass + + +func _on_clear_data_pressed() -> void: + SaveLoad.clear_save_game_data() + + +func _on_clear_persistent_data_pressed() -> void: + SaveLoad.clear_persistent_data() diff --git a/scripts/crown.gd b/scripts/crown.gd index 9e2322b..3f58c63 100644 --- a/scripts/crown.gd +++ b/scripts/crown.gd @@ -13,15 +13,15 @@ func target_change(): pass -func save(): - var save_dict = { - "filename" : get_scene_file_path(), - "parent" : get_parent().get_path(), - "pos_x" : position.x, - "pos_y" : position.y, - "pos_z" : position.z, - "rot_x" : rotation.x, - "rot_y" : rotation.y, - "rot_z" : rotation.z, - } - return save_dict +#func save(): + #var save_dict = { + #"filename" : get_scene_file_path(), + #"parent" : get_parent().get_path(), + #"pos_x" : position.x, + #"pos_y" : position.y, + #"pos_z" : position.z, + #"rot_x" : rotation.x, + #"rot_y" : rotation.y, + #"rot_z" : rotation.z, + #} + #return save_dict diff --git a/scripts/die_particles.gd b/scripts/die_particles.gd index 5589092..fbe429b 100644 --- a/scripts/die_particles.gd +++ b/scripts/die_particles.gd @@ -11,3 +11,16 @@ func _ready(): # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): pass + +func save(): + var save_dict = { + "filename" : get_scene_file_path(), + "parent" : get_parent().get_path(), + "pos_x" : position.x, + "pos_y" : position.y, + "pos_z" : position.z, + "rot_x" : rotation.x, + "rot_y" : rotation.y, + "rot_z" : rotation.z, + } + return save_dict diff --git a/scripts/gun.gd b/scripts/gun.gd index 3ed26f6..027321a 100644 --- a/scripts/gun.gd +++ b/scripts/gun.gd @@ -96,7 +96,7 @@ func shoot(delta): player.recoil.add_recoil(Vector3(0,recoil_amount.y,recoil_amount.z),10,10) player.recoil.add_gun_recoil(recoil_amount.x) #player.velocity += player.bullet_ray.global_basis * Vector3(0,0, kick_amount) - SaveLoad.shots_fired += 1 + SaveLoad.shots_fired = SaveLoad.null_data_check(SaveLoad.shots_fired, 1) if fire_mode != 0: cycle_count -= 1 diff --git a/scripts/revolver_1.gd b/scripts/revolver_1.gd index c3af378..0aaed3b 100644 --- a/scripts/revolver_1.gd +++ b/scripts/revolver_1.gd @@ -129,7 +129,7 @@ func shoot(delta): audio_fire.pitch_scale = 1 + rng.randf_range(-fire_pitch_scale_amt,fire_pitch_scale_amt) audio_fire.play() anim_player.play("shoot") #actual bullet spawn triggered by animation - SaveLoad.shots_fired += 1 + SaveLoad.shots_fired = SaveLoad.null_data_check(SaveLoad.shots_fired, 1) if fire_mode != 0: cycle_count -= 1 diff --git a/scripts/rocket_launcher.gd b/scripts/rocket_launcher.gd index 02259b7..f20edb5 100644 --- a/scripts/rocket_launcher.gd +++ b/scripts/rocket_launcher.gd @@ -95,7 +95,7 @@ func shoot(delta): instance_bullet.player_position = player.global_position get_tree().get_root().add_child(instance_bullet) player.recoil.add_recoil(recoil_amount,10,10) - SaveLoad.shots_fired += 1 + SaveLoad.shots_fired = SaveLoad.null_data_check(SaveLoad.shots_fired, 1) if fire_mode != 0: cycle_count -= 1 diff --git a/scripts/room_manager.gd b/scripts/room_manager.gd index 3315d44..3dd530c 100644 --- a/scripts/room_manager.gd +++ b/scripts/room_manager.gd @@ -21,21 +21,11 @@ var rot_amount : float # Called when the node enters the scene tree for the first time. func _ready(): SignalBus.enemy_killed.connect(enemy_in_room_killed) - - for i in self.get_children(): - if i.is_in_group("enemy"): - enemies.append(i) - if i.is_in_group("door"): - doors.append(i) - if i.is_in_group("room_check"): - room_checks.append(i) - i.room_entered.connect(room_entered) - i.room_exited.connect(room_exited) + #SignalBus.enemy_count_changed.connect(assign_enemies) # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): - if enemies.size() > 0: #calculate move position for each child for i in enemies: @@ -69,6 +59,17 @@ func _process(delta): else: enemy_in_room_killed() +func assign_enemies(): + for i in self.get_children(): + if i.is_in_group("enemy"): + enemies.append(i) + if i.is_in_group("door"): + doors.append(i) + if i.is_in_group("room_check"): + room_checks.append(i) + i.room_entered.connect(room_entered) + i.room_exited.connect(room_exited) + func enemy_in_room_killed(): var enemy_count = 0 for i in self.get_children(): diff --git a/scripts/save_load.gd b/scripts/save_load.gd index c0b830a..ef32c94 100644 --- a/scripts/save_load.gd +++ b/scripts/save_load.gd @@ -17,8 +17,6 @@ var held_guns var current_gun var current_ammo var reserve_ammo -var enemies = [] - ## SAVE DATA PATHS var persistent_save_path = "user://persistent_data.save" @@ -37,6 +35,7 @@ func save_persistent_data(): file.store_var(player_deaths) file.store_var(enemies_killed) file.store_var(shots_fired) + file.store_var(data_cleared) file.close() @@ -51,7 +50,7 @@ func load_persistent_data(): print("ENEMIES KILLED : " + str(enemies_killed)) shots_fired = file.get_var() print("SHOTS FIRED ",shots_fired) - + data_cleared = file.get_var() file.close() else: print("no data saved...") @@ -77,7 +76,6 @@ func save_game_data(): reserve_ammo = level_control.ammo_reserve #SAVE DATA - file.store_var(data_cleared) file.store_var(player_loc) file.store_var(player_rot) file.store_var(player_health) @@ -102,20 +100,22 @@ func save_game_data(): file.store_line(json_string) file.close() + + save_persistent_data() func clear_save_game_data(): - var file = FileAccess.open(game_save_path, FileAccess.WRITE) data_cleared = true - file.store_var(data_cleared) - file.store_var(player_loc) - file.store_var(player_rot) - file.store_var(player_health) - file.store_var(player_money) - file.store_var(held_guns) - file.store_var(current_gun) - file.store_var(current_ammo) - file.store_var(reserve_ammo) - file.store_var(enemies) + save_persistent_data() + +func clear_persistent_data(): + var file = FileAccess.open(persistent_save_path, FileAccess.WRITE) + file.store_var(null) + file.store_var(null) + file.store_var(null) + file.store_var(null) + + print("PERSISTENT DATA CLEARED") + file.close() func load_save_game_data(): var level_control = get_tree().current_scene @@ -125,8 +125,6 @@ func load_save_game_data(): var file = FileAccess.open(game_save_path, FileAccess.READ) #GET DATA - data_cleared = file.get_var() - if !data_cleared: player_loc = file.get_var() player_rot = file.get_var() @@ -140,7 +138,7 @@ func load_save_game_data(): var current_nodes = get_tree().get_nodes_in_group("persist") for i in current_nodes: if i.get_class() == "CharacterBody3D": - i.die() + i.quiet_remove() else: i.queue_free() @@ -153,10 +151,12 @@ func load_save_game_data(): continue var node_data = json.data var new_object = load(node_data["filename"]).instantiate() - get_node(node_data["parent"]).add_child(new_object) print("NEW OBJECT : ",new_object) - new_object.position = Vector3(node_data["pos_x"],node_data["pos_y"],node_data["pos_z"]) - new_object.rotation = Vector3(node_data["rot_x"],node_data["rot_y"],node_data["rot_z"]) + get_node(node_data["parent"]).add_child(new_object) + if node_data["pos_x"] != null: + new_object.position = Vector3(node_data["pos_x"],node_data["pos_y"],node_data["pos_z"]) + if node_data["rot_x"] != null: + new_object.rotation = Vector3(node_data["rot_x"],node_data["rot_y"],node_data["rot_z"]) print("NEW OBJECT PLACED AT ", new_object.position) for i in node_data.keys(): if i == "filename" or i == "pos_x" or i == "pos_y" or i == "pos_z": @@ -177,6 +177,7 @@ func load_save_game_data(): level_control.ammo_reserve = reserve_ammo file.close() + #SignalBus.emit_signal("enemy_count_changed") else: print("no data saved...") @@ -187,7 +188,6 @@ func data_validate(file,variable): return null func null_data_check(variable,amount): #checks if value is null, adds the number to variable - print("VARIABLE ", variable) if variable == null: variable = amount else: @@ -195,10 +195,6 @@ func null_data_check(variable,amount): #checks if value is null, adds the number return variable -func load_data(): - load_persistent_data() - load_save_game_data() - func save_resource_path(array): var final_array = [] for i in array: diff --git a/scripts/signal_bus.gd b/scripts/signal_bus.gd index f02dfc4..2aec3ad 100644 --- a/scripts/signal_bus.gd +++ b/scripts/signal_bus.gd @@ -5,3 +5,4 @@ signal switch_timeout() signal enemy_hit() signal enemy_killed() signal king_killed() +signal enemy_count_changed() diff --git a/scripts/spider.gd b/scripts/spider.gd index 2fb57a4..be7f0f4 100644 --- a/scripts/spider.gd +++ b/scripts/spider.gd @@ -196,6 +196,10 @@ func die(): SignalBus.emit_signal("enemy_killed") queue_free() +func quiet_remove(): + get_parent().enemies.erase(self) + queue_free() + func drop_loot(number_of_drops): #pickup drop while number_of_drops > 0: diff --git a/scripts/stat_display.gd b/scripts/stat_display.gd new file mode 100644 index 0000000..596b77c --- /dev/null +++ b/scripts/stat_display.gd @@ -0,0 +1,16 @@ +extends Node3D + +@onready var kills: Label3D = $Kills +@onready var deaths: Label3D = $Deaths +@onready var shots_fired: Label3D = $"Shots Fired" + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + kills.text = "Kills : " + str(SaveLoad.enemies_killed) + deaths.text = "Deaths : " + str(SaveLoad.player_deaths) + shots_fired.text = "Shots Fired : " + str(SaveLoad.shots_fired) diff --git a/scripts/trackerGun.gd b/scripts/trackerGun.gd index 8b30eda..edae904 100644 --- a/scripts/trackerGun.gd +++ b/scripts/trackerGun.gd @@ -119,7 +119,7 @@ func fire(): spawn_casing() player.recoil.add_recoil(Vector3(0,recoil_amount.y,recoil_amount.z),10,10) player.recoil.add_gun_recoil(recoil_amount.x) - SaveLoad.shots_fired += 1 + SaveLoad.shots_fired = SaveLoad.null_data_check(SaveLoad.shots_fired, 1) if fire_mode != 0: cycle_count -= 1