From 37be40c8129ccaa3cd26629c383f1d9d03523366 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sun, 24 Mar 2024 09:57:05 -0400 Subject: Geronimo gets you a puzzle skip --- Archipelago/client.gd | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'Archipelago/client.gd') diff --git a/Archipelago/client.gd b/Archipelago/client.gd index 06fb3a6..05294d5 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd @@ -115,6 +115,7 @@ var _puzzle_skips = 0 var _cached_slowness = 0 var _cached_iceland = 0 var _cached_atbash = 0 +var _geronimo_skip = false signal could_not_connect signal connect_status @@ -300,7 +301,7 @@ func _on_data(): if localdata.size() > 1: _puzzle_skips = localdata[1] - + if localdata.size() > 2: _cached_slowness = localdata[2] else: @@ -316,6 +317,11 @@ func _on_data(): else: _cached_atbash = 0 + if localdata.size() > 5: + _geronimo_skip = localdata[5] + else: + _geronimo_skip = false + requestSync() emit_signal("client_connected") @@ -475,7 +481,8 @@ func saveLocaldata(): _puzzle_skips, effects_node.slowness_remaining, effects_node.iceland_remaining, - effects_node.atbash_remaining + effects_node.atbash_remaining, + _geronimo_skip ] file.store_var(data, true) file.close() @@ -720,6 +727,15 @@ func usePuzzleSkip(): saveLocaldata() +func geronimo(): + if !_geronimo_skip: + messages.showMessage("Geronimo! You found a puzzle skip.") + + _puzzle_skips += 1 + _geronimo_skip = true + saveLocaldata() + + func colorForItemType(flags): var int_flags = int(flags) if int_flags & 1: # progression -- cgit 1.4.1 From 86b0cea063d3e6d5fd20e8bee1f5ab13b1547482 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sun, 31 Mar 2024 23:27:39 -0400 Subject: Bump version --- Archipelago/client.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Archipelago/client.gd') diff --git a/Archipelago/client.gd b/Archipelago/client.gd index 1ba52d7..47357ee 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd @@ -15,7 +15,7 @@ var ap_pass = "" var confusify_world = false var enable_multiplayer = false -const my_version = "2.0.0-beta2" +const my_version = "2.0.0" const ap_version = {"major": 0, "minor": 4, "build": 5, "class": "Version"} const color_items = [ "White", "Black", "Red", "Blue", "Green", "Brown", "Gray", "Orange", "Purple", "Yellow" -- cgit 1.4.1 From 38175bd12c1a0a2c80be5f4011f69e4659f61ccd Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 3 Apr 2024 14:31:51 -0400 Subject: Added player position tracking --- Archipelago/client.gd | 18 +++++++++++++++++- Archipelago/player.gd | 28 ++++++++++++++++++++++++++++ Archipelago/settings_buttons.gd | 1 + Archipelago/settings_screen.gd | 1 + archipelago.tscn | 10 ++++++++++ 5 files changed, 57 insertions(+), 1 deletion(-) (limited to 'Archipelago/client.gd') diff --git a/Archipelago/client.gd b/Archipelago/client.gd index 47357ee..b825aaa 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd @@ -14,6 +14,7 @@ var ap_user = "" var ap_pass = "" var confusify_world = false var enable_multiplayer = false +var track_player = false const my_version = "2.0.0" const ap_version = {"major": 0, "minor": 4, "build": 5, "class": "Version"} @@ -158,6 +159,8 @@ func _init(): confusify_world = data[4] if data.size() > 5: enable_multiplayer = data[5] + if data.size() > 6: + track_player = data[6] processDatapackages() @@ -298,6 +301,11 @@ func _on_data(): if _slot_data.has("early_color_hallways"): _early_color_hallways = _slot_data["early_color_hallways"] + if track_player: + setValue("PlayerPos", {"x": 0, "z": 0}) + else: + setValue("PlayerPos", null) + _puzzle_skips = 0 _localdata_file = "user://archipelago_data/%s_%d" % [_seed, _slot] @@ -470,7 +478,15 @@ func saveSettings(): var file = File.new() file.open("user://settings/archipelago", File.WRITE) - var data = [ap_server, ap_user, ap_pass, _datapackages, confusify_world, enable_multiplayer] + var data = [ + ap_server, + ap_user, + ap_pass, + _datapackages, + confusify_world, + enable_multiplayer, + track_player + ] file.store_var(data, true) file.close() diff --git a/Archipelago/player.gd b/Archipelago/player.gd index 87d9d0c..49d907d 100644 --- a/Archipelago/player.gd +++ b/Archipelago/player.gd @@ -1,6 +1,34 @@ extends "res://scripts/player.gd" +var _oldpos = Vector3(0, -200, 0) + + +func _ready(): + _oldpos = translation + _oldpos.y = 0 + + var apclient = global.get_node("Archipelago") + if apclient.track_player: + var tracking_timer = Timer.new() + tracking_timer.name = "TrackingTimer" + tracking_timer.wait_time = 5.0 + add_child(tracking_timer) + tracking_timer.connect("timeout", self, "_tick_tracking") + tracking_timer.start() + + +func _tick_tracking(): + var newpos = translation + newpos.y = 0 + + if newpos != _oldpos && newpos.distance_to(_oldpos) > 10: + _oldpos = newpos + + var apclient = global.get_node("Archipelago") + apclient.setValue("PlayerPos", {"x": int(_oldpos.x), "z": int(_oldpos.z)}) + + func _solving(): ._solving() diff --git a/Archipelago/settings_buttons.gd b/Archipelago/settings_buttons.gd index e9cff9d..9193b61 100644 --- a/Archipelago/settings_buttons.gd +++ b/Archipelago/settings_buttons.gd @@ -14,6 +14,7 @@ func _connect_pressed(): apclient.ap_pass = self.get_parent().get_node("password_box").text apclient.confusify_world = self.get_parent().get_node("confusing_box").pressed apclient.enable_multiplayer = self.get_parent().get_node("multiplayer_box").pressed + apclient.track_player = self.get_parent().get_node("position_box").pressed apclient.saveSettings() apclient.connectToServer() diff --git a/Archipelago/settings_screen.gd b/Archipelago/settings_screen.gd index 7f50f51..deb0003 100644 --- a/Archipelago/settings_screen.gd +++ b/Archipelago/settings_screen.gd @@ -59,6 +59,7 @@ func _ready(): self.get_node("Panel/password_box").text = apclient.ap_pass self.get_node("Panel/confusing_box").pressed = apclient.confusify_world self.get_node("Panel/multiplayer_box").pressed = apclient.enable_multiplayer + self.get_node("Panel/position_box").pressed = apclient.track_player # Show client version. self.get_node("Panel/title").text = "ARCHIPELAGO (%s)" % apclient.my_version diff --git a/archipelago.tscn b/archipelago.tscn index 917db4e..f0b8ab9 100644 --- a/archipelago.tscn +++ b/archipelago.tscn @@ -173,5 +173,15 @@ custom_icons/checked = ExtResource( 8 ) custom_icons/unchecked = ExtResource( 7 ) text = "Show other players" +[node name="position_box" type="CheckBox" parent="Panel"] +margin_left = 1227.0 +margin_top = 571.0 +margin_right = 1832.0 +margin_bottom = 654.0 +custom_fonts/font = ExtResource( 6 ) +custom_icons/checked = ExtResource( 8 ) +custom_icons/unchecked = ExtResource( 7 ) +text = "Send position to tracker" + [connection signal="pressed" from="Panel/connect_button" to="Panel/connect_button" method="_connect_pressed"] [connection signal="pressed" from="Panel/quit_button" to="Panel/quit_button" method="_back_pressed"] -- cgit 1.4.1 From e15780a26c207d949a78b9e83f53a81604daba35 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 3 Apr 2024 14:40:28 -0400 Subject: Bump version --- Archipelago/client.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Archipelago/client.gd') diff --git a/Archipelago/client.gd b/Archipelago/client.gd index b825aaa..a3b503a 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd @@ -16,7 +16,7 @@ var confusify_world = false var enable_multiplayer = false var track_player = false -const my_version = "2.0.0" +const my_version = "2.1.0" const ap_version = {"major": 0, "minor": 4, "build": 5, "class": "Version"} const color_items = [ "White", "Black", "Red", "Blue", "Green", "Brown", "Gray", "Orange", "Purple", "Yellow" -- cgit 1.4.1 From 7fff1d87387be19d53c92b926e84f7d64790118f Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Thu, 11 Apr 2024 16:55:42 -0400 Subject: Bump version --- Archipelago/client.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Archipelago/client.gd') diff --git a/Archipelago/client.gd b/Archipelago/client.gd index a3b503a..f15afe6 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd @@ -16,7 +16,7 @@ var confusify_world = false var enable_multiplayer = false var track_player = false -const my_version = "2.1.0" +const my_version = "2.1.1" const ap_version = {"major": 0, "minor": 4, "build": 5, "class": "Version"} const color_items = [ "White", "Black", "Red", "Blue", "Green", "Brown", "Gray", "Orange", "Purple", "Yellow" -- cgit 1.4.1 From ce831897b89974f38fd6f0583e5feac178643a14 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 17 Apr 2024 12:30:18 -0400 Subject: Add connection history --- Archipelago/client.gd | 6 +++++- Archipelago/settings_screen.gd | 31 +++++++++++++++++++++++++++++++ archipelago.tscn | 25 +++++++++++++++++-------- 3 files changed, 53 insertions(+), 9 deletions(-) (limited to 'Archipelago/client.gd') diff --git a/Archipelago/client.gd b/Archipelago/client.gd index f15afe6..489fdb9 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd @@ -15,6 +15,7 @@ var ap_pass = "" var confusify_world = false var enable_multiplayer = false var track_player = false +var connection_history = [] const my_version = "2.1.1" const ap_version = {"major": 0, "minor": 4, "build": 5, "class": "Version"} @@ -161,6 +162,8 @@ func _init(): enable_multiplayer = data[5] if data.size() > 6: track_player = data[6] + if data.size() > 7: + connection_history = data[7] processDatapackages() @@ -485,7 +488,8 @@ func saveSettings(): _datapackages, confusify_world, enable_multiplayer, - track_player + track_player, + connection_history ] file.store_var(data, true) file.close() diff --git a/Archipelago/settings_screen.gd b/Archipelago/settings_screen.gd index de64214..453e3bf 100644 --- a/Archipelago/settings_screen.gd +++ b/Archipelago/settings_screen.gd @@ -67,6 +67,19 @@ func _ready(): self.get_node("Panel/multiplayer_box").pressed = apclient.enable_multiplayer self.get_node("Panel/position_box").pressed = apclient.track_player + var history_box = get_node("Panel/connection_history") + if apclient.connection_history.empty(): + history_box.disabled = true + else: + history_box.disabled = false + + var i = 0 + for details in apclient.connection_history: + history_box.get_popup().add_item("%s (%s)" % [details[1], details[0]], i) + i += 1 + + history_box.get_popup().connect("id_pressed", self, "historySelected") + # Show client version. self.get_node("Panel/title").text = "ARCHIPELAGO (%s)" % apclient.my_version @@ -109,6 +122,15 @@ func connectionStatus(message): func connectionSuccessful(): var apclient = global.get_node("Archipelago") + # Save connection details + var connection_details = [apclient.ap_server, apclient.ap_user, apclient.ap_pass] + if apclient.connection_history.has(connection_details): + apclient.connection_history.erase(connection_details) + apclient.connection_history.push_front(connection_details) + if apclient.connection_history.size() > 10: + apclient.connection_history.resize(10) + apclient.saveSettings() + # Switch to LL1 Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) global.save_file = apclient.getSaveFileName() @@ -130,3 +152,12 @@ func connectionUnsuccessful(error_message): popup.popup_exclusive = true popup.get_ok().visible = true popup.popup_centered() + + +func historySelected(index): + var apclient = global.get_node("Archipelago") + var details = apclient.connection_history[index] + + self.get_node("Panel/server_box").text = details[0] + self.get_node("Panel/player_box").text = details[1] + self.get_node("Panel/password_box").text = details[2] diff --git a/archipelago.tscn b/archipelago.tscn index f0b8ab9..f063af9 100644 --- a/archipelago.tscn +++ b/archipelago.tscn @@ -86,9 +86,9 @@ align = 2 [node name="credit5" parent="Panel" instance=ExtResource( 1 )] margin_left = 1239.0 -margin_top = 271.0 +margin_top = 422.0 margin_right = 1829.0 -margin_bottom = 335.0 +margin_bottom = 486.0 custom_fonts/font = ExtResource( 2 ) custom_styles/normal = SubResource( 1 ) text = "OPTIONS" @@ -155,9 +155,9 @@ margin_bottom = 58.0 [node name="confusing_box" type="CheckBox" parent="Panel"] margin_left = 1227.0 -margin_top = 351.0 +margin_top = 502.0 margin_right = 1832.0 -margin_bottom = 439.0 +margin_bottom = 590.0 custom_fonts/font = ExtResource( 6 ) custom_icons/checked = ExtResource( 8 ) custom_icons/unchecked = ExtResource( 7 ) @@ -165,9 +165,9 @@ text = "Make world more confusing" [node name="multiplayer_box" type="CheckBox" parent="Panel"] margin_left = 1227.0 -margin_top = 461.0 +margin_top = 612.0 margin_right = 1832.0 -margin_bottom = 549.0 +margin_bottom = 700.0 custom_fonts/font = ExtResource( 6 ) custom_icons/checked = ExtResource( 8 ) custom_icons/unchecked = ExtResource( 7 ) @@ -175,13 +175,22 @@ text = "Show other players" [node name="position_box" type="CheckBox" parent="Panel"] margin_left = 1227.0 -margin_top = 571.0 +margin_top = 722.0 margin_right = 1832.0 -margin_bottom = 654.0 +margin_bottom = 810.0 custom_fonts/font = ExtResource( 6 ) custom_icons/checked = ExtResource( 8 ) custom_icons/unchecked = ExtResource( 7 ) text = "Send position to tracker" +[node name="connection_history" type="MenuButton" parent="Panel"] +margin_left = 1239.0 +margin_top = 276.0 +margin_right = 1829.0 +margin_bottom = 372.0 +custom_fonts/font = ExtResource( 6 ) +text = "connection history" +flat = false + [connection signal="pressed" from="Panel/connect_button" to="Panel/connect_button" method="_connect_pressed"] [connection signal="pressed" from="Panel/quit_button" to="Panel/quit_button" method="_back_pressed"] -- cgit 1.4.1 From 750ebbf9aa25f0209d7f1c7186718fa07377881d Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 17 Apr 2024 12:50:34 -0400 Subject: Prevent colorful cdp if genned before 0.4.5 --- Archipelago/client.gd | 16 ++++++++++++++++ Archipelago/load.gd | 23 ++++++++++++----------- 2 files changed, 28 insertions(+), 11 deletions(-) (limited to 'Archipelago/client.gd') diff --git a/Archipelago/client.gd b/Archipelago/client.gd index 489fdb9..2f66c1b 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd @@ -95,6 +95,7 @@ var _item_name_to_id = {} # LINGO only var _location_name_to_id = {} # LINGO only var _remote_version = {"major": 0, "minor": 0, "build": 0} +var _gen_version = {"major": 0, "minor": 0, "build": 0} # TODO: caching per MW/slot, reset between connections var _authenticated = false @@ -233,6 +234,7 @@ func _on_data(): if cmd == "RoomInfo": _seed = message["seed_name"] _remote_version = message["version"] + _gen_version = message["generator_version"] var needed_games = [] for game in message["datapackage_checksums"].keys(): @@ -779,3 +781,17 @@ func colorForItemType(flags): return "#d63a22" else: # filler return "#14de9e" + + +func compareVersion(lhs, rhs): + if lhs["major"] == rhs["major"]: + if lhs["minor"] == rhs["minor"]: + return lhs["build"] < rhs["build"] + else: + return lhs["minor"] < rhs["minor"] + else: + return lhs["major"] < rhs["major"] + + +func wasGeneratedBeforeVersion(major, minor, build): + return compareVersion(_gen_version, {"major": major, "minor": minor, "build": build}) diff --git a/Archipelago/load.gd b/Archipelago/load.gd index 566ee39..27e70b7 100644 --- a/Archipelago/load.gd +++ b/Archipelago/load.gd @@ -96,18 +96,19 @@ func _load(): wanderer_achieve.translation = Vector3(-51, -33, 35) # way under the map - # Turn THE COLORFUL into a cdp. - var real_colorful = panels_parent.get_node("Countdown Panels/Panel_colorful_colorful") var cdp_auto_scene = load("res://nodes/panel_countdown_auto.tscn") - var colorful_cdp = cdp_auto_scene.instance() - colorful_cdp.name = "CountdownPanel_colorful" - colorful_cdp.replace_with = "../../Panels/Countdown Panels/Panel_colorful_colorful" - colorful_cdp.panels = "../../Panels/Doorways Room" - colorful_cdp.translation = real_colorful.translation - colorful_cdp.rotation = real_colorful.rotation - get_node("CountdownPanels").add_child(colorful_cdp) - real_colorful.translation = Vector3(-51, -35, 35) # way under the map - get_node("Doors/Doorway Room Doors/Door_gray2").queue_free() + if !apclient.wasGeneratedBeforeVersion(0, 4, 5): + # Turn THE COLORFUL into a cdp. + var real_colorful = panels_parent.get_node("Countdown Panels/Panel_colorful_colorful") + var colorful_cdp = cdp_auto_scene.instance() + colorful_cdp.name = "CountdownPanel_colorful" + colorful_cdp.replace_with = "../../Panels/Countdown Panels/Panel_colorful_colorful" + colorful_cdp.panels = "../../Panels/Doorways Room" + colorful_cdp.translation = real_colorful.translation + colorful_cdp.rotation = real_colorful.rotation + get_node("CountdownPanels").add_child(colorful_cdp) + real_colorful.translation = Vector3(-51, -35, 35) # way under the map + get_node("Doors/Doorway Room Doors/Door_gray2").queue_free() # Set up The Master to be variable. var old_master_cdp = get_node("CountdownPanels/CountdownPanel_countdown_16") -- cgit 1.4.1 From f75a3599eae42952c4360f638d727fceea07f3a9 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Wed, 17 Apr 2024 12:51:28 -0400 Subject: Bump version --- Archipelago/client.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Archipelago/client.gd') diff --git a/Archipelago/client.gd b/Archipelago/client.gd index 2f66c1b..8abc42c 100644 --- a/Archipelago/client.gd +++ b/Archipelago/client.gd @@ -17,7 +17,7 @@ var enable_multiplayer = false var track_player = false var connection_history = [] -const my_version = "2.1.1" +const my_version = "2.2.0" const ap_version = {"major": 0, "minor": 4, "build": 5, "class": "Version"} const color_items = [ "White", "Black", "Red", "Blue", "Green", "Brown", "Gray", "Orange", "Purple", "Yellow" -- cgit 1.4.1