this repo has no description
1const std = @import("std");
2const log = std.log.scoped(.main);
3const mem = std.mem;
4const process = std.process;
5
6const vaxis = @import("vaxis");
7const View = vaxis.widgets.View;
8const Cell = vaxis.Cell;
9const border = vaxis.widgets.border;
10
11const Event = union(enum) {
12 key_press: vaxis.Key,
13 winsize: vaxis.Winsize,
14};
15
16pub fn main(init: std.process.Init) !void {
17 const io = init.io;
18 const alloc = init.gpa;
19
20 var world_map: []const u8 = lg_world_map;
21 var map_width = lg_map_width;
22 var map_height = lg_map_height;
23 var use_sm_map = false;
24 var use_mini_view = false;
25
26 var x: u16 = 0;
27 var y: u16 = 0;
28 var h: u16 = 0;
29 var w: u16 = 0;
30 defer log.info(
31 \\Results:
32 \\ - Map Size: {d}x{d}
33 \\ - Screen Size: {d}x{d}
34 \\ - Position: {d}, {d}
35 , .{
36 map_width, map_height,
37 w, h,
38 x, y,
39 });
40
41 var buffer: [1024]u8 = undefined;
42 var tty: vaxis.Tty = try .init(io, &buffer);
43 defer tty.deinit();
44
45 const writer = tty.writer();
46
47 // Initialize Vaxis
48 var vx = try vaxis.init(io, alloc, init.environ_map, .{
49 .kitty_keyboard_flags = .{ .report_events = true },
50 });
51 defer vx.deinit(alloc, tty.writer());
52 var loop: vaxis.Loop(Event) = .init(io, &tty, &vx);
53 try loop.start();
54 defer loop.stop();
55 try vx.enterAltScreen(writer);
56 try writer.flush();
57 try vx.queryTerminal(tty.writer(), .fromSeconds(20));
58
59 // Initialize Views
60 // - Large Map
61 var lg_map_view = try View.init(alloc, .{ .width = lg_map_width, .height = lg_map_height });
62 defer lg_map_view.deinit();
63 //w = lg_map_view.screen.width;
64 //h = lg_map_view.screen.height;
65 var lg_map_buf: [lg_map_width * lg_map_height]u8 = undefined;
66 _ = mem.replace(u8, lg_world_map, "\n", "", lg_map_buf[0..]);
67 _ = lg_map_view.printSegment(.{ .text = lg_map_buf[0..] }, .{ .wrap = .grapheme });
68 // - Small Map
69 var sm_map_view = try View.init(alloc, .{ .width = sm_map_width, .height = sm_map_height });
70 defer sm_map_view.deinit();
71 w = sm_map_view.screen.width;
72 h = sm_map_view.screen.height;
73 var sm_map_buf: [sm_map_width * sm_map_height]u8 = undefined;
74 _ = mem.replace(u8, sm_world_map, "\n", "", sm_map_buf[0..]);
75 _ = sm_map_view.printSegment(.{ .text = sm_map_buf[0..] }, .{ .wrap = .grapheme });
76 // - Active Map
77 var map_view = lg_map_view;
78
79 // TUI Loop
80 while (true) {
81 const event = try loop.nextEvent();
82 switch (event) {
83 .key_press => |key| {
84 // Close Demo
85 if (key.matches('c', .{ .ctrl = true })) break;
86 // Scroll
87 if (key.matches(vaxis.Key.left, .{})) x -|= 1;
88 if (key.matches(vaxis.Key.right, .{})) x +|= 1;
89 if (key.matches(vaxis.Key.up, .{})) y -|= 1;
90 if (key.matches(vaxis.Key.down, .{})) y +|= 1;
91 // Quick Scroll
92 if (key.matches(vaxis.Key.left, .{ .ctrl = true })) x -|= 30;
93 if (key.matches(vaxis.Key.right, .{ .ctrl = true })) x +|= 30;
94 if (key.matches(vaxis.Key.up, .{ .ctrl = true })) y -|= 10;
95 if (key.matches(vaxis.Key.down, .{ .ctrl = true })) y +|= 10;
96 // Goto Side
97 if (key.matches(vaxis.Key.left, .{ .shift = true })) x -|= map_width;
98 if (key.matches(vaxis.Key.right, .{ .shift = true })) x +|= map_width;
99 if (key.matches(vaxis.Key.up, .{ .shift = true })) y -|= map_height;
100 if (key.matches(vaxis.Key.down, .{ .shift = true })) y +|= map_height;
101 // Change Zoom (Swap Map Views)
102 if (key.matches('z', .{})) {
103 if (use_sm_map) {
104 world_map = lg_world_map;
105 map_width = lg_map_width;
106 map_height = lg_map_height;
107 map_view = lg_map_view;
108 } else {
109 world_map = sm_world_map;
110 map_width = sm_map_width;
111 map_height = sm_map_height;
112 map_view = sm_map_view;
113 }
114 use_sm_map = !use_sm_map;
115 w = map_width;
116 h = map_height;
117 }
118 // Mini View (Forced Width & Height Limits)
119 if (key.matches('m', .{})) use_mini_view = !use_mini_view;
120 },
121 .winsize => |ws| try vx.resize(alloc, tty.writer(), ws),
122 }
123
124 const win = vx.window();
125 win.clear();
126
127 const controls_win = win.child(.{
128 .height = 1,
129 });
130 _ = controls_win.print(
131 if (win.width >= 112) &.{
132 .{ .text = "Controls:", .style = .{ .bold = true, .ul_style = .single } },
133 .{ .text = " Exit: ctrl + c | Scroll: dpad | Quick Scroll: ctrl + dpad | Goto Side: shift + dpad | Zoom: z | Mini: m" },
134 } else if (win.width >= 25) &.{
135 .{ .text = "Controls:", .style = .{ .bold = true, .ul_style = .single } },
136 .{ .text = " Win too small!" },
137 } else &.{
138 .{ .text = "" },
139 },
140 .{ .wrap = .none },
141 );
142
143 // Views require a Window to render to.
144 const map_win = if (use_mini_view)
145 win.child(.{
146 .y_off = controls_win.height,
147 .border = .{ .where = .top },
148 .width = 45,
149 .height = 15,
150 })
151 else
152 win.child(.{
153 .y_off = controls_win.height,
154 .border = .{ .where = .top },
155 });
156
157 // Clamp x and y
158 x = @min(x, map_width -| map_win.width);
159 y = @min(y, map_height -| map_win.height);
160
161 map_view.draw(map_win, .{
162 .x_off = x,
163 .y_off = y,
164 });
165 if (use_mini_view) {
166 _ = win.printSegment(
167 .{ .text = "This is a mini portion of the View." },
168 .{ .row_offset = 16, .col_offset = 5, .wrap = .word },
169 );
170 }
171
172 // Render the screen
173 try vx.render(writer);
174 try writer.flush();
175 }
176}
177
178const sm_world_map =
179 \\ +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN+
180 \\ W................................................................................................E
181 \\ W................................................................................................E
182 \\ W............................ @:::::::::@ ..................... .............................E
183 \\ W..... . ..... ::: ...::::::: ........ ...... %@%...........:*%@ . ..............E
184 \\ W..@:::::::::::::::::::: ::: ::::@ @@ ..... %#%%%%%%%%%%%%...........................* .......E
185 \\ W ::::@::::::::::::: .. :: ... * ....... . %%% %%%%%%%%%%%%%..................... ..* .........E
186 \\ W .....@::::::::::::.=::::: ........... @% @. %% %%%-...................:%% @. ..........E
187 \\ W...... :::%@@:@:::::::::@ :-........... @%%%%%%%%%%%%%%%%........................ .. ..........E
188 \\ W......@::::@@@.=-:::::=: ............. %@%%@# %%%%%%%..%%%.........@............ @=............E
189 \\ W..... :::::::::::::: ................. %%% @ % ........................... . . .............E
190 \\ W..... #:::::::::::@ .................. @=====@ .........................@ .= ............E
191 \\ W...... :::::@ @ ................... ============== .... ..................... .. .............E
192 \\ W....... .::=.. :# ................. ================ ...... ............... .................E
193 \\ W......... ::::... @-............... ================- ....@ ...-... . ....@ .. ...............E
194 \\ W............. :=.. % ...............==================+ ......@. .... ... .. @ ..............E
195 \\ W............... ######@ ............ ========@=@@@======@........ @.... . .. ................E
196 \\ W................ ######### ................. ===========@............... .@ ..@ =..............E
197 \\ W............... #############= ............. ========== ................. . ..*. . --- .......E
198 \\ W................ ###@@@#@#####%.............. ======== .................... @.@.... .*-=- ......E
199 \\ W................. ##@##@@#@### .............. ========-. -...................... -- + ........E
200 \\ W................... ##########................=======% *= .................... @-------- .......E
201 \\ W................... #######* ................-====== .-+....................#-@--@-@#--- ......E
202 \\ W................... ####### .................. ====- ........................@----------- ......E
203 \\ W................... ###### ....................@-* .......................... = ----:..... .E
204 \\ W....................####@ ......................................................... - .... -@ E
205 \\ W.................... ###.................................................................%-@ ...E
206 \\ W..................... #@........................................................................E
207 \\ W...................... ......................................................................E
208 \\ +SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
209 \\
210;
211const sm_map_width = mapWidth: {
212 @setEvalBranchQuota(100_000);
213 break :mapWidth mem.indexOfScalar(u8, sm_world_map, '\n').?;
214};
215const sm_map_height = mapHeight: {
216 @setEvalBranchQuota(100_000);
217 break :mapHeight mem.count(u8, sm_world_map, "\n");
218};
219
220const lg_world_map =
221 \\ +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN+
222 \\ W...........................................................................................................................................................................................................................................................................................................................................................................................................E
223 \\ W...........................................................................................................................................................................................................................................................................................................................................................................................................E
224 \\ W...........................................................................................................................................................................................................................................................................................................................................................................................................E
225 \\ W...........................................................................................................................................................................................................................................................................................................................................................................................................E
226 \\ W...........................................................................................................................................................................................................................................................................................................................................................................................................E
227 \\ W...........................................................................................................................................................................................................................................................................................................................................................................................................E
228 \\ W...........................................................................................................................................................................................................................................................................................................................................................................................................E
229 \\ W...........................................................................................................................................................................................................................................................................................................................................................................................................E
230 \\ W........................................................................................................................................................ ............................................................................................................................................................................................................................................E
231 \\ W................................................................................................................................ ................................................................................................................................................................................................................................E
232 \\ W........................................................................................................................... @@@@@@@@%-::::---::::::=#@@@@.... ................................................................................................................................................................................................................................E
233 \\ W..................................................................................................................... .@@@@:::::::::::::::::::::::::::::::::::::-@@ ...............................................................................................................................................................................................................................E
234 \\ W.................................................................................................................... %@@@#:::::::::::::::::::::::::::::::::::::@@- ...................................................................................... .........................................................................................................................E
235 \\ W................................................................................................................... @:::::::::::::::::::::::::::::::::::::::::@ .................................................................................... .@....@@: .......................................................................................................................E
236 \\ W............................................................................................... .... +:::::::::::::::::::::::::::::::::- ........................................................................... .. #@-.................@ ......................................................................................................E
237 \\ W......................................................................................... +@@@@@@@@@@ .... @:::::::::::::::::::::::::::::::@: ........................................................................ @@...........................%%%%*....%%@@= ..................................................................................E
238 \\ W........................ ... .................... @:::::::::::::@ ........ @::::::::::::::::::::::::::::+% ............................... ....................... @%%%%@@@%%%............................................-@@ %@@*******@@ .. ............................................................E
239 \\ W................... *@@#+++++++++@@%=== ======== ... @@::@ +::::::::::::::::-@ ....... *:::::::::::::::::::::::::::%@ ............................. %@@@@@= .. :@%%%%%%%%%%#.........................................................................+@= ................................................E
240 \\ W................ :@%=:::::::::::::::::::::::%%%-.:::::::::::::+%@@ =:::::--:::::@##%%::::::::@ ..... @:::::::::::::::::::::::%@+ ............................ @@%#%%%%%%%%%%#@@* +***@@%%%%%%%%%%%%%##..........................................................................................-%@@@@@+ .........................................E
241 \\ W............. .*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::%@@@=:::::::::::::::@@ @::::::::@ .... @:::::::::::::::::::@@. ...................... @%%%%%%%%%%%%%%%#%%%%%%%@@%%%%@@@%%%%%%%%%#%%%%%%%%%%%%=.....................................................................................................@@@%. ....................................E
242 \\ W............ =#-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=@* @+:::::=:::+@ ... @::::::::::::::::@. @@@@@%%@@@ ................... @@%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%............................................................................................................@@@ ...................................E
243 \\ W......... *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::@ *%::::::::::@ @@ ... *::::::::::@@@ ... %%%%%%%%@ ................ @@%%%%%##%* -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%......................................................................................................* @...@ ...................................E
244 \\ W....... =@@=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::@ =@@@@ @:::::=@ ..... *:::::::::@ ....... :=@%%@ ............. %@%%%%%%%%%@: @%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#=.......................................................................................................@ ...................................E
245 \\ W...... @:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::@: @:::-@ @@* ........ @::::::@- .............. ............... @@@%%%%%%%%%%@ @%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.....................................................................................................+@@ .......................................E
246 \\ W..... :@::::::::::::::::#%*::::::::::::::::::::::::::::::::::::::::::::::::::::@ ...... @:::::::@ .......... ..@:@: .............................. .... *@%%%%%%%%%%%@* +@%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%....................................................................................@ .@.=@.........@ .........................................E
247 \\ W.... @::::::::::=%@@ #%:::::::::::::::::::::::::::::::::::::::::::::- ........ @::::::::@:@=::@ ........... ................................ -@@ .. @%%%@@%%%%%%%=# @%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.........................................................................%@@@@@####@# +....#% ............................................E
248 \\ W. -@-:::*@- .. @::::::::::::::::::::::::::::::::::::::::::::@+ ..... @:::::::::::::::.- ................................................... @%%%@% ... @%%%@# #@%%% : : - %= :: : +%%%%%%%%%%%%%%%%%%%%%%.......................................................................-. @.....@ ...............................................E
249 \\ W @:::::%@ ............. ::::::::::::::::::::::::::::::::::::::::::::::::%+ +@:::::::::::::::::@ ............................................... %@%%%= ... %@ @%%%@ @%%%%% %. . - : . . +%%%%%%%%%%%%%%%#*%##%-.......................................................................:* ..... @......@: ..............................................E
250 \\ W@::::+@ .................. ::::::::::::::::::::::::::::::::::::::::::::::::::.+@ @*::::::::::::::::::::@ ........................................... :@@ @%%@# . #%%- @@@%%%%%% . . - # : . *#%%%%%%%%%%%#...............................................................................-@%% .... @........ ..............................................E
251 \\ W ...................... :::::::::::::::::::::::::::::::::::::::::::::::::::-. @::::::::::::::::::::::::* ........................................... @%%%@ @%%%@ @@@%%%%%%%%%%%%%%%%%%% @. . - : *#. *%%%%%%%%%%%%%#.........................................................................................@ .... @.....% ..............................................E
252 \\ W.. ......................... ::::::::::@:@:@@@:%@@%%@@@@@=@:::::::::::::::::::::= #=:::::::::::::::::::::::@ ........................................... :@%%%@ #%%%%%@ @@%%%%%%%%%%%%%%%%%%%%%% % % . .* += *%: -%%%%%%%%%#%............................................................................................@ ... +@..# ..............................................E
253 \\ W............................... .@.::::::::@#@.@+@@%@*@:%@:@@#@:::::::::::::::::::::::::::::::::::::::::::::::::@ ........................................... @@@ @@%@@@@ @@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%...............................................................................................@- .... @ ..............................................E
254 \\ W............................... @::::::::::@@@:@+@%%@%@:%@:@@@@:::::::::::::::::::::::::::::::::::::::%@@ @:::::@ ........................................... @@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.................................................................................................@ ..... ...............................................E
255 \\ W............................... @:::::::::@=@:@*@#%@+@:%@:@@=@::::::::::::::::::::::::::::::::::::::*@ @::::::* ................................................ .@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%##%%%%%%%%%%%%%.............................................................................................@@=.-: .........................................................E
256 \\ W............................... @:::::::::::::::::::::::::::.::::::::::::::::::::::::::::::::::::::. @@@:@-:+= ................................................ @%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#.......*%##%%%%%%%#%...........................................................................................- @.@ .........................................................E
257 \\ W.............................. @::::::::.:@@::@@:@@+@@.@@@:@*:@@*:@@*:::::::::::::::::::::::::::::::::@ ............................................. . @%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#............%%%%%%%%%%..............................@@.+@-@.@.@@@................................................@ .....................................................E
258 \\ W............................ -=:::::::::::@@*:@@*@@+@::@:@:@*@@=@:@@@::::::::::::::::::::::::::::::@@@ ..................................................... @%%%%%%%%%#%%%%%%@-@@%%%#%%%%%%%%%%%%%%%%%%%%##%#.........%#%%%%%%%%%=...........................@@=.@@..@.@.@...............................................@ *@@ ....................................................E
259 \\ W........................... @:::::::::::::@=@:@@@%@+@@.@@@:@*@@:::@.@:::::::::::::::::::::@@# :%@ ...................................................... @%%%%%%%%%%%%%@@@@@- *@%#@- .@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%........#%%%%%%%%%%..........................*@@@.:*@.@.@+@..............................................@ =....# ....................................................E
260 \\ W.......................... @:::::::::::::+@@@:@=@%@+@::@.@:@*#@=@:@@@:::::::::::::::::::.@ ........................................................ @%%%%%%%%%%%%%%@ #@%%@@ .@%%%%%%%%%%%%%%%#%%%%%%%%%%..........%%%%%%%#%=.........................@@=@.@@@.@.@.@............................................@ . =..++ .....................................................E
261 \\ W......................... @::::::::::::::-=:=:=:--=:==:=:=:=::*@::=:=::::::::::::::::@# ................................................................. @%%%%%%%%%%%@@- .... .@@%%@* @%%%%@@@***%%%#......................%%%%%%%%%..................................................................................% ... .....................................................E
262 \\ W......................... @.:::::::::::::::::::::::::::::::::::::::::::::::::::::::-% ................................................................... @%%%%%%%%%%%@ ....... @%@ @%%#@ -...............................#%%%%#.........................................................................% #*@@....+ ..... ..@ .....................................................E
263 \\ W......................... @::::::::::::::::::::::::::::::::::::::::::::::::::::::@ ....................................................................... @%%%%%%%%%@: @%%%%@ :%%% .@.............................................................................................................@ @....@ ... ...@ .....................................................E
264 \\ W.......................... @:::::::::::::::::::::::::::::::::::::::::::::::::::::- .......................................................................... ==-@@@@@ .@@+--*#####@# @%@ @@@ @................................................................................................................= @... +...@ .....................................................E
265 \\ W.......................... @::::::::::::::::::::::::::::::::::::::::::::::::::::.@ ........................................................................... %@@@@@@=-============@ . @+.=.....................................................................................................@ #..@ @@%....@ .....................................................E
266 \\ W.......................... =@::::::::::::::::::::::::::::::::::::::::::::::::::@ ........................................................................... @=====================@ .. ...... @......................................................................................................@ +- @.....@ .....................................................E
267 \\ W........................... *::::::::::::::::::::::::::::::::::::::::::::::@= ............................................................................ @-======================-@+.. ... @.......................................................................................................@ .@...%*+ .......................................................E
268 \\ W............................ *:::::::::::::::::::::::::::::::::::::::::::@ ............................................................................. :*-============================-@:. +====-@@@@@@@@* %.........................................................................................................@ .. @..-@ @@ .........................................................E
269 \\ W............................ @:::@@::::::::::::::::::::::::::::-*=:::::=. ............................................................................... @==================================--===============-@#..........................................................................................................- .. *@ @.@ .........................................................E
270 \\ W............................. @:@ @:::::::::::::::::::.@...... #@::: ............................................................................. ##=====================================================@ *................- #.....................................................................................= ... :.. .........................................................E
271 \\ W.............................. @:@ @::::::::::::::::@ :-:: ............................................................................ @@-======================================================% -...............@ @..................................................................................+. ... ............................................................E
272 \\ W.............................. @::@ %::::::::::::::+ ........... @.: .......................................................................... @=========================================================-@ %.................@# @.:@@:...........................................................................@ ...... ..............................................................E
273 \\ W.............................. @:.- *-:::::::::::.@ ............ .@ ......................................................................... @============================================================-= *+.................@ . ==@@......................................................................:. .........................................................................E
274 \\ W............................... =@:+% @::::::::::.@ ........... ........................................................................ @-============================================================-@. @................:%%:..:@ :+-...........................................................% .........................................................................E
275 \\ W................................ =.@ -@::::::::.% ..... -@::::*@@ .................................................................... #-===============================================================:@ @:........................+ .. %........................................................@% ...........................................................................E
276 \\ W................................. =::::::::.@ ... #@ @: -@:::@@: ............................................................. @=================================================================% @........................@ ...... @ .....................-@@-@.........................** ............................................................................E
277 \\ W....................................... @:::::::::.@ #::% *:::=: ........................................................... *-=================================================================- @.......................@ ........ ...................@ @..................@ -@@ ....... ....................................................................E
278 \\ W....................................... +@.:::::::::%@@@@@@:::@ ..... @::::@ .......................................................... @-=================================================================@. @....................@ ............ :@...............@ . :-...............- ........ ..................................................................E
279 \\ W........................................ -@::::::::::::::::@ ....... .-+@@-: ........................................................... :==================================================================-@ @.................@ ............. @..............@ .... *................+@ ......... @..@ ..................................................................E
280 \\ W.......................................... @@**+:.::::::::@ ......... ........................................................... @====================================================================-+ @.............@+ ............... :*..........*@ ....... +.................@ ........ +:..- .................................................................E
281 \\ W............................................. *%::::::::::@ ............................................................................. +-=====================================================================*@ #........-#@ .................. #........** ........ @..............- ....... @:..@# ................................................................E
282 \\ W.................................................... -@::::::::% ......... .............................................................. +-========================================================================% @...:@@ ...................... @.......@ ............. =.............+ ....... @@..# ...............................................................E
283 \\ W........................................................ @+::::@ ...... :+: ....................................................... @-========================================================================-@ =%- ....................... @......* ............... ..............@ ......... *@@ ...............................................................E
284 \\ W.......................................................... @:::@ ... @@%####@. ................................................... %+===================================@@=-@@=@@@-@@-@@@-@@@=================. .#@+-=@ ........................ @.....: ................ ..= @.......-= ........... ................................................................E
285 \\ W............................................................. -::+@ ###################@ ................................................... #-================================-@%%-@--@=@+@@=@-@-@+@-=========================@ .......................... @...@- ................ ..@ @...@@ ..................................................................................E
286 \\ W............................................................. -@@:+@@@#######################@ ................................................... *-================================@=@-@=-@=@+@@=@-=-@:@=========================@ ........................... @.% ................ ...@ @@: ........ ........................................................................E
287 \\ W............................................................... @%########################@ ............................................... --==============================*@*@-@--@=@+@@-@-@-@+@========================-* ............................. @+ ............. @...@ ......... : ......................................................................E
288 \\ W................................................................... =###########################@@* .............................................. @-================---========================================================@ ............................... *.- ........... %%...@ ......... #.@ ....................................................................E
289 \\ W....................................................................... .##############################+@ ............................................. @%=---=-*+--%@ @-====================================================-@ .................................. ........... @.@ @...@ ....... @#....-: ....................................................................E
290 \\ W...................................................................... @################################=@ ............................................... @-==============================================-@ .................................... .............. @..@ @..@ ... =@.....@ .. ..............................................................E
291 \\ W..................................................................... @##################################@ ................................................................... +============================================--* ......................................................... *...@ @.@ @........@ .............................................................E
292 \\ W.................................................................... @####################################@ .................................................................. *===========================================%# ............................................................ @..#@@ @............@ .++#@.@ .... ....................................................E
293 \\ W................................................................... @######################################@+ ............................................................. @==========================================-@ ............................................................... +....@ @..........@# *.....% .. ............................................E
294 \\ W................................................................... @#############################################%@+ ......................................................... @-========================================-@ .................................................................. @-...@- @.........+: @...*@ .. @---+: .......................................E
295 \\ W................................................................... @##################################################@@ ...................................................... =-=====================================-@ .................................................................... @....% @........@ @....# .... #+--+##---=@% .....................................E
296 \\ W................................................................... %##############%@@@#@@@#@%@%@@@#@%@@#################@. ..................................................... @-===================================-@ ........................................................................ %@..@ @@@@#@ .....+ ..... @+=-----------+@ ..................................E
297 \\ W................................................................... @###############@@###@#@#@%@%#@%#@@@@####################@= .................................................... @-==================================@ .......................................................................... @..@ .:@@@@ ...... @------------#@ .................................E
298 \\ W................................................................... +%################@@#@#@#@%@%#@%#@@@@#####################* ..................................................... :-=================================@ ............................................................................. *...:@@@@# ........... #-----------@ ................................E
299 \\ W.................................................................... @#############%@%@#@#@#@%@##@%#@%@@#####################@ ...................................................... @=================================@ .............................................................................. @........@# ...................... @------------@ ...............................E
300 \\ W..................................................................... #######################################################. ....................................................... @=================================@ .............................................................................. @@%.++@ ............... .. :+:@---@ @--*% ..............................E
301 \\ W..................................................................... @############@@#%@%%@%@@@#@@@#@#%@@%#@@##############% ........................................................ .*=================================== .................................................................................. .............. @%%@@ .............................E
302 \\ W....................................................................... @###########@@#%@@@@%@@##@#@#@#@%@@#@@@#############* ........................................................ %=================================-# .... ................................................................................................. %=@@@@= . :@ .............................E
303 \\ W........................................................................ @#########%@@@%@@@@%@@@%@@@#@#@%###@%@###########@ ........................................................ @-=================================% ... :*@ ........................................................................................ @------+ . -=-@ .... ...............................E
304 \\ W......................................................................... @########@@@@%@@@@%@@#%@#@#@#@%@@%@@@########### ......................................................... @===================================% @-=+ ....................................................................................... #@@@@%@--------: @--+ .....................................E
305 \\ W.......................................................................... @############################%#################+ ......................................................... ===================================-@ =@@===+ .................................................................................... %=--------------= .=---=+ ....................................E
306 \\ W........................................................................... @@#########################################** ......................................................... ==================================-@ @-======@ ................................................................................... %+------------------*@= @-----# ....................................E
307 \\ W.............................................................................. @#######################################@ ......................................................... +===============================-@ =======% ................................................................................. .@-----------------------------# ....................................E
308 \\ W................................................................................. =#######################################@ ......................................................... -+============================-@ . @=====+ ................................................................................ :@--------------------------------%* ..................................E
309 \\ W................................................................................. @#####################################@ ........................................................... --==========================@ .. @====-@ .............................................................................. @--------------------------------------@ .................................E
310 \\ W.................................................................................. @#####################################@ ............................................................. %==========================@ ... @-=====@ ............................................................................. @-----------------------------------------% ................................E
311 \\ W.................................................................................. @*#################################%@ .............................................................. %=========================@ ... +-====* ............................................................................. @-----+@@-@*@@-@@@*@@@*@@#-@@=-@--@-*@@-----=@ ...............................E
312 \\ W.................................................................................. :*############################+@* ................................................................ %========================-@ ... @-==-@ .............................................................................. *-----@+@-@*@@+@---#@-*@*@-@*#-@--@-@+@-------* ..............................E
313 \\ W.................................................................................. :*###########################@ ..................................................................... @-=======================* ..... @@-@ .............................................................................. *-----@-@-@*@@--@@-#@-*@%@-@=@-@--@-@-@-------@ ..............................E
314 \\ W.................................................................................. :*########################### ........................................................................ =+=====================@ ....... ............................................................................... @-----@#@+@#@@+@-@-#@-*@+@*@%@-@--@-@#@+------@ ..............................E
315 \\ W.................................................................................. :############################@ ........................................................................ #===================*. ................................................................................................ @---------------------------------------------= ...............................E
316 \\ W.................................................................................. %##########################@ ......................................................................... +================-@ ................................................................................................ =--------------------------------------------# ...............................E
317 \\ W.................................................................................. @#########################@ ........................................................................... @================@ .................................................................................................. @-------------------------------------------@ ................................E
318 \\ W................................................................................... @#######################%* ............................................................................. @-===========-@: .................................................................................................... *----------------------------------------+@ .................................E
319 \\ W................................................................................... @#######################* ............................................................................... *:=========-@* ...................................................................................................... *----% @--------------------@ .................. ..........E
320 \\ W................................................................................... @#####################%= ................................................................................ .@-=-#%%%%@ ........................................................................................................ :*... @------------------@ .................. @@ ..........E
321 \\ W................................................................................... @####################@ ................................................................................. ........................................................................................................... ........... @--------------@ .................... @--@ .........E
322 \\ W................................................................................... %#################### ..................................................................................... ...................................................................................................................................... @-----------=. ..................... @---@: .......E
323 \\ W................................................................................... @##################% ................................................................................................................................................................................................................................... .%=---------@ .................... @#-----@ .......E
324 \\ W.................................................................................... @##############%@- .................................................................................................................................................................................................................................... @@@ .................. ==----=@ .......E
325 \\ W.................................................................................... @#############@ ......................................................................................................................................................................................................................................... ................... @+----@ .........E
326 \\ W..................................................................................... @############ .................................................................................................................................................................................................................................................................... %@----*@: .............E
327 \\ W...................................................................................... %##########= ................................................................................................................................................................................................................................................................. @-----@ ...............E
328 \\ W...................................................................................... @#########@ ................................................................................................................................................................................................................................................................. =@-----#@# ..................E
329 \\ W....................................................................................... %#######@ ................................................................................................................................................................................................................................................................. %--+@#% ....................E
330 \\ W....................................................................................... @#######@@. ................................................................................................................................................................................................................................................................. ........................E
331 \\ W........................................................................................ @########@ .................................................................................................................................................................................................................................................................. .............................E
332 \\ W......................................................................................... @#####%. ....................................................................................................................................................................................................................................................................................................E
333 \\ W.......................................................................................... @#####+ ....................................................................................................................................................................................................................................................................................................E
334 \\ W........................................................................................... @#####@ .................................................................................................................................................................................................................................................................................................E
335 \\ W............................................................................................ +@@@##%@# ...............................................................................................................................................................................................................................................................................................E
336 \\ W............................................................................................. +@@@@@ ...............................................................................................................................................................................................................................................................................................E
337 \\ W................................................................................................. ................................................................................................................................................................................................................................................................................................E
338 \\ W...........................................................................................................................................................................................................................................................................................................................................................................................................E
339 \\ W...........................................................................................................................................................................................................................................................................................................................................................................................................E
340 \\ W...........................................................................................................................................................................................................................................................................................................................................................................................................E
341 \\ +SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
342 \\
343;
344const lg_map_width: u16 = mapWidth: {
345 @setEvalBranchQuota(100_000);
346 break :mapWidth @intCast(mem.indexOfScalar(u8, lg_world_map, '\n').?);
347};
348const lg_map_height: u16 = mapHeight: {
349 @setEvalBranchQuota(100_000);
350 break :mapHeight @intCast(mem.count(u8, lg_world_map, "\n"));
351};
352
353test {
354 std.testing.refAllDecls(@This());
355}