circle-info
alpha version all features and options may change dramatically or disappear

Lobby

📄 Lobby.cs – System lobby przed startem rundy

🎯 Cel

Lobby.cs implementuje prosty system lobby, który:

  • ustawia graczy na rolę Tutorial podczas oczekiwania na start rundy,

  • teleportuje ich w określone miejsce na mapie (escape_final),


🧱 Konstrukcja klasy

public class Lobby
{
    private readonly CoroutineRunner coroutineRunner;
    private readonly PluginConfig config;
    private bool isWaitingForPlayers;
}
  • coroutineRunner – obiekt MonoBehaviour (NWAPI nie udostępnia Coroutine globalnie), potrzebny do uruchamiania korutyn.

  • config – konfiguracja pluginu (LobbySystemEnabled, itp.).

  • isWaitingForPlayers – flaga kontrolna, true między eventem WaitingForPlayers, a RoundStart.


🔔 Obsługiwane zdarzenia

🕒 WaitingForPlayersEvent – początek lobby

  • Uruchamiane przed rozpoczęciem rundy.

  • Jeśli LobbySystemEnabled == true, ustawia wszystkich aktualnie połączonych graczy na RoleTypeId.Tutorial oraz teleportuje ich do domyślnej pozycji lobby (escape_final + Y+2).

  • Ustawia isWaitingForPlayers = true, co umożliwia późniejsze działanie dla dołączających graczy.


👥 PlayerJoined

  • Jeżeli isWaitingForPlayers == true, przypisuje rolę i pozycję lobby nowo dołączonemu graczowi.


▶️ RoundStart

  • Resetuje flagę isWaitingForPlayers = false.

  • Uruchamia korutynę ResetPlayersCoroutine(), która:

    • usuwa rolę Tutorial i zamienia ją na Spectator

    • pozwala systemowi gry przypisać nowe role niezależnie (w kolejnym kroku)


📦 Funkcje pomocnicze

🔁 ResetPlayersCoroutine()

  • Iteruje po wszystkich graczach.

  • Jeśli ich rola to Tutorial, zmienia ją na Spectator.

  • Pozwala uniknąć sytuacji, w której gracz pozostałby z rolą Tutorial w rundzie.

🎯 SetPlayerToLobby(Player player)

  • Ustawia rolę gracza na Tutorial.

  • Teleportuje go na pozycję domyślną (escape_final + 2f nad ziemią).

  • Dodaje log: [Lobby] Gracz X ustawiony na rolę Tutorial...


🧪 Przykładowa konfiguracja

Gdy false – wszystkie zdarzenia będą ignorowane.

Last updated