diff options
Diffstat (limited to 'racing/lobby.gd')
-rw-r--r-- | racing/lobby.gd | 85 |
1 files changed, 12 insertions, 73 deletions
diff --git a/racing/lobby.gd b/racing/lobby.gd index 86e4920..c81694a 100644 --- a/racing/lobby.gd +++ b/racing/lobby.gd | |||
@@ -11,66 +11,14 @@ var everyone_ready = false | |||
11 | var members_to_join = [] | 11 | var members_to_join = [] |
12 | var is_starting = false | 12 | var is_starting = false |
13 | 13 | ||
14 | var router | ||
15 | |||
14 | const MAX_PLAYERS = 250 | 16 | const MAX_PLAYERS = 250 |
15 | const PROTOCOL_VERSION = 2 | 17 | const PROTOCOL_VERSION = 2 |
16 | const RECIPIENT_BROADCAST_ALL = -1 | 18 | const RECIPIENT_BROADCAST_ALL = -1 |
17 | const LOBBY_MAP_NAME = "ll1_racing" | 19 | const LOBBY_MAP_NAME = "ll1_racing" |
18 | const VERSION = "0.0.7" | 20 | const VERSION = "0.0.7" |
19 | 21 | ||
20 | const LL1_AREAS = [ | ||
21 | ["Starting Room", 0, 0, 0], | ||
22 | ["Second Room", 0, 0, -15], | ||
23 | ["The Traveled", 34, 0, -18], | ||
24 | ["The Agreeable", 30, 0, -45], | ||
25 | ["The Colorful", 10, 0, -83], | ||
26 | ["Suits Area", 0, 0, -78, true], | ||
27 | ["Arrow Garden", -93, 1, -93], | ||
28 | ["The Wondrous (Table)", -108, 1, -78], | ||
29 | ["Courtyard", -64, 0, -71], | ||
30 | ["Yellow Backside Nine", -38, 0, -58], | ||
31 | ["Hot Crusts Area", -20, 0, -81], | ||
32 | ["Crossroads Corner", -28, 0, -54], | ||
33 | ["The Discerning", -54, 0, -34, true], | ||
34 | ["Green Backside", 22, 0, -94], | ||
35 | ["Observant Upstairs", 40, 9, -92, true], | ||
36 | ["Eight Room", 95, 15, -28], | ||
37 | ["The Perceptive", 60, 9, -57], | ||
38 | ["The Tenacious", 0, 0, -43], | ||
39 | ["Rainbow", -96, 0, -41], | ||
40 | ["The Undeterred", -87, 0, 25, true], | ||
41 | ["Directional Gallery", -57, 0, 0], | ||
42 | ["The Eyes They See", -54, 0, -23], | ||
43 | ["Tower First Floor", -27, 0, -23], | ||
44 | ["The Optimistic", 76, 0, -17], | ||
45 | ["The Initiated", 63, 0, -0, true], | ||
46 | ["Art Gallery", 92, 0, 15], | ||
47 | ["Art Gallery Top", 80, 30, 15], | ||
48 | ["Lookout", 75, 18, 51], | ||
49 | ["Knight Night Room", 37, 0, 7], | ||
50 | ["The Seeker", 9, 0, 16, true], | ||
51 | ["Hidden Room", 13, 0, 4], | ||
52 | ["Owl Hallway", 44, 0, -26], | ||
53 | ["Challenge Room", -9, 6, 13], | ||
54 | ["Pilgrim Room", -22, 0, 24, true], | ||
55 | ["Cellar Replica", -44, 0, 30], | ||
56 | ["Elements Area", -61, 0, 40], | ||
57 | ["The Artistic", -25, 0, 54, true], | ||
58 | ["Outside The Wise", -44, 0, 71], | ||
59 | ["The Wise", -72, 0, 72, true], | ||
60 | ["The Scientific", -18, 0, 89], | ||
61 | ["The Wanderer", 0, 0, 80], | ||
62 | ["The Fearless", 18, 10, 90], | ||
63 | ["Champion's Rest", 23, 0, 62, true], | ||
64 | ["The Steady", 31, 0, 77, true], | ||
65 | ["The Bold", 67, 0, 77, true], | ||
66 | ["Color Hunt", 45, 0, 69], | ||
67 | ["Room Room", 95, 6, 84], | ||
68 | ["The Bearer", 61, 0, 51], | ||
69 | ["Tower Third Floor", 18, 0, 33], | ||
70 | ["Rhyme Room (Cross)", 0, 9, 42], | ||
71 | ["Tower Seventh Floor", 0, 37, 64], | ||
72 | ] | ||
73 | |||
74 | 22 | ||
75 | func _ready(): | 23 | func _ready(): |
76 | global._print("Starting Lobby") | 24 | global._print("Starting Lobby") |
@@ -100,6 +48,9 @@ func _ready(): | |||
100 | var race_manager = global.get_node("RaceManager") | 48 | var race_manager = global.get_node("RaceManager") |
101 | race_manager.held_messages.clear() | 49 | race_manager.held_messages.clear() |
102 | 50 | ||
51 | var router_script = load("user://maps/racing/router.gd") | ||
52 | router = router_script.new() | ||
53 | |||
103 | var _ignore = get_node("Panel/main_button").connect("pressed", self, "_main_button_pressed") | 54 | var _ignore = get_node("Panel/main_button").connect("pressed", self, "_main_button_pressed") |
104 | _ignore = get_node("Panel/return_button").connect("pressed", self, "_return_button_pressed") | 55 | _ignore = get_node("Panel/return_button").connect("pressed", self, "_return_button_pressed") |
105 | 56 | ||
@@ -295,6 +246,7 @@ func _read_p2p_packet() -> void: | |||
295 | false | 246 | false |
296 | ) | 247 | ) |
297 | if "start_x" in data: | 248 | if "start_x" in data: |
249 | race_manager.level = data["level"] | ||
298 | race_manager.start_pos = [ | 250 | race_manager.start_pos = [ |
299 | data["start_name"], | 251 | data["start_name"], |
300 | int(data["start_x"]), | 252 | int(data["start_x"]), |
@@ -352,30 +304,16 @@ func _main_button_pressed(): | |||
352 | if everyone_ready and is_vip: | 304 | if everyone_ready and is_vip: |
353 | get_node("Panel/main_button").disabled = true | 305 | get_node("Panel/main_button").disabled = true |
354 | 306 | ||
355 | var rng = RandomNumberGenerator.new() | 307 | var route = router.choose_route() |
356 | rng.randomize() | 308 | var start_pos = route[1] |
357 | 309 | var end_pos = route[2] | |
358 | var start_pos | ||
359 | var end_pos | ||
360 | var found = false | ||
361 | while !found: | ||
362 | var areas_dupe = LL1_AREAS.duplicate() | ||
363 | var i = rng.randi_range(0, areas_dupe.size() - 1) | ||
364 | start_pos = areas_dupe[i] | ||
365 | areas_dupe.remove(i) | ||
366 | i = rng.randi_range(0, areas_dupe.size() - 1) | ||
367 | end_pos = areas_dupe[i] | ||
368 | |||
369 | var start_vec = Vector3(start_pos[1], start_pos[2], start_pos[3]) | ||
370 | var end_vec = Vector3(end_pos[1], end_pos[2], end_pos[3]) | ||
371 | if start_vec.distance_to(end_vec) > 50 and not (start_pos.size() >= 5 and start_pos[4]): | ||
372 | found = true | ||
373 | 310 | ||
374 | members_to_join = active_lobby_members.duplicate() | 311 | members_to_join = active_lobby_members.duplicate() |
375 | members_to_join.erase(player_steam_id) | 312 | members_to_join.erase(player_steam_id) |
376 | is_starting = true | 313 | is_starting = true |
377 | 314 | ||
378 | var race_manager = global.get_node("RaceManager") | 315 | var race_manager = global.get_node("RaceManager") |
316 | race_manager.level = route[0] | ||
379 | race_manager.start_pos = start_pos | 317 | race_manager.start_pos = start_pos |
380 | race_manager.end_pos = end_pos | 318 | race_manager.end_pos = end_pos |
381 | 319 | ||
@@ -384,6 +322,7 @@ func _main_button_pressed(): | |||
384 | else: | 322 | else: |
385 | _send_p2p_packet( | 323 | _send_p2p_packet( |
386 | { | 324 | { |
325 | "level": route[0], | ||
387 | "start_name": start_pos[0], | 326 | "start_name": start_pos[0], |
388 | "start_x": str(start_pos[1]), | 327 | "start_x": str(start_pos[1]), |
389 | "start_y": str(start_pos[2]), | 328 | "start_y": str(start_pos[2]), |
@@ -416,7 +355,7 @@ func _start_game(): | |||
416 | 355 | ||
417 | # Switch to LL1 | 356 | # Switch to LL1 |
418 | Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) | 357 | Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) |
419 | global.map = "level1" | 358 | global.map = race_manager.level |
420 | global.entry_point = Vector3( | 359 | global.entry_point = Vector3( |
421 | race_manager.start_pos[1], race_manager.start_pos[2] + 1, race_manager.start_pos[3] | 360 | race_manager.start_pos[1], race_manager.start_pos[2] + 1, race_manager.start_pos[3] |
422 | ) | 361 | ) |