private void TryTrainUnit(Entity trainedEntity, BuildingBehaviour trainedIn) { if (trainedIn == this) { TryTrainUnit(); } }
/** * <summary> * Unselect the any building * </summary> * * <returns> * void * </returns> */ public static void UnselectBuilding() { if (BuildingsManagerBehaviour.SelectedBuilding == null) { return; } BuildingBehaviour buildingBehaviour = BuildingsManagerBehaviour.SelectedBuilding .GetComponent <BuildingBehaviour>(); buildingBehaviour.SetSelect(false); // Hide info component panel Self.infoComponentPanel.SetActive(false); Self.infoComponentPanel .transform .Find("Single") .gameObject .SetActive(false); InfoComponentPanelUI infoComponentPanelUI = Self.infoComponentPanel.GetComponent <InfoComponentPanelUI>(); infoComponentPanelUI.SetName(""); infoComponentPanelUI.SetHealth(0, 100); infoComponentPanelUI.SetIcon(null); BuildingsManagerBehaviour.SelectedBuilding = null; }
// Update is called once per frame void Update() { if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity, buildingsMask)) { BuildingBehaviour building = hit.collider.gameObject.GetComponent <BuildingBehaviour>(); if (building && building.built) { if (building.selected) { building.SetSelected(false); } else { DeactivateAllBuildings(); building.SetSelected(true); } } } else if (!eventSystem.IsPointerOverGameObject()) { DeactivateAllBuildings(); } } }
private void ProcessInput() { if (!preview) { return; } Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity, LayerMask.GetMask("Both"))) { Vector3 mousePos = hit.point; preview.transform.position = mousePos + building.Offset; } if (Input.GetMouseButton(0)) { BuildingBehaviour buildingBehaviour = preview.GetComponent <BuildingBehaviour>(); if (buildingBehaviour.validPosition) { buildingBehaviour.Place(); if (Input.GetKey(KeyCode.LeftShift)) { preview = CreatePreview(building); } else { preview = null; building = null; isBuilding = false; } } } }
/** * <summary> * Turn all visibles placement indicators to a given parameter * </summary> * * <param name="flag"></param> * * <returns> * void * </returns> */ public static void TurnPlacementIndicator(bool flag) { foreach (GameObject building in BuildingsManagerBehaviour.Buildings) { BuildingBehaviour buildingBehaviour = building.GetComponent <BuildingBehaviour>(); buildingBehaviour.TurnPlacementIndicator(flag); } }
/** * <summary> * Turn all visibles placement indicators to a given parameter * </summary> * * <param name="flag"></param> * * <returns> * void * </returns> */ public static void TurnPlacementIndicator(bool flag) { foreach (GameObject visible in UnitsManagerBehaviour.Visibles) { BuildingBehaviour buildingBehaviour = visible.GetComponent <BuildingBehaviour>(); buildingBehaviour.TurnPlacementIndicator(flag); } }
private IEnumerator DealDamage(BuildingBehaviour atackedBuild) { if (atackedBuild == null) { base.FindTarget(true); yield break; } atackedBuild.SufferDamage(attack); yield return(new WaitForSecondsRealtime(attackInterval)); if (isDealingDamage) { StartCoroutine(DealDamage(atackedBuild)); } }
/** * <summary> * Select a given building * </summary> * * <param name="building"></param> * * <returns> * void * </returns> */ public static void SelectBuilding(GameObject building) { // Unselect previous building BuildingsManagerBehaviour.UnselectBuilding(); // Unselect units if (UnitsManagerBehaviour.SelectedUnits != null) { UnitsManagerBehaviour.UnselectGameObjects(); } // Unselect previous resource if (ResourcesManagerBehaviour.SelectedResource != null) { ResourcesManagerBehaviour.UnselectResource(); } BuildingBehaviour buildingBehaviour = building.GetComponent <BuildingBehaviour>(); buildingBehaviour.SetSelect(true); // Show info component panel Self.infoComponentPanel.SetActive(true); Self.infoComponentPanel .transform .Find("Single") .gameObject .SetActive(true); BuildingUI buildingUI = buildingBehaviour.GetUI() .GetComponent <BuildingUI>(); InfoComponentPanelUI infoComponentPanelUI = Self.infoComponentPanel.GetComponent <InfoComponentPanelUI>(); infoComponentPanelUI.SetName(building.name); infoComponentPanelUI.SetHealth(buildingBehaviour.GetHealth(), buildingBehaviour.GetMaxHealth()); infoComponentPanelUI.SetIcon(buildingUI.GetIcon()); // Show action component panel Self.actionComponentPanel.SetActive(true); // Set selected building BuildingsManagerBehaviour.SelectedBuilding = building; }
/** * <summary> * Refresh or update the selected building information * </summary> * * <returns> * void * </returns> */ public static void UpdateSelectedBuildingInfo() { if (!BuildingsManagerBehaviour.SelectedBuilding) { return; } BuildingBehaviour buildingBehaviour = BuildingsManagerBehaviour.SelectedBuilding .GetComponent <BuildingBehaviour>(); BuildingUI buildingUI = buildingBehaviour.GetUI() .GetComponent <BuildingUI>(); InfoComponentPanelUI infoComponentPanelUI = Self.infoComponentPanel.GetComponent <InfoComponentPanelUI>(); infoComponentPanelUI.SetName(BuildingsManagerBehaviour.SelectedBuilding.name); infoComponentPanelUI.SetHealth(buildingBehaviour.GetHealth(), buildingBehaviour.GetMaxHealth()); infoComponentPanelUI.SetIcon(buildingUI.GetIcon()); }
/** * <summary> * Construct a building * </summary> * * <param name="building">Building gameobject</param> * * <returns> * IEnumerator null * </returns> */ private IEnumerator Construct(GameObject building) { Vector3 closestPoint = this.ClosestPointToBuilding(building); this.MoveTo(closestPoint); // Move to the closest spot // Once the builder has reached the destination, start the construction while (!this.IsReachedAtDestination(closestPoint)) { BuildingBehaviour buildingBehaviour = building.GetComponent <BuildingBehaviour>(); if (buildingBehaviour.IsConstructed()) { this.StopConstruction(); } yield return(null); } Debug.Log("BUILDER : CONSTRUCTION : START"); // Starting the construction this.constructing = true; while (this.constructing) { this.animation.StartWalkAnimation(); BuildingBehaviour buildingBehaviour = building.GetComponent <BuildingBehaviour>(); buildingBehaviour.SetActivate(true); this.SetConstructing(!buildingBehaviour.IsConstructed()); yield return(null); } Debug.Log("BUILDER : CONSTRUCTION : DONE"); this.SetStructure(null); yield return(null); }
/** * <summary> * On mouse over * </summary> * * <returns> * void * </returns> */ private void OnMouseOver() { if (MouseBehaviour.Mode == MouseMode.Build) { return; } // Prevent selectino through the bottom UI if (ComponentPanelsUI.OnUI) { return; } MouseBehaviour.Mode = MouseMode.OverBuilding; // Right clicked if (Input.GetMouseButtonDown(1)) { if (this.IsActivated() || UnitsManagerBehaviour.SelectedUnits.Count == 0) { return; } GameObject unit = UnitsManagerBehaviour.SelectedUnits[0]; UnitBehaviour unitBehaviour = unit.GetComponent <UnitBehaviour>(); if (unitBehaviour is BuilderBehaviour) { ((BuilderBehaviour)unitBehaviour).StartConstruction(this.gameObject); } } // Left clicked else if (Input.GetMouseButtonDown(0)) { BuildingBehaviour buildingBehaviour = this.gameObject.GetComponent <BuildingBehaviour>(); if (buildingBehaviour != null && buildingBehaviour.IsConstructed()) { BuildingsManagerBehaviour.SelectBuilding(this.gameObject); } } }
void CreateEnvironment(GameObject Floor) { //Calculate Boundaries SpriteRenderer FloorSpr = Floor.GetComponent <SpriteRenderer>(); if (FloorSpr) { //Randomly select number of buildings (between 0 - 4) // The select a random position for them being upRight, DownRight, UpLeft, DownLeft int nBuildings = Random.Range(0, 5); if (nBuildings > 0) { float SprtSizeY = FloorSpr.size.y * 0.25f; float MinX = Floor.transform.position.x - CameraHorzBound; float MaxX = Floor.transform.position.x + CameraHorzBound; float MinY = Floor.transform.position.y - SprtSizeY; float MaxY = Floor.transform.position.y + SprtSizeY; List <Vector3> Positions = new List <Vector3>(); Positions.Add(new Vector3(MinX, MinY, 0.0f)); Positions.Add(new Vector3(MinX, MaxY, 0.0f)); Positions.Add(new Vector3(MaxX, MinY, 0.0f)); Positions.Add(new Vector3(MaxX, MaxY, 0.0f)); for (int i = 0; i < nBuildings; i++) { //Choose a random position int Index = Random.Range(0, Positions.Count); Vector3 NewPos = Positions[Index]; Positions.RemoveAt(Index); GameObject NewObj = Instantiate(BuildingPrefab, NewPos, Quaternion.identity, this.transform); BuildingBehaviour BuildingCmp = NewObj.GetComponent <BuildingBehaviour>(); if (BuildingCmp != null) { BuildingCmp.Init(Speed); } } } } }
/** * <summary> * Cancel the construction, this will pause * the construction * </summary> * * <returns> * void * </returns> */ public void Cancel() { if (!this.structure && !this.resource) { return; } // Cancel building if (this.IsConstructing()) { // Stop the coroutine immediately. this.StopConstruction(); BuildingBehaviour buildingBehaviour = this.structure.GetComponent <BuildingBehaviour>(); buildingBehaviour.SetActivate(false); this.SetConstructing(false); this.SetStructure(null); Debug.Log("BUILDER : BUILDING : CANCEL"); } // Cancel resource gathering else if (this.IsGatheringResource()) { // Stop the coroutine immediately. this.StopGatherResource(); ResourceBehaviour resourceBehaviour = this.resource.GetComponent <ResourceBehaviour>(); resourceBehaviour.SetGathering(false); this.SetResourceGathering(false); this.SetResource(null); Debug.Log("BUILDER : RESOURCE GATHERING : CANCEL"); } }
public void EntityTrainFinished(Entity entityInTraining, BuildingBehaviour buildingBehaviour) { OnEntityTrainFinishedEvent(entityInTraining, buildingBehaviour); }
private void EntityTrainFinishedEvent(Entity entityInTraining, BuildingBehaviour buildingBehaviour) { OnEntityTrainFinishedEvent?.Invoke(entityInTraining, buildingBehaviour); }
void OnEnable() { behavior = gameObject.GetComponentInParent <BuildingBehaviour>(); }