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

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

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