예제 #1
0
        public void ShowTerritorySelectionScreen(Game1 game)
        {
            string title, introduction;

            // clear existing menu
            SadConsole.Engine.ConsoleRenderStack.Clear();

            title        = "[ SELECT A TERRITORY TO EXPLORE ]";
            introduction = String.Empty;

            // get list of territories
            game.TerritoryList = TerritoryBuilder.GetRandomTerritoryList(game.Random, 3, 9);

            // build territory menu items
            string    territoryString;
            Territory t;

            List <MenuItem> menuItems = new List <MenuItem>();

            menuItems.Add(new MenuItem("Get More Territories", 0, null));

            for (int i = 0; i < game.TerritoryList.Count; i++)
            {
                t = game.TerritoryList.ElementAt(i);
                territoryString = String.Format("{0} {1} [{2}]", t.LocationPrefixType.Name, t.ZoneType.Name, t.TerrainType.Name);

                menuItems.Add(new MenuItem(territoryString, i, null));
            }

            // add to menu
            MenuConsole Menu = new MenuConsole(ConsoleConstants.TotalWidth, ConsoleConstants.TotalHeight, title, introduction, menuItems);

            SadConsole.Engine.ActiveConsole = Menu;
            SadConsole.Engine.ConsoleRenderStack.Add(Menu);
        }
예제 #2
0
        private static void Init()
        {
            var player = map.Actors.Single(a => a is Player) as Player;

            var mapConsole     = new MapConsole(game, true, new AStarPathFinder());
            var logConsole     = new LogConsole();
            var messageConsole = new MessageConsole();
            var statusConsole  = new StatusConsole(player);
            var menuConsole    = new MenuConsole(Width, Height);

            var inventory = new InventoryConsole(player);

            var keyboardHandler = new KeyboardHandler(mapConsole, logConsole, messageConsole, player, inventory, menuConsole, game, () => StartGame(rnd));

            var mainConsole = new MainConsole(mapConsole, logConsole, messageConsole, statusConsole, keyboardHandler, inventory);

            mainConsole.Children.Add(mapConsole);
            mainConsole.Children.Add(logConsole);
            mainConsole.Children.Add(messageConsole);
            mainConsole.Children.Add(statusConsole);
            mainConsole.Children.Add(inventory);
            mainConsole.Children.Add(menuConsole);

            SadConsole.Game.Instance.Screen = mainConsole;
        }
예제 #3
0
        static void Main(string[] args)
        {
            IO io = new IO();

            List <object> inputResults   = new List <object>();
            List <object> computeResults = new List <object>();

            Menu trapezMenu  = new MenuConsole("Sympson method", io);
            Menu inputMenu   = new MenuConsole("Sympson method", io);
            Menu computeMenu = new MenuConsole("Compute menu", io);
            Menu outputMenu  = new MenuConsole("Output menu", io);

            inputMenu.Add("Input via Console", new Func <Tuple <Function, double, double, double> >(io.GetFunctionAndParams), null, ref inputResults, true);
            computeMenu.Add("Compute", new MyFunc <List <object> >(Trapezium.Solve), new List <object> {
                inputResults
            }, ref computeResults, true);
            outputMenu.Add("Print results", new Action <List <object> >(io.Print), new List <object> {
                computeResults
            }, false);

            trapezMenu.Add("Sympson method", inputMenu, false);
            trapezMenu.AddAction(computeMenu, false);
            computeMenu.AddAction(outputMenu, false);

            trapezMenu.Start();
        }
예제 #4
0
        public Screen(int width, int height)
        {
            MainConsole    = new MainConsole(width - MENU_WIDTH - 1, height - MESSAGES_HEIGHT);
            MessageConsole = new MessageConsole(1, height - MESSAGES_HEIGHT + 1, width, MESSAGES_HEIGHT);
            MenuConsole    = new MenuConsole(width - MENU_WIDTH, 1, MENU_WIDTH + 1, height - MESSAGES_HEIGHT + 1);

            StartScreen = new StartScreen(width + 2, height + 2);
        }
예제 #5
0
        public void OpenGameMenu()
        {
            Guard.Against(GameMode.CurrentMode == EngineMode.MenuOpen);

            MenuConsole.Clear();
            MenuConsole.Print(2, 4, GameInProgress ? "R) Return to game" : "B) Begin new game");
            MenuConsole.Print(2, 6, "S) Save game");
            MenuConsole.Print(2, 8, "L) Load game");
            MenuConsole.Print(2, 10, "Q) Quit");

            MenuWindow.Show();
            GameMode.PushEngineMode(EngineMode.MenuOpen, null);
        }
예제 #6
0
 public KeyboardHandler(MapConsole mapConsole, LogConsole logConsole, MessageConsole messageConsole, Player player, InventoryConsole inventory, MenuConsole menuConsole, Game game, Action startGame)
 {
     this.mapConsole     = mapConsole;
     this.logConsole     = logConsole;
     this.messageConsole = messageConsole;
     this.player         = player;
     this.inventory      = inventory;
     this.menuConsole    = menuConsole;
     this.game           = game;
     this.startGame      = startGame;
     state = InputState.Idle;
     mapConsole.IsFocused = true;
     actions = new List <Action>();
 }
예제 #7
0
        public async Task InitConsole()
        {
            try
            {
                //StartLogin();
                //Inicia a api criando o usuario e iniciando o login

                String IdAccess = await Login.Start();

                if (IdAccess != null)
                {
                    ApiGSPN = new GSPNApi(new Usuario(IdAccess));

                    //inicia o cookie com id de acesso do usuario
                    await ApiGSPN.GetCookieByIdAccess();

                    await ApiGSPN.GetUserData();
                }

                Console.Clear();

                List <ConsoleMenuItem> items = new List <ConsoleMenuItem>();

                items.Add(new ConsoleMenuItem("Pesquisar aparelho by serial port", async() => await StartATAparelhoView()));
                items.Add(new ConsoleMenuItem("Ver Numero de Registros de dia", async() => { await StartCountCadastroClass(); }));
                items.Add(new ConsoleMenuItem("Procurar cliente", () => StartClientClass()));
                items.Add(new ConsoleMenuItem("Set Registros", () => StartCadastroClass()));
                items.Add(new ConsoleMenuItem("Visualizar data serial", () => StartDataSerialFile()));
                items.Add(new ConsoleMenuItem("Visualizar data", () => StartDataFile()));
                items.Add(new ConsoleMenuItem("Start Diagnostico", () => StartDiagnostico()));
                items.Add(new ConsoleMenuItem("Sair", async() => await EndMenu()));

                var menu = new MenuConsole(version.versionCode.ToString() + "IdAccess: " + (ApiGSPN == null ? "Offline" : IdAccess), items);
                menu.RunConsoleMenu();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
예제 #8
0
        public void RenderMenuOptions()
        {
            MenuConsole.Clear();


            int StartLine = 1;

            foreach (var option in Menu)
            {
                string OptionText = string.Format("{0} [{1}]", option.Display, (option.Key.ToString().Length > 1 ? option.Key.ToString().TrimStart('D') : option.Key.ToString()));
                int    Lines      = (int)System.Math.Ceiling((double)OptionText.Length / (double)MenuConsole.Width);

                Color background = option.Selected ? option.Forground : option.Background;
                Color forground  = option.Selected ? option.Background : option.Forground;

                MenuConsole.Print(0, StartLine, OptionText, forground, background);
                option.X = 0;
                option.Y = StartLine;

                StartLine += Lines + 1;
            }
        }
예제 #9
0
        static void Main(string[] args)
        {
            int       maxMatrixHeight        = 20;
            int       generatedMatrixMaxSize = 20;
            const int generatedMatrixMinSize = 0;
            IO        io = new IO();

            List <object> input          = new List <object>();
            List <object> matrixResutlts = new List <object>();

            Menu mainMenu    = new MenuConsole("Gauss programm", io);
            Menu inputMenu   = new MenuConsole("Choose your input", io);
            Menu computeMenu = new MenuConsole("What to do next", io);
            Menu resultsMenu = new MenuConsole("Choose info you are interested in", io);

            inputMenu.Add("Input from console", new Func <int, double[, ]>(io.ConsoleMatrixInput), new List <object> {
                maxMatrixHeight
            }, ref input, true);
            inputMenu.AddAction(new Action <List <object>, int>(io.PrintMatrix), new List <object> {
                input, maxMatrixHeight
            }, false);
            inputMenu.Add("Input from file", new Func <int, double[, ]>(io.FileMatrixInput), new List <object> {
                maxMatrixHeight
            }, ref input, true);
            inputMenu.AddAction(new Action <List <object>, int>(io.PrintMatrix), new List <object> {
                input, maxMatrixHeight
            }, false);
            inputMenu.Add("Random matrix", new Func <int, int, int, double[, ]>(io.GenerateMatrix), new List <object> {
                maxMatrixHeight, generatedMatrixMaxSize, generatedMatrixMinSize
            }, ref input, true);
            inputMenu.AddAction(new Action <List <object>, int>(io.PrintMatrix), new List <object> {
                input, maxMatrixHeight
            }, false);

            computeMenu.Add("Solve", new MyFunc <List <object>, int>(Gauss.Solve), new List <object> {
                input, maxMatrixHeight
            }, ref matrixResutlts, false);
            computeMenu.AddAction(new MyFunc <List <object>, List <object>, int>(Gauss.GetErrors), new List <object> {
                input, matrixResutlts, maxMatrixHeight
            }, false);


            resultsMenu.Add("Print solutions and nevyazki", new Action <List <object> >(io.PrintSolutionsAndNevyaz), new List <object> {
                matrixResutlts
            }, false);
            resultsMenu.Add("Print triangular", new Action <List <object>, int>(io.PrintTriangular), new List <object> {
                input, maxMatrixHeight
            }, false);
            resultsMenu.Add("Print determenant", new Action <List <object>, int>(io.PrintDetermenant), new List <object> {
                input, maxMatrixHeight
            }, false);
            resultsMenu.Add("Print whole solution", new Action <List <object>, List <object>, int>(io.PrintWholeSolution), new List <object> {
                input, matrixResutlts, maxMatrixHeight
            }, false);


            computeMenu.AddAction(resultsMenu, false);

            mainMenu.Add("Choose input methods", inputMenu, false);
            mainMenu.AddAction(computeMenu, false);

            mainMenu.Start();
        }
예제 #10
0
        private static void BindEventHandlersForconnection()
        {
            connection.On <PingResponse>("ReceivePingResponse", (ping) =>
            {
                if (ping.PingId == lastPingId)
                {
                    pingStopWatch.Stop();
                    // Get the elapsed time as a TimeSpan value.
                    TimeSpan ts = pingStopWatch.Elapsed;
                    if (ts.TotalMilliseconds < 250)
                    {
                        _serverStatusConsole.Write("Scanner responsiveness: " + Math.Floor(ts.TotalMilliseconds) + " ms", ServerStatusConsole.MessageTypes.Ok);
                    }
                    else
                    {
                        _serverStatusConsole.Write("Scanner responsiveness degraded: " + Math.Floor(ts.TotalMilliseconds) + " ms", ServerStatusConsole.MessageTypes.Danger);
                    }
                }
                else
                {
                    pingStopWatch.Stop();
                    _serverStatusConsole.Write("Scanner responsiveness probe error.", ServerStatusConsole.MessageTypes.Danger);
                    _messageLogConsole.Write("Scanner responsiveness probe error.", MessageLogConsole.MessageTypes.Warning);
                }
            });

            connection.On <string>("ReceiveMessage", (message) =>
            {
                if (_gameStatus == GameStatus.LoggedIn)
                {
                    _messageLogConsole.Write("Receive Chat: " + message);
                }
            });

            connection.On <string>("ReceiveServerTime", (serverTime) =>
            {
                if (_gameStatus == GameStatus.LoggedIn)
                {
                    // TODO: REMOVE THIS
                    _messageLogConsole.Write("Time received: " + serverTime);
                }
            });

            connection.On <GetAccessTokenResult>("ReceiveAccessTokenResult", (result) =>
            {
                if (!result.Success)
                {
                    _shipMovementStatus = ShipMovementStatus.NotReady;
                    _gameStatus         = GameStatus.Startup;
                    CreateErrorWindow(result.Error, _loginWindow.Children.First());
                }
                else
                {
                    _shipMovementStatus = ShipMovementStatus.NotReady;
                    _gameStatus         = GameStatus.LoggedIn;
                    _accessToken        = result.Token;
                    RequestCameraCoordinates();

                    _messageLogConsole           = new MessageLogConsole(_mainConsole.Width, _mainConsole.Height / 4);
                    _messageLogConsole.Position  = new Point(0, _mainConsole.Height - _messageLogConsole.Height);
                    _messageLogConsole.IsVisible = true;
                    _mainConsole.Children.Add(_messageLogConsole);

                    _serverStatusConsole           = new ServerStatusConsole(_mainConsole.Width, 1);
                    _serverStatusConsole.Position  = new Point(0, _mainConsole.Height - _messageLogConsole.Height - 1);
                    _serverStatusConsole.IsVisible = true;
                    _mainConsole.Children.Add(_serverStatusConsole);

                    _spaceMap           = new SpaceMapConsole(_mainConsole.Width - 20, _mainConsole.Height - _messageLogConsole.Height - 2);
                    _spaceMap.Position  = new Point(0, 1);
                    _spaceMap.IsVisible = true;
                    _mainConsole.Children.Add(_spaceMap);

                    _shipConsole           = new SelectedShipConsole(20, _mainConsole.Height - _messageLogConsole.Height - 2);
                    _shipConsole.Position  = new Point(_spaceMap.Width, 1);
                    _shipConsole.IsVisible = true;
                    _mainConsole.Children.Add(_shipConsole);

                    _menuBarConsole           = new MenuBarConsole(_mainConsole.Width, 1);
                    _menuBarConsole.Position  = new Point(0, 0);
                    _menuBarConsole.IsVisible = true;
                    _mainConsole.Children.Add(_menuBarConsole);

                    GameState.ShipMenu      = new MenuConsole(_mainConsole.Width, _mainConsole.Height - 1);
                    GameState.CharacterMenu = new MenuConsole(_mainConsole.Width, _mainConsole.Height - 1);
                    GameState.AdminMenu     = new MenuConsole(_mainConsole.Width / 2, _mainConsole.Height - 1);

                    ShipMenu.Position      = new Point(0, 1);
                    CharacterMenu.Position = new Point(0, 1);
                    AdminMenu.Position     = new Point(_mainConsole.Width / 2, 1);

                    _loginWindow.IsVisible = false;
                    _loginWindow.Controls.RemoveAll();
                    _loginWindow.Clear();
                    StartHeartbeat(TimeSpan.FromSeconds(10), CancelHeartbeat);
                }
            });

            connection.On <GetAccessTokenResult>("ReceiveAccessTokenFromRefreshToken", (result) =>
            {
                if (result.Success)
                {
                    _accessToken = result.Token;
                }
            });

            connection.On <GetShipsForMenuResult>("ReceiveShipsForMenu", (result) =>
            {
                if (result.Success)
                {
                    _displayingShipMenu = true;
                    List <MenuButtonMetadataItem> ships = new List <MenuButtonMetadataItem>();
                    foreach (var item in result.Ships)
                    {
                        ships.Add(new MenuButtonMetadataItem(item.Id, item.Name, "Ship"));
                    }
                    ShipMenu.SetElements(ships);
                    _mainConsole.Children.Add(ShipMenu);
                    _mainConsole.Children.MoveToTop(ShipMenu);
                    string menuTitle = "Manage your ship(s)";
                    ShipMenu.ShowMenu(menuTitle);
                    int cellX = 0;
                    while (cellX < menuTitle.Length)
                    {
                        cellX++;
                        ShipMenu.SetEffect(cellX, 0, ShipMenu.menuFade);
                    }
                }
                else
                {
                    CreateErrorWindow(result.Error, _mainConsole);
                }
            });

            connection.On <ErrorFromServer>("ReceiveError", (result) =>
            {
                CreateErrorWindow(result, _mainConsole);
            });

            // retrieval of characters for menu.
            connection.On <GetCharactersForMenuResult>("ReceiveCharactersForMenu", (param) =>
            {
                ProcessCharactersForMenu(param);
            });

            connection.On <GetCharacterForManagementResult>("ReceiveCharacterForManagement", (param) =>
            {
                CreateCharacterWindow(param.Character);
            });

            connection.On <GetPlayerCameraCoordinatesResult>("ReceivePlayerCameraCoordinates", (param) =>
            {
                _messageLogConsole.Write("Camera coordinates received: " + param.X + "," + param.Y + "," + param.Z, MessageLogConsole.MessageTypes.Status);
            });

            connection.On <GetMapDataResult>("ReceiveMapData", (param) =>
            {
                SetMapData(param);
                DrawMapData();
            });

            connection.On <ShipMovementConfirmation>("ReceiveShipMovementConfirmation", (param) =>
            {
                _shipMovementStatus = ShipMovementStatus.Ready;
                DownloadMapAtShip(selectedShip);
            });

            connection.On <LootScanResponse>("ReceiveLootScanResponse", (param) =>
            {
                DisplayLootScanResults(param);
            });

            connection.On <Ship>("ReceiveShipForConsole", (param) =>
            {
                DisplayShipControlsOnConsole(param);
            });

            connection.Closed += async(error) =>
            {
                await Task.Delay(new Random().Next(0, 5) * 1000);

                await connection.StartAsync();
            };
        }
예제 #11
0
 public MenuPrincipal()
 {
     _menuConsole = new MenuConsole();
     _menuPoo     = new MenuPOO();
 }