private void Update() { if (Input.GetMouseButtonDown(0) && !EventSystem.current.IsPointerOverGameObject()) { Vector3 clickPos = UtilsClass.GetMouseWorldPosition(); if (m_activeBuildingType != null) { if (CanSpawnBuilding(m_activeBuildingType, clickPos, out string errorMessage)) { if (ResourceManager.Instance.CanAfford(m_activeBuildingType.constructionResourceCostArray)) { ResourceManager.Instance.SpendResources(m_activeBuildingType.constructionResourceCostArray); BuildingConstruction.Create(UtilsClass.GetMouseWorldPosition(), m_activeBuildingType); SoundManager.Instance.PlaySound(SoundManager.Sound.BuildingPlaced); } else { TooltipUI.Instance.Show($"Cannot afford {m_activeBuildingType.GetConstructionResourceCostString()}", new TooltipUI.TooltipTimer { timer = 2f }); } } else { TooltipUI.Instance.Show(errorMessage, new TooltipUI.TooltipTimer { timer = 2f }); } } } }
public static BuildingConstruction Create(Vector3 position, BuildingTypeSO buildingType) { Transform buildingConstructionTransform = Instantiate(GameAssets.Instance.pfBuildingConstruction, position, Quaternion.identity); BuildingConstruction buildingConstruction = buildingConstructionTransform.GetComponent <BuildingConstruction>(); buildingConstruction.SetBuildingType(buildingType); return(buildingConstruction); }