Skip to content

Commit 92c6462

Browse files
committed
Added Lobby Spawn Builder
1 parent a85329c commit 92c6462

2 files changed

Lines changed: 37 additions & 2 deletions

File tree

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using System.Collections.Generic;
2+
using LevelImposter.Core;
3+
using LevelImposter.Lobby;
4+
using UnityEngine;
5+
6+
namespace LevelImposter.Builders;
7+
8+
public class LobbySpawnBuilder : IElemBuilder
9+
{
10+
public void OnPreBuild()
11+
{
12+
}
13+
14+
public void OnBuild(LIElement elem, GameObject obj)
15+
{
16+
if (elem.type != "util-lobbyspawn")
17+
return;
18+
19+
var lobbyBehaviour = LILobbyBehaviour.GetLobbyBehaviour();
20+
lobbyBehaviour.SpawnPositions = MapUtils.AddToArr(lobbyBehaviour.SpawnPositions, obj.transform.position);
21+
}
22+
23+
public void OnPostBuild()
24+
{
25+
// Check if no spawn positions were added
26+
var lobbyBehaviour = LILobbyBehaviour.GetLobbyBehaviour();
27+
if (lobbyBehaviour.SpawnPositions.Length == 0)
28+
lobbyBehaviour.SpawnPositions = new[] { Vector2.zero };
29+
30+
// Replay the spawn animations for all players
31+
foreach (var playerControl in PlayerControl.AllPlayerControls)
32+
playerControl.StartCoroutine(
33+
playerControl.MyPhysics.CoSpawnPlayer(lobbyBehaviour));
34+
}
35+
}

LevelImposter/Lobby/Builders/LobbyMapBuilder.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public static class LobbyMapBuilder
3131
new LobbyOptionsConsoleBuilder(),
3232
new LobbyWardrobeConsoleBuilder(),
3333
new LobbyMapConsoleBuilder(),
34+
new LobbySpawnBuilder(),
3435

3536
new TriggerAnimBuilder(),
3637
new TriggerAreaBuilder(),
@@ -67,8 +68,7 @@ private static void ResetMap()
6768

6869
// Reset LobbyBehaviour Properties
6970
lobbyBehaviour.AllRooms = new Il2CppReferenceArray<SkeldShipRoom>(0);
70-
lobbyBehaviour.SpawnPositions = new Il2CppStructArray<Vector2>(1);
71-
lobbyBehaviour.SpawnPositions[0] = new Vector2(0, 0);
71+
lobbyBehaviour.SpawnPositions = new Il2CppStructArray<Vector2>(0);
7272
lobbyBehaviour.GetComponent<Collider2D>().enabled = false;
7373
lobbyBehaviour.DropShipSound = null;
7474
lobbyBehaviour.MapTheme = null;

0 commit comments

Comments
 (0)