More tweaks but broke the enemy script
This commit is contained in:
47
ClearData.tscn
Normal file
47
ClearData.tscn
Normal file
@@ -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"]
|
||||||
@@ -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="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"]
|
[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://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="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="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://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://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"]
|
[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")]
|
[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)
|
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="."]
|
[node name="Room1" type="Node" parent="."]
|
||||||
script = ExtResource("13_84vop")
|
script = ExtResource("13_84vop")
|
||||||
room_lockdown = true
|
room_lockdown = true
|
||||||
|
|||||||
@@ -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="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="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"]
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3phni"]
|
||||||
resource_name = "bottle1"
|
resource_name = "bottle1"
|
||||||
@@ -203,7 +202,6 @@ sound = NodePath("Piece 1/BrokenSound")
|
|||||||
[node name="Piece 1" type="RigidBody3D" parent="." groups=["scene_rigidbody"]]
|
[node name="Piece 1" type="RigidBody3D" parent="." groups=["scene_rigidbody"]]
|
||||||
collision_layer = 32
|
collision_layer = 32
|
||||||
collision_mask = 125
|
collision_mask = 125
|
||||||
script = ExtResource("2_hod7s")
|
|
||||||
|
|
||||||
[node name="bottle1_broken_cell" type="MeshInstance3D" parent="Piece 1" groups=["scene_rigidbody"]]
|
[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)
|
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"]]
|
[node name="Piece 2" type="RigidBody3D" parent="." groups=["scene_rigidbody"]]
|
||||||
collision_layer = 32
|
collision_layer = 32
|
||||||
collision_mask = 125
|
collision_mask = 125
|
||||||
script = ExtResource("2_hod7s")
|
|
||||||
|
|
||||||
[node name="bottle1_broken_cell_001" type="MeshInstance3D" parent="Piece 2" groups=["scene_rigidbody"]]
|
[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)
|
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"]]
|
[node name="Piece 3" type="RigidBody3D" parent="." groups=["scene_rigidbody"]]
|
||||||
collision_layer = 32
|
collision_layer = 32
|
||||||
collision_mask = 125
|
collision_mask = 125
|
||||||
script = ExtResource("2_hod7s")
|
|
||||||
|
|
||||||
[node name="bottle1_broken_cell_002" type="MeshInstance3D" parent="Piece 3" groups=["scene_rigidbody"]]
|
[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)
|
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"]]
|
[node name="Piece 4" type="RigidBody3D" parent="." groups=["scene_rigidbody"]]
|
||||||
collision_layer = 32
|
collision_layer = 32
|
||||||
collision_mask = 125
|
collision_mask = 125
|
||||||
script = ExtResource("2_hod7s")
|
|
||||||
|
|
||||||
[node name="bottle1_broken_cell_003" type="MeshInstance3D" parent="Piece 4" groups=["scene_rigidbody"]]
|
[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)
|
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"]]
|
[node name="Piece 5" type="RigidBody3D" parent="." groups=["scene_rigidbody"]]
|
||||||
collision_layer = 32
|
collision_layer = 32
|
||||||
collision_mask = 125
|
collision_mask = 125
|
||||||
script = ExtResource("2_hod7s")
|
|
||||||
|
|
||||||
[node name="bottle1_broken_cell_004" type="MeshInstance3D" parent="Piece 5" groups=["scene_rigidbody"]]
|
[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)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.030646, 0.558282, -0.0404844)
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ _data = {
|
|||||||
[sub_resource type="SphereShape3D" id="SphereShape3D_8rss4"]
|
[sub_resource type="SphereShape3D" id="SphereShape3D_8rss4"]
|
||||||
radius = 2.0
|
radius = 2.0
|
||||||
|
|
||||||
[node name="Crown" type="Node3D" groups=["persist"]]
|
[node name="Crown" type="Node3D"]
|
||||||
script = ExtResource("1_imbjk")
|
script = ExtResource("1_imbjk")
|
||||||
|
|
||||||
[node name="Cylinder" type="MeshInstance3D" parent="."]
|
[node name="Cylinder" type="MeshInstance3D" parent="."]
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ script = ExtResource("7_pnp4a")
|
|||||||
[node name="BulletRay" type="RayCast3D" parent="Head/Recoil/Camera3D"]
|
[node name="BulletRay" type="RayCast3D" parent="Head/Recoil/Camera3D"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.487738)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.487738)
|
||||||
target_position = Vector3(0, 0, -200)
|
target_position = Vector3(0, 0, -200)
|
||||||
collision_mask = 105
|
collision_mask = 233
|
||||||
collide_with_areas = true
|
collide_with_areas = true
|
||||||
script = ExtResource("10_ektr6")
|
script = ExtResource("10_ektr6")
|
||||||
|
|
||||||
|
|||||||
@@ -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="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"]
|
[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"]
|
[sub_resource type="BoxShape3D" id="BoxShape3D_xxx55"]
|
||||||
size = Vector3(0.816284, 0.725159, 0.75531)
|
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"]]
|
[node name="spider" type="CharacterBody3D" groups=["enemy", "persist"]]
|
||||||
collision_layer = 8
|
collision_layer = 8
|
||||||
collision_mask = 9
|
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)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0258179, 1.03281, 0.00894165)
|
||||||
shape = SubResource("BoxShape3D_xxx55")
|
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="."]
|
[node name="NavigationAgent3D" type="NavigationAgent3D" parent="."]
|
||||||
path_height_offset = 0.5
|
path_height_offset = 0.5
|
||||||
avoidance_enabled = true
|
avoidance_enabled = true
|
||||||
|
|||||||
24
assets/stats.tscn
Normal file
24
assets/stats.tscn
Normal file
@@ -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
|
||||||
@@ -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"]
|
[ext_resource type="Script" path="res://scripts/tracker_marker.gd" id="1_pi8qa"]
|
||||||
|
|
||||||
|
|||||||
@@ -95,13 +95,6 @@ theme_override_fonts/font = ExtResource("3_4nq4f")
|
|||||||
theme_override_font_sizes/font_size = 150
|
theme_override_font_sizes/font_size = 150
|
||||||
text = "Resume"
|
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"]
|
[node name="Save & Quit" type="Button" parent="MarginContainer/VBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_fonts/font = ExtResource("3_4nq4f")
|
theme_override_fonts/font = ExtResource("3_4nq4f")
|
||||||
@@ -109,5 +102,4 @@ theme_override_font_sizes/font_size = 150
|
|||||||
text = "Save & Quit"
|
text = "Save & Quit"
|
||||||
|
|
||||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/Resume" to="." method="_on_resume_pressed"]
|
[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"]
|
[connection signal="pressed" from="MarginContainer/VBoxContainer/Save & Quit" to="." method="_on_save__quit_pressed"]
|
||||||
|
|||||||
@@ -43,13 +43,16 @@ var engine_time_scale_cache : float = 1.0
|
|||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready():
|
func _ready():
|
||||||
#refresh_scene()
|
#connect to signals
|
||||||
|
SignalBus.enemy_count_changed.connect(enemy_count)
|
||||||
|
|
||||||
##LOAD DATA
|
##LOAD DATA
|
||||||
SaveLoad.load_persistent_data()
|
SaveLoad.load_persistent_data()
|
||||||
SaveLoad.load_save_game_data()
|
|
||||||
|
|
||||||
if SaveLoad.data_cleared:
|
if SaveLoad.data_cleared:
|
||||||
refresh_scene()
|
refresh_scene()
|
||||||
|
else:
|
||||||
|
SaveLoad.load_save_game_data()
|
||||||
|
|
||||||
#Spawn Crown
|
#Spawn Crown
|
||||||
var crown_spawn = crown.instantiate()
|
var crown_spawn = crown.instantiate()
|
||||||
@@ -140,8 +143,10 @@ func gun_spawn(index):
|
|||||||
|
|
||||||
func enemy_count():
|
func enemy_count():
|
||||||
var sum = 0
|
var sum = 0
|
||||||
for i in enemy_hiveminds:
|
var enemies = get_tree().get_nodes_in_group("enemy")
|
||||||
sum += i.enemies.size()
|
for i in enemies:
|
||||||
|
if i.get_class() == "CharacterBody3D":
|
||||||
|
sum += 1
|
||||||
print("enemies: " + str(sum))
|
print("enemies: " + str(sum))
|
||||||
if sum == 0:
|
if sum == 0:
|
||||||
cleared()
|
cleared()
|
||||||
@@ -204,6 +209,5 @@ func pause_menu():
|
|||||||
paused = !paused
|
paused = !paused
|
||||||
|
|
||||||
func save_quit():
|
func save_quit():
|
||||||
SaveLoad.save_persistent_data()
|
|
||||||
SaveLoad.save_game_data()
|
SaveLoad.save_game_data()
|
||||||
get_tree().quit()
|
get_tree().quit()
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ func fire():
|
|||||||
player.recoil.add_recoil(Vector3(0,recoil_amount.y,recoil_amount.z),10,10)
|
player.recoil.add_recoil(Vector3(0,recoil_amount.y,recoil_amount.z),10,10)
|
||||||
player.recoil.add_gun_recoil(recoil_amount.x)
|
player.recoil.add_gun_recoil(recoil_amount.x)
|
||||||
player.velocity += player.bullet_ray.global_basis * Vector3(0,0, kick_amount)
|
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():
|
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:
|
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:
|
||||||
|
|||||||
19
scripts/clear_user_data.gd
Normal file
19
scripts/clear_user_data.gd
Normal file
@@ -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()
|
||||||
@@ -13,15 +13,15 @@ func target_change():
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
func save():
|
#func save():
|
||||||
var save_dict = {
|
#var save_dict = {
|
||||||
"filename" : get_scene_file_path(),
|
#"filename" : get_scene_file_path(),
|
||||||
"parent" : get_parent().get_path(),
|
#"parent" : get_parent().get_path(),
|
||||||
"pos_x" : position.x,
|
#"pos_x" : position.x,
|
||||||
"pos_y" : position.y,
|
#"pos_y" : position.y,
|
||||||
"pos_z" : position.z,
|
#"pos_z" : position.z,
|
||||||
"rot_x" : rotation.x,
|
#"rot_x" : rotation.x,
|
||||||
"rot_y" : rotation.y,
|
#"rot_y" : rotation.y,
|
||||||
"rot_z" : rotation.z,
|
#"rot_z" : rotation.z,
|
||||||
}
|
#}
|
||||||
return save_dict
|
#return save_dict
|
||||||
|
|||||||
@@ -11,3 +11,16 @@ func _ready():
|
|||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
pass
|
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
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ func shoot(delta):
|
|||||||
player.recoil.add_recoil(Vector3(0,recoil_amount.y,recoil_amount.z),10,10)
|
player.recoil.add_recoil(Vector3(0,recoil_amount.y,recoil_amount.z),10,10)
|
||||||
player.recoil.add_gun_recoil(recoil_amount.x)
|
player.recoil.add_gun_recoil(recoil_amount.x)
|
||||||
#player.velocity += player.bullet_ray.global_basis * Vector3(0,0, kick_amount)
|
#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:
|
if fire_mode != 0:
|
||||||
cycle_count -= 1
|
cycle_count -= 1
|
||||||
|
|
||||||
|
|||||||
@@ -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.pitch_scale = 1 + rng.randf_range(-fire_pitch_scale_amt,fire_pitch_scale_amt)
|
||||||
audio_fire.play()
|
audio_fire.play()
|
||||||
anim_player.play("shoot") #actual bullet spawn triggered by animation
|
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:
|
if fire_mode != 0:
|
||||||
cycle_count -= 1
|
cycle_count -= 1
|
||||||
|
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ func shoot(delta):
|
|||||||
instance_bullet.player_position = player.global_position
|
instance_bullet.player_position = player.global_position
|
||||||
get_tree().get_root().add_child(instance_bullet)
|
get_tree().get_root().add_child(instance_bullet)
|
||||||
player.recoil.add_recoil(recoil_amount,10,10)
|
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:
|
if fire_mode != 0:
|
||||||
cycle_count -= 1
|
cycle_count -= 1
|
||||||
|
|
||||||
|
|||||||
@@ -21,21 +21,11 @@ var rot_amount : float
|
|||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready():
|
func _ready():
|
||||||
SignalBus.enemy_killed.connect(enemy_in_room_killed)
|
SignalBus.enemy_killed.connect(enemy_in_room_killed)
|
||||||
|
#SignalBus.enemy_count_changed.connect(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)
|
|
||||||
|
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
|
|
||||||
if enemies.size() > 0:
|
if enemies.size() > 0:
|
||||||
#calculate move position for each child
|
#calculate move position for each child
|
||||||
for i in enemies:
|
for i in enemies:
|
||||||
@@ -69,6 +59,17 @@ func _process(delta):
|
|||||||
else:
|
else:
|
||||||
enemy_in_room_killed()
|
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():
|
func enemy_in_room_killed():
|
||||||
var enemy_count = 0
|
var enemy_count = 0
|
||||||
for i in self.get_children():
|
for i in self.get_children():
|
||||||
|
|||||||
@@ -17,8 +17,6 @@ var held_guns
|
|||||||
var current_gun
|
var current_gun
|
||||||
var current_ammo
|
var current_ammo
|
||||||
var reserve_ammo
|
var reserve_ammo
|
||||||
var enemies = []
|
|
||||||
|
|
||||||
|
|
||||||
## SAVE DATA PATHS
|
## SAVE DATA PATHS
|
||||||
var persistent_save_path = "user://persistent_data.save"
|
var persistent_save_path = "user://persistent_data.save"
|
||||||
@@ -37,6 +35,7 @@ func save_persistent_data():
|
|||||||
file.store_var(player_deaths)
|
file.store_var(player_deaths)
|
||||||
file.store_var(enemies_killed)
|
file.store_var(enemies_killed)
|
||||||
file.store_var(shots_fired)
|
file.store_var(shots_fired)
|
||||||
|
file.store_var(data_cleared)
|
||||||
|
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
@@ -51,7 +50,7 @@ func load_persistent_data():
|
|||||||
print("ENEMIES KILLED : " + str(enemies_killed))
|
print("ENEMIES KILLED : " + str(enemies_killed))
|
||||||
shots_fired = file.get_var()
|
shots_fired = file.get_var()
|
||||||
print("SHOTS FIRED ",shots_fired)
|
print("SHOTS FIRED ",shots_fired)
|
||||||
|
data_cleared = file.get_var()
|
||||||
file.close()
|
file.close()
|
||||||
else:
|
else:
|
||||||
print("no data saved...")
|
print("no data saved...")
|
||||||
@@ -77,7 +76,6 @@ func save_game_data():
|
|||||||
reserve_ammo = level_control.ammo_reserve
|
reserve_ammo = level_control.ammo_reserve
|
||||||
|
|
||||||
#SAVE DATA
|
#SAVE DATA
|
||||||
file.store_var(data_cleared)
|
|
||||||
file.store_var(player_loc)
|
file.store_var(player_loc)
|
||||||
file.store_var(player_rot)
|
file.store_var(player_rot)
|
||||||
file.store_var(player_health)
|
file.store_var(player_health)
|
||||||
@@ -102,20 +100,22 @@ func save_game_data():
|
|||||||
file.store_line(json_string)
|
file.store_line(json_string)
|
||||||
|
|
||||||
file.close()
|
file.close()
|
||||||
|
|
||||||
|
save_persistent_data()
|
||||||
|
|
||||||
func clear_save_game_data():
|
func clear_save_game_data():
|
||||||
var file = FileAccess.open(game_save_path, FileAccess.WRITE)
|
|
||||||
data_cleared = true
|
data_cleared = true
|
||||||
file.store_var(data_cleared)
|
save_persistent_data()
|
||||||
file.store_var(player_loc)
|
|
||||||
file.store_var(player_rot)
|
func clear_persistent_data():
|
||||||
file.store_var(player_health)
|
var file = FileAccess.open(persistent_save_path, FileAccess.WRITE)
|
||||||
file.store_var(player_money)
|
file.store_var(null)
|
||||||
file.store_var(held_guns)
|
file.store_var(null)
|
||||||
file.store_var(current_gun)
|
file.store_var(null)
|
||||||
file.store_var(current_ammo)
|
file.store_var(null)
|
||||||
file.store_var(reserve_ammo)
|
|
||||||
file.store_var(enemies)
|
print("PERSISTENT DATA CLEARED")
|
||||||
|
file.close()
|
||||||
|
|
||||||
func load_save_game_data():
|
func load_save_game_data():
|
||||||
var level_control = get_tree().current_scene
|
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)
|
var file = FileAccess.open(game_save_path, FileAccess.READ)
|
||||||
|
|
||||||
#GET DATA
|
#GET DATA
|
||||||
data_cleared = file.get_var()
|
|
||||||
|
|
||||||
if !data_cleared:
|
if !data_cleared:
|
||||||
player_loc = file.get_var()
|
player_loc = file.get_var()
|
||||||
player_rot = 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")
|
var current_nodes = get_tree().get_nodes_in_group("persist")
|
||||||
for i in current_nodes:
|
for i in current_nodes:
|
||||||
if i.get_class() == "CharacterBody3D":
|
if i.get_class() == "CharacterBody3D":
|
||||||
i.die()
|
i.quiet_remove()
|
||||||
else:
|
else:
|
||||||
i.queue_free()
|
i.queue_free()
|
||||||
|
|
||||||
@@ -153,10 +151,12 @@ func load_save_game_data():
|
|||||||
continue
|
continue
|
||||||
var node_data = json.data
|
var node_data = json.data
|
||||||
var new_object = load(node_data["filename"]).instantiate()
|
var new_object = load(node_data["filename"]).instantiate()
|
||||||
get_node(node_data["parent"]).add_child(new_object)
|
|
||||||
print("NEW OBJECT : ",new_object)
|
print("NEW OBJECT : ",new_object)
|
||||||
new_object.position = Vector3(node_data["pos_x"],node_data["pos_y"],node_data["pos_z"])
|
get_node(node_data["parent"]).add_child(new_object)
|
||||||
new_object.rotation = Vector3(node_data["rot_x"],node_data["rot_y"],node_data["rot_z"])
|
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)
|
print("NEW OBJECT PLACED AT ", new_object.position)
|
||||||
for i in node_data.keys():
|
for i in node_data.keys():
|
||||||
if i == "filename" or i == "pos_x" or i == "pos_y" or i == "pos_z":
|
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
|
level_control.ammo_reserve = reserve_ammo
|
||||||
|
|
||||||
file.close()
|
file.close()
|
||||||
|
#SignalBus.emit_signal("enemy_count_changed")
|
||||||
else:
|
else:
|
||||||
print("no data saved...")
|
print("no data saved...")
|
||||||
|
|
||||||
@@ -187,7 +188,6 @@ func data_validate(file,variable):
|
|||||||
return null
|
return null
|
||||||
|
|
||||||
func null_data_check(variable,amount): #checks if value is null, adds the number to variable
|
func null_data_check(variable,amount): #checks if value is null, adds the number to variable
|
||||||
print("VARIABLE ", variable)
|
|
||||||
if variable == null:
|
if variable == null:
|
||||||
variable = amount
|
variable = amount
|
||||||
else:
|
else:
|
||||||
@@ -195,10 +195,6 @@ func null_data_check(variable,amount): #checks if value is null, adds the number
|
|||||||
|
|
||||||
return variable
|
return variable
|
||||||
|
|
||||||
func load_data():
|
|
||||||
load_persistent_data()
|
|
||||||
load_save_game_data()
|
|
||||||
|
|
||||||
func save_resource_path(array):
|
func save_resource_path(array):
|
||||||
var final_array = []
|
var final_array = []
|
||||||
for i in array:
|
for i in array:
|
||||||
|
|||||||
@@ -5,3 +5,4 @@ signal switch_timeout()
|
|||||||
signal enemy_hit()
|
signal enemy_hit()
|
||||||
signal enemy_killed()
|
signal enemy_killed()
|
||||||
signal king_killed()
|
signal king_killed()
|
||||||
|
signal enemy_count_changed()
|
||||||
|
|||||||
@@ -196,6 +196,10 @@ func die():
|
|||||||
SignalBus.emit_signal("enemy_killed")
|
SignalBus.emit_signal("enemy_killed")
|
||||||
queue_free()
|
queue_free()
|
||||||
|
|
||||||
|
func quiet_remove():
|
||||||
|
get_parent().enemies.erase(self)
|
||||||
|
queue_free()
|
||||||
|
|
||||||
func drop_loot(number_of_drops):
|
func drop_loot(number_of_drops):
|
||||||
#pickup drop
|
#pickup drop
|
||||||
while number_of_drops > 0:
|
while number_of_drops > 0:
|
||||||
|
|||||||
16
scripts/stat_display.gd
Normal file
16
scripts/stat_display.gd
Normal file
@@ -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)
|
||||||
@@ -119,7 +119,7 @@ func fire():
|
|||||||
spawn_casing()
|
spawn_casing()
|
||||||
player.recoil.add_recoil(Vector3(0,recoil_amount.y,recoil_amount.z),10,10)
|
player.recoil.add_recoil(Vector3(0,recoil_amount.y,recoil_amount.z),10,10)
|
||||||
player.recoil.add_gun_recoil(recoil_amount.x)
|
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:
|
if fire_mode != 0:
|
||||||
cycle_count -= 1
|
cycle_count -= 1
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user