public override void update() { if (focused) { if (TCODConsole.isKeyPressed(TCODKeyCode.Enter)) { if (entries.Count > selectedEntry) { entries[selectedEntry].function(); } } if (TCODConsole.isKeyPressed(TCODKeyCode.Up)) { if (!oldup) { if (selectedEntry > 0) { selectedEntry--; } } oldup = true; } else { oldup = false; } if (TCODConsole.isKeyPressed(TCODKeyCode.Down)) { if (!olddown) { if (selectedEntry < entries.Count - 1) { selectedEntry++; } } olddown = true; } else { olddown = false; } } base.update(); }
/// <summary> /// Returns true if the specified <paramref name="key"/> is currently being /// pushed. This method is here for non-standard use of the framework - it is /// typically better to use the normal keyboard messaging system provided by /// components. /// </summary> /// <param name="key"></param> /// <returns></returns> public static bool IsKeyDown(TCODKeyCode key) { return(TCODConsole.isKeyPressed(key)); }
public override void update() { if (player.isDead()) { player.getDestructible().die(player); return; } handleActionKey(Program.engine.key); if (!inventory) { float dx = 0, dy = 0; switch (Program.engine.key.KeyCode) { case TCODKeyCode.Up: case TCODKeyCode.Down: case TCODKeyCode.Left: case TCODKeyCode.Right: if (TCODConsole.isKeyPressed(TCODKeyCode.Up)) { dy = -speed; } if (TCODConsole.isKeyPressed(TCODKeyCode.Down)) { dy = speed; } if (TCODConsole.isKeyPressed(TCODKeyCode.Left)) { dx = -speed; } if (TCODConsole.isKeyPressed(TCODKeyCode.Right)) { dx = speed; } break; default: break; } if (dx != 0 || dy != 0) { float _speed = speed; if (dx > 0) { gainedSpeed[0] += dx; } if (dx < 0) { gainedSpeed[1] += -dx; } if (dy > 0) { gainedSpeed[2] += dy; } if (dy < 0) { gainedSpeed[3] += -dy; } int x = 0, y = 0; if (gainedSpeed[0] >= 1) { x += 1; gainedSpeed[0] -= 1; } if (gainedSpeed[1] >= 1) { x -= 1; gainedSpeed[1] -= 1; } if (gainedSpeed[2] >= 1) { y += 1; gainedSpeed[2] -= 1; } if (gainedSpeed[3] >= 1) { y -= 1; gainedSpeed[3] -= 1; } Program.engine.gameStatus = GameStatus.NEW_TURN; if (x != 0 || y != 0) { if (moveOrAttack(player, player.x + x, player.y + y)) { Program.engine.map.updateDynFov = true; if (player.x - Program.engine.map.offsetX - Program.engine.map.renderX < MAX_LENGTH_TO_MAP_EDGE) { Program.engine.map.offsetX -= MAX_LENGTH_TO_MAP_EDGE - 1; Program.engine.map.updateFov = true; } if (player.y - Program.engine.map.offsetY - Program.engine.map.renderY < MAX_LENGTH_TO_MAP_EDGE) { Program.engine.map.offsetY -= MAX_LENGTH_TO_MAP_EDGE - 1; Program.engine.map.updateFov = true; } if (player.x - Program.engine.map.offsetX - Program.engine.map.renderX > Program.engine.map.renderWidth - MAX_LENGTH_TO_MAP_EDGE) { Program.engine.map.offsetX += MAX_LENGTH_TO_MAP_EDGE - 1; Program.engine.map.updateFov = true; } if (player.y - Program.engine.map.offsetY - Program.engine.map.renderY > Program.engine.map.renderHeight - MAX_LENGTH_TO_MAP_EDGE) { Program.engine.map.offsetY += MAX_LENGTH_TO_MAP_EDGE - 1; Program.engine.map.updateFov = true; } } else { } } } } base.update(); }
public override void update() { if (selected) { if (scrollOffset > 0) { moreUp = true; } else { moreUp = false; } if (scrollOffset + maxLineSpace < lineNum) { moreDown = true; } else { moreDown = false; } upTimer++; if (upTimer > upInterval) { if (TCODConsole.isKeyPressed(TCODKeyCode.Up)) { if (upInterval > 0) { upInterval--; } if (selectedLineNum > 0) { selectedLineNum--; } scrollUp(); } else { upInterval = maxInterval; } upTimer = 0; } downTimer++; if (downTimer > downInterval) { if (TCODConsole.isKeyPressed(TCODKeyCode.Down)) { if (downInterval > 0) { downInterval--; } if (selectedLineNum < lineNum - 1) { selectedLineNum++; scrollDown(); } } else { downInterval = maxInterval; } downTimer = 0; } } if (selectedLineNum >= lineNum && lineNum > 0) { selectedLineNum = lineNum - 1; } }
public void Update() { if (Player.TurnTimeout == 0) { var key = TCODConsole.waitForKeypress(true); Point dest = new Point(Player.Position.X, Player.Position.Y); switch (key.KeyCode) { case TCODKeyCode.Escape: Over = true; return; case TCODKeyCode.KeypadFour: case TCODKeyCode.Left: dest.X--; break; case TCODKeyCode.KeypadEight: case TCODKeyCode.Up: dest.Y--; break; case TCODKeyCode.KeypadSix: case TCODKeyCode.Right: dest.X++; break; case TCODKeyCode.KeypadTwo: case TCODKeyCode.Down: dest.Y++; break; case TCODKeyCode.KeypadSeven: dest.X--; dest.Y--; break; case TCODKeyCode.KeypadNine: dest.X++; dest.Y--; break; case TCODKeyCode.KeypadOne: dest.X--; dest.Y++; break; case TCODKeyCode.KeypadThree: dest.X++; dest.Y++; break; case TCODKeyCode.KeypadDecimal: case TCODKeyCode.KeypadFive: if (Player.Stamina < Player.MaxStamina) { Player.Stamina = Math.Min(Player.Stamina + 10, Player.MaxStamina); } if (Player.HP < Player.MaxHP && Game.Current.RNG.Next(8) == 0) { Player.HP = Math.Min(Player.HP + 1, Player.MaxHP); } break; case TCODKeyCode.Enter: if (TCODConsole.isKeyPressed(TCODKeyCode.Alt)) { TCODConsole.setFullscreen(!TCODConsole.isFullscreen()); } break; } if ((dest.X != Player.Position.X || dest.Y != Player.Position.Y) && Player.Stamina > 0) { Player.MoveToPosition(dest); Player.Stamina--; Player.TurnTimeout += 5 - Player.Speed; } } foreach (Character c in Area.Current.Characters) { c.Update(); } foreach (Decal d in Area.Current.Decals) { d.Update(); } if (Player.HP < 1) { Console.WriteLine("GAME OVER"); Draw(); while (true) { if (TCODConsole.waitForKeypress(true).KeyCode == TCODKeyCode.Escape) { Over = true; break; } } } }