More tweaks but broke the enemy script
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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:
|
||||
|
||||
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
|
||||
|
||||
|
||||
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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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():
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -5,3 +5,4 @@ signal switch_timeout()
|
||||
signal enemy_hit()
|
||||
signal enemy_killed()
|
||||
signal king_killed()
|
||||
signal enemy_count_changed()
|
||||
|
||||
@@ -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
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()
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user