Frame/Assets/Scripts/Dinosaurs/Player/PlayerManager.cs

94 lines
2.5 KiB
C#
Raw Normal View History

using System.Collections.Generic;
using Game.Pathfinding;
using Game.Room;
using UnityEngine;
namespace Game.Player
{
public class PlayerManager : ManagerBase, IPlayerManager
{
2024-05-05 17:02:33 +08:00
protected Dictionary<long, IPlayer> _players;
private IPlayer _currentPlayer;
private string assetName = AssetConstPath.Assets_GameRes_Prefabs_Role_player1;
2024-04-05 18:12:04 +08:00
public IPlayer currentPlayer => this._currentPlayer;
private IBFSManager _bfsManager;
protected override void OnInit()
{
base.OnInit();
}
public PlayerManager(IBFSManager bfsManager)
{
2024-05-05 17:02:33 +08:00
_players = new Dictionary<long, IPlayer>();
this._currentPlayer = null;
this._bfsManager = bfsManager;
}
2024-04-09 18:16:37 +08:00
public void SetCurrentPlayer(IPlayer player)
{
this._currentPlayer ??= player;
}
2024-04-06 11:59:18 +08:00
2024-05-05 17:02:33 +08:00
public IPlayer CreatePlayer(long uid, string playerName, RoleType roleType)
{
var gameObject = Game.resourceManager.LoadGameObjectSync(assetName);
2024-05-05 17:02:33 +08:00
IPlayer player = new Player(playerName, uid, gameObject, this._bfsManager, roleType);
gameObject.name = playerName;
gameObject.transform.position = new Vector3(-9.6f, -10.3f);
2024-05-05 17:02:33 +08:00
this._players.Add(uid, player);
player.Init();
return player;
}
2024-05-05 17:02:33 +08:00
public IPlayer GetPlayer(long uId)
{
2024-05-05 17:02:33 +08:00
return this._players.GetValueOrDefault(uId);
}
2024-05-05 17:02:33 +08:00
public void DeletePlayer(long uId)
{
2024-05-05 17:02:33 +08:00
if (this._players.TryGetValue(uId, out var player))
{
player.Dispose();
2024-05-05 17:02:33 +08:00
this._players.Remove(uId);
}
}
public void DeleteAllPlayer()
{
foreach (var playersValue in this._players.Values)
{
playersValue.Dispose();
}
this._players.Clear();
}
protected override void OnDispose()
{
base.OnDispose();
this.DeleteAllPlayer();
}
}
public interface IPlayerManager
{
IPlayer currentPlayer { get; }
2024-04-06 11:59:18 +08:00
void SetCurrentPlayer(IPlayer player);
2024-04-06 11:59:18 +08:00
2024-05-05 17:02:33 +08:00
IPlayer CreatePlayer(long uid, string playerName, RoleType roleType);
// IPlayer InsPlayer(string assetName);
2024-05-05 17:02:33 +08:00
IPlayer GetPlayer(long uId);
2024-05-05 17:02:33 +08:00
void DeletePlayer(long uId);
void DeleteAllPlayer();
// void DeleteInsPlayer(IPlayer player);
}
}