public void CancelBuildings() { StopAllCoroutines(); HouseState = EHouseState.Destroyed; // buildProgress = 0f; ChangeSprite(); smoke.gameObject.SetActive(false); }
// private void OnTriggerEnter2D(Collider2D other) // { // Debug.Log(other.gameObject); // if (other.gameObject.GetComponent<IndieMarc.TopDown.Character>() != null) // { // render.color = invis; // } // } // private void OnTriggerExit2D(Collider2D other) // { // if (other.gameObject.GetComponent<IndieMarc.TopDown.Character>() != null) // { // render.color = white; // } // } public void StartBuilding(float buildSpeed, int countWorkers, GameObject team) { if (HouseState == EHouseState.Destroyed && countWorkers >= RequiredWorkers) { HouseState = EHouseState.Building; ChangeSprite(); AudioManager.Instance.PlayLoopSound("Building"); StartCoroutine(BuildingHouse(buildSpeed)); } }
void OnEnable() { render = GetComponent <SpriteRenderer>(); HouseState = EHouseState.Destroyed; BuildContainer.Instance.AddNewHouse(this); smoke.gameObject.SetActive(false); progressBuild.gameObject.SetActive(false); iconState.gameObject.SetActive(false); SetStartParams(); }
private IEnumerator BuildingHouse(float buildSpeed) { smoke.gameObject.SetActive(true); float seconds = 0; while (buildProgress < 100f) { buildProgress += buildSpeed; //////////////////// Debug.Log("build speed " + buildSpeed + "/" + buildProgress + " seconds " + seconds); seconds++; if (Vector2.Distance(transform.position, currentBuilder.transform.position) > 3) { smoke.gameObject.SetActive(false); HouseState = EHouseState.Destroyed; Debug.Log("finish him"); yield break; } yield return(new WaitForSeconds(1f)); } if (buildProgress >= 100f) { buildProgress = 100f; HouseState = EHouseState.Builded; BuildContainer.Instance.DropBuildedHouse(this); ChangeSprite(true); // Destroy(smoke); buildCollider.gameObject.SetActive(false); smoke.gameObject.SetActive(false); //Сделать что-то с персонажем, например, флажок покрасить } yield return(null); }
private void Update() { if (HouseState == EHouseState.Builded) { return; } if (buildProgress >= 100 && HouseState == EHouseState.Destroyed) { AudioManager.Instance.StopLoopSound("Building"); AudioManager.Instance.PlaySound("BuildDone"); progressBuild.gameObject.SetActive(false); progressBuild.color = Color.white; progressBuild.fillAmount = 0f; iconState.gameObject.SetActive(true); iconState.sprite = finishIcon; HouseState = EHouseState.Builded; ChangeSprite(true); smoke.gameObject.SetActive(false); if (HouseType == EHouseType.Orange) { GetComponent <Animator>().enabled = true; } currentBuilder.buildCount++; currentBuilder.score += Coins; return; } if (currentBuilder && HouseState == EHouseState.Destroyed && currentBuilder.getEmployeesCount() >= RequiredWorkers) { if (buildProgress < 100 && Vector2.Distance(transform.position, currentBuilder.transform.position) < 5) { AudioManager.Instance.PlayLoopSound("Building"); progressBuild.gameObject.SetActive(true); progressBuild.color = currentBuilder.teamColor; iconState.gameObject.SetActive(true); smoke.gameObject.SetActive(true); buildProgress += currentBuilder.getEmployeesCount() * Time.deltaTime; progressBuild.fillAmount = buildProgress / 100f; } else { AudioManager.Instance.StopLoopSound("Building"); progressBuild.gameObject.SetActive(false); progressBuild.color = Color.white; progressBuild.fillAmount = 0f; iconState.gameObject.SetActive(false); smoke.gameObject.SetActive(false); currentBuilder = null; } // owner = team; // HouseState = EHouseState.Building; // ChangeSprite(); // StartCoroutine(BuildingHouse(buildSpeed)); } }