From 12c696bc5b6e960a1d9228a5b68e5aafcc02e23c Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Fri, 9 Feb 2024 11:24:39 -0500 Subject: LL2 support --- racing/lobby.gd | 85 ++++++++------------------------------------------------- 1 file changed, 12 insertions(+), 73 deletions(-) (limited to 'racing/lobby.gd') 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 var members_to_join = [] var is_starting = false +var router + const MAX_PLAYERS = 250 const PROTOCOL_VERSION = 2 const RECIPIENT_BROADCAST_ALL = -1 const LOBBY_MAP_NAME = "ll1_racing" const VERSION = "0.0.7" -const LL1_AREAS = [ - ["Starting Room", 0, 0, 0], - ["Second Room", 0, 0, -15], - ["The Traveled", 34, 0, -18], - ["The Agreeable", 30, 0, -45], - ["The Colorful", 10, 0, -83], - ["Suits Area", 0, 0, -78, true], - ["Arrow Garden", -93, 1, -93], - ["The Wondrous (Table)", -108, 1, -78], - ["Courtyard", -64, 0, -71], - ["Yellow Backside Nine", -38, 0, -58], - ["Hot Crusts Area", -20, 0, -81], - ["Crossroads Corner", -28, 0, -54], - ["The Discerning", -54, 0, -34, true], - ["Green Backside", 22, 0, -94], - ["Observant Upstairs", 40, 9, -92, true], - ["Eight Room", 95, 15, -28], - ["The Perceptive", 60, 9, -57], - ["The Tenacious", 0, 0, -43], - ["Rainbow", -96, 0, -41], - ["The Undeterred", -87, 0, 25, true], - ["Directional Gallery", -57, 0, 0], - ["The Eyes They See", -54, 0, -23], - ["Tower First Floor", -27, 0, -23], - ["The Optimistic", 76, 0, -17], - ["The Initiated", 63, 0, -0, true], - ["Art Gallery", 92, 0, 15], - ["Art Gallery Top", 80, 30, 15], - ["Lookout", 75, 18, 51], - ["Knight Night Room", 37, 0, 7], - ["The Seeker", 9, 0, 16, true], - ["Hidden Room", 13, 0, 4], - ["Owl Hallway", 44, 0, -26], - ["Challenge Room", -9, 6, 13], - ["Pilgrim Room", -22, 0, 24, true], - ["Cellar Replica", -44, 0, 30], - ["Elements Area", -61, 0, 40], - ["The Artistic", -25, 0, 54, true], - ["Outside The Wise", -44, 0, 71], - ["The Wise", -72, 0, 72, true], - ["The Scientific", -18, 0, 89], - ["The Wanderer", 0, 0, 80], - ["The Fearless", 18, 10, 90], - ["Champion's Rest", 23, 0, 62, true], - ["The Steady", 31, 0, 77, true], - ["The Bold", 67, 0, 77, true], - ["Color Hunt", 45, 0, 69], - ["Room Room", 95, 6, 84], - ["The Bearer", 61, 0, 51], - ["Tower Third Floor", 18, 0, 33], - ["Rhyme Room (Cross)", 0, 9, 42], - ["Tower Seventh Floor", 0, 37, 64], -] - func _ready(): global._print("Starting Lobby") @@ -100,6 +48,9 @@ func _ready(): var race_manager = global.get_node("RaceManager") race_manager.held_messages.clear() + var router_script = load("user://maps/racing/router.gd") + router = router_script.new() + var _ignore = get_node("Panel/main_button").connect("pressed", self, "_main_button_pressed") _ignore = get_node("Panel/return_button").connect("pressed", self, "_return_button_pressed") @@ -295,6 +246,7 @@ func _read_p2p_packet() -> void: false ) if "start_x" in data: + race_manager.level = data["level"] race_manager.start_pos = [ data["start_name"], int(data["start_x"]), @@ -352,30 +304,16 @@ func _main_button_pressed(): if everyone_ready and is_vip: get_node("Panel/main_button").disabled = true - var rng = RandomNumberGenerator.new() - rng.randomize() - - var start_pos - var end_pos - var found = false - while !found: - var areas_dupe = LL1_AREAS.duplicate() - var i = rng.randi_range(0, areas_dupe.size() - 1) - start_pos = areas_dupe[i] - areas_dupe.remove(i) - i = rng.randi_range(0, areas_dupe.size() - 1) - end_pos = areas_dupe[i] - - var start_vec = Vector3(start_pos[1], start_pos[2], start_pos[3]) - var end_vec = Vector3(end_pos[1], end_pos[2], end_pos[3]) - if start_vec.distance_to(end_vec) > 50 and not (start_pos.size() >= 5 and start_pos[4]): - found = true + var route = router.choose_route() + var start_pos = route[1] + var end_pos = route[2] members_to_join = active_lobby_members.duplicate() members_to_join.erase(player_steam_id) is_starting = true var race_manager = global.get_node("RaceManager") + race_manager.level = route[0] race_manager.start_pos = start_pos race_manager.end_pos = end_pos @@ -384,6 +322,7 @@ func _main_button_pressed(): else: _send_p2p_packet( { + "level": route[0], "start_name": start_pos[0], "start_x": str(start_pos[1]), "start_y": str(start_pos[2]), @@ -416,7 +355,7 @@ func _start_game(): # Switch to LL1 Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) - global.map = "level1" + global.map = race_manager.level global.entry_point = Vector3( race_manager.start_pos[1], race_manager.start_pos[2] + 1, race_manager.start_pos[3] ) -- cgit 1.4.1