private void DisasterTurn() { if (!bDisasterExist) { disasterObject = disasterMgr.TurnUpdate(); if (disasterObject != null) { bDisasterExist = true; } else { _currGameState = GameState.TURN_END; } } else { if (disasterObject.IsActive) { Destroy(disasterObject.gameObject); disasterObject = null; StartCoroutine(disasterMgr.UpdateWillActiveDisasterArea()); // 다음 턴 재난 지역 타일맵에 동기화 bDisasterExist = false; _currGameState = GameState.TURN_END; } } }
public DisasterObject TurnUpdate() { DisasterObject disasterObject = null; for (int i = 0; i < disasters.Count;) { disasters[i].Update(); if (disasters[i].IsSatisfied) { disasterObject = CreateDisasterObject(disasters[i]); disasters.RemoveAt(i); } else { i++; } } return(disasterObject); }
private DisasterObject CreateDisasterObject(Disaster disaster) { Object obj = null; Vector3 pos = TileMgr.Instance.CellToWorld(disaster.position, disaster.floor); switch (disaster.type) { case Disaster.DisasterType.FALLING_ROCK: obj = FallingRock; break; case Disaster.DisasterType.SHORT_CIRCUIT: obj = ShortCircuit; break; case Disaster.DisasterType.FLASHOVER: obj = Flashover; break; case Disaster.DisasterType.SMOKE: obj = Smoke; break; } GameObject gameObj = (GameObject)Object.Instantiate(obj, pos, Quaternion.identity, GameMgr.Instance.transform); DisasterObject disasterObject = gameObj.GetComponent <DisasterObject>(); disasterObject.Pos = disaster.position; return(disasterObject); }