can now add and store leaderboards. started work on playlist loading
This commit is contained in:
@@ -1,13 +1,38 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://sa1d1rftyn87"]
|
||||
[gd_scene load_steps=11 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="Shader" path="res://assets/crtTest.gdshader" id="2_hyw7c"]
|
||||
[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_a5tps"]
|
||||
shader = ExtResource("2_hyw7c")
|
||||
shader_parameter/overlay = true
|
||||
shader_parameter/scanlines_opacity = 0.025
|
||||
shader_parameter/scanlines_width = 0.315
|
||||
shader_parameter/grille_opacity = 0.1
|
||||
shader_parameter/resolution = Vector2(640, 480)
|
||||
shader_parameter/pixelate = true
|
||||
shader_parameter/roll = true
|
||||
shader_parameter/roll_speed = 8.0
|
||||
shader_parameter/roll_size = 15.0
|
||||
shader_parameter/roll_variation = 1.8
|
||||
shader_parameter/distort_intensity = 0.05
|
||||
shader_parameter/noise_opacity = 0.4
|
||||
shader_parameter/noise_speed = 5.0
|
||||
shader_parameter/static_noise_intensity = 0.06
|
||||
shader_parameter/aberration = 0.03
|
||||
shader_parameter/brightness = 0.7
|
||||
shader_parameter/discolor = true
|
||||
shader_parameter/warp_amount = 0.0
|
||||
shader_parameter/clip_warp = true
|
||||
shader_parameter/vignette_intensity = 0.4
|
||||
shader_parameter/vignette_opacity = 0.235
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_htvli"]
|
||||
shader = ExtResource("6_x75tm")
|
||||
shader_parameter/strength = 1.0
|
||||
@@ -21,9 +46,16 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_haaol")
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="."]
|
||||
material = SubResource("ShaderMaterial_a5tps")
|
||||
offset_right = 3840.0
|
||||
offset_bottom = 2160.0
|
||||
|
||||
[node name="PlaylistGenerator" parent="." instance=ExtResource("2_2rg1o")]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
rounds_per_match = null
|
||||
matches_per_year = null
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="."]
|
||||
layout_mode = 1
|
||||
@@ -76,7 +108,6 @@ theme_override_font_sizes/font_size = 150
|
||||
text = "exit"
|
||||
|
||||
[node name="Add Leaderboard Menu" type="Control" parent="."]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
@@ -92,7 +123,7 @@ anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
color = Color(0, 0, 0, 0.737255)
|
||||
color = Color(0, 0, 0, 0.431373)
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Add Leaderboard Menu"]
|
||||
layout_mode = 1
|
||||
@@ -111,7 +142,7 @@ 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"]
|
||||
[node name="NewLeaderboardName" type="TextEdit" parent="Add Leaderboard Menu/MarginContainer/HBoxContainer"]
|
||||
custom_minimum_size = Vector2(800, 0)
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
@@ -119,10 +150,12 @@ 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"]
|
||||
[node name="Confirm" type="Button" parent="Add Leaderboard Menu/MarginContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
icon = ExtResource("7_ia0hc")
|
||||
|
||||
[connection signal="item_selected" from="MarginContainer/VBoxContainer/HBoxContainer/OptionButton" to="." method="_on_option_button_item_selected"]
|
||||
[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"]
|
||||
[connection signal="pressed" from="Add Leaderboard Menu/MarginContainer/HBoxContainer/Confirm" to="." method="_on_confirm_pressed"]
|
||||
|
||||
@@ -19,11 +19,5 @@ generate_playlist_now = null
|
||||
checksum_test = null
|
||||
maps_in_rotation = Array[String](["res://assets/blockout_2.tscn", "res://scenes/enemy_working_scene.tscn", "res://scenes/test_level_2v2.tscn", "res://scenes/Arena of Money.tscn"])
|
||||
gamemodes_in_rotation = Array[ExtResource("2_hoyqc")]([ExtResource("2_85uje"), ExtResource("3_t0mxh"), ExtResource("4_8wht4"), ExtResource("6_vu1w7")])
|
||||
|
||||
[node name="Button" type="Button" parent="."]
|
||||
layout_mode = 0
|
||||
offset_right = 8.0
|
||||
offset_bottom = 8.0
|
||||
text = "Generate Random Playlist"
|
||||
|
||||
[connection signal="pressed" from="Button" to="." method="_on_button_pressed"]
|
||||
rounds_per_match = null
|
||||
matches_per_year = null
|
||||
|
||||
@@ -18,6 +18,12 @@ shape = SubResource("BoxShape3D_8clsv")
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
mesh = SubResource("BoxMesh_6sj7f")
|
||||
|
||||
[node name="Leaderboard Name" type="Label3D" parent="."]
|
||||
transform = Transform3D(0.7, 0, 0, 0, 0.7, 0, 0, 0, 0.7, 0.143, 2.20856, 0)
|
||||
text = "Deposit Money"
|
||||
font = ExtResource("1_bjyml")
|
||||
font_size = 100
|
||||
|
||||
[node name="Deposit Money" type="Label3D" parent="."]
|
||||
transform = Transform3D(0.7, 0, 0, 0, 0.7, 0, 0, 0, 0.7, 0.143, 1.69313, 0)
|
||||
text = "Deposit Money"
|
||||
|
||||
@@ -13,7 +13,7 @@ emission_enabled = true
|
||||
emission = Color(0.223698, 0.336652, 0.628522, 1)
|
||||
emission_energy_multiplier = 5.6
|
||||
|
||||
[node name="Scene Changer" type="Area3D"]
|
||||
[node name="Scene Changer" type="Area3D" groups=["portal"]]
|
||||
collision_layer = 4
|
||||
collision_mask = 4
|
||||
script = ExtResource("1_7ngxb")
|
||||
|
||||
@@ -60,6 +60,7 @@ leak="will leak if damaged"
|
||||
item_pickup=""
|
||||
hub_level=""
|
||||
ui=""
|
||||
portal=""
|
||||
|
||||
[input]
|
||||
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
[gd_scene load_steps=18 format=3 uid="uid://jdwpc622vmok"]
|
||||
[gd_scene load_steps=20 format=3 uid="uid://jdwpc622vmok"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/LevelManager.gd" id="1_1bnbi"]
|
||||
[ext_resource type="Resource" uid="uid://bxcxqt7rmfvdw" path="res://GameModes/hubworld.tres" id="2_62iy8"]
|
||||
[ext_resource type="Script" path="res://scripts/playlist_loader.gd" id="3_2u2e7"]
|
||||
[ext_resource type="Material" uid="uid://b6hhomp4kcjvb" path="res://assets/materials/prototype/tadaoando.tres" id="3_hlejc"]
|
||||
[ext_resource type="PackedScene" uid="uid://dpootbr7qgac1" path="res://Tools/playlist_generator.tscn" id="3_udqcb"]
|
||||
[ext_resource type="PackedScene" uid="uid://drwae3loscbw7" path="res://assets/player.tscn" id="4_04o4y"]
|
||||
[ext_resource type="PackedScene" uid="uid://dgapcuvg0gtmm" path="res://assets/scene_changer.tscn" id="5_alya6"]
|
||||
[ext_resource type="PackedScene" uid="uid://bessq6hl7qsh8" path="res://assets/stats.tscn" id="6_mkn70"]
|
||||
@@ -36,6 +38,15 @@ fog_density = 0.0001
|
||||
script = ExtResource("1_1bnbi")
|
||||
gamemode = ExtResource("2_62iy8")
|
||||
|
||||
[node name="LEVEL UTILS" type="Node" parent="."]
|
||||
|
||||
[node name="Playlist Generator" parent="LEVEL UTILS" instance=ExtResource("3_udqcb")]
|
||||
rounds_per_match = 3
|
||||
matches_per_year = 52
|
||||
|
||||
[node name="PlaylistLoader" type="Node" parent="LEVEL UTILS"]
|
||||
script = ExtResource("3_2u2e7")
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_r2hg6")
|
||||
|
||||
|
||||
@@ -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