public override Vector2 GetNewPosition() { var isInLair = ((ia.GetCurrentPosition() - targetPosition).magnitude < (PlayerConstants.LAIR_EGG_CREATION_MIN_DISTANCE)); if (!startedBreeding && isInLair) { timeToWait = Time.fixedTime + timeToWait; startedBreeding = true; } else if (startedBreeding && Time.fixedTime > timeToWait) { if (!startedLeaving) { startedLeaving = true; leavingStartTime = Time.fixedTime; targetPosition = targetPosition + new Vector2(Random.value > 0.5f ? -1f : 1f, Random.value > 0.5f ? -0.3f : 0.3f); } else if ((!isInLair && (ia.GetCurrentPosition() - targetPosition).magnitude < 0.2f) || leavingStartTime + 2f < Time.fixedTime) { finishedBreeding = true; } } return(targetPosition); }
public override bool IsFinished() { var hasSoldiersFollowing = ia.PlayerHasGuardingSoldiers(); var isInFood = ((ia.GetCurrentPosition() - targetPosition).magnitude < (SoldierConstants.FOOD_HARVEST_MIN_DISTANCE / 1.3f)); var foodPileDepleted = (targetFoodPile != null ? targetFoodPile.behaviour.GetFoodCount() < 5 ? true : false : false); return(isInFood || !hasSoldiersFollowing || foodPileDepleted); }
public override void Initialize(Baka ia) { type = TaskType.Attack; this.ia = ia; maxTime = Time.fixedTime + 15f; tries = 1; noEnemies = false; lastTimeWithGuards = Time.fixedTime; enemySoldier = ia.GetNearestEnemy(ia.GetCurrentPosition()); }
public override void Initialize(Baka ia) { type = TaskType.Wait; if (startPosition == Vector2.zero) { startPosition = ia.GetCurrentPosition(); } RefreshTargetPosition(); }
public override Vector2 GetNewPosition() { if (enemySoldier == null || enemySoldier.isDead) { tries++; enemySoldier = ia.GetNearestEnemy(ia.GetCurrentPosition()); } if (ia.PlayerHasGuardingSoldiers()) { lastTimeWithGuards = Time.fixedTime; } if (enemySoldier != null) { return(new Vector2(enemySoldier.GetPosition().x, enemySoldier.GetPosition().z)); } else { noEnemies = true; return(ia.GetCurrentPosition()); } }
public override Vector2 GetNewPosition() { if (busySoldier == null || busySoldier.isDead) { busySoldier = GetBusySoldier(); } if (busySoldier != null) { return(new Vector2(busySoldier.GetPosition().x, busySoldier.GetPosition().z)); } else { noBusySoldiers = true; return(ia.GetCurrentPosition()); } }
public override void Initialize(Baka ia) { type = TaskType.Harvest; this.ia = ia; var foodPile = ia.GetNearestBestFoodPile(ia.GetCurrentPosition()); //var foodUnit = ia.GetNearestFoodUnit(ia.GetCurrentPosition()); //if(foodUnit != null && foodPile.behaviour.GetFoodCount() < 10 && ia.IsCloser(foodUnit.GetPosition(), ia.player.GetPosition(), foodPile.GetPosition())) //{ // targetPosition = new Vector2(foodUnit.GetPosition().x, foodUnit.GetPosition().z); //} //else { targetFoodPile = foodPile; targetPosition = new Vector2(foodPile.GetPosition().x, foodPile.GetPosition().z); } }
public override void Initialize(Baka ia) { type = TaskType.Freeze; targetPosition = ia.GetCurrentPosition(); }