added leaderboard drop down menu and started on leaderboard test

This commit is contained in:
derek
2025-02-27 17:06:49 -06:00
parent 46820fed89
commit 096b505cfa
8 changed files with 145 additions and 42 deletions

View File

@@ -47,6 +47,7 @@ func _ready():
GameGlobals.health = gamemode.start_health
#LOAD DATA
SaveLoad.load_persistent_data()
SaveLoad.load_user_data()
if SaveLoad.data_cleared or !gamemode.load_save:
@@ -152,7 +153,6 @@ func die():
if GameGlobals.player_deaths:
GameGlobals.player_deaths += 1
SaveLoad.save_user_data()
SaveLoad.clear_save_game_data()
var deadmsg = DEAD_ANNOUNCE.instantiate()
get_parent().add_child(deadmsg)
var instance_dead = dead_player.instantiate()
@@ -253,4 +253,6 @@ func pickup_spawn(randomized):
func save_quit():
SignalBus.emit_signal("player_exiting_tree")
SaveLoad.save_game_data(self.get_name())
SaveLoad.save_user_data()
SaveLoad.save_persistent_data()
get_tree().quit()

View File

@@ -15,10 +15,10 @@ var current_gamemode
#Persistent Data
var user_id = 0
var current_user_leaderboards = ["global"]
var all_user_leaderboards = []
var last_leaderboard_id = 0
var user_names = ["Profile 1","Profile 2","Profile 3","Profile 4","Profile 5"]
var all_user_leaderboards = [["Global"]]
var leaderboard_name = "Test"
var playlist_test
#Player Stats

View File

@@ -3,8 +3,12 @@ extends Node
var last_scene
@onready var playlist_generator: Node = $PlaylistGenerator
@onready var leaderboard_name: TextEdit = $MarginContainer/VBoxContainer/HBoxContainer/leaderboard_name
@onready var confirmed: CheckButton = $MarginContainer/VBoxContainer/HBoxContainer/Confirmed
@onready var continue_button: Button = $MarginContainer/VBoxContainer/Continue
@onready var option_button: OptionButton = $MarginContainer/VBoxContainer/HBoxContainer/OptionButton
@onready var add_leaderboard: Button = $"MarginContainer/VBoxContainer/HBoxContainer/Add Leaderboard"
@onready var add_leaderboard_menu: Control = $"Add Leaderboard Menu"
func _enter_tree() -> void:
SaveLoad.load_persistent_data()
@@ -12,18 +16,18 @@ func _enter_tree() -> void:
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
confirmed.button_pressed = true
leaderboard_name.text = GameGlobals.leaderboard_name
playlist_generator.load_playlist()
print("leaderboard : ",GameGlobals.leaderboard_name)
option_button.clear()
for i in GameGlobals.all_user_leaderboards[GameGlobals.user_id]:
option_button.add_item(i)
option_button.selected = GameGlobals.last_leaderboard_id
continue_text_check()
func _on_continue_pressed() -> void:
var level
var load_to_gamemode
if GameGlobals.leaderboard_name != leaderboard_name.text:
GameGlobals.leaderboard_name = leaderboard_name.text
playlist_generator.load_playlist()
@@ -36,14 +40,20 @@ func _on_continue_pressed() -> void:
load_to_gamemode = GameGlobals.current_gamemode
SaveLoad.save_persistent_data()
SaveLoad.load_user_data()
SaveLoad.save_user_data()
get_tree().change_scene_to_file(level)
print("LEVEL : ",GameGlobals.current_level)
func _on_exit_pressed() -> void:
get_tree().quit()
func continue_text_check():
if SaveLoad.check_user_data_exists():
continue_button.text = "Continue"
else:
continue_button.text = "New Game"
func _on_leaderboard_name_text_changed() -> void:
GameGlobals.leaderboard_name = leaderboard_name.text
confirmed.button_pressed = false
func _on_add_leaderboard_pressed() -> void:
add_leaderboard_menu.visible = true

View File

@@ -24,7 +24,7 @@ func _process(delta: float) -> void:
func generate_playlist() -> void:
var playlist_name = only_valid_chars(GameGlobals.leaderboard_name)
var playlist_name = only_valid_chars(GameGlobals.all_user_leaderboards[GameGlobals.user_id][GameGlobals.last_leaderboard_id])
var playlist = []
print("PLAYLIST CREATED FOR THE : ",playlist_name)
for i in rounds:
@@ -55,15 +55,15 @@ func only_valid_chars(input_string: String) -> String:
return valid_chars
func save_playlist(playlist):
var playlist_name = str(only_valid_chars(GameGlobals.leaderboard_name))
var playlist_name = str(only_valid_chars(GameGlobals.all_user_leaderboards[GameGlobals.user_id][GameGlobals.last_leaderboard_id]))
var playlist_path : String = "user://"+ playlist_name + "_playlist.save"
var file = FileAccess.open(playlist_path, FileAccess.WRITE)
file.store_var(only_valid_chars(GameGlobals.leaderboard_name))
file.store_var(only_valid_chars(GameGlobals.all_user_leaderboards[GameGlobals.user_id][GameGlobals.last_leaderboard_id]))
file.store_var(playlist)
file.close()
func load_playlist():
var playlist_path : String = "user://" + str(only_valid_chars(GameGlobals.leaderboard_name)) + "_playlist.save"
var playlist_path : String = "user://" + str(only_valid_chars(GameGlobals.all_user_leaderboards[GameGlobals.user_id][GameGlobals.last_leaderboard_id])) + "_playlist.save"
if FileAccess.file_exists(playlist_path):
var file = FileAccess.open(playlist_path, FileAccess.READ)
var key = file.get_var()

View File

@@ -13,27 +13,41 @@ var current_ammo
var reserve_ammo
## SAVE DATA PATHS
var persistent_data_save_path = "user://persistent_data.save"
func _ready() -> void:
SignalBus.shot_fired.connect(shot_fired)
func save_persistent_data():
var file = FileAccess.open("user://persistent_data.save", FileAccess.WRITE)
var file = FileAccess.open(persistent_data_save_path, FileAccess.WRITE)
file.store_var(GameGlobals.user_id)
var all_user_leaderboards_file = []
for i in GameGlobals.all_user_leaderboards:
all_user_leaderboards_file.append(GameGlobals.current_user_leaderboards)
file.store_var(GameGlobals.last_leaderboard_id)
file.store_var(GameGlobals.user_names)
file.store_var(GameGlobals.all_user_leaderboards)
file.close()
func load_persistent_data():
var file = FileAccess.open("user://persistent_data.save", FileAccess.WRITE)
GameGlobals.user_id = file.get_var()
GameGlobals.all_user_leaderboards = file.get_var()
file.close()
if FileAccess.file_exists(persistent_data_save_path):
var file = FileAccess.open(persistent_data_save_path, FileAccess.READ)
var user_id = file.get_var()
var last_leaderboard_id = file.get_var()
var user_names = file.get_var()
var all_user_leaderboards = file.get_var()
GameGlobals.user_id = str(user_id)
GameGlobals.last_leaderboard_id = str(last_leaderboard_id)
GameGlobals.user_names = user_names
GameGlobals.all_user_leaderboards = all_user_leaderboards
file.close()
else:
print("No file found...")
func save_user_data():
var user_save_path = str("user://user_",GameGlobals.user_id,"_data.save")
var user_save_path = str("user://user_",str(GameGlobals.user_id),"_",str(GameGlobals.leaderboard_name),"_leaderboard","_data.save")
var file = FileAccess.open(user_save_path, FileAccess.WRITE)
#cache data before saving and creating checksum in case it changes between data saving and checksum generating
@@ -65,12 +79,19 @@ func save_user_data():
file.close()
func check_user_data_exists():
var user_save_path = str("user://user_",str(GameGlobals.user_id),"_",str(GameGlobals.all_user_leaderboards[GameGlobals.user_id][GameGlobals.last_leaderboard_id]),"_leaderboard","_data.save")
if FileAccess.file_exists(user_save_path):
return true
else:
return false
func load_user_data():
var user_save_path = str("user://user_",GameGlobals.user_id,"_data.save")
var user_save_path = str("user://user_",str(GameGlobals.user_id),"_",str(GameGlobals.all_user_leaderboards[GameGlobals.user_id][GameGlobals.last_leaderboard_id]),"_leaderboard","_data.save")
if FileAccess.file_exists(user_save_path):
var file = FileAccess.open(user_save_path, FileAccess.READ)
GameGlobals.last_hit_path = file.get_var()
GameGlobals.leaderboard_name = file.get_var()
var file_leaderboard_name = file.get_var()
GameGlobals.current_level = str(file.get_var())
var money = set_nulls_zero(file.get_var())
var deposited_money = set_nulls_zero(file.get_var())
@@ -82,6 +103,12 @@ func load_user_data():
var held_guns_encoded = file.get_var()
GameGlobals.money = money
GameGlobals.deposited_money = deposited_money
GameGlobals.health = health
GameGlobals.high_score = high_score
GameGlobals.player_deaths = player_deaths
GameGlobals.shots_fired = shots_fired
GameGlobals.held_guns = load_resource_path(held_guns_encoded)
GameGlobals.gun_ammo = file.get_var()
GameGlobals.ammo_reserve = file.get_var()
@@ -92,7 +119,7 @@ func load_user_data():
var checksum = file.get_var()
print("Checksum : ",checksum)
var check_data = [user_save_path,GameGlobals.leaderboard_name,money,deposited_money,health,high_score,player_deaths,shots_fired]
var check_data = [user_save_path,file_leaderboard_name,money,deposited_money,health,high_score,player_deaths,shots_fired]
print("CHECK DATA : ",check_data)
print("CHECKSUM CALC : ",HelperFuncs.checksum(check_data))
file.close()
@@ -103,6 +130,16 @@ func load_user_data():
print("DATA NOT VALID")
else:
print("no data saved...")
GameGlobals.money = 0
GameGlobals.deposited_money = 0
GameGlobals.health = 10
GameGlobals.high_score = 0
GameGlobals.player_deaths = 0
GameGlobals.shots_fired = 0
GameGlobals.held_guns = []
GameGlobals.gun_ammo = {}
GameGlobals.ammo_reserve = {}
GameGlobals.current_gun_index = 0
func save_game_data(level_name):
@@ -130,7 +167,6 @@ func save_game_data(level_name):
file.store_line(json_string)
file.close()
save_persistent_data()
func check_save_game_exists(level_name):
var game_save_path = str("user://",GameGlobals.leaderboard_name,"_",level_name,"_gamesave.save")