Exemplo n.º 1
0
    public CubeUpgrade GetNearbyUpgrade(Worker worker, CubeUpgradeTypes upgradeRequested)
    {
        CubeList.Clear();
        foreach (var item in CurrentCubes)
        {
            if (item.Value.CurrentUpgradeType == upgradeRequested)
            {
                CubeList.Add(item.Value.CurrentUpgrade);
            }
        }
        if (CubeList.Count > 0)
        {
            //get nearest upgrade
            float       _dist = Mathf.Abs(Vector3.Distance(worker.transform.position, CubeList[0].transform.position));
            CubeUpgrade _temp = CubeList[0];
            for (int i = 0; i < CubeList.Count; i++)
            {
                if (Mathf.Abs(Vector3.Distance(worker.transform.position, CubeList[i].transform.position)) < _dist)
                {
                    _temp = CubeList[i];
                    _dist = Mathf.Abs(Vector3.Distance(worker.transform.position, CubeList[i].transform.position));
                }
            }
            return(_temp);
        }

        return(null);
    }
Exemplo n.º 2
0
    public void UpgradeTile(CubeUpgradeTypes newUpgradeType)
    {
        if (CurrentUpgrade)
        {
            Destroy(CurrentUpgrade.gameObject);
            CurrentUpgrade     = null;
            CurrentUpgradeType = CubeUpgradeTypes.Nil;
            //HACK:
            return;

            Destroy(CurrentUpgrade);
        }
    }
Exemplo n.º 3
0
    public void UpgradeTile(CubeUpgrade newUpgrade)
    {
        if (CurrentUpgrade)
        {
            Destroy(newUpgrade.gameObject);
            //HACK:
            return;

            Destroy(CurrentUpgrade);
        }

        CurrentUpgrade                     = newUpgrade;
        CurrentUpgrade.MyCube              = this;
        CurrentUpgradeType                 = newUpgrade.UpgradeType;
        newUpgrade.transform.parent        = transform;
        newUpgrade.transform.localPosition = Vector3.zero;
    }
Exemplo n.º 4
0
 private void WorkTarget()
 {
     timer += Time.deltaTime;
     //time between works
     if (timer < TimeBetweenWorks)
     {
         return;
     }
     timer = 0;
     //work upgrade til work is done
     if (CurrentWorkTarget.WorkUpgrade(CalculateWork()))
     {
         //collect resrouce
         CarriedMaterial   = CurrentWorkTarget.TakeMaterial(BuildingMaterialCarryPos);
         CurrentAI         = NextAI;
         CurrentWorkTarget = null;
     }
 }
Exemplo n.º 5
0
 // Update is called once per frame
 void Update()
 {
     if (Input.GetKeyDown(KeyCode.Alpha1))
     {
         PlayerAction = PlaceCube;
     }
     if (Input.GetKeyDown(KeyCode.Alpha2))
     {
         PlayerAction    = UpgradeTile;
         SelectedUpgrade = TreePrefab;
     }
     if (Input.GetKeyDown(KeyCode.Alpha3))
     {
         PlayerAction = ClearTile;
     }
     touch = GetPointer();
     if (touch != null)
     {
         PlayerAction();
     }
 }
Exemplo n.º 6
0
 private void MoveToWorkTarget()
 {
     //get resource from priority list
     //HACK: just use trees for testing
     if (CurrentWorkTarget)
     {
         //check if pathing is done
         if (!Agent.hasPath)
         {
             CurrentAI = WorkTarget;
             NextAI    = StartWander;
         }
         return;
     }
     CurrentWorkTarget = LandMan.Instance.GetNearbyUpgrade(this, GetDesiredResource());
     if (!CurrentWorkTarget)
     {
         CurrentAI = StartWander;
         return;
     }
     Agent.SetDestination(CurrentWorkTarget.GetWorkLocation());
 }