added leaderboard drop down menu and started on leaderboard test
This commit is contained in:
@@ -1,9 +1,16 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://sa1d1rftyn87"]
|
||||
[gd_scene load_steps=9 format=3 uid="uid://sa1d1rftyn87"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/main_menu.gd" id="1_haaol"]
|
||||
[ext_resource type="PackedScene" uid="uid://dpootbr7qgac1" path="res://Tools/playlist_generator.tscn" id="2_2rg1o"]
|
||||
[ext_resource type="Theme" uid="uid://clek42ofxr45f" path="res://DefaultTheme.tres" id="2_3fflq"]
|
||||
[ext_resource type="FontFile" uid="uid://d2h2tjhxiv5wo" path="res://assets/fonts/White On Black.ttf" id="2_ac165"]
|
||||
[ext_resource type="Theme" uid="uid://buma708jpxqrn" path="res://Clean_theme.tres" id="4_ydrbj"]
|
||||
[ext_resource type="Shader" path="res://assets/Shaders/blur.gdshader" id="6_x75tm"]
|
||||
[ext_resource type="Texture2D" uid="uid://bt6utik8unkxa" path="res://assets/Textures/ObjectTextures/money.png" id="7_ia0hc"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_htvli"]
|
||||
shader = ExtResource("6_x75tm")
|
||||
shader_parameter/strength = 1.0
|
||||
|
||||
[node name="MainMenu" type="Control" groups=["ui"]]
|
||||
layout_mode = 3
|
||||
@@ -44,16 +51,17 @@ layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
alignment = 1
|
||||
|
||||
[node name="leaderboard_name" type="TextEdit" parent="MarginContainer/VBoxContainer/HBoxContainer"]
|
||||
clip_contents = false
|
||||
[node name="OptionButton" type="OptionButton" parent="MarginContainer/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
theme = ExtResource("2_3fflq")
|
||||
theme_override_font_sizes/font_size = 51
|
||||
placeholder_text = "Leaderboard name"
|
||||
selected = 0
|
||||
item_count = 1
|
||||
popup/item_0/text = "Global"
|
||||
|
||||
[node name="Confirmed" type="CheckButton" parent="MarginContainer/VBoxContainer/HBoxContainer"]
|
||||
[node name="Add Leaderboard" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme = ExtResource("4_ydrbj")
|
||||
text = "+"
|
||||
|
||||
[node name="Continue" type="Button" parent="MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
@@ -67,7 +75,54 @@ theme_override_fonts/font = ExtResource("2_ac165")
|
||||
theme_override_font_sizes/font_size = 150
|
||||
text = "exit"
|
||||
|
||||
[connection signal="text_changed" from="MarginContainer/VBoxContainer/HBoxContainer/leaderboard_name" to="." method="_on_leaderboard_name_text_changed"]
|
||||
[connection signal="toggled" from="MarginContainer/VBoxContainer/HBoxContainer/Confirmed" to="." method="_on_confirmed_toggled"]
|
||||
[node name="Add Leaderboard Menu" type="Control" parent="."]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="Add Leaderboard Menu"]
|
||||
material = SubResource("ShaderMaterial_htvli")
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
color = Color(0, 0, 0, 0.737255)
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Add Leaderboard Menu"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -300.0
|
||||
offset_top = -75.0
|
||||
offset_right = 300.0
|
||||
offset_bottom = 75.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="Add Leaderboard Menu/MarginContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="TextEdit" type="TextEdit" parent="Add Leaderboard Menu/MarginContainer/HBoxContainer"]
|
||||
custom_minimum_size = Vector2(800, 0)
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
theme = ExtResource("2_3fflq")
|
||||
theme_override_font_sizes/font_size = 41
|
||||
placeholder_text = "Leaderboard Name"
|
||||
|
||||
[node name="Button" type="Button" parent="Add Leaderboard Menu/MarginContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
icon = ExtResource("7_ia0hc")
|
||||
|
||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer/Add Leaderboard" to="." method="_on_add_leaderboard_pressed"]
|
||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/Continue" to="." method="_on_continue_pressed"]
|
||||
[connection signal="pressed" from="MarginContainer/VBoxContainer/Exit" to="." method="_on_exit_pressed"]
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
BIN
check-mark-hand-drawn-scribble-line_78370-1424.avif
Normal file
BIN
check-mark-hand-drawn-scribble-line_78370-1424.avif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user