More tweaks but broke the enemy script

This commit is contained in:
derek
2024-12-03 13:27:44 -06:00
parent 299257e0d9
commit ad11da38f8
23 changed files with 194 additions and 86 deletions

47
ClearData.tscn Normal file
View 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"]

View File

@@ -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

View File

@@ -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)

View File

@@ -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="."]

View File

@@ -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")

View File

@@ -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

24
assets/stats.tscn Normal file
View 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

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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()

View File

@@ -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:

View 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()

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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():

View File

@@ -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)
@@ -103,19 +101,21 @@ func save_game_data():
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,9 +151,11 @@ 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)
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():
@@ -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:

View File

@@ -5,3 +5,4 @@ signal switch_timeout()
signal enemy_hit()
signal enemy_killed()
signal king_killed()
signal enemy_count_changed()

View File

@@ -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:

16
scripts/stat_display.gd Normal file
View 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)

View File

@@ -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