2024-04-05 11:59:11 +08:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
2024-04-11 16:44:25 +08:00
|
|
|
|
namespace Game.Player
|
2024-04-05 11:59:11 +08:00
|
|
|
|
{
|
2024-04-11 16:44:25 +08:00
|
|
|
|
public class PlayerManager : ManagerBase, IPlayerManager
|
|
|
|
|
{
|
|
|
|
|
private Dictionary<string, IPlayer> _players = new Dictionary<string, IPlayer>();
|
|
|
|
|
private IPlayer _currentPlayer;
|
2024-04-05 18:12:04 +08:00
|
|
|
|
|
2024-04-11 16:44:25 +08:00
|
|
|
|
public IPlayer currentPlayer => this._currentPlayer;
|
2024-04-05 11:59:11 +08:00
|
|
|
|
|
2024-04-11 16:44:25 +08:00
|
|
|
|
protected override void OnInit()
|
|
|
|
|
{
|
|
|
|
|
base.OnInit();
|
|
|
|
|
_players = new Dictionary<string, IPlayer>();
|
|
|
|
|
this._currentPlayer = null;
|
|
|
|
|
}
|
2024-04-09 18:16:37 +08:00
|
|
|
|
|
2024-04-11 16:44:25 +08:00
|
|
|
|
public void SetCurrentPlayer(IPlayer player)
|
|
|
|
|
{
|
|
|
|
|
this._currentPlayer ??= player;
|
|
|
|
|
}
|
2024-04-06 11:59:18 +08:00
|
|
|
|
|
2024-04-12 17:32:37 +08:00
|
|
|
|
public IPlayer CreatePlayer(string playerName, string location, float jinbei)
|
2024-04-11 16:44:25 +08:00
|
|
|
|
{
|
2024-04-12 17:32:37 +08:00
|
|
|
|
var gameObject = Game.resourceManager.LoadGameObjectSync(location);
|
2024-04-11 16:44:25 +08:00
|
|
|
|
IPlayer player = new Player();
|
|
|
|
|
player.SetGameObject(gameObject, playerName, jinbei);
|
|
|
|
|
this._players.Add(playerName, player);
|
|
|
|
|
player.Init();
|
|
|
|
|
return player;
|
|
|
|
|
}
|
2024-04-05 11:59:11 +08:00
|
|
|
|
|
2024-04-11 16:44:25 +08:00
|
|
|
|
public IPlayer GetPlayer(string playerName)
|
|
|
|
|
{
|
|
|
|
|
return this._players.GetValueOrDefault(playerName);
|
|
|
|
|
}
|
2024-04-05 11:59:11 +08:00
|
|
|
|
|
2024-04-11 16:44:25 +08:00
|
|
|
|
public void DeletePlayer(string playerName)
|
2024-04-05 11:59:11 +08:00
|
|
|
|
{
|
2024-04-11 16:44:25 +08:00
|
|
|
|
if (this._players.TryGetValue(playerName, out var player))
|
|
|
|
|
{
|
|
|
|
|
player.Dispose();
|
|
|
|
|
}
|
2024-04-05 11:59:11 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-04-11 16:44:25 +08:00
|
|
|
|
public interface IPlayerManager
|
|
|
|
|
{
|
|
|
|
|
IPlayer currentPlayer { get; }
|
2024-04-06 11:59:18 +08:00
|
|
|
|
|
2024-04-11 16:44:25 +08:00
|
|
|
|
void SetCurrentPlayer(IPlayer player);
|
2024-04-06 11:59:18 +08:00
|
|
|
|
|
2024-04-11 16:44:25 +08:00
|
|
|
|
//
|
|
|
|
|
IPlayer CreatePlayer(string playerName, string assetName, float jinbei);
|
2024-04-05 11:59:11 +08:00
|
|
|
|
|
2024-04-11 16:44:25 +08:00
|
|
|
|
IPlayer GetPlayer(string playerName);
|
2024-04-05 11:59:11 +08:00
|
|
|
|
|
2024-04-11 16:44:25 +08:00
|
|
|
|
void DeletePlayer(string playerName);
|
|
|
|
|
}
|
2024-04-05 11:59:11 +08:00
|
|
|
|
}
|