92 lines
2.4 KiB
C#
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);
|
|
}
|
|
} |