diff --git a/MafiaGame/App.xaml b/MafiaGame/App.xaml deleted file mode 100644 index 155c8f5..0000000 --- a/MafiaGame/App.xaml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - diff --git a/MafiaGame/App.xaml.cs b/MafiaGame/App.xaml.cs deleted file mode 100644 index abc4a2f..0000000 --- a/MafiaGame/App.xaml.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System.Windows; -using DiscordRPC; -using DiscordRPC.Logging; -using DiscordRPC.Message; - -namespace MafiaGame -{ - /// - /// Interaction logic for App.xaml - /// - public partial class App - { - public App() - { - App.Instance = this; - } - - public static App Instance; - - private DiscordRpcClient _rpcClient; - - public ServerConnection Connection; - - public DiscordRpcClient GetRpcClient() - { - return _rpcClient; - } - - private void App_OnStartup(object sender, StartupEventArgs e) - { - _rpcClient = new DiscordRpcClient("800016130097152000", autoEvents: true); - _rpcClient.RegisterUriScheme(); - _rpcClient.Logger = new ConsoleLogger() { Level = LogLevel.Warning }; - _rpcClient.OnJoinRequested += RpcClientOnOnJoinRequested; - _rpcClient.OnJoin += RpcClientOnOnJoin; - _rpcClient.SetSubscription(EventType.Join | EventType.JoinRequest); - _rpcClient.Initialize(); - _rpcClient.SetPresence(new RichPresence() - { - State = "Запуск игры..." - }); - - Settings.Initialize(); - Settings.Save(); - } - - private void RpcClientOnOnJoin(object sender, JoinMessage args) - { - string secret = args.Secret; - Connection = new ServerConnection(secret.Replace("/join", "")); - } - - private void RpcClientOnOnJoinRequested(object sender, JoinRequestMessage args) - { - _rpcClient.Respond(args, true); - } - - private void App_OnExit(object sender, ExitEventArgs e) - { - _rpcClient.Dispose(); - } - } -} \ No newline at end of file diff --git a/MafiaGame/AssemblyInfo.cs b/MafiaGame/AssemblyInfo.cs deleted file mode 100644 index 4a05c7d..0000000 --- a/MafiaGame/AssemblyInfo.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.Windows; - -[assembly: ThemeInfo( - ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located - //(used if a resource is not found in the page, - // or application resource dictionaries) - ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located - //(used if a resource is not found in the page, - // app, or any theme specific resource dictionaries) -)] \ No newline at end of file diff --git a/MafiaGame/MafiaGame.csproj b/MafiaGame/MafiaGame.csproj deleted file mode 100644 index d02b9c2..0000000 --- a/MafiaGame/MafiaGame.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - WinExe - net5.0-windows - true - - - - - - - - - - - \ No newline at end of file diff --git a/MafiaGame/MainConfig.cs b/MafiaGame/MainConfig.cs deleted file mode 100644 index b60ddd6..0000000 --- a/MafiaGame/MainConfig.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace MafiaGame -{ - public class MainConfig - { - public string Nick = "the Player"; - } -} \ No newline at end of file diff --git a/MafiaGame/MainWindow.xaml b/MafiaGame/MainWindow.xaml deleted file mode 100644 index bab6538..0000000 --- a/MafiaGame/MainWindow.xaml +++ /dev/null @@ -1,381 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MafiaGame/MainWindow.xaml.cs b/MafiaGame/MainWindow.xaml.cs deleted file mode 100644 index 6967a65..0000000 --- a/MafiaGame/MainWindow.xaml.cs +++ /dev/null @@ -1,280 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Input; -using DiscordRPC; -using MafiaCommon; - -namespace MafiaGame -{ - /// - /// Interaction logic for MainWindow.xaml - /// - public partial class MainWindow - { - private static MainWindow _mainWindow; - - public static MainWindow Instance => _mainWindow; - - public MainWindow() - { - InitializeComponent(); - - _mainWindow = this; - - App.Instance.GetRpcClient().SetPresence(new RichPresence() - { - State = "В главном меню" - }); - } - - public void HideAll() - { - MainMenu.Visibility = Visibility.Hidden; - SettingsGui.Visibility = Visibility.Hidden; - IpInput.Visibility = Visibility.Hidden; - GameQueue.Visibility = Visibility.Hidden; - DisconnectScreen.Visibility = Visibility.Hidden; - GameVotingPassive.Visibility = Visibility.Hidden; - GameVotingActive.Visibility = Visibility.Hidden; - GameEndScreen.Visibility = Visibility.Hidden; - GameDay.Visibility = Visibility.Hidden; - } - - private void Exit_OnClick(object sender, RoutedEventArgs e) - { - Application.Current.Shutdown(0); - } - - private void Play_OnClick(object sender, RoutedEventArgs e) - { - IpInputGuiBack.IsEnabled = true; - IpInputGuiConnect.IsEnabled = true; - IpBox.IsEnabled = true; - MainMenu.Visibility = Visibility.Hidden; - IpInput.Visibility = Visibility.Visible; - App.Instance.GetRpcClient().SetPresence(new RichPresence() - { - State = "Выбирает сервер" - }); - } - - private void ConnectToServer_OnClick(object sender, RoutedEventArgs e) - { - String ip = IpBox.Text; - App.Instance.GetRpcClient().SetPresence(new RichPresence() - { - State = "Присоединяется к серверу" - }); - IpInputGuiBack.IsEnabled = false; - IpInputGuiConnect.IsEnabled = false; - IpBox.IsEnabled = false; - Thread thread = new Thread(() => - { - App.Instance.Connection = new ServerConnection(ip); - }); - thread.Start(); - } - - private void Back_OnClick(object sender, RoutedEventArgs e) - { - IpInput.Visibility = Visibility.Hidden; - DisconnectScreen.Visibility = Visibility.Hidden; - MainMenu.Visibility = Visibility.Visible; - App.Instance.GetRpcClient().SetPresence(new RichPresence() - { - State = "В главном меню" - }); - } - - private void SettingsBack_OnClick(object sender, RoutedEventArgs e) - { - Settings.Save(); - SettingsGui.Visibility = Visibility.Hidden; - MainMenu.Visibility = Visibility.Visible; - App.Instance.GetRpcClient().SetPresence(new RichPresence() - { - State = "В главном меню" - }); - } - - private void Settings_OnClick(object sender, RoutedEventArgs e) - { - MainMenu.Visibility = Visibility.Hidden; - SettingsGui.Visibility = Visibility.Visible; - NickBox.Text = Settings.Config().Nick; - } - - private void NickBox_OnTextInput(object sender, TextChangedEventArgs e) - { - Settings.Config().Nick = NickBox.Text; - } - - public void ShowGameQueueScreen() - { - MainMenu.Visibility = Visibility.Hidden; - IpInput.Visibility = Visibility.Hidden; - SettingsGui.Visibility = Visibility.Hidden; - DisconnectScreen.Visibility = Visibility.Hidden; - GameQueue.Visibility = Visibility.Visible; - } - - public void ShowDisconnectScreen(string reason) - { - ReasonText.Text = reason; - MainMenu.Visibility = Visibility.Hidden; - IpInput.Visibility = Visibility.Hidden; - SettingsGui.Visibility = Visibility.Hidden; - GameQueue.Visibility = Visibility.Hidden; - DisconnectScreen.Visibility = Visibility.Visible; - } - - private void GameQueue_OnKeyUp(object sender, KeyEventArgs e) - { - if (e.Key == Key.Enter) - { - GameQueueChatSend_OnClick(null, null); - } - } - - private void GameQueueChatSend_OnClick(object sender, RoutedEventArgs e) - { - if (QueueChatInput.Text.Trim() != "") - { - App.Instance.Connection.SendMessage(ChatType.Queue, QueueChatInput.Text); - QueueChatInput.Clear(); - } - } - - public void ShowVotingPassive(string name) - { - GameQueue.Visibility = Visibility.Hidden; - GameVotingPassive.Visibility = Visibility.Visible; - GameVotingPassiveRole.Text = name; - } - - public void ShowVotingActive(string name) - { - GameQueue.Visibility = Visibility.Hidden; - GameVotingActive.Visibility = Visibility.Visible; - GameVotingActiveRole.Text = name; - } - - private void GameVotingActiveChatSend_OnClick(object sender, RoutedEventArgs e) - { - if (GameVotingActiveChatInput.Text.Trim() != "") - { - App.Instance.Connection.SendMessage(ChatType.Active, GameVotingActiveChatInput.Text); - GameVotingActiveChatInput.Clear(); - } - } - - private void GameVotingActive_OnKeyUp(object sender, KeyEventArgs e) - { - if (e.Key == Key.Enter) - { - GameVotingActiveChatSend_OnClick(null, null); - } - } - - public void ShowGameEnd(bool isWon, List playerRoles) - { - GameEndScreenWon.Text = isWon ? "Ты победил!" : "Ты проиграл!"; - - string text = ""; - - foreach (PlayerRole playerRole in playerRoles) - { - string role = "Роль"; - switch (playerRole.Role) - { - case Role.Citizen: - role = "Мирный житель"; - break; - case Role.Mafia: - role = "Мафия"; - break; - case Role.Don: - role = "Дон"; - break; - } - - text += playerRole.Name + " - " + role + Environment.NewLine; - } - - GameEndScreenRoles.Text = text; - - HideAll(); - GameEndScreen.Visibility = Visibility.Visible; - } - - private void GameEndScreenBack_OnClick(object sender, RoutedEventArgs e) - { - GameEndScreen.Visibility = Visibility.Hidden; - GameQueue.Visibility = Visibility.Visible; - } - - private void GameQueueLeave_OnClick(object sender, RoutedEventArgs e) - { - App.Instance.Connection.Disconnect(); - HideAll(); - MainMenu.Visibility = Visibility.Visible; - App.Instance.GetRpcClient().SetPresence(new RichPresence() - { - State = "В главном меню" - }); - } - - private void GameVotingActiveSelect_OnMouseDoubleClick(object sender, MouseButtonEventArgs e) - { - ListBoxItem selected = (ListBoxItem)GameVotingActiveSelect.SelectedItem; - App.Instance.Connection.Vote(Convert.ToInt32(((string)selected.Content).Split(")")[0])); - } - - private void GameDayWait_OnKeyUp(object sender, KeyEventArgs e) - { - if (e.Key == Key.Enter) - { - GameDayChatSend_OnClick(null, null); - } - } - - private void GameDayChatSend_OnClick(object sender, RoutedEventArgs e) - { - if (GameDayChatInput.Text.Trim() != "") - { - App.Instance.Connection.SendMessage(ChatType.Day, GameDayChatInput.Text); - GameDayChatInput.Clear(); - } - } - - private void GameDaySelect_OnMouseDoubleClick(object sender, MouseButtonEventArgs e) - { - ListBoxItem selected = (ListBoxItem)GameDaySelect.SelectedItem; - App.Instance.Connection.Vote(Convert.ToInt32(((string)selected.Content).Split(")")[0])); - } - - public void ShowDay(bool voting, Role role, List players) - { - GameDaySelect.IsEnabled = voting; - GameDaySelect.Items.Clear(); - foreach (Player player in players) - { - ListBoxItem item = new ListBoxItem {Content = player.Id.ToString() + ") " + player.Name}; - GameDaySelect.Items.Add(item); - } - if (role == Role.Died) - { - GameDayHotBar.Text = "Коли умер, жди"; - } - else - { - GameDayHotBar.Text = voting ? "Голосуй и молись" : "Обсуждай и думай"; - } - - GameDay.Visibility = Visibility.Visible; - } - } -} \ No newline at end of file diff --git a/MafiaGame/ServerConnection.cs b/MafiaGame/ServerConnection.cs deleted file mode 100644 index 011a5bc..0000000 --- a/MafiaGame/ServerConnection.cs +++ /dev/null @@ -1,334 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Net.Sockets; -using System.Text; -using System.Threading; -using System.Windows; -using System.Windows.Controls; -using DiscordRPC; -using MafiaCommon.Packets; -using MafiaCommon; - -namespace MafiaGame -{ - public class ServerConnection - { - private readonly String _host = "localhost"; - private readonly int _port = 25743; - private readonly Socket _socket; - private readonly Thread _thread; - private bool _breakFlag; - private bool _connected; - - public ServerConnection(String ip) - { - if (ip.Contains(':')) - { - _host = ip.Split(":")[0]; - _port = Convert.ToInt32(ip.Split(":")[1]); - } - else if (_host.Length != 0) - { - _host = ip; - } - - _thread = new Thread(ServerListener); - - _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); - try - { - _socket.Connect(_host, _port); - } - catch (Exception e) - { - Application.Current.Dispatcher.Invoke(() => - { - MainWindow.Instance.ShowDisconnectScreen(e.Message); - }); - return; - } - - _socket.Send(PacketConverter.ToBytes(new ConnectPacket(Settings.Config().Nick))); - _thread.IsBackground = true; - _thread.Start(); - _connected = true; - } - - public void SendMessage(ChatType chatType, string text) - { - _socket.Send(PacketConverter.ToBytes(new MessageSendPacket(chatType, text))); - } - - public void Disconnect() - { - _connected = false; - _socket.Send(PacketConverter.ToBytes(new DisconnectPlayerPacket())); - _thread.Interrupt(); - _socket.Close(); - } - - public void Vote(int id) - { - _socket.Send(PacketConverter.ToBytes(new VotePacket(id))); - } - - private void ServerListener() - { - while (!_breakFlag) - { - StringBuilder builder = new StringBuilder(); - byte[] data = new byte[256]; - try - { - do - { - var bytes = _socket.Receive(data); - builder.Append(Encoding.UTF8.GetString(data, 0, bytes)); - } while (_socket.Available > 0); - } - catch (Exception e) - { - _socket.Close(); - if (_connected) - { - Application.Current.Dispatcher.Invoke(() => - { - MainWindow.Instance.HideAll(); - MainWindow.Instance.ShowDisconnectScreen(e.Message); - }); - _connected = false; - } - _breakFlag = true; - } - - if (!_breakFlag) - { - Console.WriteLine(builder.ToString()); - - List packets = PacketConverter.ToPacket(builder.ToString()); - foreach (Packet packet in packets) - { - WorkPacket(packet); - } - } - } - } - - private void WorkPacket(Packet packet) - { - switch (packet.PacketType) - { - case PacketType.Welcome: - Application.Current.Dispatcher.Invoke(() => - { - MainWindow.Instance.QueueOnline.Text = ((WelcomePacket) packet).Players + "/" + - ((WelcomePacket) packet).MaxPlayers; - MainWindow.Instance.ShowGameQueueScreen(); - Party party = new Party - { - ID = _host + ":" + _port, - Size = ((WelcomePacket) packet).Players, - Max = ((WelcomePacket) packet).MaxPlayers - }; - Secrets secrets = new Secrets - { - JoinSecret = _host + ":" + _port + "/join", - SpectateSecret = _host + ":" + _port + "/spectate" - }; - App.Instance.GetRpcClient().SetPresence(new RichPresence() - { - State = ((WelcomePacket) packet).ServerName, - Party = party, - Secrets = secrets, - Timestamps = Timestamps.Now, - Details = "Ожидание старта" - }); - }); - break; - case PacketType.Disconnect: - Application.Current.Dispatcher.Invoke(() => - { - MainWindow.Instance.ShowDisconnectScreen(((DisconnectPacket) packet).Reason); - }); - _breakFlag = true; - break; - case PacketType.PlayerConnected: - Application.Current.Dispatcher.Invoke(() => - { - MainWindow.Instance.QueueOnline.Text = ((PlayerConnectedPacket) packet).Players + "/" + - ((PlayerConnectedPacket) packet).MaxPlayers; - }); - try - { - App.Instance.GetRpcClient().UpdatePartySize(((PlayerConnectedPacket) packet).Players); - } - catch (Exception e) - { - Console.WriteLine(e.Message); - } - - break; - case PacketType.PlayerDisconnected: - Application.Current.Dispatcher.Invoke(() => - { - MainWindow.Instance.QueueOnline.Text = ((PlayerDisconnectedPacket) packet).Players + "/" + - ((PlayerDisconnectedPacket) packet).MaxPlayers; - }); - try - { - App.Instance.GetRpcClient().UpdatePartySize(((PlayerDisconnectedPacket) packet).Players); - } - catch (Exception e) - { - Console.WriteLine(e.Message); - } - - break; - case PacketType.ServerShutdown: - Application.Current.Dispatcher.Invoke(() => - { - MainWindow.Instance.ShowDisconnectScreen("Сервер выключен: " + - ((ServerShutdownPacket) packet).Reason); - }); - _breakFlag = true; - break; - case PacketType.MessageReceivePacket: - Application.Current.Dispatcher.Invoke(() => - { - ListBoxItem message = new ListBoxItem(); - if (((MessageReceivePacket) packet).IsSystem) - { - message.Content = ((MessageReceivePacket) packet).Text; - } - else - { - message.Content = ((MessageReceivePacket) packet).Author + ": " + - ((MessageReceivePacket) packet).Text; - } - - switch (((MessageReceivePacket) packet).ChatType) - { - case ChatType.Queue: - MainWindow.Instance.QueueChat.Items.Add(message); - MainWindow.Instance.QueueChat.ScrollIntoView(message); - break; - case ChatType.Active: - MainWindow.Instance.GameVotingActiveChat.Items.Add(message); - MainWindow.Instance.GameVotingActiveChat.ScrollIntoView(message); - break; - case ChatType.Day: - MainWindow.Instance.GameDayChat.Items.Add(message); - MainWindow.Instance.GameDayChat.ScrollIntoView(message); - break; - } - }); - break; - case PacketType.GameStartPacket: - List players = ((GameStartPacket) packet).Players; - switch (((GameStartPacket) packet).Role) - { - case Role.Citizen: - Application.Current.Dispatcher.Invoke(() => - { - MainWindow.Instance.HideAll(); - MainWindow.Instance.ShowVotingPassive("Ты Мирный Житель"); - }); - break; - case Role.Don: - Application.Current.Dispatcher.Invoke(() => - { - MainWindow.Instance.HideAll(); - MainWindow.Instance.GameVotingActiveSelect.Items.Clear(); - MainWindow.Instance.ShowVotingActive("Ты Дон, выбери кого убить!"); - foreach (Player player in players) - { - ListBoxItem item = new ListBoxItem - { - Content = player.Id.ToString() + ") " + player.Name - }; - MainWindow.Instance.GameVotingActiveSelect.Items.Add(item); - } - }); - break; - case Role.Mafia: - Application.Current.Dispatcher.Invoke(() => - { - MainWindow.Instance.HideAll(); - MainWindow.Instance.GameVotingActiveSelect.Items.Clear(); - MainWindow.Instance.ShowVotingActive("Ты Мафия, выбери кого убить!"); - foreach (Player player in players) - { - ListBoxItem item = new ListBoxItem - { - Content = player.Id.ToString() + ") " + player.Name - }; - MainWindow.Instance.GameVotingActiveSelect.Items.Add(item); - } - }); - break; - } - - App.Instance.GetRpcClient().UpdateDetails("Ночь"); - break; - case PacketType.EndGame: - Application.Current.Dispatcher.Invoke(() => - { - MainWindow.Instance.ShowGameEnd(((EndGamePacket)packet).IsWon,((EndGamePacket)packet).PlayerRoles); - }); - App.Instance.GetRpcClient().UpdateDetails("Ожидание старта"); - break; - case PacketType.GameStateChanged: - Application.Current.Dispatcher.Invoke(() => { MainWindow.Instance.HideAll(); }); - players = ((GameStageChangedPacket) packet).Players; - switch (((GameStageChangedPacket) packet).GameState) - { - case GameState.Day: - Application.Current.Dispatcher.Invoke(() => - { - MainWindow.Instance.ShowDay(false, ((GameStageChangedPacket) packet).Role,players); - }); - App.Instance.GetRpcClient().UpdateDetails("День"); - break; - case GameState.VotingDay: - Application.Current.Dispatcher.Invoke(() => - { - MainWindow.Instance.ShowDay(true, ((GameStageChangedPacket) packet).Role,players); - }); - App.Instance.GetRpcClient().UpdateDetails("Голосование!"); - break; - case GameState.VotingNight: - switch (((GameStageChangedPacket)packet).Role) - { - case Role.Citizen: - case Role.Died: - Application.Current.Dispatcher.Invoke(() => - { - var rol = ((GameStageChangedPacket)packet).Role == Role.Citizen ? "Мирный житель" : "Мёртв"; - MainWindow.Instance.ShowVotingPassive("Ты " +rol+ "!"); - }); - break; - case Role.Mafia: - case Role.Don: - Application.Current.Dispatcher.Invoke(() => - { - var rol = ((GameStageChangedPacket)packet).Role == Role.Mafia ? "Мафия" : "Дон"; - MainWindow.Instance.GameVotingActiveSelect.Items.Clear(); - MainWindow.Instance.ShowVotingActive("Ты "+rol+", выбери кого убить!"); - foreach (Player player in players) - { - ListBoxItem item = new ListBoxItem - { - Content = player.Id.ToString() + ") " + player.Name - }; - MainWindow.Instance.GameVotingActiveSelect.Items.Add(item); - } - }); - break; - } - break; - } - break; - } - } - } -} \ No newline at end of file diff --git a/MafiaGame/Settings.cs b/MafiaGame/Settings.cs deleted file mode 100644 index df8d341..0000000 --- a/MafiaGame/Settings.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.IO; -using Newtonsoft.Json; - -namespace MafiaGame -{ - public class Settings - { - private static MainConfig _config; - - public static MainConfig Config() - { - return _config; - } - - public static void Initialize() - { - try - { - _config = JsonConvert.DeserializeObject(File.ReadAllText("config.json")); - } - catch (FileNotFoundException) - { - _config = new MainConfig(); - File.Create("config.json").Close(); - } - } - - public static void Save() - { - File.WriteAllText("config.json",JsonConvert.SerializeObject(_config,Formatting.Indented)); - } - } -} \ No newline at end of file