2021-01-17 22:47:37 +03:00

72 lines
2.3 KiB
C#

using System;
using System.Collections.Generic;
using MafiaCommon.Packets;
namespace MafiaServer
{
public class Game
{
private List<PlayerSocketWorker> _players = new List<PlayerSocketWorker>();
private bool isStarted = false;
public Game()
{
}
public void ConnectPlayer(PlayerSocketWorker player)
{
if (isStarted)
{
player.sendPacket(new DisconnectPacket("Game already started!"));
player.disconnect();
}
else
{
foreach (PlayerSocketWorker othPlayer in _players)
{
othPlayer.sendPacket(new PlayerConnectedPacket(player.PlayerName,_players.Count+1,Settings.Config().MaxPlayers));
}
_players.Add(player);
player.Id = _players.LastIndexOf(player);
player.OnDisconnectByErrorEvent += OnDisconnectByError;
player.OnPlayerSendMessageEvent += PlayerOnOnPlayerSendMessageEvent;
player.sendPacket(new WelcomePacket(Settings.Config().ServerName,_players.Count,Settings.Config().MaxPlayers));
}
}
public void Start()
{
if (_players.Count < 2)
{
Console.WriteLine("Not Enough Players");
return;
}
}
private void OnDisconnectByError(PlayerSocketWorker sender)
{
_players.Remove(sender);
foreach (PlayerSocketWorker player in _players)
{
player.sendPacket(new PlayerDisconnectedPacket(true,sender.Id,_players.Count,Settings.Config().MaxPlayers));
}
}
private void PlayerOnOnPlayerSendMessageEvent(PlayerSocketWorker sender, ChatType chatType, string text)
{
switch (chatType)
{
case ChatType.Queue:
if (!isStarted)
{
foreach (PlayerSocketWorker player in _players)
{
player.sendPacket(new MessageReceivePacket(ChatType.Queue,false,sender.PlayerName,text));
}
}
break;
}
}
}
}