private void clickOnConstruction(RaycastHit rayHit) { if (rayHit.collider.gameObject.layer == LayerMask.NameToLayer("Selectable")) { SObject sobject = SObject.getSobjectFromSelectionField(rayHit.collider.gameObject); if (sobject is SBuilding) { SBuilding sbuilding = (SBuilding)sobject; if (sbuilding.BelongsTo != m_belongsTo) { print("gonna to attack " + ID); //TODO add attack here } else { //if the building is in construction we continue the construction if (sbuilding.IsInConstruction) { continueConstructBuilding(sbuilding.gameObject); } } } } }
//private void OnValidate() //{ // //_queuePrefab = Resources.Load<GameObject>("_default_queueLine"); // //_content = GameObject.Find("QueueContent"); //} public void OnBtnBuilding(SBuilding myBuilding) { //Debug.Log("Вызван OnBtnBuildong, " + myBuilding.ToString()); //Messenger<int>.Broadcast(GameEvents.CityGUIGameEvent.ON_BUTTON_BUILDING, myBuilding); //(int)Building.Buildings.TownHall_lvl0); Messenger <SBuilding> .Broadcast(GameEvents.CityGUIGameEvent.ON_BUTTON_BUILDING, myBuilding); //Instantiate(_queuePrefab, _content.transform); //CreationQueueElement.InstantiateQueueElement(building); }
public void InitializeModel(SBuilding sBuilding, Dictionary <BuildingType, Sprite> buildingsSprites, Dictionary <ResourceType, Sprite> resourcesSprites, StoreHelper storeHelper, List <BuildingModel> buildings, Transform detailWindowParent) { _sBuildingModel = sBuilding; _buildings = buildings; InitializeModel(_sBuildingModel.Name, buildingsSprites[_sBuildingModel.Type], _sBuildingModel.Id, detailWindowParent); foreach (var price in sBuilding.Price) { Instantiate(_pricePrefab, _prices).GetComponent <PriceModel>() .InitializeModel(price.Amount, resourcesSprites[price.Type], price.Type); } GetComponent <Toggle>().onValueChanged.AddListener(delegate { if (_detailWindowObject != null) { Destroy(_detailWindowObject); } else { _detailWindowObject = Instantiate(_detailWindowPrefab, _detailWindowParent); var detailWindowModel = _detailWindowObject.GetComponent <StoreDetailWindowModel>(); detailWindowModel.InitializeModel(_sBuildingModel.Name, _sBuildingModel.Description, _sBuildingModel.Price, _pricePrefab, resourcesSprites, () => { storeHelper.BuyBuilding(_sBuildingModel.Id, (buildingModel, reponseCode) => { switch (reponseCode) { case ResponseCode.Success: buildings.Add(buildingModel); break; default: break; } }); }); } }); }
public override void onClick(RaycastHit rayHit) { base.onClick(rayHit); //if the builder was building a construction, we reduce the number of builder on this construction if (m_buildingUnderConstruction != null) { m_buildingUnderConstruction.BuilderOnConstruction--; m_buildingUnderConstruction = null; } clickOnConstruction(rayHit); harvest(rayHit); }
public override void onClick(SObject sobject) { base.onClick(sobject); print("on click sobject"); //if the builder was building a construction, we reduce the number of builder on this construction if (m_buildingUnderConstruction != null) { m_buildingUnderConstruction.BuilderOnConstruction--; m_buildingUnderConstruction = null; } if (sobject is SResources) { print("gonna to harvest " + ID); SResources sresources = (SResources)sobject; actionGetResources(sresources); if (m_belongsToSquad != null) { m_belongsToSquad.harvestSquad(sresources); } print("get resources"); } if (sobject is SBuilding) { SBuilding sbuilding = (SBuilding)sobject; if (sbuilding.BelongsTo != m_belongsTo) { print("gonna to attack " + ID); //TODO add attack here } else { //if the building is in construction we continue the construction if (sbuilding.IsInConstruction) { continueConstructBuilding(sbuilding.gameObject); } } } }
private IEnumerator constructBuildingCoroutine(GameObject buildingGO) { #region constructBuildingInit SBuilding sbuilging; if (buildingGO.TryGetComponent(out sbuilging) == false) { Debug.LogWarning("Unable to construct the " + gameObject.name + " it doesn't have any SBuilding component"); yield break; } float duration = sbuilging.DurationCreation; #endregion #region reachBuilding int i = 0; //wait until the agent reach destination while (Utilities.navMeshHaveReachDestination(m_agent) == false) { if (i * 0.5f > m_timeMaxToReachDest) { Debug.LogWarning("The agent " + ID + " didn't suceed to reach his destination"); yield break; } yield return(new WaitForSeconds(0.5f)); i++; } #endregion #region constructBuildingLoop m_buildingUnderConstruction = sbuilging; sbuilging.BuilderOnConstruction++; const float timeIteration = 0.1f; while (sbuilging.StateOfConstruction < 1.0f) { sbuilging.StateOfConstruction += (timeIteration / duration) * m_speedConstruction; yield return(new WaitForSeconds(timeIteration)); } #endregion #region end_construction //change mesh to the full form off the building //buildingGO.GetComponent<MeshFilter>().sharedMesh = sbuilging.InitMeshBuilding; sbuilging.enabled = true; //the building isn't in construction anymore sbuilging.IsInConstruction = false; IsActive = false; //add cloth on it if (DebugTool.tryFindGOChildren(buildingGO, "Cloth", out GameObject clothGO, LogType.Error)) { clothGO.SetActive(false); } #endregion }