summary refs log tree commit diff stats
path: root/racing/lobby.gd
diff options
context:
space:
mode:
Diffstat (limited to 'racing/lobby.gd')
-rw-r--r--racing/lobby.gd85
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
11var members_to_join = [] 11var members_to_join = []
12var is_starting = false 12var is_starting = false
13 13
14var router
15
14const MAX_PLAYERS = 250 16const MAX_PLAYERS = 250
15const PROTOCOL_VERSION = 2 17const PROTOCOL_VERSION = 2
16const RECIPIENT_BROADCAST_ALL = -1 18const RECIPIENT_BROADCAST_ALL = -1
17const LOBBY_MAP_NAME = "ll1_racing" 19const LOBBY_MAP_NAME = "ll1_racing"
18const VERSION = "0.0.7" 20const VERSION = "0.0.7"
19 21
20const 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
75func _ready(): 23func _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 )