示例#1
0
        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));
        }
示例#2
0
        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;
            }
        }
示例#3
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));
        }