示例#1
0
    void mStateInit()
    {
        switch (m_type)
        {
        case DisasterType.eThunder:
            break;

        case DisasterType.eFlood:
            m_stageOrigin = m_fxLayer.transform.FindChild("Flood").FindChild("Water").transform.position;
            break;

        case DisasterType.eEarthquake:
            m_stageOrigin = m_field.transform.position;
            break;

        case DisasterType.eEruption:
            break;

        case DisasterType.eTyphoon:
            m_stageOrigin = m_fxLayer.transform.FindChild("Typhoon").FindChild("tornado").transform.position;
            break;

        case DisasterType.eNull:
            break;

        default:
            break;
        }
        m_state = DisasterState.ePrePlay;
    }
示例#2
0
 public Disaster(GameModel model, Tile center, int intensity)
 {
     Model     = model;
     Center    = center;
     Intensity = intensity;
     Id        = DisasterId++;
     State     = DisasterState.Planned;
 }
示例#3
0
 private void setIdle()
 {
     hexStatusState     = HexState.Dead;
     hexProgressState   = HexProgress.Nothing;
     waterBalance       = 0;
     temperatureBalance = 0;
     disasterProgress   = 0;
     disasterState      = DisasterState.None;
 }
示例#4
0
 private void setIdle(HexState newHexState)
 {
     this.hexStatusState = newHexState;
     hexProgressState    = HexProgress.Birth;
     waterBalance        = 0;
     temperatureBalance  = 0;
     disasterProgress    = 0;
     disasterState       = DisasterState.None;
 }
示例#5
0
 public void mNextSet(DisasterType type, float animateTime)
 {
     if (!m_isEnd)
     {
         return;
     }
     m_type     = type;
     m_state    = DisasterState.eInit;
     m_animTime = animateTime;
     m_isEnd    = false;
 }
示例#6
0
 public void mNextStart()
 {
     m_state = DisasterState.ePlay;
 }
示例#7
0
    void mStateFinalize()
    {
        switch (m_type)
        {
        case DisasterType.eThunder:
        {
            audioSource.Stop();
            var obj = m_fxLayer.transform.FindChild("Thunder").FindChild("onScreen");
            obj.transform.gameObject.SetActive(false);
            m_fxLayer.transform.FindChild("Thunder").FindChild("thunder").transform.gameObject.SetActive(false);
            fade    = 0;
            m_type  = DisasterType.eNull;
            m_state = DisasterState.eFin;
            m_isEnd = true;
        }
        break;

        case DisasterType.eFlood:
        {
            audioSource.Stop();

            var obj = m_fxLayer.transform.FindChild("Flood");
            obj.FindChild("flood").gameObject.SetActive(false);
            obj.FindChild("Water").gameObject.SetActive(false);

            m_type  = DisasterType.eNull;
            m_state = DisasterState.eFin;
            m_isEnd = true;
        }
        break;

        case DisasterType.eEarthquake:
            audioSource.Stop();
            m_field.transform.position = m_stageOrigin;
            m_type  = DisasterType.eNull;
            m_state = DisasterState.eFin;
            m_isEnd = true;
            break;

        case DisasterType.eEruption:
        {
            var obj = m_fxLayer.transform.FindChild("Eruption").FindChild("onScreen");
            obj.transform.gameObject.SetActive(false);
            m_fxLayer.transform.FindChild("Thunder").FindChild("volcano").transform.gameObject.SetActive(false);
            fade    = 0;
            m_type  = DisasterType.eNull;
            m_state = DisasterState.eFin;
            audioSource.Stop();
            m_isEnd = true;
        }
        break;

        case DisasterType.eTyphoon:
        {
            audioSource.Stop();
            var obj = m_fxLayer.transform.FindChild("Typhoon");
            obj.FindChild("rain").gameObject.SetActive(false);
            obj.FindChild("tornado").gameObject.SetActive(false);
            obj.FindChild("tornado").transform.position = m_stageOrigin;
            var color = obj.FindChild("onScreen").GetComponent <SpriteRenderer>().color;
            obj.FindChild("onScreen").GetComponent <SpriteRenderer>().color = new Color(color.r, color.g, color.b, fade);
            if (fade <= 0)
            {
                fade = 0.0f;
                obj.FindChild("onScreen").gameObject.SetActive(false);
                m_type  = DisasterType.eNull;
                m_state = DisasterState.eFin;
                m_isEnd = true;
            }
            else
            {
                fade -= Time.deltaTime * Time.timeScale;
            }
        }
        break;

        case DisasterType.eNull:
            break;

        default:
            break;
        }
        m_isPlayed = false;
    }
示例#8
0
    void mStatePlay()
    {
        m_isPlayed = true;
        switch (m_type)
        {
        case DisasterType.eThunder:
        {
            var obj = m_fxLayer.transform.FindChild("Thunder").FindChild("thunder");
            obj.gameObject.SetActive(true);

            obj.position = m_player.transform.position;
            obj.Translate(new Vector3(0, 30, 0));
        }
        break;

        case DisasterType.eFlood:
        {
            var obj = m_fxLayer.transform.FindChild("Flood").FindChild("Water");
            obj.transform.gameObject.SetActive(true);

            float faze = -1;
            if (obj.transform.position.x < 5 && !m_animFlg)
            {
                m_animFlg = true;
            }
            if (m_animFlg)
            {
                faze = 1;
            }
            obj.transform.Translate(new Vector3(4 * Time.deltaTime * faze, 0, 0));
            Debug.Log(obj.transform.position.x + "    " + (-m_stageOrigin.x));
            if (obj.transform.position.x > m_stageOrigin.x)
            {
                m_animTime = -1;
            }
        }
        break;

        case DisasterType.eEarthquake:
            float rad   = Random.Range(0, 360);
            float power = m_animTime / 2 < 1.0f ? m_animTime / 10: 1;
            m_field.transform.position = new Vector3(Mathf.Sin(rad * 180 / Mathf.PI) * 0.2f * power, Mathf.Cos(rad * 180 / Mathf.PI) * 0.2f * power, 0)
                                         + m_stageOrigin;

            break;

        case DisasterType.eEruption:
        {
            var obj = m_fxLayer.transform.FindChild("Eruption").FindChild("volcano");
            obj.transform.gameObject.SetActive(true);
            var particleSystem = obj.GetComponent <ParticleSystem>();
            if (!particleSystem.isStopped && !particleSystem.isPlaying)
            {
                obj.GetComponent <ParticleSystem>().Play();
            }
            else if (particleSystem.isStopped)
            {
                m_animTime = -1;
            }
        }
        break;

        case DisasterType.eTyphoon:
        {
            var obj = m_fxLayer.transform.FindChild("Typhoon").FindChild("tornado");
            obj.transform.gameObject.SetActive(true);
            obj.GetComponent <ParticleSystem>().Play();
            obj.transform.Translate(new Vector3(-4 * Time.deltaTime, 0, 0));
            Debug.Log(obj.transform.position.x + "    " + (-m_stageOrigin.x));
            if (obj.transform.position.x < -m_stageOrigin.x)
            {
                m_animTime = -1;
            }
        }
        break;

        case DisasterType.eNull:
            break;

        default:
            break;
        }
        if (m_animTime < 0)
        {
            m_state = DisasterState.eFin;
        }
        else
        {
            m_animTime -= Time.deltaTime * Time.timeScale;
        }
    }
示例#9
0
 public void setDisaster(DisasterState disaster)
 {
     this.disasterState = disaster;
 }