public void RunGame() { _model.CommitChanges(); do { TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed); _logic.RunCurrentState(); } while (!_exitGame && !TCODConsole.isWindowClosed()); }
// Handle the main menu keypresses public char HandleMainMenu() { // Wait for a keypress TCODKey key = new TCODKey(); do { // Get the keypress TCODConsole.flush(); key = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed); if (key.Character == 'S' || key.Character == 's' || key.Character == 'C' || key.Character == 'c' || key.Character == 'Q' || key.Character == 'q') { string characterPressed = key.Character.ToString().ToUpper(); return(characterPressed[0]); } else if (key.KeyCode == TCODKeyCode.Up || key.KeyCode == TCODKeyCode.KeypadEight) { if (currentMenuOption != MenuOption.Start) { currentMenuOption--; return(' '); } else { currentMenuOption = MenuOption.Quit; return(' '); } } else if (key.KeyCode == TCODKeyCode.Down || key.KeyCode == TCODKeyCode.KeypadTwo) { if (currentMenuOption != MenuOption.Quit) { currentMenuOption++; return(' '); } else { currentMenuOption = MenuOption.Start; return(' '); } } else if (key.KeyCode == TCODKeyCode.KeypadEnter || key.KeyCode == TCODKeyCode.Enter) { string KeyCodes = "SCQ"; return(KeyCodes[(int)currentMenuOption]); } PrintMainMenu(); }while (!TCODConsole.isWindowClosed()); return(' '); }
public void update(bool validate) { this.validate = validate; if (validate == true) { currentLevel.actorHandler.update(true); } mousedata = TCODMouse.getStatus(); key = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed); debugCommands.update(); if (gameStatus == GameStatus.LOADING) { loadingGui.update(); } else if (gameStatus == GameStatus.DEFEAT) { if (key.Pressed) { Console.WriteLine("Restarting game..."); initialize(true); } } else if (gameStatus == GameStatus.MENU) { menuGui.focused = true; menuGui.update(); if (key.KeyCode == (TCODKeyCode.Escape)) { menuGui.focused = false; gameStatus = GameStatus.IDLE; } } else { gameStatus = GameStatus.IDLE; player.update(); gui.update(); messageGui.update(); if (gameStatus == GameStatus.NEW_TURN) { currentLevel.update(); //Message.flush(); } Message.update(); } lastKey = key; }
private string getInput(string initial) { string s = initial; Message.Write(s); while (true && !TCODConsole.isWindowClosed()) { engine.key = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed); engine.render(); TCODConsole.flush(); if (engine.key.KeyCode == TCODKeyCode.Enter) { break; } if (engine.key.KeyCode == TCODKeyCode.Backspace) { if (s.Length > 0) { s = s.Remove(s.Length - 1); Message.unwriteLastChar(); } } if (engine.key.KeyCode == TCODKeyCode.Up) { if (s != "") { record[index] = s; } s = "up"; break; } if (engine.key.KeyCode == TCODKeyCode.Down) { if (s != "") { record[index] = s; } s = "down"; break; } if (!char.IsControl(engine.key.Character)) { Message.Write(engine.key.Character.ToString()); s += engine.key.Character; if (engine.key.Character == '|') { break; } } } return(s); }
public void Update() { do { TCODConsole.flush(); _currentInput = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed); if (TCODConsole.isWindowClosed()) { Environment.Exit(0); } } while (_currentInput.KeyCode == TCODKeyCode.NoKey); }
/// <summary> /// Starts the game simulation and set off the normal update life cycle /// </summary> /// <returns> A code corresponding to how the game exited: 0 = normal quit </returns> public int Run() { if (mainConsole == null || isRunning) { return(APPLICATION_EXIT_ERROR); } isRunning = true; internalTimer.Start(); // Main update loop while (!TCODConsole.isWindowClosed() && isRunning) { long current = internalTimer.ElapsedMilliseconds; long frameTime = current - previousUpdateTime; previousUpdateTime = current; frameLag += frameTime; // Actual update / console drawing runs on an inner catchup loop that is also interuptable // will run catchup frames or delay so that it closely matches desired FRAME_RATE, that // is also synced with the TCODConsoles own render frame rate while (frameLag >= MS_PER_UPDATE && !TCODConsole.isWindowClosed() && isRunning) { // TCOD must be flushed immedietly before polling the input channels TCODConsole.flush(); lastKey = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed); mouseData = TCODMouse.getStatus(); // Handle transitions between states if (gotoNewState) { EnteredNewState(nextState); gotoNewState = false; } Update(); Render(); // always allow for core update interrupt if (lastKey.KeyCode == TCODKeyCode.F4) { isRunning = false; } } } internalTimer.Stop(); return(APPLICATION_EXIT_NORMAL); }
private void PollKeyboard() { TCODKey key = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed | (int)TCODKeyStatus.KeyReleased); if (key.KeyCode != TCODKeyCode.NoKey) { if (key.Pressed) { _attachedComponent.OnKeyPressed(new KeyboardData(key)); } else { _attachedComponent.OnKeyReleased(new KeyboardData(key)); } } }
static void Main() { TCODConsole.initRoot(80, 50, "my game", false); TCODSystem.setFps(25); bool endGame = false; while (!endGame && !TCODConsole.isWindowClosed()) { TCODConsole.root.print(0, 0, "Hello, world"); TCODConsole.flush(); var key = TCODConsole.checkForKeypress(); if (key.KeyCode == TCODKeyCode.Escape) { endGame = true; } } }
private void CheckForKeyboardEvents() { var key = TCODConsole.checkForKeypress( (int)TCODKeyStatus.KeyPressed | (int)TCODKeyStatus.KeyReleased); if (key.KeyCode != TCODKeyCode.NoKey) { if (key.Pressed) { CurrentScene.KeyPressed(key); } else { CurrentScene.KeyReleased(key); } } }
public void run(Screen tempscreen) { screen = tempscreen; kbHistory = new List <KeyHistory>(); TimeSpan startTime = DateTime.Now.TimeOfDay; double timectrl = startTime.TotalMilliseconds; double timespent = 0; while (running && !TCODConsole.isWindowClosed()) { screen.update(); screen.printDebug(); terminalManager.drawTerminals(debug); TCODConsole.flush(); KeyHistory temp = new KeyHistory(DateTime.Now.TimeOfDay - startTime); TCODKey key = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed); temp.RegisterKeyStatus(key, TCODKeyStatus.KeyPressed); kbHistory.Add(temp); screen = screen.respondToUserInput(kbHistory); timespent = DateTime.Now.TimeOfDay.TotalMilliseconds - timectrl; if (timespent > 250) { adjustFPS(); timectrl = DateTime.Now.TimeOfDay.TotalMilliseconds; } } }
public bool pickATile(out int x, out int y, float maxRange) { int pickX = Program.engine.player.x - map.offsetX, pickY = Program.engine.player.y - map.offsetY; for (int cx = map.renderX; cx < map.renderWidth; cx++) { for (int cy = map.renderY; cy < map.renderHeight; cy++) { if (Program.engine.player.fov.isInFov(cx + map.offsetX, cy + map.offsetY) && (maxRange == 0 || Program.engine.player.getDistance(cx + map.offsetX, cy + map.offsetY) <= maxRange)) { TCODColor col = TCODConsole.root.getCharBackground(cx, cy); col = col.Multiply(1.2f); TCODConsole.root.setCharBackground(cx, cy, col); } } } int oldX = pickX, oldY = pickY; TCODColor oldC = TCODConsole.root.getCharBackground(pickX, pickY); while (!TCODConsole.isWindowClosed()) { render(); mousedata = TCODMouse.getStatus(); Program.engine.key = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed); if (Engine.useMouse) { if (Program.engine.player.fov.isInFov(mousedata.CellX + map.offsetX, mousedata.CellY + map.offsetY)) { if ((maxRange == 0 || Program.engine.player.getDistance(mousedata.CellX + map.offsetX, mousedata.CellY + map.offsetY) <= maxRange)) { pickX = mousedata.CellX; pickY = mousedata.CellY; if (mousedata.LeftButtonPressed) { x = mousedata.CellX + map.offsetX; y = mousedata.CellY + map.offsetY; return(true); } } } if (mousedata.RightButtonPressed) { x = 0; y = 0; return(false); } } if (pickX != oldX || pickY != oldY) { TCODConsole.root.setCharBackground(oldX, oldY, oldC); oldC = TCODConsole.root.getCharBackground(pickX, pickY); TCODConsole.root.setCharBackground(pickX, pickY, TCODColor.white); oldX = pickX; oldY = pickY; } if (Program.engine.player.fov.isInFov(pickX + map.offsetX, pickY + map.offsetY)) { if ((maxRange == 0 || Program.engine.player.getDistance(pickX + map.offsetX, pickY + map.offsetY) <= maxRange)) { switch (Program.engine.key.KeyCode) { case TCODKeyCode.Enter: { x = pickX + map.offsetX; y = pickY + map.offsetY; return(true); } case TCODKeyCode.Up: { if (Program.engine.player.fov.isInFov(pickX + map.offsetX, pickY - 1 + map.offsetY)) { if (Program.engine.player.getDistance(pickX + map.offsetX, pickY - 1 + map.offsetY) <= maxRange) { pickY--; } } break; } case TCODKeyCode.Down: if (Program.engine.player.fov.isInFov(pickX + map.offsetX, pickY + 1 + map.offsetY)) { if (Program.engine.player.getDistance(pickX + map.offsetX, pickY + 1 + map.offsetY) <= maxRange) { pickY++; } } break; case TCODKeyCode.Left: if (Program.engine.player.fov.isInFov(pickX - 1 + map.offsetX, pickY + map.offsetY)) { if (Program.engine.player.getDistance(pickX - 1 + map.offsetX, pickY + map.offsetY) <= maxRange) { pickX--; } } break; case TCODKeyCode.Right: if (Program.engine.player.fov.isInFov(pickX + 1 + map.offsetX, pickY + map.offsetY)) { if (Program.engine.player.getDistance(pickX + 1 + map.offsetX, pickY + map.offsetY) <= maxRange) { pickX++; } } break; } } } TCODConsole.flush(); Program.engine.lastKey = Program.engine.key; } x = 0; y = 0; return(false); }
private static void Main(string[] args) { AppDomain.CurrentDomain.UnhandledException += (CurrentDomain_UnhandledException); TCODColor fogOfWarColour = new TCODColor(80, 80, 80); int horizontalPixels, verticalPixels; TCODSystem.getCurrentResolution(out horizontalPixels, out verticalPixels); //string font = "celtic_garamond_10x10_gs_tc.png"; string font = "arial12x12.png"; TCODConsole.setCustomFont( font, (int)(TCODFontFlags.Grayscale | TCODFontFlags.LayoutTCOD), 32, 8); int fontWidth, fontHeight; TCODSystem.getCharSize(out fontWidth, out fontHeight); int screenWidth = horizontalPixels / fontWidth; int screenHeight = verticalPixels / fontHeight; var screenBounds = new Rectangle(0, 0, screenWidth, screenHeight); int infoPanelWidth = 42; var playBounds = new Rectangle(0, 0, screenBounds.Width - infoPanelWidth, screenBounds.Height); var playerBounds = new Rectangle(playBounds.Right, 0, infoPanelWidth, 6); //var threatBounds = new Rectangle(playBounds.Right, playerBounds.Bottom, infoPanelWidth, 10); var competitorBounds = new Rectangle(playBounds.Right, playerBounds.Bottom, infoPanelWidth, 27); var eventBounds = new Rectangle(playBounds.Right, competitorBounds.Bottom, infoPanelWidth, screenBounds.Height - (playerBounds.Height + competitorBounds.Height)); Game game = CreateGame(); Logger.Info("Initializing RootConsole..."); TCODConsole.initRoot(screenBounds.Width, screenBounds.Height, "Last Man Standing v1.0", true, TCODRendererType.SDL); TCODSystem.setFps(30); var rootConsole = TCODConsole.root; rootConsole.setForegroundColor(ColorPresets.White); rootConsole.setAlignment(TCODAlignment.LeftAlignment); rootConsole.setBackgroundFlag(TCODBackgroundFlag.Set); Logger.Info("Initializing playConsole..."); TCODConsole playConsole = new TCODConsole(playBounds.Width, playBounds.Height); //Logger.Info("Initializing threatConsole..."); //Console threatConsole = RootConsole.GetNewConsole(threatBounds.Width, threatBounds.Height); Logger.Info("Initializing playerConsole..."); TCODConsole playerConsole = new TCODConsole(playerBounds.Width, playerBounds.Height); Logger.Info("Initializing competitorConsole..."); TCODConsole competitorConsole = new TCODConsole(competitorBounds.Width, competitorBounds.Height); Logger.Info("Initializing eventsConsole..."); TCODConsole eventsConsole = new TCODConsole(eventBounds.Width, eventBounds.Height); Logger.Info("Starting Game Loop..."); do { TCODKey keyStroke = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed); if (game.IsActive) { game.ProcessTurn(); if (keyStroke.KeyCode != TCODKeyCode.NoKey) { ((PlayerAI)game.Player.Intellect).EvaluateKeyPress(keyStroke); } } RenderAllConsoles(game, rootConsole, playConsole, fogOfWarColour, playerConsole, competitorConsole, eventsConsole, playBounds, playerBounds, competitorBounds, eventBounds); if (!game.IsActive) { rootConsole.printEx((screenBounds.Width - 30) / 2, (screenBounds.Height - 10) / 2, TCODBackgroundFlag.Set, TCODAlignment.LeftAlignment, "Press SPACE to start a new game. Press ESC to quit."); if (keyStroke.KeyCode == TCODKeyCode.Space) { rootConsole.print(1, 1, "Creating new game..."); TCODConsole.flush(); game = CreateGame(); } } TCODConsole.flush(); if (keyStroke.KeyCode == TCODKeyCode.Escape) { return; } } while (!TCODConsole.isWindowClosed()); }
public static void UpdateLastKeyPressed() { LastTCODKeyPressed = TCODConsole.checkForKeypress(); switch (LastTCODKeyPressed.KeyCode) { case TCODKeyCode.KeypadFour: case TCODKeyCode.Left: LastKeyPressed = "west"; break; case TCODKeyCode.KeypadEight: case TCODKeyCode.Up: LastKeyPressed = "north"; break; case TCODKeyCode.KeypadSix: case TCODKeyCode.Right: LastKeyPressed = "east"; break; case TCODKeyCode.KeypadTwo: case TCODKeyCode.Down: LastKeyPressed = "south"; break; case TCODKeyCode.KeypadSeven: LastKeyPressed = "northwest"; break; case TCODKeyCode.KeypadNine: LastKeyPressed = "northeast"; break; case TCODKeyCode.KeypadOne: LastKeyPressed = "southwest"; break; case TCODKeyCode.KeypadThree: LastKeyPressed = "southeast"; break; case TCODKeyCode.One: LastKeyPressed = "1"; break; case TCODKeyCode.Two: LastKeyPressed = "2"; break; case TCODKeyCode.Three: LastKeyPressed = "3"; break; case TCODKeyCode.Four: LastKeyPressed = "4"; break; case TCODKeyCode.Enter: LastKeyPressed = "enter"; break; case TCODKeyCode.Escape: LastKeyPressed = "escape"; break; default: LastKeyPressed = ""; break; } }
public static void Init() { LastKeyPressed = ""; LastTCODKeyPressed = TCODConsole.checkForKeypress(); }
// Handle standard keypresses public char WaitForKeyPress(KeyMode keymode) { // Wait for a keypress TCODKey key = new TCODKey(); // This needs to be rewritten! if (keymode == KeyMode.Exploration) { do { // Get the keypress TCODConsole.flush(); key = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed); if (key.Character == 'H' || key.Character == 'h' || key.Character == 'J' || key.Character == 'j' || key.Character == 'K' || key.Character == 'k' || key.Character == 'L' || key.Character == 'l' || key.Character == 'Y' || key.Character == 'y' || key.Character == 'U' || key.Character == 'u' || key.Character == 'B' || key.Character == 'b' || key.Character == 'N' || key.Character == 'n' || key.Character == 'S' || key.Character == 's' || key.Character == 'G' || key.Character == 'g' || key.Character == 'I' || key.Character == 'i' || key.Character == 'D' || key.Character == 'd' || key.Character == 'W' || key.Character == 'w' || key.Character == 'T' || key.Character == 't' || key.Character == 'X' || key.Character == 'x' || key.Character == 'V' || key.Character == 'v' || key.Character == 'Q' || key.Character == 'q' || key.Character == '>' || key.Character == '?' || key.Character == '.' || key.KeyCode == TCODKeyCode.Up || key.KeyCode == TCODKeyCode.Down || key.KeyCode == TCODKeyCode.Left || key.KeyCode == TCODKeyCode.Right || key.KeyCode == TCODKeyCode.Escape || key.KeyCode == TCODKeyCode.KeypadOne || key.KeyCode == TCODKeyCode.KeypadTwo || key.KeyCode == TCODKeyCode.KeypadThree || key.KeyCode == TCODKeyCode.KeypadFour || key.KeyCode == TCODKeyCode.KeypadSix || key.KeyCode == TCODKeyCode.KeypadSeven || key.KeyCode == TCODKeyCode.KeypadEight || key.KeyCode == TCODKeyCode.KeypadNine ) { if (key.KeyCode == TCODKeyCode.Up || key.KeyCode == TCODKeyCode.KeypadEight) { key.Character = 'K'; } else if (key.KeyCode == TCODKeyCode.Down || key.KeyCode == TCODKeyCode.KeypadTwo) { key.Character = 'J'; } else if (key.KeyCode == TCODKeyCode.Left || key.KeyCode == TCODKeyCode.KeypadFour) { key.Character = 'H'; } else if (key.KeyCode == TCODKeyCode.Right || key.KeyCode == TCODKeyCode.KeypadSix) { key.Character = 'L'; } else if (key.KeyCode == TCODKeyCode.KeypadSeven) { key.Character = 'Y'; } else if (key.KeyCode == TCODKeyCode.KeypadNine) { key.Character = 'U'; } else if (key.KeyCode == TCODKeyCode.KeypadOne) { key.Character = 'B'; } else if (key.KeyCode == TCODKeyCode.KeypadThree) { key.Character = 'N'; } string characterPressed = key.Character.ToString().ToUpper(); return(characterPressed[0]); } }while (!TCODConsole.isWindowClosed()); return(' '); } else if (keymode == KeyMode.Inventory) { do { // Get the keypress TCODConsole.flush(); key = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed); if (key.KeyCode == TCODKeyCode.Escape) { string characterPressed = key.Character.ToString().ToUpper(); return('#'); } else { char keyPressed = Convert.ToChar(key.Character.ToString()); if (char.IsLetter(keyPressed)) { string characterPressed = key.Character.ToString().ToUpper(); return(characterPressed[0]); } } }while (!TCODConsole.isWindowClosed()); return(' '); } else if (keymode == KeyMode.Drop || keymode == KeyMode.Wear || keymode == KeyMode.Takeoff || keymode == KeyMode.Activate) { do { // Get the keypress TCODConsole.flush(); key = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed); if (key.KeyCode == TCODKeyCode.Escape) { string characterPressed = key.Character.ToString().ToUpper(); return('#'); } else { char keyPressed = Convert.ToChar(key.Character.ToString()); if (char.IsLetter(keyPressed)) { string characterPressed = key.Character.ToString().ToUpper(); return(characterPressed[0]); } } }while (!TCODConsole.isWindowClosed()); return(' '); } else if (keymode == KeyMode.ItemDetails) { do { // Get the keypress TCODConsole.flush(); key = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed); if (key.KeyCode == TCODKeyCode.Escape) { return(' '); } }while (!TCODConsole.isWindowClosed()); return(' '); } else { return(' '); } }
private bool getInputPos(out Point p) { string ps = ""; p = new Point(); int oldX = 0, oldY = 0; TCODColor oldC = TCODConsole.root.getCharBackground(0, 0); while (true && !TCODConsole.isWindowClosed()) { engine.mousedata = TCODMouse.getStatus(); engine.key = TCODConsole.checkForKeypress((int)TCODKeyStatus.KeyPressed); engine.render(false); TCODConsole.root.setCharBackground(engine.mousedata.CellX, engine.mousedata.CellY, TCODColor.white); if (engine.mousedata.CellX != oldX || engine.mousedata.CellY != oldY) { TCODConsole.root.setCharBackground(oldX, oldY, oldC); oldC = TCODConsole.root.getCharBackground(engine.mousedata.CellX, engine.mousedata.CellY); oldX = engine.mousedata.CellX; oldY = engine.mousedata.CellY; } TCODConsole.flush(); if (Engine.Engine.useMouse) { p.X = engine.mousedata.CellX; p.Y = engine.mousedata.CellY; if (engine.mousedata.LeftButtonPressed) { p.X = engine.mousedata.CellX + engine.map.offsetX; p.Y = engine.mousedata.CellY + engine.map.offsetY; return(true); } } if (engine.key.KeyCode == TCODKeyCode.Enter) { break; } if (char.IsLetterOrDigit(engine.key.Character) || engine.key.Character == ',') { Message.Write(engine.key.Character.ToString()); ps += engine.key.Character; } if (engine.key.KeyCode == TCODKeyCode.Backspace) { if (ps.Length > 0) { ps.Remove(ps.Length - 1); Message.unwriteLastChar(); } } } if (ps == "here") { p.X = engine.player.x; p.Y = engine.player.y; return(true); } try { string[] coords = ps.Split(','); p = new Point(int.Parse(coords[0]), int.Parse(coords[1])); return(true); } catch (Exception e) { Console.WriteLine(e.Message); Message.WriteLine("Incorrect position"); return(false); } }