72 lines
2.3 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
} |