diff --git a/project.godot b/project.godot index 9135651..c027109 100644 --- a/project.godot +++ b/project.godot @@ -102,6 +102,7 @@ TouchScreen="*res://src/autoload/touch_screen.tscn" Wipe="*res://src/autoload/Wipe.tscn" UI="*res://src/autoload/UI.tscn" SilentWolf="*res://addons/silent_wolf/SilentWolf.gd" +Leaderboard="*res://src/autoload/Leaderboard.gd" [display] diff --git a/src/autoload/Leaderboard.gd b/src/autoload/Leaderboard.gd new file mode 100644 index 0000000..0c6f758 --- /dev/null +++ b/src/autoload/Leaderboard.gd @@ -0,0 +1,44 @@ +extends Node + +onready var api_file = load("silent_wolf_api_key.gd") +var api_key := "" +var is_online := false +var username := "player_name" + +func _ready(): + is_online = api_file is Script + if !is_online: return + + if OS.has_environment("USERNAME"): + username = OS.get_environment("USERNAME") + print("Leaderboard username: ", username) + + api_key = api_file.source_code.strip_edges().replace('"', "") + SilentWolf.configure({ + "api_key": api_key, + "game_id": "TinyCrate", + "game_version": "1.0.0", + "log_level": 1}) + + SilentWolf.configure_scores({"open_scene_on_close": "res://scenes/MainPage.tscn"}) + + yield(get_tree(), "idle_frame") +# SilentWolf.Players.post_player_data("player_name", {"1-1" : 23}, false) + SilentWolf.Scores.persist_score("player_name", 1) + + pass # Replace with function body. + + +func submit_score(board_name, score): + SilentWolf.Scores.persist_score("not_" + username + "3", score, board_name) + +func get_scores(board_name): + yield(SilentWolf.Scores.get_high_scores(0, board_name), "sw_scores_received") + var s = SilentWolf.Scores.leaderboards[board_name] + + print("Scores from the ", board_name, " leaderboard: " + str(s)) + for i in s: + print(i["player_name"], ": ", -int(i["score"])) + + return s + diff --git a/src/autoload/Shared.gd b/src/autoload/Shared.gd index 502050f..33b1d0e 100644 --- a/src/autoload/Shared.gd +++ b/src/autoload/Shared.gd @@ -77,21 +77,6 @@ func _ready(): load_save() Wipe.connect("finish", self, "wipe_finish") - - - # silent wolf - var api_key = load("silent_wolf_api_key.gd").source_code.strip_edges().replace('"', "") - SilentWolf.configure({ - "api_key": api_key, - "game_id": "TinyCrate", - "game_version": "1.0.0", - "log_level": 1}) - - SilentWolf.configure_scores({"open_scene_on_close": "res://scenes/MainPage.tscn"}) - - yield(get_tree(), "idle_frame") -# SilentWolf.Players.post_player_data("player_name", {"1-1" : 23}, false) - SilentWolf.Scores.persist_score("player_name", 1) func _physics_process(delta): # reset timer @@ -300,6 +285,8 @@ func win(): save() print("map complete")#, save_data: ", save_data) + Leaderboard.submit_score(map_name, -map_frame) + if map_save > ms: set_map(current_map + 1) else: diff --git a/src/menu/select.gd b/src/menu/select.gd index acb2c29..ced6b05 100644 --- a/src/menu/select.gd +++ b/src/menu/select.gd @@ -18,6 +18,9 @@ onready var node_audio_scroll : AudioStreamPlayer = $AudioScroll onready var node_audio_select : AudioStreamPlayer = $AudioSelect onready var node_audio_back : AudioStreamPlayer = $AudioBack +onready var score_layer := $ScoreLayer +onready var score_list := $ScoreLayer/CenterContainer/Control/List + # Called when the node enters the scene tree for the first time. func _ready(): # make screens @@ -62,6 +65,17 @@ func _input(event): open_map() node_audio_select.play() is_input = false + elif event.is_action_pressed("pause"): + var b = Shared.maps[cursor] + score_list.text = "loading" + yield(SilentWolf.Scores.get_high_scores(0, b), "sw_scores_received") + var s = SilentWolf.Scores.leaderboards[b] + + var t = "" + for i in s: + t += str(i["player_name"]) + " / " + str(-int(i["score"])) + "\n" + + score_list.text = t else: var btnx = btn.p("right") - btn.p("left") var btny = btn.p("down") - btn.p("up") diff --git a/src/menu/select.tscn b/src/menu/select.tscn index 46d194b..eb5d4c1 100644 --- a/src/menu/select.tscn +++ b/src/menu/select.tscn @@ -227,3 +227,40 @@ color = Color( 0.160784, 0.678431, 1, 1 ) __meta__ = { "_edit_lock_": true } + +[node name="ScoreLayer" type="CanvasLayer" parent="."] + +[node name="CenterContainer" type="CenterContainer" parent="ScoreLayer"] +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Control" type="Control" parent="ScoreLayer/CenterContainer"] +margin_left = 65.0 +margin_top = 15.0 +margin_right = 163.0 +margin_bottom = 113.0 +rect_min_size = Vector2( 98, 98 ) + +[node name="Title" type="Label" parent="ScoreLayer/CenterContainer/Control"] +margin_right = 100.0 +margin_bottom = 20.0 +custom_fonts/font = SubResource( 4 ) +text = "FASTEST RUNS" +align = 1 +valign = 1 + +[node name="List" type="Label" parent="ScoreLayer/CenterContainer/Control"] +margin_top = 20.0 +margin_right = 100.0 +margin_bottom = 40.0 +custom_fonts/font = SubResource( 4 ) +text = "1.67 / Me +1.94 / You +2.54 / Nobody +4. Everyone +5. The Rest +6. that guy +7. the others +8. who knows +9. waahuu +10. thats it"