Fix warnings

This commit is contained in:
Ilya 2021-02-22 01:53:21 +03:00
parent adfb11d087
commit b0ef768853
10 changed files with 112 additions and 127 deletions

View File

@ -1,7 +1,6 @@
<Application x:Class="MafiaGame.App" <Application x:Class="MafiaGame.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MafiaGame"
Startup="App_OnStartup" Startup="App_OnStartup"
Exit="App_OnExit" Exit="App_OnExit"
StartupUri="MainWindow.xaml"> StartupUri="MainWindow.xaml">

View File

@ -73,19 +73,19 @@
</Viewbox> </Viewbox>
</TextBlock> </TextBlock>
<TextBox Grid.Column="1" Grid.Row="3" x:Name="IpBox" FontSize="30"></TextBox> <TextBox Grid.Column="1" Grid.Row="3" x:Name="IpBox" FontSize="30"></TextBox>
<Button Grid.Column="1" Grid.Row="5" Click="ConnectToServer_OnClick" x:Name="IpInputGUIConnect"> <Button Grid.Column="1" Grid.Row="5" Click="ConnectToServer_OnClick" x:Name="IpInputGuiConnect">
<Viewbox> <Viewbox>
<TextBlock Text="Подключится" FontSize="25"></TextBlock> <TextBlock Text="Подключится" FontSize="25"></TextBlock>
</Viewbox> </Viewbox>
</Button> </Button>
<Button Grid.Column="1" Grid.Row="7" Click="Back_OnClick" x:Name="IpInputGUIBack"> <Button Grid.Column="1" Grid.Row="7" Click="Back_OnClick" x:Name="IpInputGuiBack">
<Viewbox> <Viewbox>
<TextBlock Text="Назад" FontSize="25"></TextBlock> <TextBlock Text="Назад" FontSize="25"></TextBlock>
</Viewbox> </Viewbox>
</Button> </Button>
</Grid> </Grid>
<Grid x:Name="SettingsGUI" Visibility="Hidden"> <Grid x:Name="SettingsGui" Visibility="Hidden">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="5*"></ColumnDefinition> <ColumnDefinition Width="5*"></ColumnDefinition>
<ColumnDefinition Width="10*"></ColumnDefinition> <ColumnDefinition Width="10*"></ColumnDefinition>

View File

@ -1,18 +1,9 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks;
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using DiscordRPC; using DiscordRPC;
using MafiaCommon; using MafiaCommon;
@ -21,7 +12,7 @@ namespace MafiaGame
/// <summary> /// <summary>
/// Interaction logic for MainWindow.xaml /// Interaction logic for MainWindow.xaml
/// </summary> /// </summary>
public partial class MainWindow : Window public partial class MainWindow
{ {
private static MainWindow _mainWindow; private static MainWindow _mainWindow;
@ -42,7 +33,7 @@ namespace MafiaGame
public void HideAll() public void HideAll()
{ {
MainMenu.Visibility = Visibility.Hidden; MainMenu.Visibility = Visibility.Hidden;
SettingsGUI.Visibility = Visibility.Hidden; SettingsGui.Visibility = Visibility.Hidden;
IpInput.Visibility = Visibility.Hidden; IpInput.Visibility = Visibility.Hidden;
GameQueue.Visibility = Visibility.Hidden; GameQueue.Visibility = Visibility.Hidden;
DisconnectScreen.Visibility = Visibility.Hidden; DisconnectScreen.Visibility = Visibility.Hidden;
@ -54,13 +45,13 @@ namespace MafiaGame
private void Exit_OnClick(object sender, RoutedEventArgs e) private void Exit_OnClick(object sender, RoutedEventArgs e)
{ {
App.Current.Shutdown(0); Application.Current.Shutdown(0);
} }
private void Play_OnClick(object sender, RoutedEventArgs e) private void Play_OnClick(object sender, RoutedEventArgs e)
{ {
IpInputGUIBack.IsEnabled = true; IpInputGuiBack.IsEnabled = true;
IpInputGUIConnect.IsEnabled = true; IpInputGuiConnect.IsEnabled = true;
IpBox.IsEnabled = true; IpBox.IsEnabled = true;
MainMenu.Visibility = Visibility.Hidden; MainMenu.Visibility = Visibility.Hidden;
IpInput.Visibility = Visibility.Visible; IpInput.Visibility = Visibility.Visible;
@ -77,8 +68,8 @@ namespace MafiaGame
{ {
State = "Присоединяется к серверу" State = "Присоединяется к серверу"
}); });
IpInputGUIBack.IsEnabled = false; IpInputGuiBack.IsEnabled = false;
IpInputGUIConnect.IsEnabled = false; IpInputGuiConnect.IsEnabled = false;
IpBox.IsEnabled = false; IpBox.IsEnabled = false;
Thread thread = new Thread(() => Thread thread = new Thread(() =>
{ {
@ -101,7 +92,7 @@ namespace MafiaGame
private void SettingsBack_OnClick(object sender, RoutedEventArgs e) private void SettingsBack_OnClick(object sender, RoutedEventArgs e)
{ {
Settings.Save(); Settings.Save();
SettingsGUI.Visibility = Visibility.Hidden; SettingsGui.Visibility = Visibility.Hidden;
MainMenu.Visibility = Visibility.Visible; MainMenu.Visibility = Visibility.Visible;
App.Instance.GetRpcClient().SetPresence(new RichPresence() App.Instance.GetRpcClient().SetPresence(new RichPresence()
{ {
@ -112,7 +103,7 @@ namespace MafiaGame
private void Settings_OnClick(object sender, RoutedEventArgs e) private void Settings_OnClick(object sender, RoutedEventArgs e)
{ {
MainMenu.Visibility = Visibility.Hidden; MainMenu.Visibility = Visibility.Hidden;
SettingsGUI.Visibility = Visibility.Visible; SettingsGui.Visibility = Visibility.Visible;
NickBox.Text = Settings.Config().Nick; NickBox.Text = Settings.Config().Nick;
} }
@ -125,7 +116,7 @@ namespace MafiaGame
{ {
MainMenu.Visibility = Visibility.Hidden; MainMenu.Visibility = Visibility.Hidden;
IpInput.Visibility = Visibility.Hidden; IpInput.Visibility = Visibility.Hidden;
SettingsGUI.Visibility = Visibility.Hidden; SettingsGui.Visibility = Visibility.Hidden;
DisconnectScreen.Visibility = Visibility.Hidden; DisconnectScreen.Visibility = Visibility.Hidden;
GameQueue.Visibility = Visibility.Visible; GameQueue.Visibility = Visibility.Visible;
} }
@ -135,7 +126,7 @@ namespace MafiaGame
ReasonText.Text = reason; ReasonText.Text = reason;
MainMenu.Visibility = Visibility.Hidden; MainMenu.Visibility = Visibility.Hidden;
IpInput.Visibility = Visibility.Hidden; IpInput.Visibility = Visibility.Hidden;
SettingsGUI.Visibility = Visibility.Hidden; SettingsGui.Visibility = Visibility.Hidden;
GameQueue.Visibility = Visibility.Hidden; GameQueue.Visibility = Visibility.Hidden;
DisconnectScreen.Visibility = Visibility.Visible; DisconnectScreen.Visibility = Visibility.Visible;
} }

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Net.Sockets; using System.Net.Sockets;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using DiscordRPC; using DiscordRPC;
using MafiaCommon.Packets; using MafiaCommon.Packets;
@ -16,8 +17,8 @@ namespace MafiaGame
private int _port = 25743; private int _port = 25743;
private Socket _socket; private Socket _socket;
private Thread _thread; private Thread _thread;
private bool _breakFlag = false; private bool _breakFlag;
private bool connected; private bool _connected;
public ServerConnection(String ip) public ServerConnection(String ip)
{ {
@ -31,7 +32,7 @@ namespace MafiaGame
_host = ip; _host = ip;
} }
_thread = new Thread(serverListener); _thread = new Thread(ServerListener);
_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try try
@ -40,17 +41,17 @@ namespace MafiaGame
} }
catch (Exception e) catch (Exception e)
{ {
App.Current.Dispatcher.Invoke((Action) (() => Application.Current.Dispatcher.Invoke(() =>
{ {
MainWindow.Instance.ShowDisconnectScreen(e.Message); MainWindow.Instance.ShowDisconnectScreen(e.Message);
})); });
return; return;
} }
_socket.Send(PacketConverter.ToBytes(new ConnectPacket(Settings.Config().Nick))); _socket.Send(PacketConverter.ToBytes(new ConnectPacket(Settings.Config().Nick)));
_thread.IsBackground = true; _thread.IsBackground = true;
_thread.Start(); _thread.Start();
connected = true; _connected = true;
} }
public void SendMessage(ChatType chatType, string text) public void SendMessage(ChatType chatType, string text)
@ -60,7 +61,7 @@ namespace MafiaGame
public void Disconnect() public void Disconnect()
{ {
connected = false; _connected = false;
_socket.Send(PacketConverter.ToBytes(new DisconnectPlayerPacket())); _socket.Send(PacketConverter.ToBytes(new DisconnectPlayerPacket()));
_thread.Interrupt(); _thread.Interrupt();
_socket.Close(); _socket.Close();
@ -71,7 +72,7 @@ namespace MafiaGame
_socket.Send(PacketConverter.ToBytes(new VotePacket(id))); _socket.Send(PacketConverter.ToBytes(new VotePacket(id)));
} }
private void serverListener() private void ServerListener()
{ {
while (!_breakFlag) while (!_breakFlag)
{ {
@ -89,14 +90,14 @@ namespace MafiaGame
catch (Exception e) catch (Exception e)
{ {
_socket.Close(); _socket.Close();
if (connected) if (_connected)
{ {
App.Current.Dispatcher.Invoke((Action) (() => Application.Current.Dispatcher.Invoke(() =>
{ {
MainWindow.Instance.HideAll(); MainWindow.Instance.HideAll();
MainWindow.Instance.ShowDisconnectScreen(e.Message); MainWindow.Instance.ShowDisconnectScreen(e.Message);
})); });
connected = false; _connected = false;
} }
_breakFlag = true; _breakFlag = true;
} }
@ -119,7 +120,7 @@ namespace MafiaGame
switch (packet.PacketType) switch (packet.PacketType)
{ {
case PacketType.Welcome: case PacketType.Welcome:
App.Current.Dispatcher.Invoke((Action) (() => Application.Current.Dispatcher.Invoke(() =>
{ {
MainWindow.Instance.QueueOnline.Text = ((WelcomePacket) packet).Players + "/" + MainWindow.Instance.QueueOnline.Text = ((WelcomePacket) packet).Players + "/" +
((WelcomePacket) packet).MaxPlayers; ((WelcomePacket) packet).MaxPlayers;
@ -139,21 +140,21 @@ namespace MafiaGame
Timestamps = Timestamps.Now, Timestamps = Timestamps.Now,
Details = "Ожидание старта" Details = "Ожидание старта"
}); });
})); });
break; break;
case PacketType.Disconnect: case PacketType.Disconnect:
App.Current.Dispatcher.Invoke((Action) (() => Application.Current.Dispatcher.Invoke(() =>
{ {
MainWindow.Instance.ShowDisconnectScreen(((DisconnectPacket) packet).Reason); MainWindow.Instance.ShowDisconnectScreen(((DisconnectPacket) packet).Reason);
})); });
_breakFlag = true; _breakFlag = true;
break; break;
case PacketType.PlayerConnected: case PacketType.PlayerConnected:
App.Current.Dispatcher.Invoke((Action) (() => Application.Current.Dispatcher.Invoke(() =>
{ {
MainWindow.Instance.QueueOnline.Text = ((PlayerConnectedPacket) packet).Players + "/" + MainWindow.Instance.QueueOnline.Text = ((PlayerConnectedPacket) packet).Players + "/" +
((PlayerConnectedPacket) packet).MaxPlayers; ((PlayerConnectedPacket) packet).MaxPlayers;
})); });
try try
{ {
App.Instance.GetRpcClient().UpdatePartySize(((PlayerConnectedPacket) packet).Players); App.Instance.GetRpcClient().UpdatePartySize(((PlayerConnectedPacket) packet).Players);
@ -165,11 +166,11 @@ namespace MafiaGame
break; break;
case PacketType.PlayerDisconnected: case PacketType.PlayerDisconnected:
App.Current.Dispatcher.Invoke((Action) (() => Application.Current.Dispatcher.Invoke(() =>
{ {
MainWindow.Instance.QueueOnline.Text = ((PlayerDisconnectedPacket) packet).Players + "/" + MainWindow.Instance.QueueOnline.Text = ((PlayerDisconnectedPacket) packet).Players + "/" +
((PlayerDisconnectedPacket) packet).MaxPlayers; ((PlayerDisconnectedPacket) packet).MaxPlayers;
})); });
try try
{ {
App.Instance.GetRpcClient().UpdatePartySize(((PlayerDisconnectedPacket) packet).Players); App.Instance.GetRpcClient().UpdatePartySize(((PlayerDisconnectedPacket) packet).Players);
@ -181,15 +182,15 @@ namespace MafiaGame
break; break;
case PacketType.ServerShutdown: case PacketType.ServerShutdown:
App.Current.Dispatcher.Invoke((Action) (() => Application.Current.Dispatcher.Invoke(() =>
{ {
MainWindow.Instance.ShowDisconnectScreen("Сервер выключен: " + MainWindow.Instance.ShowDisconnectScreen("Сервер выключен: " +
((ServerShutdownPacket) packet).Reason); ((ServerShutdownPacket) packet).Reason);
})); });
_breakFlag = true; _breakFlag = true;
break; break;
case PacketType.MessageReceivePacket: case PacketType.MessageReceivePacket:
App.Current.Dispatcher.Invoke((Action) (() => Application.Current.Dispatcher.Invoke(() =>
{ {
ListBoxItem message = new ListBoxItem(); ListBoxItem message = new ListBoxItem();
if (((MessageReceivePacket) packet).IsSystem) if (((MessageReceivePacket) packet).IsSystem)
@ -217,21 +218,21 @@ namespace MafiaGame
MainWindow.Instance.GameDayChat.ScrollIntoView(message); MainWindow.Instance.GameDayChat.ScrollIntoView(message);
break; break;
} }
})); });
break; break;
case PacketType.GameStartPacket: case PacketType.GameStartPacket:
List<Player> players = ((GameStartPacket) packet).Players; List<Player> players = ((GameStartPacket) packet).Players;
switch (((GameStartPacket) packet).Role) switch (((GameStartPacket) packet).Role)
{ {
case Role.Citizen: case Role.Citizen:
App.Current.Dispatcher.Invoke((Action) (() => Application.Current.Dispatcher.Invoke(() =>
{ {
MainWindow.Instance.HideAll(); MainWindow.Instance.HideAll();
MainWindow.Instance.ShowVotingPassive("Ты Мирный Житель"); MainWindow.Instance.ShowVotingPassive("Ты Мирный Житель");
})); });
break; break;
case Role.Don: case Role.Don:
App.Current.Dispatcher.Invoke((Action) (() => Application.Current.Dispatcher.Invoke(() =>
{ {
MainWindow.Instance.HideAll(); MainWindow.Instance.HideAll();
MainWindow.Instance.GameVotingActiveSelect.Items.Clear(); MainWindow.Instance.GameVotingActiveSelect.Items.Clear();
@ -242,10 +243,10 @@ namespace MafiaGame
item.Content = player.Id.ToString() + ") " + player.Name; item.Content = player.Id.ToString() + ") " + player.Name;
MainWindow.Instance.GameVotingActiveSelect.Items.Add(item); MainWindow.Instance.GameVotingActiveSelect.Items.Add(item);
} }
})); });
break; break;
case Role.Mafia: case Role.Mafia:
App.Current.Dispatcher.Invoke((Action) (() => Application.Current.Dispatcher.Invoke(() =>
{ {
MainWindow.Instance.HideAll(); MainWindow.Instance.HideAll();
MainWindow.Instance.GameVotingActiveSelect.Items.Clear(); MainWindow.Instance.GameVotingActiveSelect.Items.Clear();
@ -256,36 +257,36 @@ namespace MafiaGame
item.Content = player.Id.ToString() + ") " + player.Name; item.Content = player.Id.ToString() + ") " + player.Name;
MainWindow.Instance.GameVotingActiveSelect.Items.Add(item); MainWindow.Instance.GameVotingActiveSelect.Items.Add(item);
} }
})); });
break; break;
} }
App.Instance.GetRpcClient().UpdateDetails("Ночь"); App.Instance.GetRpcClient().UpdateDetails("Ночь");
break; break;
case PacketType.EndGame: case PacketType.EndGame:
App.Current.Dispatcher.Invoke((Action) (() => Application.Current.Dispatcher.Invoke(() =>
{ {
MainWindow.Instance.ShowGameEnd(((EndGamePacket)packet).IsWon,((EndGamePacket)packet).PlayerRoles); MainWindow.Instance.ShowGameEnd(((EndGamePacket)packet).IsWon,((EndGamePacket)packet).PlayerRoles);
})); });
App.Instance.GetRpcClient().UpdateDetails("Ожидание старта"); App.Instance.GetRpcClient().UpdateDetails("Ожидание старта");
break; break;
case PacketType.GameStateChanged: case PacketType.GameStateChanged:
App.Current.Dispatcher.Invoke((Action) (() => { MainWindow.Instance.HideAll(); })); Application.Current.Dispatcher.Invoke(() => { MainWindow.Instance.HideAll(); });
players = ((GameStageChangedPacket) packet).Players; players = ((GameStageChangedPacket) packet).Players;
switch (((GameStageChangedPacket) packet).GameState) switch (((GameStageChangedPacket) packet).GameState)
{ {
case GameState.Day: case GameState.Day:
App.Current.Dispatcher.Invoke((Action) (() => Application.Current.Dispatcher.Invoke(() =>
{ {
MainWindow.Instance.ShowDay(false, ((GameStageChangedPacket) packet).Role,players); MainWindow.Instance.ShowDay(false, ((GameStageChangedPacket) packet).Role,players);
})); });
App.Instance.GetRpcClient().UpdateDetails("День"); App.Instance.GetRpcClient().UpdateDetails("День");
break; break;
case GameState.VotingDay: case GameState.VotingDay:
App.Current.Dispatcher.Invoke((Action) (() => Application.Current.Dispatcher.Invoke(() =>
{ {
MainWindow.Instance.ShowDay(true, ((GameStageChangedPacket) packet).Role,players); MainWindow.Instance.ShowDay(true, ((GameStageChangedPacket) packet).Role,players);
})); });
App.Instance.GetRpcClient().UpdateDetails("Голосование!"); App.Instance.GetRpcClient().UpdateDetails("Голосование!");
break; break;
case GameState.VotingNight: case GameState.VotingNight:
@ -293,17 +294,17 @@ namespace MafiaGame
{ {
case Role.Citizen: case Role.Citizen:
case Role.Died: case Role.Died:
App.Current.Dispatcher.Invoke((Action) (() => Application.Current.Dispatcher.Invoke(() =>
{ {
String rol; String rol;
if (((GameStageChangedPacket)packet).Role == Role.Citizen) rol = "Мирный житель"; if (((GameStageChangedPacket)packet).Role == Role.Citizen) rol = "Мирный житель";
else rol = "Мёртв"; else rol = "Мёртв";
MainWindow.Instance.ShowVotingPassive("Ты " +rol+ "!"); MainWindow.Instance.ShowVotingPassive("Ты " +rol+ "!");
})); });
break; break;
case Role.Mafia: case Role.Mafia:
case Role.Don: case Role.Don:
App.Current.Dispatcher.Invoke((Action) (() => Application.Current.Dispatcher.Invoke(() =>
{ {
String rol; String rol;
if (((GameStageChangedPacket)packet).Role == Role.Mafia) rol = "Мафия"; if (((GameStageChangedPacket)packet).Role == Role.Mafia) rol = "Мафия";
@ -316,7 +317,7 @@ namespace MafiaGame
item.Content = player.Id.ToString() + ") " + player.Name; item.Content = player.Id.ToString() + ") " + player.Name;
MainWindow.Instance.GameVotingActiveSelect.Items.Add(item); MainWindow.Instance.GameVotingActiveSelect.Items.Add(item);
} }
})); });
break; break;
} }
break; break;

View File

@ -1,7 +1,5 @@
using System; using System.IO;
using System.IO;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace MafiaGame namespace MafiaGame
{ {
@ -20,7 +18,7 @@ namespace MafiaGame
{ {
_config = JsonConvert.DeserializeObject<MainConfig>(File.ReadAllText("config.json")); _config = JsonConvert.DeserializeObject<MainConfig>(File.ReadAllText("config.json"));
} }
catch (FileNotFoundException e) catch (FileNotFoundException)
{ {
_config = new MainConfig(); _config = new MainConfig();
File.Create("config.json").Close(); File.Create("config.json").Close();

View File

@ -23,21 +23,21 @@ namespace MafiaServer
{ {
if (_players.Count >= Settings.Config().MaxPlayers) if (_players.Count >= Settings.Config().MaxPlayers)
{ {
player.sendPacket(new DisconnectPacket("Game Full!")); player.SendPacket(new DisconnectPacket("Game Full!"));
player.disconnect(); player.Disconnect();
} }
else else
{ {
if (_isStarted) if (_isStarted)
{ {
player.sendPacket(new DisconnectPacket("Game already started!")); player.SendPacket(new DisconnectPacket("Game already started!"));
player.disconnect(); player.Disconnect();
} }
else else
{ {
foreach (var othPlayer in _players) foreach (var othPlayer in _players)
{ {
othPlayer.sendPacket(new PlayerConnectedPacket(player.PlayerName, _players.Count + 1, othPlayer.SendPacket(new PlayerConnectedPacket(player.PlayerName, _players.Count + 1,
Settings.Config().MaxPlayers)); Settings.Config().MaxPlayers));
} }
@ -47,7 +47,7 @@ namespace MafiaServer
player.OnPlayerSendMessageEvent += PlayerOnOnPlayerSendMessageEvent; player.OnPlayerSendMessageEvent += PlayerOnOnPlayerSendMessageEvent;
player.OnDisconnectEvent += PlayerOnOnDisconnectEvent; player.OnDisconnectEvent += PlayerOnOnDisconnectEvent;
player.OnPlayerVoteEvent += PlayerOnOnPlayerVoteEvent; player.OnPlayerVoteEvent += PlayerOnOnPlayerVoteEvent;
player.sendPacket(new WelcomePacket(Settings.Config().ServerName, _players.Count, player.SendPacket(new WelcomePacket(Settings.Config().ServerName, _players.Count,
Settings.Config().MaxPlayers)); Settings.Config().MaxPlayers));
} }
} }
@ -70,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;
@ -82,7 +82,7 @@ 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",
"Дон покинул игру, ты новый дон!")); "Дон покинул игру, ты новый дон!"));
} }
@ -100,7 +100,7 @@ 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;
@ -125,7 +125,7 @@ namespace MafiaServer
foreach (var player in _players.Where(player => foreach (var player in _players.Where(player =>
player.Role == Role.Mafia || player.Role == Role.Don)) player.Role == Role.Mafia || player.Role == Role.Don))
{ {
player.sendPacket(new MessageReceivePacket(ChatType.Active, true, "System", player.SendPacket(new MessageReceivePacket(ChatType.Active, true, "System",
sender.PlayerName + " проголосовал за " + voteFor.PlayerName)); sender.PlayerName + " проголосовал за " + voteFor.PlayerName));
} }
@ -136,7 +136,7 @@ namespace MafiaServer
foreach (var player in _players.Where(player => foreach (var player in _players.Where(player =>
player.Role == Role.Mafia || player.Role == Role.Don)) player.Role == Role.Mafia || player.Role == Role.Don))
{ {
player.sendPacket(new MessageReceivePacket(ChatType.Active, true, "System", player.SendPacket(new MessageReceivePacket(ChatType.Active, true, "System",
sender.PlayerName + " проголосовал за " + voteFor.PlayerName)); sender.PlayerName + " проголосовал за " + voteFor.PlayerName));
} }
@ -149,7 +149,7 @@ namespace MafiaServer
_votesRemain.Remove(sender); _votesRemain.Remove(sender);
foreach (var player in _players) foreach (var player in _players)
{ {
player.sendPacket(new MessageReceivePacket(ChatType.Day, true, "System", player.SendPacket(new MessageReceivePacket(ChatType.Day, true, "System",
sender.PlayerName + " проголосовал за " + voteFor.PlayerName)); sender.PlayerName + " проголосовал за " + voteFor.PlayerName));
} }
@ -176,9 +176,9 @@ namespace MafiaServer
_gameState = GameState.Day; _gameState = GameState.Day;
foreach (var player in _players) foreach (var player in _players)
{ {
player.sendPacket(new GameStageChangedPacket(GameState.Day, player.Role, player.SendPacket(new GameStageChangedPacket(GameState.Day, player.Role,
GetPlayersRoles())); GetPlayersRoles()));
player.sendPacket(new MessageReceivePacket(ChatType.Day, true, "System", player.SendPacket(new MessageReceivePacket(ChatType.Day, true, "System",
killed.PlayerName + " был убит!")); killed.PlayerName + " был убит!"));
} }
@ -202,9 +202,9 @@ namespace MafiaServer
FillNightVotes(); FillNightVotes();
foreach (var player in _players) foreach (var player in _players)
{ {
player.sendPacket(new GameStageChangedPacket(GameState.VotingNight, player.Role, player.SendPacket(new GameStageChangedPacket(GameState.VotingNight, player.Role,
GetPlayersRoles())); GetPlayersRoles()));
player.sendPacket(new MessageReceivePacket(ChatType.Day, true, "System", player.SendPacket(new MessageReceivePacket(ChatType.Day, true, "System",
killed.PlayerName + " был повешен!")); killed.PlayerName + " был повешен!"));
} }
} }
@ -225,8 +225,8 @@ namespace MafiaServer
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", "Начинаем голосование!"));
} }
} }
@ -249,7 +249,7 @@ 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));
} }
@ -321,17 +321,17 @@ namespace MafiaServer
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);
} }
@ -351,7 +351,7 @@ 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));
} }
@ -371,7 +371,7 @@ 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));
} }
} }
@ -386,7 +386,7 @@ namespace MafiaServer
foreach (var player in _players.Where(player => foreach (var player in _players.Where(player =>
player.Role == Role.Mafia || player.Role == Role.Don)) player.Role == Role.Mafia || player.Role == Role.Don))
{ {
player.sendPacket(new MessageReceivePacket(ChatType.Active, false, player.SendPacket(new MessageReceivePacket(ChatType.Active, false,
sender.PlayerName, sender.PlayerName,
text)); text));
} }
@ -401,14 +401,14 @@ namespace MafiaServer
{ {
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
{ {
foreach (var player in _players) foreach (var player in _players)
{ {
player.sendPacket( player.SendPacket(
new MessageReceivePacket(ChatType.Day, false, sender.PlayerName, text)); new MessageReceivePacket(ChatType.Day, false, sender.PlayerName, text));
} }
} }

View File

@ -10,7 +10,7 @@ namespace MafiaServer
{ {
public class PlayerSocketWorker public class PlayerSocketWorker
{ {
private Socket _socket; private readonly Socket _socket;
public readonly string PlayerName; public readonly string PlayerName;
public event OnDisconnectByErrorEvent OnDisconnectByErrorEvent; public event OnDisconnectByErrorEvent OnDisconnectByErrorEvent;
public event OnPlayerSendMessageEvent OnPlayerSendMessageEvent; public event OnPlayerSendMessageEvent OnPlayerSendMessageEvent;
@ -43,24 +43,24 @@ namespace MafiaServer
} }
} }
public void sendPacket(Packet packet) public void SendPacket(Packet packet)
{ {
try try
{ {
_socket.Send(PacketConverter.ToBytes(packet)); _socket.Send(PacketConverter.ToBytes(packet));
} }
catch (Exception e) catch (Exception)
{ {
// ignored
} }
} }
public void disconnect() public void Disconnect()
{ {
_socket.Close(); _socket.Close();
} }
public void run() public void Run()
{ {
while (_socket.Connected) while (_socket.Connected)
{ {
@ -83,7 +83,7 @@ namespace MafiaServer
WorkPacket(packet); WorkPacket(packet);
} }
} }
catch (SocketException e) catch (SocketException)
{ {
OnDisconnectByErrorEvent.Invoke(this); OnDisconnectByErrorEvent.Invoke(this);
} }

View File

@ -2,10 +2,10 @@
namespace MafiaServer namespace MafiaServer
{ {
class MafiaServer static class MafiaServer
{ {
private static Server server; private static Server _server;
private static Boolean breakFlag = false; private static Boolean _breakFlag;
public static Game Game; public static Game Game;
static void Main(string[] args) static void Main(string[] args)
@ -13,15 +13,15 @@ namespace MafiaServer
Settings.Initialize(); Settings.Initialize();
Settings.Save(); Settings.Save();
Game = new Game(); Game = new Game();
server = new Server(); _server = new Server();
while (!breakFlag) while (!_breakFlag)
{ {
String input = Console.ReadLine(); String input = Console.ReadLine();
switch (input.Split(" ")[0].ToLower()) switch (input.Split(" ")[0].ToLower())
{ {
case "stop": case "stop":
server.stop("Manual stop"); _server.Stop("Manual stop");
breakFlag = true; _breakFlag = true;
break; break;
case "start": case "start":
Game.Start(); Game.Start();

View File

@ -4,31 +4,29 @@ using System.Net;
using System.Net.Sockets; using System.Net.Sockets;
using System.Threading; using System.Threading;
using MafiaCommon.Packets; using MafiaCommon.Packets;
using Newtonsoft.Json;
namespace MafiaServer namespace MafiaServer
{ {
public class Server public class Server
{ {
private Socket _socket; private readonly Socket _socket;
private Thread _acceptor; private readonly Thread _acceptor;
private List<Socket> _clientSockets = new List<Socket>(); private readonly List<Socket> _clientSockets = new List<Socket>();
private List<Thread> _clientThreads = new List<Thread>(); private readonly List<Thread> _clientThreads = new List<Thread>();
public Server() public Server()
{ {
_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_socket.Bind(new IPEndPoint(IPAddress.Any, Settings.Config().Port)); _socket.Bind(new IPEndPoint(IPAddress.Any, Settings.Config().Port));
_socket.Listen(10); _socket.Listen(10);
_acceptor = new Thread(new ThreadStart(acceptor)); _acceptor = new Thread(Acceptor) {IsBackground = true};
_acceptor.IsBackground = true;
_acceptor.Start(); _acceptor.Start();
Console.WriteLine("Server started!"); Console.WriteLine("Server started!");
} }
public void stop(String reason) public void Stop(String reason)
{ {
_acceptor.Interrupt(); _acceptor.Interrupt();
foreach (Thread thread in _clientThreads) foreach (Thread thread in _clientThreads)
@ -44,13 +42,13 @@ namespace MafiaServer
} }
} }
private void acceptor() private void Acceptor()
{ {
while (true) while (true)
{ {
Socket playerSocket = _socket.Accept(); Socket playerSocket = _socket.Accept();
PlayerSocketWorker playerSocketWorker = new PlayerSocketWorker(playerSocket); PlayerSocketWorker playerSocketWorker = new PlayerSocketWorker(playerSocket);
Thread thread = new Thread(playerSocketWorker.run); Thread thread = new Thread(playerSocketWorker.Run);
_clientSockets.Add(playerSocket); _clientSockets.Add(playerSocket);
_clientThreads.Add(thread); _clientThreads.Add(thread);
thread.Start(); thread.Start();

View File

@ -1,11 +1,9 @@
using System; using System.IO;
using System.IO;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace MafiaServer namespace MafiaServer
{ {
public class Settings public static class Settings
{ {
private static MainConfig _config; private static MainConfig _config;
@ -20,7 +18,7 @@ namespace MafiaServer
{ {
_config = JsonConvert.DeserializeObject<MainConfig>(File.ReadAllText("config.json")); _config = JsonConvert.DeserializeObject<MainConfig>(File.ReadAllText("config.json"));
} }
catch (FileNotFoundException e) catch (FileNotFoundException)
{ {
_config = new MainConfig(); _config = new MainConfig();
File.Create("config.json").Close(); File.Create("config.json").Close();