Files
RebootKit/Runtime/Engine/Code/Main/Game.cs
2025-07-30 05:51:39 +02:00

51 lines
1.5 KiB
C#

using System;
using RebootKit.Engine.Network;
using UnityEngine;
using Logger = RebootKit.Engine.Foundation.Logger;
namespace RebootKit.Engine.Main {
public abstract class Game : MonoBehaviour {
static readonly Logger s_GameLogger = new Logger(nameof(Game));
[SerializeField] NetworkPlayerController m_PlayerControllerPrefab;
public NetworkPlayerController LocalPlayerController { get; internal set; }
protected virtual void Awake() {
LocalPlayerController = Instantiate(m_PlayerControllerPrefab, transform);
}
//
// @MARK: Server
//
protected virtual void OnPlayerBecameReady(ulong clientID) {
}
public virtual void OnClientConnected(ulong clientID) {
s_GameLogger.Info($"Client {clientID} connected");
}
public virtual void OnClientDisconnected(ulong clientID) {
s_GameLogger.Info($"Client {clientID} disconnected");
}
//
// @MARK: Chat
//
protected virtual void OnChatMessage(string message) {
s_GameLogger.Info($"Chat: {message}");
}
//
// @MARK: Player Ready State
//
internal void PlayerBecameReady(ulong clientID) {
if (!RR.IsServer()) {
s_GameLogger.Error("PlayerBecameReady called on client, but this should only be called on the server.");
return;
}
OnPlayerBecameReady(clientID);
}
}
}