Fix MG-3 and MG-4
This commit is contained in:
parent
0fb7800d8b
commit
a0ab6d6709
@ -226,12 +226,14 @@ namespace MafiaGame
|
|||||||
case Role.Citizen:
|
case Role.Citizen:
|
||||||
App.Current.Dispatcher.Invoke((Action) (() =>
|
App.Current.Dispatcher.Invoke((Action) (() =>
|
||||||
{
|
{
|
||||||
|
MainWindow.Instance.HideAll();
|
||||||
MainWindow.Instance.ShowVotingPassive("Ты Мирный Житель");
|
MainWindow.Instance.ShowVotingPassive("Ты Мирный Житель");
|
||||||
}));
|
}));
|
||||||
break;
|
break;
|
||||||
case Role.Don:
|
case Role.Don:
|
||||||
App.Current.Dispatcher.Invoke((Action) (() =>
|
App.Current.Dispatcher.Invoke((Action) (() =>
|
||||||
{
|
{
|
||||||
|
MainWindow.Instance.HideAll();
|
||||||
MainWindow.Instance.GameVotingActiveSelect.Items.Clear();
|
MainWindow.Instance.GameVotingActiveSelect.Items.Clear();
|
||||||
MainWindow.Instance.ShowVotingActive("Ты Дон, выбери кого убить!");
|
MainWindow.Instance.ShowVotingActive("Ты Дон, выбери кого убить!");
|
||||||
foreach (Player player in players)
|
foreach (Player player in players)
|
||||||
@ -245,6 +247,7 @@ namespace MafiaGame
|
|||||||
case Role.Mafia:
|
case Role.Mafia:
|
||||||
App.Current.Dispatcher.Invoke((Action) (() =>
|
App.Current.Dispatcher.Invoke((Action) (() =>
|
||||||
{
|
{
|
||||||
|
MainWindow.Instance.HideAll();
|
||||||
MainWindow.Instance.GameVotingActiveSelect.Items.Clear();
|
MainWindow.Instance.GameVotingActiveSelect.Items.Clear();
|
||||||
MainWindow.Instance.ShowVotingActive("Ты Мафия, выбери кого убить!");
|
MainWindow.Instance.ShowVotingActive("Ты Мафия, выбери кого убить!");
|
||||||
foreach (Player player in players)
|
foreach (Player player in players)
|
||||||
|
@ -55,12 +55,14 @@ namespace MafiaServer
|
|||||||
|
|
||||||
private List<Player> GetPlayersRoles()
|
private List<Player> GetPlayersRoles()
|
||||||
{
|
{
|
||||||
return (from player in _players where player.Role != Role.Died select new Player(player.Id, player.PlayerName)).ToList();
|
return (from player in _players
|
||||||
|
where player.Role != Role.Died
|
||||||
|
select new Player(player.Id, player.PlayerName)).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool WorkDeath(PlayerSocketWorker player)
|
private bool WorkDeath(PlayerSocketWorker player)
|
||||||
{
|
{
|
||||||
switch (player.Role)
|
switch (player.Role)
|
||||||
{
|
{
|
||||||
case Role.Don:
|
case Role.Don:
|
||||||
_mafia.Remove(player);
|
_mafia.Remove(player);
|
||||||
@ -68,7 +70,7 @@ namespace MafiaServer
|
|||||||
{
|
{
|
||||||
foreach (var p in _players)
|
foreach (var p in _players)
|
||||||
{
|
{
|
||||||
p.sendPacket(new EndGamePacket(true,_playerRolesAtStart));
|
p.sendPacket(new EndGamePacket(true, _playerRolesAtStart));
|
||||||
}
|
}
|
||||||
|
|
||||||
_isStarted = false;
|
_isStarted = false;
|
||||||
@ -80,13 +82,16 @@ namespace MafiaServer
|
|||||||
_mafia[0].Role = Role.Don;
|
_mafia[0].Role = Role.Don;
|
||||||
if (_gameState == GameState.VotingNight)
|
if (_gameState == GameState.VotingNight)
|
||||||
{
|
{
|
||||||
_mafia[0].sendPacket(new MessageReceivePacket(ChatType.Active,true,"System","Дон покинул игру, ты новый дон!"));
|
_mafia[0].sendPacket(new MessageReceivePacket(ChatType.Active, true, "System",
|
||||||
|
"Дон покинул игру, ты новый дон!"));
|
||||||
}
|
}
|
||||||
|
|
||||||
_mafia.RemoveAt(0);
|
_mafia.RemoveAt(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
player.Role = Role.Died;
|
player.Role = Role.Died;
|
||||||
|
|
||||||
var mafias = _mafia.Count + 1;
|
var mafias = _mafia.Count + 1;
|
||||||
@ -94,9 +99,10 @@ namespace MafiaServer
|
|||||||
|
|
||||||
if (mafias < aliveLefts) return true;
|
if (mafias < aliveLefts) return true;
|
||||||
foreach (var p in _players)
|
foreach (var p in _players)
|
||||||
{
|
{
|
||||||
p.sendPacket(new EndGamePacket(p.Role == Role.Mafia || p.Role == Role.Don, _playerRolesAtStart));
|
p.sendPacket(new EndGamePacket(p.Role == Role.Mafia || p.Role == Role.Don, _playerRolesAtStart));
|
||||||
}
|
}
|
||||||
|
|
||||||
_isStarted = false;
|
_isStarted = false;
|
||||||
_gameState = GameState.NotStarted;
|
_gameState = GameState.NotStarted;
|
||||||
return false;
|
return false;
|
||||||
@ -146,6 +152,7 @@ namespace MafiaServer
|
|||||||
player.sendPacket(new MessageReceivePacket(ChatType.Day, true, "System",
|
player.sendPacket(new MessageReceivePacket(ChatType.Day, true, "System",
|
||||||
sender.PlayerName + " проголосовал за " + voteFor.PlayerName));
|
sender.PlayerName + " проголосовал за " + voteFor.PlayerName));
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -215,10 +222,11 @@ namespace MafiaServer
|
|||||||
{
|
{
|
||||||
_votesRemain.Add(player);
|
_votesRemain.Add(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var player in _players)
|
foreach (var player in _players)
|
||||||
{
|
{
|
||||||
player.sendPacket(new GameStageChangedPacket(GameState.VotingDay,player.Role,GetPlayersRoles()));
|
player.sendPacket(new GameStageChangedPacket(GameState.VotingDay, player.Role, GetPlayersRoles()));
|
||||||
player.sendPacket(new MessageReceivePacket(ChatType.Day,true,"System","Начинаем голосование!"));
|
player.sendPacket(new MessageReceivePacket(ChatType.Day, true, "System", "Начинаем голосование!"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -240,14 +248,15 @@ namespace MafiaServer
|
|||||||
{
|
{
|
||||||
_players.Remove(sender);
|
_players.Remove(sender);
|
||||||
foreach (var player in _players)
|
foreach (var player in _players)
|
||||||
{
|
{
|
||||||
player.sendPacket(new PlayerDisconnectedPacket(true, sender.Id, _players.Count,
|
player.sendPacket(new PlayerDisconnectedPacket(true, sender.Id, _players.Count,
|
||||||
Settings.Config().MaxPlayers));
|
Settings.Config().MaxPlayers));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_gameState != GameState.NotStarted)
|
if (_gameState != GameState.NotStarted)
|
||||||
{
|
{
|
||||||
WorkDeath(sender);
|
WorkDeath(sender);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Start()
|
public void Start()
|
||||||
@ -256,31 +265,33 @@ namespace MafiaServer
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_players.Count < 3)
|
if (_players.Count < 3)
|
||||||
{
|
{
|
||||||
Console.WriteLine("Not Enough Players");
|
Console.WriteLine("Not Enough Players");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var player in _players)
|
foreach (var player in _players)
|
||||||
{
|
{
|
||||||
player.Role = Role.Citizen;
|
player.Role = Role.Citizen;
|
||||||
}
|
}
|
||||||
|
|
||||||
_playerRolesAtStart.Clear();
|
_playerRolesAtStart.Clear();
|
||||||
_votesRemain.Clear();
|
_votesRemain.Clear();
|
||||||
_mafiaVotes.Clear();
|
_mafiaVotes.Clear();
|
||||||
_dayVote.Clear();
|
_dayVote.Clear();
|
||||||
|
|
||||||
var random = new Random();
|
var random = new Random();
|
||||||
|
|
||||||
var empty = _players.ToArray();
|
var empty = _players.ToArray();
|
||||||
random.Shuffle(empty);
|
random.Shuffle(empty);
|
||||||
|
|
||||||
var mafiasNeed = empty.Length / 3;
|
var mafiasNeed = empty.Length / 3;
|
||||||
|
|
||||||
Console.WriteLine("Debug: needs counted");
|
Console.WriteLine("Debug: needs counted");
|
||||||
|
|
||||||
while (mafiasNeed!=0)
|
while (mafiasNeed != 0)
|
||||||
{
|
{
|
||||||
for (var i = 0; i < empty.Length; i++)
|
for (var i = 0; i < empty.Length; i++)
|
||||||
{
|
{
|
||||||
@ -296,11 +307,12 @@ namespace MafiaServer
|
|||||||
_mafia.Add(empty[i]);
|
_mafia.Add(empty[i]);
|
||||||
empty = empty.RemoveFromArray(i);
|
empty = empty.RemoveFromArray(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Console.WriteLine("Debug: randomized");
|
Console.WriteLine("Debug: randomized");
|
||||||
|
|
||||||
var don = _mafia[0];
|
var don = _mafia[0];
|
||||||
@ -308,28 +320,28 @@ namespace MafiaServer
|
|||||||
_mafia.RemoveAt(0);
|
_mafia.RemoveAt(0);
|
||||||
|
|
||||||
var players = GetPlayersRoles();
|
var players = GetPlayersRoles();
|
||||||
|
|
||||||
don.sendPacket(new GameStartPacket(Role.Don,players));
|
don.sendPacket(new GameStartPacket(Role.Don, players));
|
||||||
_votesRemain.Add(don);
|
_votesRemain.Add(don);
|
||||||
|
|
||||||
foreach (var player in empty)
|
foreach (var player in empty)
|
||||||
{
|
{
|
||||||
player.sendPacket(new GameStartPacket(Role.Citizen,players));
|
player.sendPacket(new GameStartPacket(Role.Citizen, players));
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var player in _mafia)
|
foreach (var player in _mafia)
|
||||||
{
|
{
|
||||||
player.sendPacket(new GameStartPacket(Role.Mafia,players));
|
player.sendPacket(new GameStartPacket(Role.Mafia, players));
|
||||||
_votesRemain.Add(player);
|
_votesRemain.Add(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var player in _players)
|
foreach (var player in _players)
|
||||||
{
|
{
|
||||||
_playerRolesAtStart.Add(new PlayerRole(player.PlayerName,player.Role));
|
_playerRolesAtStart.Add(new PlayerRole(player.PlayerName, player.Role));
|
||||||
}
|
}
|
||||||
|
|
||||||
Console.WriteLine("Debug: packets sent");
|
Console.WriteLine("Debug: packets sent");
|
||||||
|
|
||||||
_isStarted = true;
|
_isStarted = true;
|
||||||
_gameState = GameState.VotingNight;
|
_gameState = GameState.VotingNight;
|
||||||
}
|
}
|
||||||
@ -339,11 +351,17 @@ namespace MafiaServer
|
|||||||
_players.Remove(sender);
|
_players.Remove(sender);
|
||||||
foreach (var player in _players)
|
foreach (var player in _players)
|
||||||
{
|
{
|
||||||
player.sendPacket(new PlayerDisconnectedPacket(true,sender.Id,_players.Count,Settings.Config().MaxPlayers));
|
player.sendPacket(new PlayerDisconnectedPacket(true, sender.Id, _players.Count,
|
||||||
|
Settings.Config().MaxPlayers));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_gameState != GameState.NotStarted)
|
||||||
|
{
|
||||||
|
WorkDeath(sender);
|
||||||
}
|
}
|
||||||
WorkDeath(sender);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void PlayerOnOnPlayerSendMessageEvent(PlayerSocketWorker sender, ChatType chatType, string text)
|
private void PlayerOnOnPlayerSendMessageEvent(PlayerSocketWorker sender, ChatType chatType, string text)
|
||||||
{
|
{
|
||||||
switch (chatType)
|
switch (chatType)
|
||||||
@ -353,9 +371,10 @@ namespace MafiaServer
|
|||||||
{
|
{
|
||||||
foreach (var player in _players)
|
foreach (var player in _players)
|
||||||
{
|
{
|
||||||
player.sendPacket(new MessageReceivePacket(ChatType.Queue,false,sender.PlayerName,text));
|
player.sendPacket(new MessageReceivePacket(ChatType.Queue, false, sender.PlayerName, text));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case ChatType.Active:
|
case ChatType.Active:
|
||||||
if (_isStarted)
|
if (_isStarted)
|
||||||
@ -364,21 +383,26 @@ namespace MafiaServer
|
|||||||
{
|
{
|
||||||
case Role.Mafia:
|
case Role.Mafia:
|
||||||
case Role.Don:
|
case Role.Don:
|
||||||
foreach (var player in _players.Where(player => player.Role == Role.Mafia || player.Role == Role.Don))
|
foreach (var player in _players.Where(player =>
|
||||||
|
player.Role == Role.Mafia || player.Role == Role.Don))
|
||||||
{
|
{
|
||||||
player.sendPacket(new MessageReceivePacket(ChatType.Active, false, sender.PlayerName,
|
player.sendPacket(new MessageReceivePacket(ChatType.Active, false,
|
||||||
|
sender.PlayerName,
|
||||||
text));
|
text));
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case ChatType.Day:
|
case ChatType.Day:
|
||||||
if (_isStarted)
|
if (_isStarted)
|
||||||
{
|
{
|
||||||
if (sender.Role == Role.Died)
|
if (sender.Role == Role.Died)
|
||||||
{
|
{
|
||||||
sender.sendPacket(new MessageReceivePacket(ChatType.Day,true,"system","Мёртвое говорить не может"));
|
sender.sendPacket(new MessageReceivePacket(ChatType.Day, true, "system",
|
||||||
|
"Мёртвое говорить не может"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -389,6 +413,7 @@ namespace MafiaServer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Console.WriteLine("User sending in bad chat");
|
Console.WriteLine("User sending in bad chat");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user