can now add and store leaderboards. started work on playlist loading
This commit is contained in:
@@ -2,6 +2,7 @@ extends StaticBody3D
|
||||
|
||||
@onready var currently_held_money: Label3D = $"Currently Held Money"
|
||||
@onready var deposited: Label3D = $Deposited
|
||||
@onready var leaderboard_name: Label3D = $"Leaderboard Name"
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
@@ -12,6 +13,7 @@ func _ready() -> void:
|
||||
func _process(delta: float) -> void:
|
||||
currently_held_money.text = "cash on hand: $" + str(int(GameGlobals.money))
|
||||
deposited.text = "deposited: $" + str(GameGlobals.deposited_money)
|
||||
leaderboard_name.text = str(GameGlobals.all_user_leaderboards[GameGlobals.user_id][GameGlobals.last_leaderboard_id])
|
||||
|
||||
func interact():
|
||||
SignalBus.emit_signal("money_deposited")
|
||||
|
||||
@@ -18,8 +18,10 @@ var user_id = 0
|
||||
var last_leaderboard_id = 0
|
||||
var user_names = ["Profile 1","Profile 2","Profile 3","Profile 4","Profile 5"]
|
||||
var all_user_leaderboards = [["Global"]]
|
||||
var current_leaderboard_name = all_user_leaderboards[user_id][last_leaderboard_id]
|
||||
|
||||
var playlist_test
|
||||
var current_match
|
||||
|
||||
#Player Stats
|
||||
var player_deaths = 0
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
@tool
|
||||
extends Node3D
|
||||
|
||||
@export var portal_node : Node
|
||||
@@ -6,12 +5,10 @@ extends Node3D
|
||||
@onready var level_name: Label3D = $"Level Name"
|
||||
@onready var gamemode_label: Label3D = $Gamemode
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
func _process(delta: float) -> void:
|
||||
level_name.text = portal_node.scene_name
|
||||
gamemode_label.text = portal_node.level_gamemode.gamemode_name
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
func update_sign_names():
|
||||
level_name.text = portal_node.scene_name
|
||||
gamemode_label.text = portal_node.level_gamemode.gamemode_name
|
||||
|
||||
@@ -8,6 +8,8 @@ var last_scene
|
||||
@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"
|
||||
@onready var new_leaderboard_name: TextEdit = $"Add Leaderboard Menu/MarginContainer/HBoxContainer/NewLeaderboardName"
|
||||
@onready var confirm_leaderboard_add: Button = $"Add Leaderboard Menu/MarginContainer/HBoxContainer/Confirm"
|
||||
|
||||
|
||||
func _enter_tree() -> void:
|
||||
@@ -16,11 +18,9 @@ func _enter_tree() -> void:
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
add_leaderboard_menu.visible = false
|
||||
playlist_generator.load_playlist()
|
||||
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
|
||||
refresh_option_list()
|
||||
continue_text_check()
|
||||
|
||||
|
||||
@@ -46,6 +46,7 @@ func _on_continue_pressed() -> void:
|
||||
print("LEVEL : ",GameGlobals.current_level)
|
||||
|
||||
func _on_exit_pressed() -> void:
|
||||
SaveLoad.save_persistent_data()
|
||||
get_tree().quit()
|
||||
|
||||
func continue_text_check():
|
||||
@@ -57,3 +58,24 @@ func continue_text_check():
|
||||
|
||||
func _on_add_leaderboard_pressed() -> void:
|
||||
add_leaderboard_menu.visible = true
|
||||
|
||||
func refresh_option_list():
|
||||
option_button.clear()
|
||||
for i in GameGlobals.all_user_leaderboards[int(GameGlobals.user_id)]:
|
||||
option_button.add_item(i)
|
||||
option_button.selected = int(GameGlobals.last_leaderboard_id)
|
||||
|
||||
func _on_confirm_pressed() -> void:
|
||||
var valid_name = HelperFuncs.only_valid_chars(new_leaderboard_name.text)
|
||||
|
||||
GameGlobals.all_user_leaderboards[GameGlobals.user_id].append(valid_name)
|
||||
GameGlobals.last_leaderboard_id = GameGlobals.all_user_leaderboards[GameGlobals.user_id].size() - 1
|
||||
|
||||
refresh_option_list()
|
||||
continue_text_check()
|
||||
add_leaderboard_menu.visible = false
|
||||
|
||||
|
||||
func _on_option_button_item_selected(index: int) -> void:
|
||||
GameGlobals.last_leaderboard_id = option_button.selected
|
||||
continue_text_check()
|
||||
|
||||
@@ -117,7 +117,6 @@ var pickupmsg
|
||||
var controlled_elsewhere = false
|
||||
|
||||
@onready var animation_player: AnimationPlayer = $AnimationPlayer
|
||||
@onready var crosshair = $Head/Recoil/Camera3D/Crosshair
|
||||
@onready var head = $Head
|
||||
@onready var camera = $Head/Recoil/Camera3D
|
||||
@onready var world_environment = $"../WorldEnvironment"
|
||||
|
||||
@@ -7,7 +7,8 @@ extends Node
|
||||
@export var maps_in_rotation : Array[String] = []
|
||||
@export var gamemodes_in_rotation : Array[gamemode]= []
|
||||
@export var levels_per_round : int = 5
|
||||
@export var rounds : int = 3
|
||||
@export var rounds_per_match : int = 3
|
||||
@export var matches_per_year : int = 52
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
@@ -27,17 +28,19 @@ func generate_playlist() -> void:
|
||||
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:
|
||||
var round = []
|
||||
for x in levels_per_round:
|
||||
var level_details = {
|
||||
"map" : maps_in_rotation.pick_random(),
|
||||
"gamemode" : gamemodes_in_rotation.pick_random()
|
||||
}
|
||||
round.append(level_details)
|
||||
|
||||
playlist.append(round)
|
||||
print("PLAYLIST : ", playlist[0][0])
|
||||
for h in matches_per_year:
|
||||
var matches = []
|
||||
for i in rounds_per_match:
|
||||
var round = []
|
||||
for x in levels_per_round:
|
||||
var level_details = {
|
||||
"map" : maps_in_rotation.pick_random(),
|
||||
"gamemode" : gamemodes_in_rotation.pick_random()
|
||||
}
|
||||
round.append(level_details)
|
||||
matches.append(round)
|
||||
playlist.append(matches)
|
||||
print("PLAYLIST : ", playlist)
|
||||
|
||||
save_playlist(playlist)
|
||||
generate_playlist_now = false
|
||||
@@ -63,13 +66,14 @@ func save_playlist(playlist):
|
||||
file.close()
|
||||
|
||||
func load_playlist():
|
||||
var playlist_path : String = "user://" + str(only_valid_chars(GameGlobals.all_user_leaderboards[GameGlobals.user_id][GameGlobals.last_leaderboard_id])) + "_playlist.save"
|
||||
var playlist_path : String = "user://" + str(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()
|
||||
var playlist = file.get_var()
|
||||
print("KEY : ",key)
|
||||
GameGlobals.playlist_test = playlist
|
||||
GameGlobals.current_match = playlist[0]
|
||||
file.close()
|
||||
print("PLAYLIST: ")
|
||||
print("------------------------------------------------------------------------------------")
|
||||
|
||||
25
scripts/playlist_loader.gd
Normal file
25
scripts/playlist_loader.gd
Normal file
@@ -0,0 +1,25 @@
|
||||
extends Node
|
||||
|
||||
@onready var playlist_generator: Control = $"../Playlist Generator"
|
||||
|
||||
var portals = []
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
playlist_generator.load_playlist()
|
||||
print("CURRENT MATCH : ",GameGlobals.current_match)
|
||||
for i in get_tree().current_scene.get_children():
|
||||
if i.is_in_group("portal"):
|
||||
portals.append(i)
|
||||
print("PORTALS")
|
||||
|
||||
var id = 0
|
||||
for i in portals:
|
||||
i.scene_path = str(GameGlobals.current_match[0][id]["map"])
|
||||
i.scene_name = str(GameGlobals.current_match[0][id]["map"])
|
||||
id += 1
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
print("CURRENT MATCH ",GameGlobals.current_match[0])
|
||||
@@ -37,8 +37,8 @@ func load_persistent_data():
|
||||
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_id = int(user_id)
|
||||
GameGlobals.last_leaderboard_id = int(last_leaderboard_id)
|
||||
GameGlobals.user_names = user_names
|
||||
GameGlobals.all_user_leaderboards = all_user_leaderboards
|
||||
|
||||
@@ -47,11 +47,11 @@ func load_persistent_data():
|
||||
print("No file found...")
|
||||
|
||||
func save_user_data():
|
||||
var user_save_path = str("user://user_",str(GameGlobals.user_id),"_",str(GameGlobals.leaderboard_name),"_leaderboard","_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")
|
||||
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
|
||||
var leaderboard_name = GameGlobals.leaderboard_name
|
||||
var leaderboard_name = str(GameGlobals.current_leaderboard_name)
|
||||
var money = GameGlobals.money
|
||||
var deposited_money = GameGlobals.deposited_money
|
||||
var health = GameGlobals.health
|
||||
@@ -87,6 +87,7 @@ func check_user_data_exists():
|
||||
return false
|
||||
|
||||
func load_user_data():
|
||||
print("ALL LEADERBOARDS: ",GameGlobals.all_user_leaderboards[0][0])
|
||||
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)
|
||||
@@ -145,7 +146,7 @@ func load_user_data():
|
||||
func save_game_data(level_name):
|
||||
var level_control = get_tree().current_scene
|
||||
var player = level_control.player
|
||||
var game_save_path = str("user://",GameGlobals.leaderboard_name,"_",level_name,"_gamesave.save")
|
||||
var game_save_path = str("user://",GameGlobals.current_leaderboard_name,"_",level_name,"_gamesave.save")
|
||||
var file = FileAccess.open(game_save_path, FileAccess.WRITE)
|
||||
#ASSIGN DATA TO VARIABLES
|
||||
data_cleared = false
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
extends Area3D
|
||||
class_name Portal
|
||||
|
||||
@export var scene_path : String
|
||||
@export var scene_name : String
|
||||
|
||||
Reference in New Issue
Block a user