Example #1
0
 void ResetTile()
 {
     isReset               = true;
     isReaped              = false;
     tileState             = TSTATE.PLANTABLE;
     spriteRenderer.sprite = null;
     seedType              = 0;
 }
Example #2
0
    void ChangeState(TSTATE _state)
    {
        tileState = _state;

        switch (_state)
        {
        case TSTATE.PLANTABLE:
            activatedTile.SetActive(false);
            break;

        case TSTATE.ACTIVATED:
            activatedTile.SetActive(true);
            break;

        case TSTATE.STAGE1:
            activatedTile.SetActive(false);
            break;

        case TSTATE.STAGE2:
            ChangeImage();
            //StartCoroutine(CheckTimer(plantedType));
            break;

        case TSTATE.STAGE3:
            ChangeImage();
            //StartCoroutine(CheckTimer(plantedType));
            break;

        case TSTATE.STAGE4:
            ChangeImage();
            if (seedType == 10005)
            {
                tileState = TSTATE.STAGE5;
            }
            //StartCoroutine(CheckTimer(plantedType));
            break;

        case TSTATE.STAGE5:
        {
            if (seedType != 10005)
            {
                ChangeImage();
            }
            if (isReaped)
            {
                ChangeState(TSTATE.PLANTABLE);
            }
        }
        break;
        }
    }
Example #3
0
    void UpdateVariable()
    {
        if (isStarted)
        {
            switch (plantedType)
            {
            case 0:
            {
                if (DataController.instance.data.day - plantedDay == 1 || DataController.instance.data.day - plantedDay == -20)
                {
                    if (tileState != TSTATE.STAGE5)
                    {
                        Debug.Log("the day after");
                        dayAfter  = true;
                        tempState = (int)tileState;
                        tempState++;
                        ChangeState((TSTATE)tempState);
                        Debug.Log("tile State now is" + tileState);
                        plantedDay = DataController.instance.data.day;
                        tileState  = (TSTATE)tempState;
                        dayAfter   = false;
                    }
                }
            }
            break;

            case 1:
            {
                if (DataController.instance.data.day - plantedDay == 2 || DataController.instance.data.day - plantedDay == -19)
                {
                    if (tileState != TSTATE.STAGE5)
                    {
                        dayAfter_2 = true;
                        tempState  = (int)tileState;
                        tempState++;
                        ChangeState((TSTATE)tempState);
                        plantedDay = DataController.instance.data.day;
                        tileState  = (TSTATE)tempState;
                        dayAfter_2 = false;
                    }
                }
            }
            break;
            }
        }
    }
Example #4
0
 // Start is called before the first frame update
 void Start()
 {
     player    = FindObjectOfType <MovingObject>().gameObject;
     tileState = TSTATE.PLANTABLE;
     targetPos = GetComponent <Transform>();
 }
    // Update is called once per frame
    void Update()
    {
        if (PlayScene.state == PlayScene.STATE.IDLE)
        {
            if (finalHealth <= 0)
            {
                tState = TSTATE.DEAD;
            }

            switch (tState)
            {
            case TSTATE.WAIT:
                constructTime += Time.deltaTime * PlayScene.playSpeed;

                if (constructTime < buildTime)
                {
                    float color = constructTime / buildTime;
                    this.gameObject.GetComponent <tk2dSprite>().color = new Color(color * 255f, color * 255f, color * 255f, 255f) / 255f;
                    return;
                }
                else
                {
                    this.gameObject.GetComponent <tk2dSprite>().color = new Color(255f, 255f, 255f, 255f) / 255f;
                    tState        = TSTATE.SEARCH;
                    constructTime = 0;
                }
                break;

            case TSTATE.SEARCH:
                ftime += Time.deltaTime;
                if (ftime < finalSpeed / PlayScene.playSpeed)
                {
                    return;
                }

                cTarget = null;
                lTarget.Clear();

                enemies = Physics.OverlapSphere(this.gameObject.transform.position, attackRange);

                if (ability == csClassTower.SpecialAbility.multiplexTarget)
                {
                    monsterCount = 0;
                    float[] distance    = new float[enemies.Length];
                    int[]   minPosition = new int[enemies.Length];

                    for (int i = 0; i < enemies.Length; i++)
                    {
                        minPosition[i] = i;
                        distance[i]    = 99999f;
                    }

                    for (int i = 0; i < enemies.Length; i++)
                    {
                        if (enemies[i].gameObject.tag == "MONSTER")
                        {
                            distance[i] = Mathf.Sqrt(Mathf.Pow((this.gameObject.transform.position.x - enemies[i].gameObject.transform.position.x), 2)
                                                     + Mathf.Pow((this.gameObject.transform.position.y - enemies[i].gameObject.transform.position.y), 2));

                            monsterCount++;
                        }
                    }

                    for (int i = 0; i < enemies.Length; i++)
                    {
                        float temp_value    = 0;
                        int   temp_position = 0;

                        for (int j = 0; j < enemies.Length - 1; j++)
                        {
                            if (distance[j] > distance[j + 1])
                            {
                                temp_value    = distance[j];       distance[j] = distance[j + 1];    distance[j + 1] = temp_value;
                                temp_position = minPosition[j]; minPosition[j] = minPosition[j + 1];      minPosition[j + 1] = temp_position;
                            }
                        }
                    }

                    for (int i = 0; i < monsterCount; i++)
                    {
                        if (i == N_TARGET)
                        {
                            break;
                        }

                        lTarget.Add(enemies[minPosition[i]]);
                        //Debug.Log("What is it : "+enemies[minPosition[i]]);

                        tState = TSTATE.ATTACK;
                    }
                }

                else
                {
                    for (int i = 0; i < enemies.Length; i++)
                    {
                        if (enemies[i].gameObject.tag == "MONSTER")
                        {
                            if (enemies[i].gameObject.GetComponent <Monster>().mState == Monster.MSTATE.DEAD)
                            {
                                continue;
                            }

                            if (cTarget == null)
                            {
                                cTarget = enemies[i];
                            }

                            else if (cTarget != null)
                            {
                                a = Mathf.Sqrt(Mathf.Pow((this.gameObject.transform.position.x - cTarget.gameObject.transform.position.x), 2)
                                               + Mathf.Pow((this.gameObject.transform.position.y - cTarget.gameObject.transform.position.y), 2));
                                b = Mathf.Sqrt(Mathf.Pow((this.gameObject.transform.position.x - enemies[i].gameObject.transform.position.x), 2)
                                               + Mathf.Pow((this.gameObject.transform.position.y - enemies[i].gameObject.transform.position.y), 2));

                                if (a > b)
                                {
                                    cTarget = enemies[i];
                                }
                            }
                        }
                    }
                    if (cTarget != null)
                    {
                        tState = TSTATE.ATTACK;
                    }
                }

                break;

            case TSTATE.ATTACK:
                ftime += Time.deltaTime;
                if (ftime < finalSpeed / PlayScene.playSpeed)
                {
                    return;
                }

                if (ability == csClassTower.SpecialAbility.multiplexTarget)
                {
                    tState = TSTATE.SEARCH;
                    FireProcessing("multiplexTarget");

                    ftime = 0.0f;
                }

                else
                {
                    if (cTarget != null)
                    {
                        if (cTarget.gameObject.GetComponent <Monster>().mState == Monster.MSTATE.DEAD)
                        {
                            cTarget = null;
                            return;
                        }

                        switch (ability)
                        {
                        case csClassTower.SpecialAbility.Normal:
                            FireProcessing("Normal");
                            break;

                        case csClassTower.SpecialAbility.SlowSpeed:
                            FireProcessing("SlowSpeed");
                            break;

                        case csClassTower.SpecialAbility.Splash:
                            FireProcessing("Splash");
                            break;
                        }

                        ftime = 0.0f;
                    }

                    if (cTarget == null)
                    {
                        tState = TSTATE.SEARCH;
                        break;
                    }

                    a = Mathf.Sqrt(Mathf.Pow((this.gameObject.transform.position.x - cTarget.gameObject.transform.position.x), 2)
                                   + Mathf.Pow((this.gameObject.transform.position.y - cTarget.gameObject.transform.position.y), 2));

                    if (cTarget != null && a > attackRange)
                    {
                        tState = TSTATE.SEARCH;
                    }
                }

                break;

            case TSTATE.DEAD:
                SoundManager.Effect_TowerDestroy_ON();
                PlayScene.CurrentTowerCount--;
                Destroy(this.gameObject);
                break;
            }
        }
    }