예제 #1
0
        private static void EnterMainMenu()
        {
            _exitFlag = false;
            while (!_exitFlag)
            {
                Console.WriteLine("-=Главное меню=-");
                foreach (var item in _mainMenu)
                {
                    Console.WriteLine(item.Key + " - " + item.Value.MenuText);
                }
                var key = Console.ReadKey();
                Console.Clear();

                try
                {
                    if (_mainMenu.ContainsKey(key.Key))
                    {
                        _mainMenu[key.Key].MenuAction.Invoke();
                    }
                }
                catch (Exception exp)
                {
                    PrettyConsole.WriteLineColor(ConsoleColor.Red, exp.Message);
                }
            }
        }
예제 #2
0
            public static ErrorCodes HandleClientException(IClientException <ErrorData> exception)
            {
                Console.Clear();
                var res = HandleClientExceptionErrorData(exception);

                PrettyConsole.WriteLineColor(ConsoleColor.Red, "Ошибка: {0}", res.Item2);
                return(res.Item1);
            }
예제 #3
0
 public void FightAgainstCorruption()
 {
     try
     {
         _game.FightAgainstInflation();
     }
     catch (Exception exp)
     {
         PrettyConsole.WriteLineColor(ConsoleColor.Red, "Error: {0}", exp);
     }
     DisplayGameData(GetGameData());
 }
예제 #4
0
 public void BuyFundDriver(ConsoleKeyInfo keyInfo)
 {
     try
     {
         _game.BuyFundDriver((int)keyInfo.Key - 64);
     }
     catch (Exception exp)
     {
         PrettyConsole.WriteLineColor(ConsoleColor.Red, "Error: {0}", exp);
     }
     DisplayGameData(GetGameData());
 }
예제 #5
0
 public override void DisplayGameData(GameData gameData)
 {
     lock (_stdLock)
     {
         Console.SetCursorPosition(0, 0);
         PrettyConsole.WriteLineColor(ConsoleColor.DarkRed, "User: {0}, Session: {1}", User, SessionGuid);
         PrettyConsole.WriteLineColor(ConsoleColor.DarkGreen, "F2 - Admin settings");
         PrettyConsole.WriteLineColor(ConsoleColor.DarkGreen, "F3 - Logout");
         Console.SetCursorPosition(0, 3);
         base.DisplayGameData(gameData);
     }
 }
예제 #6
0
 public override void DisplayGameData(GameDataModel gameData)
 {
     lock (_stdLock)
     {
         Console.SetCursorPosition(0, 0);
         PrettyConsole.WriteLineColor(ConsoleColor.DarkRed, "Логин: {0}, Сервер API: {1}", User, ServerContext.BaseUri);
         PrettyConsole.WriteLineColor(ConsoleColor.DarkGreen, "F2 - Администрирование");
         PrettyConsole.WriteLineColor(ConsoleColor.DarkGreen, "F3 - Разлогиниться");
         Console.SetCursorPosition(0, 3);
         base.DisplayGameData(gameData);
     }
 }
예제 #7
0
        private void PrintStatistics(Tuple <Uri, ServerStatisticsInfoModel>[] statistics)
        {
            Console.Clear();
            foreach (var serverStatisticsInfoModel in statistics)
            {
                Console.WriteLine(serverStatisticsInfoModel.Item1);
                PrettyConsole.WriteColor(ConsoleColor.DarkCyan, "\t{0,-15}", "Игр:");
                PrettyConsole.WriteColor(ConsoleColor.Cyan, "{0,-9}", serverStatisticsInfoModel.Item2.ActiveGamesCount);
                PrettyConsole.WriteColor(ConsoleColor.DarkCyan, "\t{0,-15}", "Сессий:");
                PrettyConsole.WriteColor(ConsoleColor.Cyan, "{0,-9} ", serverStatisticsInfoModel.Item2.ActiveSessionsCount);
                PrettyConsole.WriteColor(ConsoleColor.DarkCyan, "\t{0,-10}", "Uptime:");
                PrettyConsole.WriteLineColor(ConsoleColor.Cyan, "{0:dd\\.hh\\:mm\\:ss}", serverStatisticsInfoModel.Item2.ServerUptime);

                PrettyConsole.WriteColor(ConsoleColor.DarkCyan, "\t{0,-15}", "Пользовтелей:");
                PrettyConsole.WriteColor(ConsoleColor.Cyan, "{0,-9}", serverStatisticsInfoModel.Item2.RegistredUsersCount);

                PrettyConsole.WriteColor(ConsoleColor.DarkCyan, "\t{0,-15}", "Вычисл / цикл:");
                PrettyConsole.WriteColor(ConsoleColor.Cyan, "{0,-9} ms", serverStatisticsInfoModel.Item2.PerformanceInfo != null ? serverStatisticsInfoModel.Item2.PerformanceInfo.CalculationsPerCycle.TotalMilliseconds : 0);
                PrettyConsole.WriteColor(ConsoleColor.DarkCyan, "\t{0,-15}", "Сохран / цикл:");
                PrettyConsole.WriteLineColor(ConsoleColor.Cyan, "{0,-9} ", serverStatisticsInfoModel.Item2.PerformanceInfo != null ? serverStatisticsInfoModel.Item2.PerformanceInfo.PersistencePerCycle.TotalMilliseconds : 0);

                PrettyConsole.WriteColor(ConsoleColor.DarkCyan, "\t{0,-15}", "OS:");
                PrettyConsole.WriteLineColor(ConsoleColor.Cyan, serverStatisticsInfoModel.Item2.SystemInfo.Os);

                PrettyConsole.WriteColor(ConsoleColor.DarkCyan, "\t{0,-15}", "Runtime: ");
                PrettyConsole.WriteLineColor(ConsoleColor.Cyan, serverStatisticsInfoModel.Item2.SystemInfo.Runtime);

                PrettyConsole.WriteColor(ConsoleColor.DarkCyan, "\t{0,-15}", "CPUs:");
                PrettyConsole.WriteColor(ConsoleColor.Cyan, "{0,-9}", serverStatisticsInfoModel.Item2.SystemInfo.CpusCount);
                PrettyConsole.WriteColor(ConsoleColor.DarkCyan, "\t{0,-15}", "RAM:");
                PrettyConsole.WriteLineColor(ConsoleColor.Cyan, "{0,-9} Mb", serverStatisticsInfoModel.Item2.SystemInfo.MemoryTotal);

                PrettyConsole.WriteColor(ConsoleColor.DarkCyan, "\t{0,-15}", "CPU:");
                PrettyConsole.WriteColor(ConsoleColor.Cyan, "{0,-5:N1} %", serverStatisticsInfoModel.Item2.ResourcesUsageInfo.CpuUsed);
                PrintMarker(serverStatisticsInfoModel.Item2.ResourcesUsageInfo.CpuUsed, 50);

                var memoryPercent = (serverStatisticsInfoModel.Item2.SystemInfo.MemoryTotal -
                                     serverStatisticsInfoModel.Item2.ResourcesUsageInfo.MemoryAvailable)
                                    / serverStatisticsInfoModel.Item2.SystemInfo.MemoryTotal * 100;
                PrettyConsole.WriteColor(ConsoleColor.DarkCyan, "\t{0,-15}", "RAM Доступно: ");
                PrettyConsole.WriteColor(ConsoleColor.Cyan, "{0,-9} Mb", serverStatisticsInfoModel.Item2.ResourcesUsageInfo.MemoryAvailable);
                PrettyConsole.WriteColor(ConsoleColor.DarkCyan, "\t{0,-15}", "Процесс: ");
                PrettyConsole.WriteLineColor(ConsoleColor.Cyan, "{0,-9:N1} Mb", serverStatisticsInfoModel.Item2.ResourcesUsageInfo.MemoryUsedByProcess);

                PrettyConsole.WriteColor(ConsoleColor.DarkCyan, "\t{0,-15}", "RAM:");
                PrettyConsole.WriteColor(ConsoleColor.Cyan, "{0,-5:N1} % ", memoryPercent);
                PrintMarker(memoryPercent, 50);
                Console.WriteLine();
            }
        }
예제 #8
0
 private void DoActionAndDisplayGameData(Action gameAction)
 {
     try
     {
         gameAction();
         DisplayGameData(GetGameData());
     }
     catch (AggregateException exp)
     {
         ErrorCode = HandleClientException(exp.InnerException as IClientException <ErrorData>);
     }
     catch (Exception exp)
     {
         PrettyConsole.WriteLineColor(ConsoleColor.Red, "Ошибка: {0}", exp);
     }
 }
예제 #9
0
        public async void PerformManualStep()
        {
            try
            {
                _manualStepResult =
                    await
                    Task.Run(
                        () =>
                        _game.PerformManualStep(_manualStepResult == null
                                    ? null
                                    : new VerificationManualStepResult {
                    VerificationNumber = _verificationResult ?? 0
                }));

                if (_manualStepResult is NoVerficationRequiredResult)
                {
                    _manualStepResult = null;
                }

                if (_manualStepResult is VerificationRequiredResult)
                {
                    Thread.Sleep(100);
                    Console.Clear();
                    var manualVerificationResult = _manualStepResult as VerificationRequiredResult;
                    Console.WriteLine("Verification required: {0} + {1} = "
                                      , manualVerificationResult.FirstNumber, manualVerificationResult.SecondNumber);
                    int parseResult;
                    var readString = Console.ReadLine();
                    int.TryParse(readString, out parseResult);
                    _verificationResult = parseResult == 0 ? default(int?) : parseResult;
                }
            }
            catch (Exception exp)
            {
                PrettyConsole.WriteLineColor(ConsoleColor.Red, "Error: {0}", exp);
            }
            DisplayGameData(GetGameData());
        }
예제 #10
0
            public virtual void DisplayGameData(GameDataModel gameData)
            {
                lock (_stdLock)
                {
                    Console.WriteLine("Баланс: {0:C}; Всего заработано: {1:C}", gameData.Cash.OnHand,
                                      gameData.Cash.TotalEarned);

                    /*Console.WriteLine("Manual Steps: {0}, Automatic Steps: {1}",
                     *  gameData.ManualStepsCount, gameData.AutomatedStepsCount);*/
                    PrettyConsole.WriteLineColor(ConsoleColor.Red, "{1,15}: {0,12}", gameData.Cash.Counters[0].Value,
                                                 gameData.Cash.Counters[0].Name);
                    PrettyConsole.WriteLineColor(ConsoleColor.Cyan, "{1,15}: {0,12:C} ",
                                                 ((GenericCounterModel)gameData.Cash.Counters[1]).SubValue, gameData.Cash.Counters[1].Name);
                    PrettyConsole.WriteLineColor(ConsoleColor.Cyan, "{1,15}: {0,12:C} ({2}%)"
                                                 , ((GenericCounterModel)gameData.Cash.Counters[1]).Bonus, "Бонус"
                                                 , ((GenericCounterModel)gameData.Cash.Counters[1]).BonusPercentage);
                    PrettyConsole.WriteColor(ConsoleColor.Cyan, "{1,15}: {0,12}%"
                                             , ((GenericCounterModel)gameData.Cash.Counters[1]).Inflation, "Батхёрт");
                    PrettyConsole.WriteLineColor(ConsoleColor.Cyan, "{1,15}: {0,12:C}"
                                                 , ((GenericCounterModel)gameData.Cash.Counters[1]).Value, "Total");
                    PrettyConsole.WriteLineColor(ConsoleColor.Green, "{1,15}: {0,12:C}",
                                                 ((GenericCounterModel)gameData.Cash.Counters[2]).SubValue, gameData.Cash.Counters[2].Name);
                    PrettyConsole.WriteLineColor(ConsoleColor.Green, "{1,15}: {0,12:C} ({2}%)"
                                                 , ((GenericCounterModel)gameData.Cash.Counters[2]).Bonus, "Бонус"
                                                 , ((GenericCounterModel)gameData.Cash.Counters[2]).BonusPercentage);
                    PrettyConsole.WriteColor(ConsoleColor.Green, "{1,15}: {0,12}%"
                                             , ((GenericCounterModel)gameData.Cash.Counters[2]).Inflation, "Усталость");
                    PrettyConsole.WriteLineColor(ConsoleColor.Green, "{1,15}: {0,12:C}"
                                                 , ((GenericCounterModel)gameData.Cash.Counters[2]).Value, "Всего");
                    PrettyConsole.WriteLineColor(ConsoleColor.Magenta, "{1,15}: +{0,12:C} {2}/{3}",
                                                 gameData.Cash.Counters[3].Value, gameData.Cash.Counters[3].Name
                                                 , TimeSpan.FromSeconds(((DelayedCounterModel)gameData.Cash.Counters[3]).SecondsRemaining)
                                                 , 0);

                    Console.WriteLine();
                    var charIndex = 65;
                    PrettyConsole.WriteLineColor(
                        IsCounterWithInflation((GenericCounterModel)gameData.Cash.Counters[2])
                            ? ConsoleColor.Yellow
                            : ConsoleColor.DarkYellow, "{0,2}:   Отдохнуть", "*");
                    if (IsCounterAvailableForActivate((DelayedCounterModel)gameData.Cash.Counters[3],
                                                      gameData.Cash.Counters[0].Value))
                    {
                        PrettyConsole.WriteLineColor(
                            IsCounterIsMining((DelayedCounterModel)gameData.Cash.Counters[3])
                                ? ConsoleColor.DarkMagenta
                                : ConsoleColor.Magenta, "{0,2}:         Делать кварталку", "+");
                    }
                    else
                    {
                        PrettyConsole.WriteLineColor(ConsoleColor.DarkMagenta,
                                                     "{0,2}:         Делать кварталку: надо {1} {2} чтоб разлочить", "+",
                                                     ((DelayedCounterModel)gameData.Cash.Counters[3]).UnlockValue, gameData.Cash.Counters[0].Name);
                    }
                    foreach (var fundsDriver in gameData.Items)
                    {
                        if (!IsFundsDriverAvailableForBuy(gameData.Cash.Counters[0], fundsDriver))
                        {
                            PrettyConsole.WriteColor(ConsoleColor.Gray,
                                                     "{0,2}:           Надо для покупки:     {1,6} x{2,-4} ", ((char)charIndex).ToString(),
                                                     fundsDriver.UnlockBalance, fundsDriver.Bought);
                        }
                        else
                        {
                            PrettyConsole.WriteColor(ConsoleColor.White, "{3,2}: {0,26} {1,14} x{2,-4} ", fundsDriver.Name,
                                                     FormatMoney(fundsDriver.Price), fundsDriver.Bought, ((char)charIndex).ToString());
                        }
                        PrettyConsole.WriteColor(ConsoleColor.Red, "+{0, -4} ", GetIncrementorValueById(fundsDriver, 0));
                        PrettyConsole.WriteColor(ConsoleColor.Cyan, "+{0, -7} ", GetIncrementorValueById(fundsDriver, 1));
                        PrettyConsole.WriteColor(ConsoleColor.Green, "+{0,-7} ", GetIncrementorValueById(fundsDriver, 2));
                        Console.WriteLine();
                        charIndex++;
                    }
                }
            }
예제 #11
0
        private static void MainLoop(IEnumerable <string> args)
        {
            if (args.Any())
            {
                _userName = args.First();
            }

            var loginResult = UserLogin(_userName);

            _sessionGuid = loginResult.Item1;
            _userName    = loginResult.Item2;
            var gameClient = GetGameClient(_sessionGuid);

            var adminManagerClient = GetAdminClient(_sessionGuid);

            var gr       = new GameRunner(_userName, _sessionGuid, gameClient);
            var ac       = new AdminConsole(adminManagerClient, _sessionGuid);
            var gameData = gr.GetGameData();

            gr.DisplayGameData(gameData);
            ConsoleKeyInfo keyInfo;

            while ((keyInfo = Console.ReadKey(true)).Key != ConsoleKey.Escape)
            {
                try
                {
                    if (keyInfo.Key == ConsoleKey.Enter)
                    {
                        gr.PerformManualStep();
                    }
                    else if ((int)keyInfo.Key >= 65 && (int)keyInfo.Key <= 90)
                    {
                        gr.BuyFundDriver(keyInfo);
                    }
                    else if (keyInfo.Key == ConsoleKey.Multiply)
                    {
                        gr.FightAgainstCorruption();
                    }
                    else if (keyInfo.Key == ConsoleKey.Add)
                    {
                        gr.PerformFiveYearPlan();
                    }
                    else if (keyInfo.Key == ConsoleKey.F5)
                    {
                        gr.DisplayGameData(gr.GetGameData());
                    }
                    else if (keyInfo.Key == ConsoleKey.F2)
                    {
                        ac.StartMenu();

                        gr.Invalidate();
                    }
                    else if (keyInfo.Key == ConsoleKey.F3)
                    {
                        UserLogout(_sessionGuid);
                        gr.DisplayGameData(gr.GetGameData());
                    }
                }
                catch (FaultException <InvalidSessionFault> faultException)
                {
                    var res = UserLogin(null);
                    _sessionGuid   = res.Item1;
                    _userName      = res.Item2;
                    gr.SessionGuid = _sessionGuid;
                    ac.SessionGuid = _sessionGuid;
                    gr.User        = _userName;
                    gr.SetGameClient(GetGameClient(_sessionGuid));
                    ac.SetAdminClient(GetAdminClient(_sessionGuid));
                    gr.DisplayGameData(gr.GetGameData());
                    PrettyConsole.WriteLineColor(ConsoleColor.Red, "Error: {0}", faultException);
                }
            }
        }