diff options
-rw-r--r-- | client/Archipelago/compass.gd | 66 | ||||
-rw-r--r-- | client/Archipelago/compass_overlay.gd | 17 | ||||
-rw-r--r-- | client/Archipelago/manager.gd | 5 | ||||
-rw-r--r-- | client/Archipelago/pauseMenu.gd | 31 | ||||
-rw-r--r-- | client/Archipelago/player.gd | 9 | ||||
-rw-r--r-- | client/Archipelago/settings_screen.gd | 6 |
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 @@ | |||
1 | extends Node2D | ||
2 | |||
3 | const RADIUS = 48 | ||
4 | |||
5 | var _font | ||
6 | |||
7 | |||
8 | func _ready(): | ||
9 | _font = load("res://assets/fonts/Lingo2.ttf") | ||
10 | |||
11 | |||
12 | func _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 @@ | |||
1 | extends CanvasLayer | ||
2 | |||
3 | var SCRIPT_compass | ||
4 | |||
5 | var compass | ||
6 | |||
7 | |||
8 | func _ready(): | ||
9 | compass = SCRIPT_compass.new() | ||
10 | compass.position = Vector2(1840, 80) | ||
11 | add_child(compass) | ||
12 | |||
13 | visible = false | ||
14 | |||
15 | |||
16 | func 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 = "" | |||
12 | var ap_user = "" | 12 | var ap_user = "" |
13 | var ap_pass = "" | 13 | var ap_pass = "" |
14 | var connection_history = [] | 14 | var connection_history = [] |
15 | var show_compass = false | ||
15 | 16 | ||
16 | var client | 17 | var client |
17 | var keyboard | 18 | var 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 | ||
86 | func _ready(): | 90 | func _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 @@ | |||
1 | extends "res://scripts/ui/pauseMenu.gd" | 1 | extends "res://scripts/ui/pauseMenu.gd" |
2 | 2 | ||
3 | var compass_button | ||
4 | |||
5 | |||
6 | func _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 | ||
4 | func _pause_game(): | 25 | func _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 | |||
38 | func _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 | ||
19 | signal evaluate_solvability | 19 | signal evaluate_solvability |
20 | 20 | ||
21 | var compass | ||
22 | |||
21 | 23 | ||
22 | func _ready(): | 24 | func _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 | |||
361 | func _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) |