Fix MG-3 and MG-4

This commit is contained in:
Ilya 2021-02-16 22:57:30 +03:00
parent 0fb7800d8b
commit a0ab6d6709
2 changed files with 59 additions and 31 deletions

View File

@ -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)

View File

@ -55,7 +55,9 @@ 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)
@ -80,10 +82,13 @@ 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;
} }
@ -97,6 +102,7 @@ namespace MafiaServer
{ {
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,6 +222,7 @@ 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()));
@ -244,6 +252,7 @@ namespace MafiaServer
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);
@ -256,6 +265,7 @@ namespace MafiaServer
{ {
return; return;
} }
if (_players.Count < 3) if (_players.Count < 3)
{ {
Console.WriteLine("Not Enough Players"); Console.WriteLine("Not Enough Players");
@ -266,6 +276,7 @@ namespace MafiaServer
{ {
player.Role = Role.Citizen; player.Role = Role.Citizen;
} }
_playerRolesAtStart.Clear(); _playerRolesAtStart.Clear();
_votesRemain.Clear(); _votesRemain.Clear();
_mafiaVotes.Clear(); _mafiaVotes.Clear();
@ -296,6 +307,7 @@ namespace MafiaServer
_mafia.Add(empty[i]); _mafia.Add(empty[i]);
empty = empty.RemoveFromArray(i); empty = empty.RemoveFromArray(i);
} }
break; break;
} }
} }
@ -339,10 +351,16 @@ 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)
{ {
@ -356,6 +374,7 @@ namespace MafiaServer
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");