using LittleSim.Sim;
using MrGameEng.Graphics;
using MrGameEng.Net;

namespace LittleSim.Net;

/// <summary>
/// Сетевой контракт LittleSim: какие компоненты реплицируются с сервера на клиентов.
/// Сервер (LittleSim.Server) и клиент (<see cref="Scenes.MultiplayerScene"/>) обязаны
/// строить схему одинаково — порядок регистрации определяет wire-id компонентов.
/// ВНИМАНИЕ: у веб-клиента бинарное зеркало этой схемы
/// (src/LittleSim.Web/NetContract.cs — он собран против KNI и не может ссылаться сюда);
/// меняешь состав или порядок — меняй и там.
/// </summary>
public static class NetSchema
{
    /// <summary>Порт сервера по умолчанию.</summary>
    public const int DefaultPort = 9050;

    /// <summary>Схема репликации: позиция/масштаб жителя и его потребности.</summary>
    public static ReplicationSchema Create() =>
        new ReplicationSchema().Register<Transform2D>().Register<PawnNeeds>();
}
