// Event handler for Update event private static void OnRootConsoleUpdate(object sender, UpdateEventArgs e) { //might move this junk out of consoleupdate to clean up, but this moves char for now bool didPlayerAct = false; RLKeyPress keyPress = _rootConsole.Keyboard.GetKeyPress(); if (CommandSystem.IsPlayerTurn) { if (keyPress != null) { if (keyPress.Key == RLKey.Up) { didPlayerAct = CommandSystem.MovePlayer(Direction.Up); } else if (keyPress.Key == RLKey.Down) { didPlayerAct = CommandSystem.MovePlayer(Direction.Down); } else if (keyPress.Key == RLKey.Left) { didPlayerAct = CommandSystem.MovePlayer(Direction.Left); } else if (keyPress.Key == RLKey.Right) { didPlayerAct = CommandSystem.MovePlayer(Direction.Right); } else if (keyPress.Key == RLKey.Escape) { _rootConsole.Close(); } else if (keyPress.Key == RLKey.Period) { if (DungeonMap.CanMoveDownToNextLevel()) { _mapLevel += 1; MapGenerator mapGenerator = new MapGenerator(_mapWidth, _mapHeight, 50, 5, 13, _mapLevel); DungeonMap = mapGenerator.CreateMap(); MessageLog = new MessageLog(); CommandSystem = new CommandSystem(); string consoleTitle = $"D$ DungeonZ Level {_mapLevel} - Seed {seed}"; didPlayerAct = true; } } } if (didPlayerAct) { _renderRequired = true; CommandSystem.EndPlayerTurn(); } } else { CommandSystem.ActivateMonsters(); _renderRequired = true; } }
public static bool AttemptMoveDownDungeonLevel() { if (DungeonMap.CanMoveDownToNextLevel()) { MoveDownDungeonLevel(); } return(false); }
// Event handler for RLNET's Update event private static void OnRootConsoleUpdate(object sender, UpdateEventArgs e) { bool didPlayerAct = false; RLKeyPress keyPress = _rootConsole.Keyboard.GetKeyPress(); if (CommandSystem.IsPlayerTurn) { if (keyPress != null) { if (keyPress.Key == RLKey.Up) { didPlayerAct = CommandSystem.MovePlayer(Direction.Up); } else if (keyPress.Key == RLKey.Down) { didPlayerAct = CommandSystem.MovePlayer(Direction.Down); } else if (keyPress.Key == RLKey.Left) { didPlayerAct = CommandSystem.MovePlayer(Direction.Left); } else if (keyPress.Key == RLKey.Right) { didPlayerAct = CommandSystem.MovePlayer(Direction.Right); } else if (keyPress.Key == RLKey.Escape) { _rootConsole.Close(); } else if (keyPress.Key == RLKey.Period) { if (DungeonMap.CanMoveDownToNextLevel()) { MapGenerator mapGenerator = new MapGenerator(_mapWidth, _mapHeight, 20, 13, 7, ++_mapLevel); DungeonMap = mapGenerator.CreateMap(); MessageLog = new MessageLog(); CommandSystem = new CommandSystem(); _rootConsole.Title = $"RougeSharp RLNet Tutorial - Level {_mapLevel}"; didPlayerAct = true; } } } if (didPlayerAct) { _renderRequired = true; CommandSystem.EndPlayerTurn(); } } else { CommandSystem.ActivateMonsters(); _renderRequired = true; } }
// Event handler for RLNET's Update event private static void OnRootConsoleUpdate(object sender, UpdateEventArgs e) { _inventoryConsole.SetBackColor(0, 0, _inventoryWidth, _inventoryHeight, Palette.DbWood); _inventoryConsole.Print(1, 1, "Inventory", Colors.TextHeading); bool didPlayerAct = false; RLKeyPress keyPress = _rootConsole.Keyboard.GetKeyPress(); if (CommandSystem.IsPlayerTurn) { if (keyPress != null) { if (keyPress.Key == RLKey.Up) { didPlayerAct = CommandSystem.MovePlayer(Directions.Up); } else if (keyPress.Key == RLKey.Down) { didPlayerAct = CommandSystem.MovePlayer(Directions.Down); } else if (keyPress.Key == RLKey.Left) { didPlayerAct = CommandSystem.MovePlayer(Directions.Left); } else if (keyPress.Key == RLKey.Right) { didPlayerAct = CommandSystem.MovePlayer(Directions.Right); } else if (keyPress.Key == RLKey.Escape) { _rootConsole.Close(); } else if (keyPress.Key == RLKey.Period) { if (DungeonMap.CanMoveDownToNextLevel()) { MapGenerator mapGenerator = new MapGenerator(_mapWidth, _mapHeight, 20, 13, 7, ++_mapLevel); DungeonMap = mapGenerator.CreateMap(); MessageLog = new MessageLog(); CommandSystem = new CommandSystem(); _rootConsole.Title = $"SharpRogue - Level {_mapLevel}"; didPlayerAct = true; } } } if (didPlayerAct) { _renderRequired = true; CommandSystem.EndPlayerTurn(); } } else { CommandSystem.ActivateMonsters(); _renderRequired = true; } }
private static void OnRootConsoleUpdate(object sender, UpdateEventArgs e) { // draw the console that we setup //Write this code at the start too check if your console update method has actually worked first //_rootConsole.Print(10, 10, "It worked", RLColor.Green); bool didPlayerAct = false; RLKeyPress keyPress = _rootConsole.Keyboard.GetKeyPress(); if (commandSystem.IsPlayerTurn) { //if you have pressed a key if (keyPress != null) { //checks what key you have pressed if it was up down left or right and depending on the key //uses the command system class too find you new position on the map if (keyPress.Key == RLKey.Up) { didPlayerAct = commandSystem.MovePlayer(Direction.Up); } else if (keyPress.Key == RLKey.Down) { didPlayerAct = commandSystem.MovePlayer(Direction.Down); } else if (keyPress.Key == RLKey.Left) { didPlayerAct = commandSystem.MovePlayer(Direction.Left); } else if (keyPress.Key == RLKey.Right) { didPlayerAct = commandSystem.MovePlayer(Direction.Right); } else if (keyPress.Key == RLKey.Escape) { _rootConsole.Close(); } //if player is on a stairs going down cell and presses period it will create a new map and message log and //command system it will increase the map level and show it and change player act too true else if (keyPress.Key == RLKey.Period) { if (DungeonMap.CanMoveDownToNextLevel()) { MapGenerator mapGenerator = new MapGenerator(_mapWidth, _mapHeight, 20, 13, 7, ++_mapLevel); DungeonMap = mapGenerator.CreateMap(); messageLog = new MessageLog(); commandSystem = new CommandSystem(); _rootConsole.Title = $"RougeSharp - Level {_mapLevel}"; didPlayerAct = true; player.MaxHealth += 5; player.Health = player.MaxHealth; player.Gold += 20; } } } } if (didPlayerAct) { //counts the steps player took //messageLog.Add($"Step # {++_steps}"); _renderRequired = true; commandSystem.EndPlayerTurn(); } else { commandSystem.ActivateMonsters(); _renderRequired = true; } //set the background color and text for each console except the map and message consoles //_messageConsole.SetBackColor(0, 0, _messageWidth, _messageHeight, RLColor.Red); //_statConsole.SetBackColor(0, 0, _statWidth, _statHeight, RLColor.Red); //_statConsole.Print(1, 1, "Stats", Colors.TextHeading); _inventoryConsole.SetBackColor(0, 0, _inventoryWidth, _inventoryHeight, RLColor.Cyan); _inventoryConsole.Print(1, 1, "Inventory", Colors.TextHeading); }
private IEnumerator OnRootConsoleUpdate() { while (Application.isPlaying) { bool didPlayerAct = false; if (TargetingSystem.IsPlayerTargeting) { if (Input.anyKeyDown) { _renderRequired = true; foreach (KeyCode vKey in System.Enum.GetValues(typeof(KeyCode))) { if (Input.GetKey(vKey)) { TargetingSystem.HandleKey(vKey); } } } } else if (CommandSystem.IsPlayerTurn) { if (Input.anyKeyDown) { if (Input.GetKeyDown(KeyCode.UpArrow)) { didPlayerAct = CommandSystem.MovePlayer(Direction.Up); } else if (Input.GetKeyDown(KeyCode.DownArrow)) { didPlayerAct = CommandSystem.MovePlayer(Direction.Down); } else if (Input.GetKeyDown(KeyCode.LeftArrow)) { didPlayerAct = CommandSystem.MovePlayer(Direction.Left); } else if (Input.GetKeyDown(KeyCode.RightArrow)) { didPlayerAct = CommandSystem.MovePlayer(Direction.Right); } else if (Input.GetKeyDown(KeyCode.Escape)) { //_rootConsole.Close(); } else if (Input.GetKeyDown(KeyCode.Period)) { if (DungeonMap.CanMoveDownToNextLevel()) { MapGenerator mapGenerator = new MapGenerator(_mapWidth, _mapHeight, 20, 13, 7, ++_mapLevel); DungeonMap = mapGenerator.CreateMap(); MessageLog = new MessageLog(); CommandSystem = new CommandSystem(); //_rootConsole.Title = string.Format("RougeSharp RLNet Tutorial - Level {0}", _mapLevel); didPlayerAct = true; } } else { foreach (KeyCode vKey in System.Enum.GetValues(typeof(KeyCode))) { if (Input.GetKey(vKey)) { didPlayerAct = CommandSystem.HandleKey(vKey); } } } if (didPlayerAct) { _renderRequired = true; CommandSystem.EndPlayerTurn(); } } } else { CommandSystem.ActivateMonsters(); _renderRequired = true; } yield return(null); } }
protected override void Update(GameTime gameTime) { bool didPlayerAct = false; _inputState.Update(gameTime); if (TargetingSystem.IsPlayerTargeting) { _renderRequired = true; TargetingSystem.HandleInput(_inputState); } else if (CommandSystem.IsPlayerTurn) { if (_inputState.IsKeyPressed(Keys.Up)) { MapMessageLog.Add(""); didPlayerAct = CommandSystem.MovePlayer(Direction.Up); } else if (_inputState.IsKeyPressed(Keys.Down)) { MapMessageLog.Add(""); didPlayerAct = CommandSystem.MovePlayer(Direction.Down); } else if (_inputState.IsKeyPressed(Keys.Left)) { didPlayerAct = CommandSystem.MovePlayer(Direction.Left); } else if (_inputState.IsKeyPressed(Keys.Right)) { didPlayerAct = CommandSystem.MovePlayer(Direction.Right); } else if (_inputState.IsKeyPressed(Keys.Escape)) { this.Exit(); } else if (_inputState.IsKeyPressed(Keys.OemPeriod)) { if (DungeonMap.CanMoveDownToNextLevel()) { MapGenerator mapGenerator = new MapGenerator(_mapWidth, _mapHeight, 20, 13, 7, ++_mapLevel); DungeonMap = mapGenerator.CreateMap(); MessageLog = new MessageLog(); CommandSystem = new CommandSystem(); this.Window.Title = $"Sean's RogueLike Engine 3 - Level {_mapLevel}"; didPlayerAct = true; } } else { didPlayerAct = CommandSystem.HandleInput(_inputState); } if (didPlayerAct) { _renderRequired = true; CommandSystem.EndPlayerTurn(); } } else { CommandSystem.ActivateMonsters(); _renderRequired = true; } base.Update(gameTime); }
/// <summary> /// Allow player to interact with the overworld. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnOverworldUpdate(object sender, UpdateEventArgs e) { // Event handler for RLNET's Update event didPlayerAct = false; keyPress = console.Keyboard.GetKeyPress(); if (CommandSystem.IsPlayerTurn) { if (keyPress != null) { // User presses a direction if (keyPress.Key == RLKey.Keypad1) { didPlayerAct = CommandSystem.MovePlayer(Direction.DownLeft); } else if (keyPress.Key == RLKey.Down || keyPress.Key == RLKey.Keypad2) { didPlayerAct = CommandSystem.MovePlayer(Direction.Down); } else if (keyPress.Key == RLKey.Keypad3) { didPlayerAct = CommandSystem.MovePlayer(Direction.DownRight); } else if (keyPress.Key == RLKey.Left || keyPress.Key == RLKey.Keypad4) { didPlayerAct = CommandSystem.MovePlayer(Direction.Left); } else if (keyPress.Key == RLKey.Right || keyPress.Key == RLKey.Keypad6) { didPlayerAct = CommandSystem.MovePlayer(Direction.Right); } else if (keyPress.Key == RLKey.Keypad7) { didPlayerAct = CommandSystem.MovePlayer(Direction.UpLeft); } else if (keyPress.Key == RLKey.Up || keyPress.Key == RLKey.Keypad8) { didPlayerAct = CommandSystem.MovePlayer(Direction.Up); } else if (keyPress.Key == RLKey.Keypad9) { didPlayerAct = CommandSystem.MovePlayer(Direction.UpRight); } // User exits game else if (keyPress.Key == RLKey.Escape) { console.Close(); } // User walks down stairs else if (keyPress.Key == RLKey.KeypadPeriod || keyPress.Key == RLKey.Period) { if (DungeonMap.CanMoveDownToNextLevel()) { _mapLevel += 1; if (_mapLevel > DungeonMaps.Count) { MapGenerator mapGenerator = new MapGenerator( Dimensions.WorldWidth, Dimensions.WorldHeight, maxRooms, maxRoomWidth, maxRoomHeight, _mapLevel ); DungeonMaps.Add(mapGenerator.CreateMap()); DungeonMap = DungeonMaps[_mapLevel - 1]; } else { DungeonMap = DungeonMaps[_mapLevel - 1]; DungeonMap.PlacePlayerNearEntrance(); DungeonMap.RescheduleExistingActors(); } MessageLog = new MessageLog(); CommandSystem = new CommandSystem(); console.Title = $"L.O.R.S. - Level {_mapLevel}"; didPlayerAct = true; } else { MessageLog.Add("No stairs to walk down."); } } // User walks up stairs else if (keyPress.Key == RLKey.Comma || keyPress.Key == RLKey.Keypad0) { if (DungeonMap.CanMoveUpToPreviousLevel()) { _mapLevel -= 1; MessageLog = new MessageLog(); CommandSystem = new CommandSystem(); console.Title = $"L.O.R.S. - Level {_mapLevel}"; DungeonMap = DungeonMaps[_mapLevel - 1]; DungeonMap.PlacePlayerNearExit(); DungeonMap.RescheduleExistingActors(); didPlayerAct = true; } else { // if we are in the overworld... if (_mapLevel == 1) { MessageLog.Add("What are you gonna do? Walk to the moon?"); } else { MessageLog.Add("No stairs to walk up."); } } } else { didPlayerAct = CommandSystem.HandleKey(keyPress.Key); } } if (didPlayerAct) { _renderRequired = true; CommandSystem.EndPlayerTurn(); } } else { CommandSystem.ActivateMonsters(); _renderRequired = true; } }
// Update is called once per frame void Update() { bool didPlayerAct = false; if (Input.anyKeyDown || Time.time - _lastKeyPressTime > KeyPressDelay) { if (TargetingSystem.IsPlayerTargeting) { if (Input.anyKeyDown) { _renderRequired = true; foreach (KeyCode vKey in System.Enum.GetValues(typeof(KeyCode))) { if (Input.GetKey(vKey)) { TargetingSystem.HandleKey(vKey); } } } } else if (CommandSystem.IsPlayerTurn) { var playerTransform = Player.go.transform; _lastKeyPressTime = Time.time; float horizontal = Input.GetAxisRaw("Horizontal"); float vertical = Input.GetAxisRaw("Vertical"); if (horizontal > 0) { playerTransform.localScale = new Vector3(1, 1, 1); didPlayerAct = CommandSystem.MovePlayer(Direction.Right); } else if (horizontal < 0) { playerTransform.localScale = new Vector3(-1, 1, 1); didPlayerAct = CommandSystem.MovePlayer(Direction.Left); } else if (vertical > 0) { didPlayerAct = CommandSystem.MovePlayer(Direction.Down); } else if (vertical < 0) { didPlayerAct = CommandSystem.MovePlayer(Direction.Up); } else if (Input.GetKeyDown(KeyCode.Period)) { if (DungeonMap.CanMoveDownToNextLevel()) { MapGenerator mapGenerator = new MapGenerator(_width, _height, 20, 13, 7, ++_mapLevel); DungeonMap = mapGenerator.CreateMap(); MessageLog = new MessageLog(); CommandSystem = new CommandSystem(); didPlayerAct = true; } } else { foreach (KeyCode vKey in System.Enum.GetValues(typeof(KeyCode))) { if (Input.GetKey(vKey)) { didPlayerAct = CommandSystem.HandleKey(vKey); } } } if (didPlayerAct) { _renderRequired = true; CommandSystem.EndPlayerTurn(); } } else { CommandSystem.ActivateMonsters(); _renderRequired = true; } } }
// Event handler for RLNET's Update event private static void OnRootConsoleUpdate(object sender, UpdateEventArgs e) { bool didPlayerAct = false; RLKeyPress keyPress = _rootConsole.Keyboard.GetKeyPress(); if (CommandSystem.IsPlayerTurn) { if (keyPress != null) { if (keyPress.Key == RLKey.Up) { didPlayerAct = CommandSystem.MovePlayer(Direction.Up); } else if (keyPress.Key == RLKey.Down) { didPlayerAct = CommandSystem.MovePlayer(Direction.Down); } else if (keyPress.Key == RLKey.Left) { didPlayerAct = CommandSystem.MovePlayer(Direction.Left); } else if (keyPress.Key == RLKey.Right) { didPlayerAct = CommandSystem.MovePlayer(Direction.Right); } else if (keyPress.Key == RLKey.Escape) { _rootConsole.Close(); } else if (keyPress.Key == RLKey.Period) { if (DungeonMap.CanMoveDownToNextLevel()) { MapGenerator mapGenerator = new MapGenerator(_mapWidth, _mapHeight, 20, 13, 7, ++_mapLevel); DungeonMap = mapGenerator.CreateMap(); MessageLog = new MessageLog(); CommandSystem = new CommandSystem(); _rootConsole.Title = $"RougeSharp RLNet Tutorial - Level {_mapLevel}"; didPlayerAct = true; } } } if (didPlayerAct) { _renderRequired = true; CommandSystem.EndPlayerTurn(); } } else { CommandSystem.ActivateMonsters(); _renderRequired = true; } //Set background color andd text for our consoles //this is temporary, btw _mapConsole.SetBackColor(0, 0, _mapWidth, _mapHeight, Colors.FloorBackground); _mapConsole.Print(1, 1, "Map", Colors.TextHeading); _inventoryConsole.SetBackColor(0, 0, _inventoryWidth, _inventoryHeight, Swatch.DbWood); _inventoryConsole.Print(1, 1, "Inventory", Colors.TextHeading); }
private static void OnGameUpdate(object sender, UpdateEventArgs e) { bool didPlayerAct = false; RLKeyPress keyPress = rootConsole.Keyboard.GetKeyPress(); if (CommandSystem.IsPlayerTurn) { if (CommandSystem.PlayerIsDead) { time.Stop(); ts = time.Elapsed; DeathMenu(); } if (CommandSystem.IsGameEnded) { time.Stop(); ts = time.Elapsed; WinMenu(); } if (keyPress != null) { if (keyPress.Key == RLKey.Up) { didPlayerAct = CommandSystem.MovePlayer(Direction.Up); } else if (keyPress.Key == RLKey.Down) { didPlayerAct = CommandSystem.MovePlayer(Direction.Down); } else if (keyPress.Key == RLKey.Left) { didPlayerAct = CommandSystem.MovePlayer(Direction.Left); } else if (keyPress.Key == RLKey.Right) { didPlayerAct = CommandSystem.MovePlayer(Direction.Right); } else if (keyPress.Key == RLKey.I) { if (Player.Items.Count != 0) { inventoryConsole.Print(0, 2, ">", Colors.Text); renderRequired = true; rootConsole.Update -= OnGameUpdate; rootConsole.Update += OnItemUpdate; } } else if (keyPress.Key == RLKey.Escape) { rootConsole.Title = "MagiCave"; menuConsole.Clear(); for (int i = 0; i < 4; i++) { menuConsole.Print((menuConsole.Width - pauseOptions[i].Length) / 2, 40 + i * 5, pauseOptions[i], RLColor.White); } menuConsole.Print((menuConsole.Width - pauseOptions[0].Length) / 2, 40, pauseOptions[0], RLColor.LightRed); Pause(); } else if (keyPress.Key == RLKey.Period) { if (DungeonMap.CanMoveDownToNextLevel()) { if (CurrentLevel.Next == null) { DungeonMap.SetIsWalkable(Player.X, Player.Y, true); // If this is going to be a final level if (mapLevel == 4) { SchedulingSystem A_SchedulingSystem = new SchedulingSystem(); CurrentSchedulingSystem = CurrentSchedulingSystem.Next; CurrentSchedulingSystem = SchedulingSystems.AddLast(A_SchedulingSystem); SchedulingSystem = A_SchedulingSystem; DungeonGenerator mapGenerator = new DungeonGenerator(mapWidth, mapHeight, 20, 15, 7, ++mapLevel); DungeonMap = mapGenerator.CreateFinalLevel(SchedulingSystem); rootConsole.Title = $"MagiCave - Level {mapLevel}"; DungeonMap.UpdatePlayerFieldOfView(); didPlayerAct = true; } // Creating generic level else { SchedulingSystem A_SchedulingSystem = new SchedulingSystem(); CurrentSchedulingSystem = CurrentSchedulingSystem.Next; CurrentSchedulingSystem = SchedulingSystems.AddLast(A_SchedulingSystem); SchedulingSystem = A_SchedulingSystem; DungeonGenerator mapGenerator = new DungeonGenerator(mapWidth, mapHeight, 20, 15, 7, ++mapLevel); DungeonMap = mapGenerator.CreateMap(SchedulingSystem); rootConsole.Title = $"MagiCave - Level {mapLevel}"; didPlayerAct = true; DungeonMap.UpdatePlayerFieldOfView(); } CurrentLevel = CurrentLevel.Next; CurrentLevel = Levels.AddLast(DungeonMap); } // Moving to already created level else { DungeonMap.SetIsWalkable(Player.X, Player.Y, true); DungeonMap = CurrentLevel.Next.Value; Player.X = DungeonMap.Rooms.First()[DungeonMap.Rooms.First().Count / 2].X; Player.Y = DungeonMap.Rooms.First()[DungeonMap.Rooms.First().Count / 2].Y; SchedulingSystem = CurrentSchedulingSystem.Next.Value; CurrentSchedulingSystem = CurrentSchedulingSystem.Next; rootConsole.Title = $"MagiCave - Level {++mapLevel}"; didPlayerAct = true; CurrentLevel = CurrentLevel.Next; DungeonMap.UpdatePlayerFieldOfView(); } } // Moving to the previous level if (DungeonMap.CanMoveUpToPreviousLevel() && !didPlayerAct) { if (CurrentLevel.Previous != null) { DungeonMap.SetIsWalkable(Player.X, Player.Y, true); DungeonMap = CurrentLevel.Previous.Value; SchedulingSystem = CurrentSchedulingSystem.Previous.Value; CurrentSchedulingSystem = CurrentSchedulingSystem.Previous; Player.X = DungeonMap.Rooms.Last()[DungeonMap.Rooms.Last().Count / 2].X; Player.Y = DungeonMap.Rooms.Last()[DungeonMap.Rooms.Last().Count / 2].Y; rootConsole.Title = $"MagiCave - Level {--mapLevel}"; didPlayerAct = true; CurrentLevel = CurrentLevel.Previous; DungeonMap.UpdatePlayerFieldOfView(); } } } } if (didPlayerAct) { steps++; renderRequired = true; CommandSystem.EndPlayerTurn(); } } else { CommandSystem.ActivateMonsters(SchedulingSystem); renderRequired = true; } }