public IGameEvent GetAiStateResponse(GameStateHelper gameStateHelper) { var map = gameStateHelper.GetVar <Tile[, ]>("GameTiles"); var position = _entity.GetComponent <PositionComponent>(); var mainChar = gameStateHelper.GetVar <Entity>("MainEntity"); int horMovement = 0, verMovement = 0; int mainCharX = mainChar.GetComponent <PositionComponent>().ComponentXPositionOnMap; int mainCharY = mainChar.GetComponent <PositionComponent>().ComponentYPositionOnMap; //Call to A* Pathfinding to get path var path = PathfindingHelper.Instance.Path(map, new Vector2i(position.ComponentXPositionOnMap, position.ComponentYPositionOnMap), new Vector2i(mainCharX, mainCharY)); if (path != null) { if (path != null) { _path = path; } //if (_path[1] != null) seekerAi.AnalyzedPath = path[1]; // For debugging color in path and analyzed tiles // foreach (var tile in _path[1]) //{ // var fadingColorEnt = new FadingColorEntity("yellow"); // fadingColorEnt.GetComponent<PositionComponent>().ComponentXPositionOnMap = tile.X; // fadingColorEnt.GetComponent<PositionComponent>().ComponentYPositionOnMap = tile.Y; // SystemManager.RegisterEntity(fadingColorEnt); //} //foreach (var tile in path) //{ // var fadingColorEnt = new FadingColorEntity("green"); // fadingColorEnt.GetComponent<PositionComponent>().ComponentXPositionOnMap = tile.X; // fadingColorEnt.GetComponent<PositionComponent>().ComponentYPositionOnMap = tile.Y; // SystemManager.RegisterEntity(fadingColorEnt); //} } //Move to desired location if (position.ComponentXPositionOnMap < mainCharX) { horMovement++; } else if (position.ComponentXPositionOnMap > mainCharX) { horMovement--; } if (position.ComponentYPositionOnMap < mainCharY) { verMovement++; } else if (position.ComponentYPositionOnMap > mainCharY) { verMovement--; } return(new MovementInputEvent(_entity.Id, horMovement, verMovement)); }
private void StartTargetingMode() { // When toggle to targeting mode targeting should default to character position var mainChar = _gameStateHelper.GetVar <ActorEntity>("MainEntity"); var charPos = mainChar.GetComponent <PositionComponent>(); var activeItem = mainChar.GetComponent <InventoryComponent>().GetActiveItem(); _startingCoords.X = charPos.ComponentXPositionOnMap; _startingCoords.Y = charPos.ComponentYPositionOnMap; _targetedCoords.X = charPos.ComponentXPositionOnMap; _targetedCoords.Y = charPos.ComponentYPositionOnMap; _gameStateHelper.SetVar("TargetingData", new TargetingData(new List <Vector2i>(), new Vector2i(_targetedCoords.X, _targetedCoords.Y))); if (activeItem.GetType() == typeof(Weapon)) { _targetingRange = ((Weapon)activeItem).Range; } else { _targetingRange = 0; } }
public IGameEvent GetAiStateResponse(GameStateHelper gameStateHelper) { var map = gameStateHelper.GetVar <Tile[, ]>("GameTiles"); var position = _entity.GetComponent <PositionComponent>(); var currentPatrolPoint = _patrolPoints[_patrolPointIndex]; int horMovement = 0, verMovement = 0; // Have we reached the current patrol point? Then move on to the next one if (position.ComponentXPositionOnMap == currentPatrolPoint.X && position.ComponentYPositionOnMap == currentPatrolPoint.Y) { IncrPatrolPointIndex(); currentPatrolPoint = _patrolPoints[_patrolPointIndex]; } // Call to A* Pathfinding to get path var path = PathfindingHelper.Instance.Path(map, new Vector2i(position.ComponentXPositionOnMap, position.ComponentYPositionOnMap), new Vector2i(currentPatrolPoint.X, currentPatrolPoint.Y)); var nextPos = path[0]; // Move to desired location if (position.ComponentXPositionOnMap < nextPos.X) { horMovement++; } else if (position.ComponentXPositionOnMap > nextPos.X) { horMovement--; } if (position.ComponentYPositionOnMap < nextPos.Y) { verMovement++; } else if (position.ComponentYPositionOnMap > nextPos.Y) { verMovement--; } return(new MovementInputEvent(_entity.Id, horMovement, verMovement)); }