protected void SpawnEntity(IVisionResult visionResult, ref StepSummary summary)
        {
            Entity spawned = _entityFactory.Create(GetEntityIdToSpawn(), this.ClanInfo);

            summary.AddSpawnedEntityInfo(spawned);

            visionResult.GetRandomFreeTile().SetAiEntity(spawned);
            _nextSpawnCounter = 0;
        }
 protected void HandleSpawn(IVisionResult visionResult, ref StepSummary summary)
 {
     if (_nextSpawnCounter < _spawnTreshold)
     {
         _nextSpawnCounter++;
     }
     else if (visionResult.IsFreeTileFound)
     {
         SpawnEntity(visionResult, ref summary);
     }
 }
        private void TransformBuilderIntoOutpost(IVisionResult visionResult, ref StepSummary summary)
        {
            Entity buildedOutpost = _entityFactory.Create(EntityId.Outpost, this.ClanInfo);

            summary.AddSpawnedEntityInfo(buildedOutpost);

            Tile transformTile = OccupiedTile;

            this.ForceKill();
            transformTile.SetAiEntity(buildedOutpost);
        }
        public override StepSummary CalculateStep()
        {
            StepSummary   summary      = new StepSummary();
            IVisionResult visionResult = _visionSense.GetResult(this);

            // Attack
            if (visionResult.IsEnemyFound)
            {
                AttackEnemy(visionResult.GetRandomEnemy());
            }

            // Spawn
            HandleSpawn(visionResult, ref summary);

            return(summary);
        }
        public override StepSummary CalculateStep()
        {
            StepSummary   summary      = new StepSummary();
            IVisionResult visionResult = _visionSense.GetResult(this);

            // Build
            if (visionResult.IsAwayFromClosestHeadquarter)
            {
                TransformBuilderIntoOutpost(visionResult, ref summary);
            }
            else if (visionResult.IsFreeTileFound)
            {
                MoveToTile(visionResult.GetRandomFreeTile(), ref summary);
            }

            return(summary);
        }
Beispiel #6
0
        public override StepSummary CalculateStep()
        {
            StepSummary   summary      = new StepSummary();
            IVisionResult visionResult = _visionSense.GetResult(this);

            // HealAlly priority over attack
            if (visionResult.IsAllyToHealFound)
            {
                HealAlly(visionResult.GetRandomAllyWhoRequireHealing());
            }
            else if (visionResult.IsEnemyFound)
            {
                AttackEnemy(visionResult.GetRandomEnemy());
            }

            // Spawn
            HandleSpawn(visionResult, ref summary);

            return(summary);
        }
        public override StepSummary CalculateStep()
        {
            StepSummary   summary      = new StepSummary();
            IVisionResult visionResult = _visionSense.GetResult(this);

            // Attack
            bool isEnemyAttacked = false;

            if (visionResult.IsEnemyFound && (IsWillingToAttack || !visionResult.IsFreeTileFound))
            {
                AttackEnemy(visionResult.GetRandomEnemy());
                isEnemyAttacked = true;
            }

            // Move
            if (!isEnemyAttacked && visionResult.IsFreeTileFound)
            {
                MoveToTile(visionResult.GetRandomFreeTile(), ref summary);
            }

            return(summary);
        }