コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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());
        }
コード例 #4
0
        public override void Initialize(Baka ia)
        {
            type = TaskType.Wait;

            if (startPosition == Vector2.zero)
            {
                startPosition = ia.GetCurrentPosition();
            }

            RefreshTargetPosition();
        }
コード例 #5
0
        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());
            }
        }
コード例 #6
0
        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());
            }
        }
コード例 #7
0
        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);
            }
        }
コード例 #8
0
 public override void Initialize(Baka ia)
 {
     type           = TaskType.Freeze;
     targetPosition = ia.GetCurrentPosition();
 }