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; }