Пример #1
0
        public static void BeginGame()
        {
            GameOn = true;
            GameHelper.ChooseRoles();
            GameHelper.PlayerAmount = playerClients.Count;
            timer          = new Timer(10000);
            timer.Elapsed += GameStartEnded;
            ((Views.ServerTerminal)RunningWindows.GetWindow("ServerTerminal")).Terminal("Game Started");

            foreach (PlayerClient item in playerClients)
            {
                if (item.Role.Name == "Thanatos")
                {
                    GameEventHandler.ThanatosExists = true;
                    int target = new Random().Next(1, playerClients.Count + 1);
                    ((Player.Roles.Standalone.Thanatos)item.Role).TargetID = target.ToString();
                    Server.Send(item, $"$ rl {item.Role.GetType().Name} {target}");
                }
                else if (item.Role.Name == "Paranoid")
                {
                    GameEventHandler.ParanoidExists = true;
                    Server.Send(item, $"$ rl {item.Role.GetType().Name}");
                }
                else
                {
                    Server.Send(item, $"$ rl {item.Role.GetType().Name}");
                }
            }
            timer.Start();
        }
Пример #2
0
        public async ValueTask UninitializeAsync <TWindow>(ILifetimeScope initializeScope)
            where TWindow : Window, IHostedWindow, new()
        {
            await BeginIHostedWindowScope <TWindow>((app) => app.Uninitialize(initializeScope));

            RunningWindows.Remove(typeof(TWindow));
        }
Пример #3
0
        private void join_button(object sender, RoutedEventArgs e)
        {
            Button button = (Button)sender;

            RunningWindows.AddWindow(this);
            RunningWindows.MainWindow.DataContext = new GameScreen();
        }
Пример #4
0
        private void host_button(object sender, RoutedEventArgs e)
        {
            Button button = (Button)sender;

            RunningWindows.AddWindow(this);
            RunningWindows.MainWindow.DataContext = new ServerTerminal();
        }
Пример #5
0
 private static void GameStartEnded(object sender, ElapsedEventArgs e) // NIGHT START
 {
     Phase          = GamePhase.Night;
     timer.Elapsed -= GameStartEnded;
     timer          = new Timer(10000);
     timer.Elapsed += MorningStart;
     GameHelper.HandleNight();
     ((Views.ServerTerminal)RunningWindows.GetWindow("ServerTerminal")).Terminal("Night Started");
     timer.Start();
 }
Пример #6
0
 private static void VotingStart(object sender, ElapsedEventArgs e)
 {
     Phase          = GamePhase.Voting;
     timer.Elapsed -= VotingStart;
     timer          = new Timer(20000);
     timer.Elapsed += LynchStart;
     GameHelper.HandleVoting();
     ((Views.ServerTerminal)RunningWindows.GetWindow("ServerTerminal")).Terminal("Voting Started");
     timer.Start();
 }
Пример #7
0
 private static void DiscussionStart(object sender, ElapsedEventArgs e)
 {
     Phase          = GamePhase.Discussion;
     timer.Elapsed -= DiscussionStart;
     timer          = new Timer(10000);
     timer.Elapsed += VotingStart;
     GameHelper.HandleDiscussion();
     ((Views.ServerTerminal)RunningWindows.GetWindow("ServerTerminal")).Terminal("Discussion Started");
     timer.Start();
 }
Пример #8
0
 private static void KillHandler()
 {
     for (int i = 0; i < GameHelper.Commands.Count; i++)
     {
         if (GameHelper.Commands[i].Ability == Abilities.Kill)
         {
             int killed = Convert.ToInt32(GameHelper.Commands[i].To);
             GameHelper.Dead.Add(GameHelper.Commands[i].To);
             GameplayServer.Server.Send(GameplayServer.playerClients[killed - 1], "YOU DIED!");
         }
     }
     ((Views.ServerTerminal)RunningWindows.GetWindow("ServerTerminal")).Terminal("kill done");
 }
Пример #9
0
 private static void InvestigateHandler()
 {
     for (int i = 0; i < GameHelper.Commands.Count; i++)
     {
         if (GameHelper.Commands[i].Ability == Abilities.Investigate)
         {
             int          from             = Convert.ToInt32(GameHelper.Commands[i].From);
             int          to               = Convert.ToInt32(GameHelper.Commands[i].To);
             PlayerClient playerClientFrom = GameplayServer.playerClients[from - 1];
             PlayerClient playerClientTo   = GameplayServer.playerClients[to - 1];
             string       message          = $"Your target is a {playerClientTo.Role.Name}";
             GameplayServer.Server.Send(playerClientFrom, message);
         }
     }
     ((Views.ServerTerminal)RunningWindows.GetWindow("ServerTerminal")).Terminal("Inves done");
 }
Пример #10
0
        public GameScreen()
        {
            InitializeComponent();
            RunningWindows.GameScreen = this;
            Login login = (Login)RunningWindows.GetWindow("Login");

            ClientName = login.nameText.Text;
            RunningWindows.MainWindow.Title = $"{login.nameText.Text} - {login.addressText.Text}:{login.portText.Text}";
            try
            {
                client = new Client(login.addressText.Text, Convert.ToInt32(login.portText.Text), ClientName);
            }
            catch (Exception)
            {
            }
        }
Пример #11
0
 private static void LynchStart(object sender, ElapsedEventArgs e)
 {
     Phase = GamePhase.Lynch;
     GameHelper.HandleLynch();
     ((Views.ServerTerminal)RunningWindows.GetWindow("ServerTerminal")).Terminal("Lynch Started");
     if (GameOn)
     {
         timer.Elapsed -= LynchStart;
         timer          = new Timer(5000);
         timer.Elapsed += NightStart;
         timer.Start();
     }
     else
     {
         timer.Stop();
         ((Views.ServerTerminal)RunningWindows.GetWindow("ServerTerminal")).Terminal("Game Ended");
     }
 }
Пример #12
0
 private static void MorningStart(object sender, ElapsedEventArgs e)
 {
     Phase = GamePhase.Morning;
     GameHelper.HandleMorning();
     ((Views.ServerTerminal)RunningWindows.GetWindow("ServerTerminal")).Terminal("Morning Started");
     if (GameOn)
     {
         timer.Elapsed -= MorningStart;
         timer          = new Timer(5000);
         timer.Elapsed += DiscussionStart;
         timer.Start();
     }
     else
     {
         timer.Stop();
         ((Views.ServerTerminal)RunningWindows.GetWindow("ServerTerminal")).Terminal("Game Ended");
     }
 }
Пример #13
0
 private static void TricksterHandler()
 {
     for (int i = 0; i < GameHelper.Commands.Count; i++)
     {
         if (GameHelper.Commands[i].Ability == Abilities.Trick)
         {
             for (int j = 0; j > GameHelper.Commands.Count; j++)
             {
                 if (GameHelper.Commands[i].To == GameHelper.Commands[j].From)
                 {
                     Random r = new Random();
                     GameHelper.Commands[j].To = r.Next(1, GameplayServer.playerClients.Count + 1).ToString();
                     break;
                 }
             }
         }
     }
     ((Views.ServerTerminal)RunningWindows.GetWindow("ServerTerminal")).Terminal("trick done");
 }
Пример #14
0
        private async ValueTask RegisterWindow <TWindow>(CancellationToken token = default)
            where TWindow : Window, IHostedWindow, new()
        {
            await InitSemaphore.WaitAsync(token);

            try
            {
                if (!RunningWindows.ContainsKey(typeof(TWindow)))
                {
                    var window = await Application.Dispatcher.InvokeAsync(() => new TWindow());

                    RunningWindows.Add(typeof(TWindow), window);
                }
            }
            finally
            {
                InitSemaphore.Release();
            }
        }
Пример #15
0
 private static void BartenderHandler()
 {
     for (int i = 0; i < GameHelper.Commands.Count; i++)
     {
         if (GameHelper.Commands[i].Ability == Abilities.Bart)
         {
             for (int j = 0; j > GameHelper.Commands.Count; j++)
             {
                 if (GameHelper.Commands[i].To == GameHelper.Commands[j].From)
                 {
                     int drunk = Convert.ToInt32(GameHelper.Commands[j].From);
                     GameHelper.Commands.RemoveAt(j);
                     GameplayServer.Server.Send(GameplayServer.playerClients[drunk - 1], "You were drunk last night");
                     break;
                 }
             }
         }
     }
     ((Views.ServerTerminal)RunningWindows.GetWindow("ServerTerminal")).Terminal("bart done");
 }
Пример #16
0
        private static void HealHandler()
        {
            List <int> remove = new List <int>();

            for (int i = 0; i < GameHelper.Commands.Count; i++)
            {
                if (GameHelper.Commands[i].Ability == Abilities.Heal)
                {
                    for (int j = 0; j < GameHelper.Commands.Count; j++)
                    {
                        if (GameHelper.Commands[i].To == GameHelper.Commands[j].To && GameHelper.Commands[j].Ability == Abilities.Kill)
                        {
                            remove.Add(j);
                        }
                    }
                }
            }
            HandleRemove(remove);
            ((Views.ServerTerminal)RunningWindows.GetWindow("ServerTerminal")).Terminal("heal done");
        }
Пример #17
0
        public ServerTerminal()
        {
            InitializeComponent();

            RunningWindows.MainWindow.Title = "Server Terminal";

            Login loginWindow = (Login)RunningWindows.GetWindow("Login");

            RunningWindows.AddWindow(this);
            string address = loginWindow.portText.Text;
            string port    = loginWindow.portText.Text;

            if (string.IsNullOrEmpty(address))
            {
                address = Dns.GetHostEntry(Dns.GetHostName()).AddressList[1].ToString();
            }
            if (string.IsNullOrEmpty(port))
            {
                port = "13000";
            }

            server = new Server(address, Convert.ToInt32(port));
        }