Example #1
0
        public new void Update()
        {
            if (isCompleted || isPaused || isAborted)
            {
                return;
            }

            if (GetPlayerBase().GetInventory().GetTotalCrystals() >= resourceCount)
            {
                Complete();
                return;
            }

            if (this.selectedCrystal == null)
            {
                selectedCrystal = GameMain.GetInstance().GetGameWorld().GetUnoccupiedNearbyCrystal(gameObject);
                if (selectedCrystal == null)
                {
                    Abort();
                    return;
                }
            }

            Vector3 dest = VectorUtil.nearestPointOnGameObject(gameObject.transform.position, selectedCrystal.gameObject);
            float   distanceToResource = (Vector2.Distance(VectorUtil.to2D(gameObject.transform.position), VectorUtil.to2D(dest)));

            if (distanceToResource > MIN_MINE_DISTANCE)
            {
                gameObject.GetComponent <WorkerDroneAI>().beginMoveTo(VectorUtil.nearestPointOnGameObject(gameObject.transform.position, selectedCrystal.gameObject), OnReachedTree);
            }
        }
Example #2
0
        public override void Resume()
        {
            if (isPaused)
            {
                if (this.selectedCrystal == null)
                {
                    selectedCrystal = GameMain.GetInstance().GetGameWorld().GetUnoccupiedNearbyCrystal(gameObject);
                    if (selectedCrystal == null)
                    {
                        Abort();
                        return;
                    }
                }

                if (selectedCrystal != null)
                {
                    Vector3 dest = VectorUtil.nearestPointOnGameObject(gameObject.transform.position, selectedCrystal.gameObject);
                    float   distanceToResource = (Vector2.Distance(VectorUtil.to2D(gameObject.transform.position), VectorUtil.to2D(dest)));
                    if (distanceToResource > MIN_MINE_DISTANCE)
                    {
                        gameObject.GetComponent <WorkerDroneAI>()
                        .beginMoveTo(
                            VectorUtil.nearestPointOnGameObject(gameObject.transform.position, selectedCrystal.gameObject), OnReachedTree);
                    }
                    else
                    {
                        gameObject.transform.LookAt(selectedCrystal.transform);
                        mineTree();
                    }
                }
            }

            base.Resume();
        }
Example #3
0
 public AIUnitTask SetSelected(MineableCrystal mineable)
 {
     this.selectedCrystal = mineable;
     return(this);
 }
Example #4
0
 public override void Abort()
 {
     base.Abort();
     StopMining();
     selectedCrystal = null;
 }
Example #5
0
 public override void Complete()
 {
     base.Complete();
     StopMining();
     selectedCrystal = null;
 }