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

92 lines
2.4 KiB
C#

using System.Collections.Generic;
using Game.Pathfinding;
using Game.Room;
using UnityEngine;
namespace Game.Player
{
public class PlayerManager : ManagerBase, IPlayerManager
{
private Dictionary<string, IPlayer> _players;
private IPlayer _currentPlayer;
private string assetName = AssetConstPath.Assets_GameRes_Prefabs_Role_player1;
public IPlayer currentPlayer => this._currentPlayer;
private IBFSManager _bfsManager;
protected override void OnInit()
{
base.OnInit();
}
public PlayerManager(IBFSManager bfsManager)
{
_players = new Dictionary<string, IPlayer>();
this._currentPlayer = null;
this._bfsManager = bfsManager;
}
public void SetCurrentPlayer(IPlayer player)
{
this._currentPlayer ??= player;
}
public IPlayer CreatePlayer(string playerName, float jinbei)
{
var gameObject = Game.resourceManager.LoadGameObjectSync(assetName);
IPlayer player = new Player(playerName, jinbei, gameObject, this._bfsManager);
this._players.Add(playerName, player);
player.Init();
return player;
}
public IPlayer GetPlayer(string playerName)
{
return this._players.GetValueOrDefault(playerName);
}
public void DeletePlayer(string playerName)
{
if (this._players.TryGetValue(playerName, out var player))
{
player.Dispose();
this._players.Remove(playerName);
}
}
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; }
void SetCurrentPlayer(IPlayer player);
IPlayer CreatePlayer(string playerName, float jinbei);
// IPlayer InsPlayer(string assetName);
IPlayer GetPlayer(string playerName);
void DeletePlayer(string playerName);
void DeleteAllPlayer();
// void DeleteInsPlayer(IPlayer player);
}
}