using JNGame.Math;
using JNGame.Sync.Frame.Service;
using JNGame.Sync.State.Tile;
using JNGame.Sync.System;

namespace Game.Logic.System
{
    public class DGBasisSystem : SLogicSystem
    {
        
        public JNRandomSystem Random => GetSystem<JNRandomSystem>();
        
        //判断是否是Tile模式
        public bool IsTile()
        {
            return Sync is JNSSTileServerService;
        }
        
        //获取当前权限瓦块随机点
        public LVector3 GetTileRandom()
        {
            if (Sync is JNSSTileServerService tileServer)
            {
                return new LVector3(
                    Random.Float(tileServer.MinContains.x,tileServer.MaxContains.x),
                    LFloat.Zero,
                    Random.Float(tileServer.MinContains.y,tileServer.MaxContains.y)
                );
            }
            return LVector3.Down;
        }
        
        /// <summary>
        /// [状态同步生命周期] 玩家离开服务器 不在游戏线程中执行
        /// </summary>
        public virtual void OnPlayerExitServer(int auth){}
        
        
    }
}