public static void ActivateAdminMenu() { _displayingAdminMenu = true; List <MenuButtonMetadataItem> menuItems = new List <MenuButtonMetadataItem>(); menuItems.Add(new MenuButtonMetadataItem(Guid.Empty, "Warp: select starting point", "SelectWarpStart")); menuItems.Add(new MenuButtonMetadataItem(Guid.Empty, "Warp: new starting point", "AddWarpStart")); menuItems.Add(new MenuButtonMetadataItem(Guid.Empty, "Warp: new ending point", "AddWarpEnd")); menuItems.Add(new MenuButtonMetadataItem(Guid.Empty, "Spawn: ship", "AddShip")); menuItems.Add(new MenuButtonMetadataItem(Guid.Empty, "Spawn: asteroid", "AddAsteroid")); menuItems.Add(new MenuButtonMetadataItem(Guid.Empty, "Spawn: moon", "AddMoon")); menuItems.Add(new MenuButtonMetadataItem(Guid.Empty, "Spawn: shipmodule", "AddShipModule")); menuItems.Add(new MenuButtonMetadataItem(Guid.Empty, "Move: specify destination", "MoveToSpecificCoordinates")); ShipMenu.SetElements(menuItems); _mainConsole.Children.Add(ShipMenu); _mainConsole.Children.MoveToTop(ShipMenu); string menuTitle = "Do administrative action"; ShipMenu.ShowMenu(menuTitle); int cellX = 0; while (cellX < menuTitle.Length) { cellX++; ShipMenu.SetEffect(cellX, 0, ShipMenu.menuFade); } }
/// <summary> /// Takes a list of ships that have been encapsulated into a GetShipsForMenuResult object and /// pops open a menu from which they can be chosen to interact with. /// </summary> /// <param name="shipresult">The result of a call to the server for data.</param> private static void ProcessShipsForMenu(GetShipsForMenuResult shipresult) { if (shipresult.Success) { _displayingShipMenu = true; List <MenuButtonMetadataItem> ships = new List <MenuButtonMetadataItem>(); foreach (var item in shipresult.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(shipresult.Error, _mainConsole); } }
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(); }; }