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); }
public void UpgradeTile(CubeUpgradeTypes newUpgradeType) { if (CurrentUpgrade) { Destroy(CurrentUpgrade.gameObject); CurrentUpgrade = null; CurrentUpgradeType = CubeUpgradeTypes.Nil; //HACK: return; Destroy(CurrentUpgrade); } }
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; }
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; } }
// 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(); } }
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()); }