Exemple #1
0
    /// <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);
    }
Exemple #2
0
    /// <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();
        }
    }
Exemple #3
0
 /// <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);
     }
 }
Exemple #4
0
    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);
    }
Exemple #5
0
    /// <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;
        }
    }