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 virtual void MoveToTile(IOccupiable targetTile, ref StepSummary summary) { if (targetTile.ClanOwnershipId != this.ClanInfo.Id) { summary.AddConqueredTerritoryInfo(targetTile.ClanOwnershipId); } targetTile.MoveHere(this); }
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); }
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 void CalculateStep() { if (_isAlive) { for (int i = 0; i < _entitiesList.Count; i++) { StepSummary summary = _entitiesList[i].CalculateStep(); if (summary.HasSpawnedEntity) { AddSpawnedEntityToClan(summary.SpawnedEntitiy); } if (summary.HasConqueredTerritory) { StrengthController.GainTerritory(); OnOtherClansTerritoryIsConquered(summary.PreviousTileClanOwnerId); } } } }
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); }