Ejemplo n.º 1
0
 public void Show(RPGCharacter ch)
 {
     if (ch != null)
     {
         var logic = ch.Logic;
         charIcon.sprite = logic.GetPortrait();
         charName.text   = logic.GetName();
         hp.text         = logic.GetCurrentHP() + "/" + ch.Logic.GetMaxHP();
         lv.text         = ch.Logic.GetLevel().ToString();
         WeaponItem item = ch.Logic.Info.Items.GetEquipWeapon();
         if (item != null)
         {
             weaponIcon.gameObject.SetActive(true);
             weaponName.text   = item.GetDefinition().CommonProperty.Name;
             weaponIcon.sprite = item.GetDefinition().Icon;
         }
         else
         {
             weaponIcon.gameObject.SetActive(false);
             weaponName.text   = null;
             weaponIcon.sprite = null;
         }
         gameObject.transform.position = new Vector3(Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z);
         gameObject.SetActive(true);
     }
     else
     {
         gameObject.SetActive(false);
     }
 }
Ejemplo n.º 2
0
    public void InitActionScope(RPGCharacter Gamechar, int Movement, bool Show = true)
    {
        HideAllRange();
        bPlayer = (Gamechar.GetCamp() == EnumCharacterCamp.Player);//0,2为我方的单位

        _Mov = Movement;

        /* if (Gamechar.SkillGroup.isHaveStaticSkill(18))//探险家,无视地形,将其职业设为天马
         *   _Job = 15;//medifyneed
         * if (Gamechar.SkillGroup.isHaveStaticSkill(19))
         *   _Mov += 2;*/
        _Career         = Gamechar.Logic.GetCareer();
        CharacterCenter = new Vector2Int(Gamechar.GetTileCoord().x, Gamechar.GetTileCoord().x);

        ResetMoveAcessList();
        bMoveAcessList[CharacterCenter.x, CharacterCenter.y]         = true;
        bMoveAcessListExcluded[CharacterCenter.x, CharacterCenter.y] = true;
        _FootData.Add(CharacterCenter, new Vector2Int(-1, -1));
        _TempFootData.Add(CharacterCenter, _Mov);

        int countPoint = 0;

        while (countPoint < _Mov)
        {
            _FindDistance(Gamechar.Logic.GetCareer(), _Mov);//递归查询距离   _FindDistance(Table._JobTable.getBranch(gamechar.attribute.Job), _Mov, 0, 0);
            countPoint++;
        }

        WeaponItem item = Gamechar.Logic.Info.Items.GetEquipWeapon();

        item = new WeaponItem(1);
        if (item != null)//装备武器不为空
        {
            _AttackRangeData.Clear();
            _ItemRangeMin    = item.GetDefinition().RangeType.SelectRange.x;
            _ItemRangeMax    = item.GetDefinition().RangeType.SelectRange.y;
            _WeaponRangeType = item.GetDefinition().RangeType.SelectType;
            if (_ItemRangeMax != 0 && _ItemRangeMax - _ItemRangeMin > -1) //武器有距离
            {
                for (int i = 0; i < PList.Count; i++)                     //遍历可移动的区域
                {
                    AttackScan(PList[i]);                                 //递归查询距离   _FindDistance(Table._JobTable.getBranch(gamechar.attribute.Job), _Mov, 0, 0);
                }
            }
        }

        if (Show)
        {
            ShowMoveableRange();
            ShowAttackableRange();
        }
    }
Ejemplo n.º 3
0
    private void BattleAction_SelectWeapon(WeaponItem item)
    {
        battleManager.ChangeState(BattleManager.EBattleState.SelectTarget);
        if (item == null)
        {
            Debug.LogError("选择的武器是null");
        }
        else
        {
            Debug.Log(item.ToString());
        }
        BattleActionMenu.Hide();
        BattleSelectWeaponMenu.Hide();
        CharacterLogic logic = battleManager.CurrentCharacterLogic;

        logic.Info.Items.EquipWeapon(item);
        //从选择的武器确定
        var rangeType = item.GetDefinition().RangeType;
        EnumSelectEffectRangeType selRangeType = rangeType.SelectType;
        Vector2Int selRange = rangeType.SelectRange;
        EnumSelectEffectRangeType effRangeType = rangeType.EffectType;
        Vector2Int effRange = rangeType.EffectRange;

        logic.BattleInfo.SetSelectTargetParam(CharacterBattleInfo.EBattleActionType.Attack, logic.GetTileCoord(), selRangeType, selRange, effRangeType, effRange);
        battleManager.ShowSelectTargetRangeAction(logic);
        MenuUndoAction.Push(UndoSelectWeapon);
    }
Ejemplo n.º 4
0
        /// <summary>
        /// 初始化控件中武器的信息显示
        /// </summary>
        /// <param name="index"></param>
        /// <param name="Weapon"></param>
        public void InitButton(int index, WeaponItem Weapon)
        {
            WeaponDef def = Weapon.GetDefinition();

            Elements[index].Show(index, def.Icon, def.CommonProperty.Name, def.IsInifiniteUsage() ? " -- " : Weapon.Usage + "/" + def.UseNumber, true);
            Elements[index].RegisterClickEvent(() =>
            {
                AddWeaponToWarehouseAction(Weapon);
                WeaponItems.RemoveAt(index);
                Hide();
            });
        }