Пример #1
0
    public void CancelBuildings()
    {
        StopAllCoroutines();

        HouseState = EHouseState.Destroyed;
        // buildProgress = 0f;
        ChangeSprite();
        smoke.gameObject.SetActive(false);
    }
Пример #2
0
    // 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));
        }
    }
Пример #3
0
    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();
    }
Пример #4
0
    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);
    }
Пример #5
0
    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));
        }
    }