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; }
public Disaster(GameModel model, Tile center, int intensity) { Model = model; Center = center; Intensity = intensity; Id = DisasterId++; State = DisasterState.Planned; }
private void setIdle() { hexStatusState = HexState.Dead; hexProgressState = HexProgress.Nothing; waterBalance = 0; temperatureBalance = 0; disasterProgress = 0; disasterState = DisasterState.None; }
private void setIdle(HexState newHexState) { this.hexStatusState = newHexState; hexProgressState = HexProgress.Birth; waterBalance = 0; temperatureBalance = 0; disasterProgress = 0; disasterState = DisasterState.None; }
public void mNextSet(DisasterType type, float animateTime) { if (!m_isEnd) { return; } m_type = type; m_state = DisasterState.eInit; m_animTime = animateTime; m_isEnd = false; }
public void mNextStart() { m_state = DisasterState.ePlay; }
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; }
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; } }
public void setDisaster(DisasterState disaster) { this.disasterState = disaster; }