void StartWave() { m_hazardSpawned = 1; m_spawnTime = spawnWait; m_playState = ePlayState.PLAY_STATE_WAVE; SpawnHazard(); }
void LoseUserMode() { // 클리어 실패. FailedStage(); eventer.onComplete = () => { // 좋아요, 리스타트, 스테이지. btnLike.gameObject.SetActive(true); btnRestart.gameObject.SetActive(true); btnBackStage.gameObject.SetActive(true); }; // 엔드 오브젝트 goEnd.SetActive(true); animEnd.Play("UIstageEndPopupLose"); if (YellowBean.SoundManager.Instance != null) { YellowBean.SoundManager.Instance.bgm.enabled = false; YellowBean.SoundManager.Instance.PlaySFX("defeat"); } playState = ePlayState.End; }
void StartRound() { enemiesKilledText.gameObject.SetActive(false); asteroidsDestroyedText.gameObject.SetActive(false); shotsFiredText.gameObject.SetActive(false); accuracyText.gameObject.SetActive(false); gamesPlayedText.gameObject.SetActive(false); clickToStartText.gameObject.SetActive(false); brainCloudStatusText.gameObject.SetActive(false); scoreText.gameObject.SetActive(true); m_enemiesKilledThisRound = 0; m_asteroidsDestroyedThisRound = 0; m_shotsFiredThisRound = 0; // don't reset this every round... m_totalGamesPlayed = 0; m_accuracy = 0; m_score = 0; UpdateScoreText(); m_state = eGameState.GAME_STATE_PLAYING; m_playState = ePlayState.PLAY_STATE_STARTUP; m_startupTime = startWait; SpawnPlayer(); }
/// <summary> /// Starts the game playing... /// </summary> public void StartGame() { playState = ePlayState.Playing; //Reset scores... m_redScore = 0; m_blueScore = 0; //Send out a warning to players to equip and get ready for the battle! foreach (GamePlayer pl in m_playingPlayers) { if (pl == null || pl.ObjectState != GameObject.eObjectState.Active) //incase of linkdead players { continue; } pl.Out.SendMessage("The game has now begun! Equip the hockey sticks in your inventory and swing at the puck to move it to your opponents goal. First to the score limit wins!", DOL.GS.PacketHandler.eChatType.CT_Broadcast, DOL.GS.PacketHandler.eChatLoc.CL_ChatWindow); pl.Out.SendMessage("The game has begun! Adorn your hockey stick!", DOL.GS.PacketHandler.eChatType.CT_ScreenCenterSmaller, DOL.GS.PacketHandler.eChatLoc.CL_SystemWindow); pl.Out.SendMessage("The game has begun! Adorn your hockey stick!", DOL.GS.PacketHandler.eChatType.CT_SpellResisted, DOL.GS.PacketHandler.eChatLoc.CL_SystemWindow); } //Create the puck... TomteHockeyPuck puck = new TomteHockeyPuck(this); puck.CurrentRegionID = Region; puck.X = X; puck.Y = Y; puck.Z = Z; puck.AddToWorld(); //Assign the puck to this game. Puck = puck; }
void Start() { // 플레이 데이터가 있으면 초기화 한다. Initialize(); // UI 관련 부분을 초기화한다. InitUI(); // 튜토리얼 초기화. goTutorial.GetComponent <UITutorial>().onComplete = () => { goTutorial.SetActive(false); playState = ePlayState.CameraZoom; }; }
/// <summary> /// Clears up the match - removes goalposts and puck, ad decides the winning team. /// </summary> public void EndGame() { bool redWon = false; if (m_redScore >= 3) { redWon = true; } //By default, blue has won, unless red has. string winner = (redWon) ? "Reds" : "Blues"; foreach (GamePlayer pl in PlayingPlayers) { if (pl == null) { continue; } if (pl.ObjectState != GameObject.eObjectState.Active) { continue; } //Inform the players of the winner! pl.Out.SendMessage("The game is over! Congratulations to the winning team, the " + winner + "!", DOL.GS.PacketHandler.eChatType.CT_Broadcast, DOL.GS.PacketHandler.eChatLoc.CL_ChatWindow); //Remove the stick from the player. RemoveStick(pl); } if (Puck != null) { Puck.RemoveFromWorld(); Puck.Delete(); } playState = ePlayState.Waiting; //Flush player lists... m_redTeam = new List <GamePlayer>(); m_blueTeam = new List <GamePlayer>(); m_playingPlayers = new List <GamePlayer>(); }
void WinUserMode() { // 클리어 스테이지. ClearStage(); // 좋아요, 리스타트, 스테이지. btnLike.gameObject.SetActive(true); btnRestart.gameObject.SetActive(true); btnBackStage.gameObject.SetActive(true); // 엔드 오브젝트 goEnd.SetActive(true); animEnd.Play("UIstageEndPopupTrophy"); if (YellowBean.SoundManager.Instance != null) { YellowBean.SoundManager.Instance.bgm.enabled = false; YellowBean.SoundManager.Instance.PlaySFX("victory"); } playState = ePlayState.End; }
InitUI() { if (btnUndo != null) { btnUndo.onClick.AddListener(() => { int cnt = listUnit.Count; if (cnt > 0) { var unit = listUnit[cnt - 1]; maxCost += DataManager.GetInstance().GetUnitData(unit.status.name).cost; txtCost.text = maxCost.ToString(); listUnit.Remove(unit); Destroy(unit.gameObject); } }); } if (btnReset != null) { btnReset.onClick.AddListener(() => { foreach (var unit in listUnit) { Destroy(unit.gameObject); } listUnit.Clear(); maxCost = PlayData.cost; txtCost.text = maxCost.ToString(); }); } if (btnPause != null) { btnPause.onClick.AddListener(() => { goPause.SetActive(true); }); } if (btnPlay != null) { btnPlay.onClick.AddListener(() => { YellowBean.SoundManager.Instance.bgm.enabled = true; YellowBean.SoundManager.Instance.PlayBgm("Castle in the sky"); // 현재 유닛 이름을 저장한다. for (int i = 0; i < listUnit.Count; i++) { string unitName = listUnit[i].status.name; UnityAnalyticsManager.GetInstance().UseUnit(unitName); } var arrSR = goBase.GetComponentsInChildren <SpriteRenderer>(); for (int i = 0; i < arrSR.Length; i++) { arrSR[i].DOColor(new Color(0, 0, 0, 0), 1f); } animBottom.Play("move", () => { animTop.Play("move", () => { foreach (var unit in listUnit) { yMaxCost += unit.status.cost; StartCoroutine(StartAI(unit)); } foreach (var enemy in listEnemies) { gMaxCost += enemy.status.cost; StartCoroutine(StartAI(enemy)); } yOldCost = yMaxCost; gOldCost = gMaxCost; playState = ePlayState.Play; startTime = Time.time; }); }); }); } for (int i = 0; i < arrUnitToggle.LongLength; i++) { // 토글을 가져온다. var toggleUnit = arrUnitToggle[i]; // 토글에 맞는 유닛의 데이터를 가져온다. var data = DataManager.GetInstance().GetUnitData(toggleUnit.name); var txtCost = toggleUnit.GetComponentInChildren <Text>(); txtCost.text = data.cost.ToString(); // 토글에 이벤트를 추가한다. toggleUnit.onValueChanged.AddListener((on) => { if (on) { selectedUnitName = toggleUnit.name; } }); } btnLike.onClick.AddListener(() => { DoFavoriteStage(); }); btnRestart.onClick.AddListener(() => { if (App.Instance != null) { btnRestart.enabled = false; App.Instance.LoadScene(playSceneName); } }); btnBackStage.onClick.AddListener(() => { if (App.Instance != null) { btnBackStage.enabled = false; App.Instance.LoadScene(modeSelectSceneName); } }); btnNextStage.onClick.AddListener(() => { int stageID = PlayData.id; Debug.Log(stageID); if (DataManager.GetInstance().dicStoryStageData.ContainsKey(stageID++)) { var stageData = DataManager.GetInstance().dicStoryStageData[stageID]; PlayData.id = stageData.id; PlayData.map_id = stageData.map_id; PlayData.cost = stageData.cost; PlayData.Mode = PlayData.ePlayMode.Story; PlayData.listUnitInfos = stageData.listUnitInfos; if (App.Instance != null) { App.Instance.LoadScene(playSceneName); } } }); btnSave.onClick.AddListener(() => { if (PlayData.cost - GetCurrentCost(listUnit) > 40f) { animBall.Rewind(); var animClip = animBall.clip; goBalloon.SetActive(true); if (animBallRoutine != null) { StopCoroutine(animBallRoutine); animBallRoutine = null; } animBallRoutine = StartCoroutine(this.WaitForTime(animClip.length, () => { goBalloon.SetActive(false); })); return; } ifTitle.text = DataManager.GetInstance().dicMapData[PlayData.map_id].map_name; goSave.SetActive(true); }); btnSaveOK.onClick.AddListener(() => { DoSave(); }); // 콘텐츠 맨 앞. rtContent.anchoredPosition3D = Vector3.zero; // 애니메이션 animBottom.Play("start", null); }
void WinStoryMode() { // 승리 조건을 계산한다. int starCnt = 0; // 승리 했다면. { starCnt += 1; } // 1분 안으로 끝냈다면. { float t = Time.time - startTime; starCnt = (t < limitTime) ? starCnt += 1 : starCnt; } // 체력이 10프로 이상이라면. { float currentYellowHp = 0f; foreach (var unit in listUnit) { if (unit.alive) { currentYellowHp += unit.status.cost; } } starCnt = (currentYellowHp / yMaxCost > 0.1f) ? starCnt += 1 : starCnt; } // 이겼을 때. // 유저 정보를 갱신한다. var arr = DataManager.GetInstance().userInfo.arrStageInfo; // 별 개수가 현재 클리어한 별 개수보다 작다면. // 갱신한다. if (arr[PlayData.id - 1].starCnt < starCnt) { arr[PlayData.id - 1].starCnt = starCnt; } // 다음 스테이지를 오픈한다. if (PlayData.id < arr.Length) { if (!arr[PlayData.id].opened) { arr[PlayData.id].opened = true; arr[PlayData.id].starCnt = 0; } } // 리스타트, 스테이지. btnNextStage.gameObject.SetActive(true); btnRestart.gameObject.SetActive(true); btnBackStage.gameObject.SetActive(true); // 엔드 오브젝트 goEnd.SetActive(true); animEnd.Play(string.Format("UIstageEndPopupStar{0}", starCnt)); if (YellowBean.SoundManager.Instance != null) { YellowBean.SoundManager.Instance.bgm.enabled = false; YellowBean.SoundManager.Instance.PlaySFX("victory"); } // 저장한다. DataManager.GetInstance().SaveUserInfo(); playState = ePlayState.End; }
void Play() { // 시간을 센다. { float t = Time.time - startTime; if (!overTime) { if (t > limitTime) { overTime = true; //// 타이머 //txtTime.rectTransform.DOScale(new Vector3(1.5f,2,1), 1).onComplete = () => { // txtTime.rectTransform.DOScale(new Vector3(1, 1, 1), 1f); //}; txtTime.DOColor(new Color(1, 0, 0, 1), 30); } } string sec = t.ToString("f2"); txtTime.text = string.Format("{0}", sec); } // 코스트를 계산한다. { float yNewCost = GetCurrentCost(listUnit); float gNewCost = GetCurrentCost(listEnemies); // 만약 코스트가 바꼈다면. if (yNewCost != yOldCost) { if (ySliderTweener != null) { ySliderTweener.Kill(); ySliderTweener = null; } ySliderTweener = imgSliderY.rectTransform.DOShakeScale(.25f, .14f); ySliderTweener.onComplete = () => { ySliderTweener = imgSliderY.rectTransform.DOScale(Vector3.one, .1f); }; // 코스트를 줄인다. if (yellowSlideCoroutine != null) { StopCoroutine(yellowSlideCoroutine); yellowSlideCoroutine = null; } yellowSlideCoroutine = StartCoroutine(FadeSlider(sliderY, yNewCost / yMaxCost)); // 올드 코스트를 갱신한다. yOldCost = yNewCost; } // 만약 코스트가 바꼈다면. if (gNewCost != gOldCost) { if (gSliderTweener != null) { gSliderTweener.Kill(); gSliderTweener = null; } gSliderTweener = imgSliderG.rectTransform.DOShakeScale(.25f, .14f); gSliderTweener.onComplete = () => { gSliderTweener = imgSliderG.rectTransform.DOScale(Vector3.one, .1f); }; // 코스트를 줄인다. if (greeenSlideCoroutine != null) { StopCoroutine(greeenSlideCoroutine); greeenSlideCoroutine = null; } greeenSlideCoroutine = StartCoroutine(FadeSlider(sliderG, gNewCost / gMaxCost)); // 올드 코스트를 갱신한다. gOldCost = gNewCost; } if (gNewCost <= 0) { playState = ePlayState.Win; return; } if (yNewCost <= 0) { playState = ePlayState.Lose; return; } } }
void Update() { switch (playState) { case ePlayState.Tutorial: { if (PlayData.Mode != PlayData.ePlayMode.Story || PlayData.id != 1) { playState = ePlayState.CameraZoom; return; } goTutorial.SetActive(true); } break; case ePlayState.CameraZoom: { if (!cameraMode) { cameraMode = true; mainCamera.DOOrthoSize(11f, 0.8f).onComplete = () => { mainCamera.DOOrthoSize(7f, 0.8f).onComplete = () => { playState = ePlayState.Ready; touchCamera.enabled = true; }; }; } } break; case ePlayState.Ready: { if (Input.touchCount == 2) { twoTouch = true; } if (twoTouch) { if (Input.touchCount == 0) { twoTouch = false; } } touchTime += Time.deltaTime; // 터치 if (Input.touchCount == 1 && touchTime >= touchTimeLimit && !IsPointerOverUIObject() && !twoTouch) { touchTime = 0f; StartCoroutine(this.Touch()); } else { //if (Input.GetMouseButtonDown(0)) //{ // StartCoroutine(this.Touch()); //} } } break; case ePlayState.Play: { Play(); } break; case ePlayState.Win: { if (!imgEndDim.gameObject.activeSelf) { imgEndDim.gameObject.SetActive(true); imgEndDim.color = new Color(0.11f, 0.025f, 0.025f, 0); DOTween.ToAlpha(() => imgEndDim.color, x => imgEndDim.color = x, 0.89f, 0.8f).onComplete = () => { imgEndDim.enabled = false; if (PlayData.Mode == PlayData.ePlayMode.Story) { WinStoryMode(); } else { WinUserMode(); } }; } } break; case ePlayState.Lose: { if (!imgEndDim.gameObject.activeSelf) { imgEndDim.gameObject.SetActive(true); imgEndDim.color = new Color(0.11f, 0.025f, 0.025f, 0); DOTween.ToAlpha(() => imgEndDim.color, x => imgEndDim.color = x, 0.89f, 0.8f).onComplete = () => { imgEndDim.enabled = false; if (PlayData.Mode == PlayData.ePlayMode.Story) { LoseStoryMode(); } else { LoseUserMode(); } }; } } break; case ePlayState.End: { } break; } }
void Update() { switch (m_state) { case eGameState.GAME_STATE_START_SCREEN: if (Input.GetMouseButtonDown(0)) { StartRound(); } break; case eGameState.GAME_STATE_PLAYING: switch (m_playState) { case ePlayState.PLAY_STATE_STARTUP: case ePlayState.PLAY_STATE_IN_BETWEEN_WAVES: m_startupTime -= Time.deltaTime; if (m_startupTime <= 0) { StartWave(); } break; case ePlayState.PLAY_STATE_WAVE: m_spawnTime -= Time.deltaTime; if (m_spawnTime <= 0) { if (m_hazardSpawned >= hazardCount) { // We have done the wave. m_playState = ePlayState.PLAY_STATE_IN_BETWEEN_WAVES; m_startupTime = waveWait; } else { m_hazardSpawned++; m_spawnTime = spawnWait; SpawnHazard(); } } break; } break; case eGameState.GAME_STATE_GAME_OVER: m_gameOverTime -= Time.deltaTime; if (m_gameOverTime <= 0) { m_state = eGameState.GAME_STATE_SCORE_SCREEN; scoreText.gameObject.SetActive(false); gameOverText.gameObject.SetActive(false); clickToStartText.text = "Click to Restart"; clickToStartText.gameObject.SetActive(true); SaveStatisticsLocally(); } break; case eGameState.GAME_STATE_SCORE_SCREEN: if (Input.GetMouseButtonDown(0)) { StartRound(); } break; } }
void StartRound() { enemiesKilledText.gameObject.SetActive(false); asteroidsDestroyedText.gameObject.SetActive(false); shotsFiredText.gameObject.SetActive(false); accuracyText.gameObject.SetActive(false); gamesPlayedText.gameObject.SetActive(false); clickToStartText.gameObject.SetActive(false); // brainCloudStatusText.gameObject.SetActive(false); scoreText.gameObject.SetActive(true); m_enemiesKilledThisRound = 0; m_asteroidsDestroyedThisRound = 0; m_shotsFiredThisRound = 0; // don't reset this every round... m_totalGamesPlayed = 0; m_accuracy = 0; m_score = 0; UpdateScoreText (); m_state = eGameState.GAME_STATE_PLAYING; m_playState = ePlayState.PLAY_STATE_STARTUP; m_startupTime = startWait; // Debug.Log ("here in start round"); SpawnPlayer(); }
void Update() { switch (m_state) { case eGameState.GAME_STATE_START_SCREEN: if (Input.GetMouseButtonDown(0)) { StartRound(); } break; case eGameState.GAME_STATE_PLAYING: switch (m_playState) { case ePlayState.PLAY_STATE_STARTUP: case ePlayState.PLAY_STATE_IN_BETWEEN_WAVES: m_startupTime -= Time.deltaTime; if (m_startupTime <= 0) { StartWave(); } break; case ePlayState.PLAY_STATE_WAVE: m_spawnTime -= Time.deltaTime; if (m_spawnTime <= 0) { if (m_hazardSpawned >= hazardCount) { // We have done the wave. m_playState = ePlayState.PLAY_STATE_IN_BETWEEN_WAVES; m_startupTime = waveWait; } else { m_hazardSpawned++; m_spawnTime = spawnWait; SpawnHazard(); } } break; } break; case eGameState.GAME_STATE_GAME_OVER: m_gameOverTime -= Time.deltaTime; if (m_gameOverTime <= 0) { m_state = eGameState.GAME_STATE_SCORE_SCREEN; scoreText.gameObject.SetActive(false); gameOverText.gameObject.SetActive(false); clickToStartText.text = "Click to Restart"; clickToStartText.gameObject.SetActive(true); SaveStatisticsToBrainCloud(); } break; case eGameState.GAME_STATE_SCORE_SCREEN: if (Input.GetMouseButtonDown(0)) { StartRound(); } break; } }
public FileEventArg(ePlayState state) { this.State = state; }