about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2025-09-19 13:51:30 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2025-09-19 13:51:30 -0400
commit7c804908bc085c8b21b598c784b33636909f0e87 (patch)
tree48fd7c37cc90b73c476603c8b1e180132b297db4
parent9933a357400538b2f73848dceab7d859ee20c8d9 (diff)
downloadlingo2-archipelago-7c804908bc085c8b21b598c784b33636909f0e87.tar.gz
lingo2-archipelago-7c804908bc085c8b21b598c784b33636909f0e87.tar.bz2
lingo2-archipelago-7c804908bc085c8b21b598c784b33636909f0e87.zip
[Client] Added compass
-rw-r--r--client/Archipelago/compass.gd66
-rw-r--r--client/Archipelago/compass_overlay.gd17
-rw-r--r--client/Archipelago/manager.gd5
-rw-r--r--client/Archipelago/pauseMenu.gd31
-rw-r--r--client/Archipelago/player.gd9
-rw-r--r--client/Archipelago/settings_screen.gd6
6 files changed, 134 insertions, 0 deletions
diff --git a/client/Archipelago/compass.gd b/client/Archipelago/compass.gd new file mode 100644 index 0000000..c90475a --- /dev/null +++ b/client/Archipelago/compass.gd
@@ -0,0 +1,66 @@
1extends Node2D
2
3const RADIUS = 48
4
5var _font
6
7
8func _ready():
9 _font = load("res://assets/fonts/Lingo2.ttf")
10
11
12func _draw():
13 draw_circle(Vector2.ZERO, RADIUS, Color(1.0, 1.0, 1.0, 0.8), true)
14 draw_circle(Vector2.ZERO, RADIUS, Color.BLACK, false)
15 draw_string(
16 _font,
17 Vector2(-4, -RADIUS * 3.0 / 4.0),
18 "N",
19 HorizontalAlignment.HORIZONTAL_ALIGNMENT_LEFT,
20 -1,
21 16,
22 Color.BLACK
23 )
24 draw_set_transform(Vector2.ZERO, PI / 2)
25 draw_string(
26 _font,
27 Vector2(-4, -RADIUS * 3.0 / 4.0),
28 "E",
29 HorizontalAlignment.HORIZONTAL_ALIGNMENT_LEFT,
30 -1,
31 16,
32 Color.BLACK
33 )
34 draw_set_transform(Vector2.ZERO, PI)
35 draw_string(
36 _font,
37 Vector2(-4, -RADIUS * 3.0 / 4.0),
38 "S",
39 HorizontalAlignment.HORIZONTAL_ALIGNMENT_LEFT,
40 -1,
41 16,
42 Color.BLACK
43 )
44 draw_set_transform(Vector2.ZERO, PI * 3.0 / 2.0)
45 draw_string(
46 _font,
47 Vector2(-4, -RADIUS * 3.0 / 4.0),
48 "W",
49 HorizontalAlignment.HORIZONTAL_ALIGNMENT_LEFT,
50 -1,
51 16,
52 Color.BLACK
53 )
54 draw_set_transform(Vector2.ZERO)
55 draw_colored_polygon(
56 PackedVector2Array(
57 [Vector2(0, -RADIUS * 5.0 / 8.0), Vector2(-RADIUS / 6.0, 0), Vector2(RADIUS / 6.0, 0)]
58 ),
59 Color.RED
60 )
61 draw_colored_polygon(
62 PackedVector2Array(
63 [Vector2(0, RADIUS * 5.0 / 8.0), Vector2(-RADIUS / 6.0, 0), Vector2(RADIUS / 6.0, 0)]
64 ),
65 Color.GRAY
66 )
diff --git a/client/Archipelago/compass_overlay.gd b/client/Archipelago/compass_overlay.gd new file mode 100644 index 0000000..56e81ff --- /dev/null +++ b/client/Archipelago/compass_overlay.gd
@@ -0,0 +1,17 @@
1extends CanvasLayer
2
3var SCRIPT_compass
4
5var compass
6
7
8func _ready():
9 compass = SCRIPT_compass.new()
10 compass.position = Vector2(1840, 80)
11 add_child(compass)
12
13 visible = false
14
15
16func update_rotation(ry):
17 compass.rotation = ry
diff --git a/client/Archipelago/manager.gd b/client/Archipelago/manager.gd index e46e4f3..a585167 100644 --- a/client/Archipelago/manager.gd +++ b/client/Archipelago/manager.gd
@@ -12,6 +12,7 @@ var ap_server = ""
12var ap_user = "" 12var ap_user = ""
13var ap_pass = "" 13var ap_pass = ""
14var connection_history = [] 14var connection_history = []
15var show_compass = false
15 16
16var client 17var client
17var keyboard 18var keyboard
@@ -82,6 +83,9 @@ func _init():
82 if data.size() > 3: 83 if data.size() > 3:
83 connection_history = data[3] 84 connection_history = data[3]
84 85
86 if data.size() > 4:
87 show_compass = data[4]
88
85 89
86func _ready(): 90func _ready():
87 client = SCRIPT_client.new() 91 client = SCRIPT_client.new()
@@ -110,6 +114,7 @@ func saveSettings():
110 ap_user, 114 ap_user,
111 ap_pass, 115 ap_pass,
112 connection_history, 116 connection_history,
117 show_compass,
113 ] 118 ]
114 file.store_var(data, true) 119 file.store_var(data, true)
115 file.close() 120 file.close()
diff --git a/client/Archipelago/pauseMenu.gd b/client/Archipelago/pauseMenu.gd index df4bfd1..cd1813c 100644 --- a/client/Archipelago/pauseMenu.gd +++ b/client/Archipelago/pauseMenu.gd
@@ -1,5 +1,26 @@
1extends "res://scripts/ui/pauseMenu.gd" 1extends "res://scripts/ui/pauseMenu.gd"
2 2
3var compass_button
4
5
6func _ready():
7 var ap_panel = Panel.new()
8 ap_panel.name = "Archipelago"
9 get_node("menu/settings/settingsInner/TabContainer").add_child(ap_panel)
10
11 var ap = global.get_node("Archipelago")
12
13 compass_button = CheckBox.new()
14 compass_button.text = "show compass"
15 compass_button.button_pressed = ap.show_compass
16 compass_button.position = Vector2(65, 100)
17 compass_button.theme = preload("res://assets/themes/baseUI.tres")
18 compass_button.add_theme_font_size_override("font_size", 60)
19 compass_button.pressed.connect(_toggle_compass)
20 ap_panel.add_child(compass_button)
21
22 super._ready()
23
3 24
4func _pause_game(): 25func _pause_game():
5 global.get_node("Textclient").dismiss() 26 global.get_node("Textclient").dismiss()
@@ -10,4 +31,14 @@ func _main_menu():
10 global.loaded = false 31 global.loaded = false
11 global.get_node("Archipelago").disconnect_from_ap() 32 global.get_node("Archipelago").disconnect_from_ap()
12 global.get_node("Messages").clear() 33 global.get_node("Messages").clear()
34 global.get_node("Compass").visible = false
13 super._main_menu() 35 super._main_menu()
36
37
38func _toggle_compass():
39 var ap = global.get_node("Archipelago")
40 ap.show_compass = compass_button.button_pressed
41 ap.saveSettings()
42
43 var compass = global.get_node("Compass")
44 compass.visible = compass_button.button_pressed
diff --git a/client/Archipelago/player.gd b/client/Archipelago/player.gd index 583d5d6..538830f 100644 --- a/client/Archipelago/player.gd +++ b/client/Archipelago/player.gd
@@ -18,6 +18,8 @@ const kEndingNameByVictoryValue = {
18 18
19signal evaluate_solvability 19signal evaluate_solvability
20 20
21var compass
22
21 23
22func _ready(): 24func _ready():
23 var khl_script = load("res://scripts/nodes/keyHolderListener.gd") 25 var khl_script = load("res://scripts/nodes/keyHolderListener.gd")
@@ -25,6 +27,9 @@ func _ready():
25 var ap = global.get_node("Archipelago") 27 var ap = global.get_node("Archipelago")
26 var gamedata = global.get_node("Gamedata") 28 var gamedata = global.get_node("Gamedata")
27 29
30 compass = global.get_node("Compass")
31 compass.visible = ap.show_compass
32
28 ap.start_batching_locations() 33 ap.start_batching_locations()
29 34
30 # Set up door locations. 35 # Set up door locations.
@@ -351,3 +356,7 @@ func _set_up_invis_wall(x, y, z, sx, sy, sz):
351 newwall.visibility_range_fade_mode = RenderingServer.VISIBILITY_RANGE_FADE_SELF 356 newwall.visibility_range_fade_mode = RenderingServer.VISIBILITY_RANGE_FADE_SELF
352 newwall.skeleton = ".." 357 newwall.skeleton = ".."
353 get_parent().add_child.call_deferred(newwall) 358 get_parent().add_child.call_deferred(newwall)
359
360
361func _process(_dt):
362 compass.update_rotation(global_rotation.y)
diff --git a/client/Archipelago/settings_screen.gd b/client/Archipelago/settings_screen.gd index 140b4f4..b7bfacf 100644 --- a/client/Archipelago/settings_screen.gd +++ b/client/Archipelago/settings_screen.gd
@@ -69,6 +69,12 @@ func _ready():
69 textclient_instance.name = "Textclient" 69 textclient_instance.name = "Textclient"
70 global.add_child(textclient_instance) 70 global.add_child(textclient_instance)
71 71
72 var compass_overlay_script = load("user://maps/Archipelago/compass_overlay.gd")
73 var compass_overlay_instance = compass_overlay_script.new()
74 compass_overlay_instance.name = "Compass"
75 compass_overlay_instance.SCRIPT_compass = load("user://maps/Archipelago/compass.gd")
76 global.add_child(compass_overlay_instance)
77
72 var ap = global.get_node("Archipelago") 78 var ap = global.get_node("Archipelago")
73 var gamedata = global.get_node("Gamedata") 79 var gamedata = global.get_node("Gamedata")
74 ap.connect("ap_connected", connectionSuccessful) 80 ap.connect("ap_connected", connectionSuccessful)