/// <summary> /// 受击 /// </summary> /// <param name="soldier"></param> /// <returns>是否死亡</returns> public bool hit(GeneralSoldier soldier) { GeneralSoldier attackTarget = (GeneralSoldier)soldier._data.AttackTarget; if (attackTarget == null) { return(true); } bool isDead = attackTarget.hurt(soldier._data.PhysicalStrength); if (isDead) { removeSoldier(attackTarget); if (_selfSoldiers.Count == 0) { //发战斗失败消息 XLMessageManager.getInstance().sendNotification(BattleController.BATTLESTATE_FAILED); } if (_enemySoldiers.Count == 0) { //发战斗胜利消息 XLMessageManager.getInstance().sendNotification(BattleController.BATTLESTATE_VICTORY); } } return(isDead); }
/// <summary> /// 战斗胜利 /// </summary> private void battlestateVictory() { //己方全员播放胜利动作 GeneralSoldier soldier; for (int i = 0; i < SpriteMgr.getInstance().SelfSoldiers.Count; i++) { soldier = SpriteMgr.getInstance().SelfSoldiers[i] as GeneralSoldier; soldier.setState(soldier.WinState); } //战役是否结束 if (num == 0) { //弹胜利窗口 UIManager.getInstance().openPanel(PanelConfig.VICTORYPANEL); Debug.Log("弹胜利窗口"); } else { //下一波战斗 XLMessageManager.getInstance().sendNotification(BATTLESTATE_START); camplayerMove(); } }
/// <summary> /// 时间到的回调 /// </summary> /// <param name="deltaTime"></param> public void timerHandler(float deltaTime) { //Debug.Log(timerListener.number); //3,2,1 if (timerListener.number > 2) { if (timeText != null) { timeText.text = (timerListener.number - 2).ToString(); } } else if (timerListener.number == 2) { //GO if (timeText != null) { timeText.text = "GO!"; } } else { //隐藏倒计时文本 if (timeText != null) { timeText.gameObject.SetActive(false); } //开始战斗 XLMessageManager.getInstance().sendNotification(BATTLESTATE_FIGHT); } }
public void Start() { //UI面板初始化 UIManager.getInstance().closePanel(PanelConfig.WORLDMAPPANEL); UIManager.getInstance().closePanel(PanelConfig.HOMECITYPANEL); //注册计时器,3,2,1,go,隐藏一共5次 timerListener = new TimerListener(this, 1, 5, false); //注册 XLMessageManager.getInstance().register(this); //进入战斗 XLMessageManager.getInstance().sendNotification(BATTLESTATE_START); //取得倒计时文本 GamePanel gamePanel = UIManager.getInstance().getPanel(PanelConfig.GAMEPANEL) as GamePanel; if (gamePanel != null) { timeText = gamePanel.timeText; } GameObject mainCamera = Game.GameEntry.Instance.Cameras.mainCamera.gameObject; iTween.MoveTo(mainCamera, new Vector3(mainCamera.transform.position.x, mainCamera.transform.position.y, mainCamera.transform.position.z + 44), 5f); // 这样调节场景坐标,不管用 // GameObject sceneObject = GameObject.Find("GameObject"); // sceneObject.transform.position = new Vector3(sceneObject.transform.position.x, sceneObject.transform.position.y + 10f, sceneObject.transform.position.z); }
/// <summary> /// 接收关心的消息的方法 /// </summary> /// <param name="notification"></param> public void handleNotification(XLNotification notification) { //根据消息名对应处理 switch (notification.Name) { case BATTLESTATE_START: //战斗开始 //显示战斗界面 UIManager.getInstance().openPanel(PanelConfig.GAMEPANEL); //战役进度 num--; //战役初始化 BattleInit(); //开始倒计时 XLMessageManager.getInstance().sendNotification(BATTLESTATE_COUNTDOWN); break; case BATTLESTATE_COUNTDOWN: //倒计时 if (timeText != null) { timeText.text = ""; timeText.gameObject.SetActive(true); } timerListener.number = 5; TimerManager.getInstance().addListener(timerListener); timerListener.isRunning = true; break; case BATTLESTATE_FIGHT: //战斗 fighting(); break; case BATTLESTATE_FAILED: //战斗失败 battlestateFailed(); break; case BATTLESTATE_VICTORY: //战斗胜利 battlestateVictory(); break; } }