public override void UpdateView()
        {
            base.UpdateView();

            if (focusGridUnit != null)
            {
                tmpGridUnitInfo.text = string.Format("GridUnit:\n{0}", focusGridUnit.ToString());
            }

            if (focusBattleUnit != null)
            {
                tmpBattleUnitInfo.text = string.Format("BattleUnit:\n{0}\nHp:{1}/{2}\nAtk:{3}{4}\nDef:{5}{6}\nMobility:{7}{8}",
                                                       focusBattleUnit.ToString(),
                                                       focusBattleUnit.battleUnitAttribute.hp, focusBattleUnit.battleUnitAttribute.maxHp,
                                                       focusBattleUnit.battleUnitAttribute.Atk, GetGridUnitBuffStr(focusBattleUnit.mapGrid.gridUnitBuff, GridUnitBuffType.Atk),
                                                       focusBattleUnit.battleUnitAttribute.Def, GetGridUnitBuffStr(focusBattleUnit.mapGrid.gridUnitBuff, GridUnitBuffType.Def),
                                                       focusBattleUnit.battleUnitAttribute.mobility, GetGridUnitBuffStr(focusBattleUnit.mapGrid.gridUnitBuff, GridUnitBuffType.Range)
                                                       );
            }

            //设置显示
            separateLine.SetActive(focusGridUnit != null && focusBattleUnit != null);
            tmpGridUnitInfo.gameObject.SetActive(focusGridUnit != null);
            tmpBattleUnitInfo.gameObject.SetActive(focusBattleUnit != null);

            UpdateBattleUnitPackage();
        }
Exemple #2
0
        public override void UpdateView()
        {
            base.UpdateView();

            if (focusGridUnit != null)
            {
                tmpGridUnitInfo.text = string.Format("GridUnit:\n{0}", focusGridUnit.ToString());
            }

            if (focusBattleUnit != null)
            {
                tmpBattleUnitInfo.text = string.Format("BattleUnit:\n{0}\nHp:{1}/{2}\nAtk:{3}\nDef:{4}\nMobility:{5}",
                                                       focusBattleUnit.ToString(),
                                                       focusBattleUnit.battleUnitAttribute.hp, focusBattleUnit.battleUnitAttribute.maxHp,
                                                       focusBattleUnit.battleUnitAttribute.atk,
                                                       focusBattleUnit.battleUnitAttribute.def,
                                                       focusBattleUnit.battleUnitAttribute.mobility
                                                       );
            }

            //设置显示
            separateLine.SetActive(focusGridUnit != null && focusBattleUnit != null);
            tmpGridUnitInfo.gameObject.SetActive(focusGridUnit != null);
            tmpBattleUnitInfo.gameObject.SetActive(focusBattleUnit != null);
        }
Exemple #3
0
 public override string ToString()
 {
     return(string.Format("{0} enter battle field -> {1}", actionUnit, gridUnit == null ? "None" : gridUnit.ToString()));
 }
Exemple #4
0
        private void OnBattleUnitAndGridTouched(GridUnit gridTouched, BattleUnit battleUnitTouched)
        {
            //没有激活操作状态
            if (manualOperationState == ManualOperationState.None)
            {
                //点中了战斗单位
                if (battleUnitTouched != null)
                {
                    //点中了等待手动操作的战斗单位
                    if (battleUnitTouched.battleUnitRenderer.Equals(manualBattleUnitRenderer))
                    {
                        ShowManualActionList();
                    }
                    else
                    {
                        UIViewManager.Instance.ShowView(UIViewName.BattleFieldUnitInfo, gridTouched, battleUnitTouched);
                    }
                }
                //点中了地图
                else
                {
                    UIViewManager.Instance.ShowView(UIViewName.BattleFieldUnitInfo, gridTouched, battleUnitTouched);
                }
            }
            //选择移动状态
            else if (manualOperationState == ManualOperationState.Move)
            {
                //点中了战斗单位
                if (battleUnitTouched != null)
                {
                    //点中了等待手动操作的战斗单位
                    if (battleUnitTouched.battleUnitRenderer.Equals(manualBattleUnitRenderer))
                    {
                        //取消操作
                        manualOperationState = ManualOperationState.None;
                        SetRangeHighlightActive(false, 0, 0, 0);
                    }
                    else
                    {
                        UIViewManager.Instance.ShowView(UIViewName.BattleFieldUnitInfo, gridTouched, battleUnitTouched);
                    }
                }
                //点中了地图
                else
                {
                    if (gridTouched.GridType == GridType.Obstacle)
                    {
                        UIViewManager.Instance.ShowView(UIViewName.BattleFieldUnitInfo, gridTouched, battleUnitTouched);
                    }
                    else
                    {
                        //点击是否超出了范围
                        GridUnit fromGrid = manualBattleUnitRenderer.battleUnit.mapGrid;
                        if (fromGrid.Distance(gridTouched) > manualBattleUnitRenderer.battleUnit.mobility)
                        {
                            Debug.Log("超出了移动半径!");
                        }
                        else
                        {
                            bool result = MapNavigator.Instance.Navigate(
                                battleField.battleMap,
                                fromGrid,
                                gridTouched,
                                UtilityObjs.gridUnits,
                                null,
                                manualBattleUnitRenderer.battleUnit.mobility
                                );

                            //判断是否可以到达(导航成功且可以可以到达)
                            if (result && UtilityObjs.gridUnits[UtilityObjs.gridUnits.Count - 1].Equals(gridTouched))
                            {
                                //可以到达
                                ManualMoveTo(gridTouched, UtilityObjs.gridUnits.ToArray());
                                UtilityObjs.gridUnits.Clear();
                            }
                            else
                            {
                                //不可以到达
                                Debug.Log("点击位置不可到达!");
                            }
                        }
                    }
                }
            }
            //选择攻击目标状态
            else if (manualOperationState == ManualOperationState.Skill)
            {
                //点中了战斗单位
                if (battleUnitTouched != null)
                {
                    //点中了等待手动操作的战斗单位
                    if (battleUnitTouched.battleUnitRenderer.Equals(manualBattleUnitRenderer))
                    {
                        //取消操作
                        manualOperationState = ManualOperationState.None;
                        SetRangeHighlightActive(false, 0, 0, 0);
                    }
                    else
                    {
                        //判断是否可以被攻击
                        if (manualBattleUnitRenderer.battleUnit.battleTeam.Equals(battleUnitTouched.battleTeam))
                        {
                            //同一个队伍的
                            Debug.Log("攻击状态点中了同一个队伍的战斗单位:" + battleUnitTouched.ToString());
                        }
                        else if (battleUnitTouched.mapGrid.Distance(manualBattleUnitRenderer.battleUnit.mapGrid) > 1)
                        {
                            Debug.Log("不在攻击范围:" + battleUnitTouched.ToString());
                        }
                        else
                        {
                            ManualSkill(battleUnitTouched);
                        }
                    }
                }
                //点中了地图
                else
                {
                    Debug.Log("攻击状态点中了地图单位:" + gridTouched.ToString());
                }
            }
        }