Exemplo n.º 1
0
 private void doEquipActions(MUnitUseLogic logic, PlayerEquipContainerTool tool, int slot, int[][] actions, bool isOn)
 {
     for (int i = 0; i < actions.Length; ++i)
     {
         doOneEquipAction(logic, tool, slot, i, actions[i], isOn);
     }
 }
Exemplo n.º 2
0
    /// <summary>
    /// 通过保存数据初始化
    /// </summary>
    public virtual void initUseLogicByUseData(MUnitUseLogic logic, MUnitUseData useData, bool needFuncTool, bool needBindPlayer, bool isClientDrive)
    {
        //基础部分
        logic.init(useData, isClientDrive);

        if (needBindPlayer)
        {
            logic.setPlayer(me);
        }

        if (isClientDrive)
        {
            //补满血蓝
            logic.getAttributeLogic().fillHpMp();
            //刷属性
            logic.getAttributeLogic().refreshAttributes();
        }

        if (needFuncTool)
        {
            int funcID = logic.getMUnitFuncID(FunctionType.Equip);
            PlayerEquipContainerTool funcTool = toCreatePlayerEquipContainerTool(funcID);
            //互相绑定
            funcTool.setMUnitLogic(logic);
            logic.setEquipTool(funcTool);

            me.func.addFuncTool(funcTool, useData.equips);
        }
    }
Exemplo n.º 3
0
    /// <summary>
    /// 移除装备影响(单个装备)
    /// </summary>
    public void removeEquipInfluence(MUnitUseLogic logic, PlayerEquipContainerTool tool, int slot, ItemData data)
    {
        if (CommonSetting.isClientDriveLogic)
        {
            logic.getAttributeLogic().subAttributes(data.config.baseAttributes);
        }

        doEquipActions(logic, tool, slot, data.config.equipActions, false);
    }
Exemplo n.º 4
0
        protected override PlayerEquipContainerTool toCreatePlayerEquipContainerTool(int funcID)
        {
            if (!_g23)
            {
                _m23 = instance.Type.GetMethod("toCreatePlayerEquipContainerTool", 1);
                _g23 = true;
            }

            if (_m23 != null && !_b23)
            {
                _b23   = true;
                _p1[0] = funcID;
                PlayerEquipContainerTool re = (PlayerEquipContainerTool)appdomain.Invoke(_m23, instance, _p1);
                _p1[0] = null;
                _b23   = false;
                return(re);
            }
            else
            {
                return(base.toCreatePlayerEquipContainerTool(funcID));
            }
        }
Exemplo n.º 5
0
    /** 析构 */
    public void dispose()
    {
        if (isWorking())
        {
            setIsWorking(false);
        }

        if (_equipTool != null)
        {
            _player.func.removeFuncTool(_equipTool);
            _equipTool.setMUnitLogic(null);
            _equipTool = null;
        }

        _fightLogic.setData(null, null);
        setPlayer(null);

        _data = null;

        _attributeLogic = null;
        _buffLogic      = null;
        index           = -1;
    }
Exemplo n.º 6
0
 public void setEquipTool(PlayerEquipContainerTool tool)
 {
     _equipTool = tool;
 }
Exemplo n.º 7
0
    /// <summary>
    /// 执行单个装备方法
    /// </summary>
    protected void doOneEquipAction(MUnitUseLogic logic, PlayerEquipContainerTool tool, int slot, int index, int[] args, bool isOn)
    {
        switch (args[0])
        {
        case ItemEquipActionType.AddBuff:
        {
            if (!CommonSetting.isClientDriveLogic)
            {
                return;
            }

            if (isOn)
            {
                if (ShineSetting.openCheck)
                {
                    BuffConfig buffConfig = BuffConfig.get(args[0]);

                    if (buffConfig.keepType != BuffKeepType.Online)
                    {
                        Ctrl.throwError("装备用buff的保存类型必须为Online");
                    }
                }

                BuffData buffData = logic.getBuffLogic().addBuff(args[0], args[1]);
                //记录buffID
                tool.getBuffInstanceIDDic().put(slot << CommonSetting.buffActionIndexOff | index, buffData.instanceID);
            }
            else
            {
                int instanceID = tool.getBuffInstanceIDDic().remove(slot << CommonSetting.buffActionIndexOff | index);

                if (instanceID <= 0)
                {
                    Ctrl.errorLog("不该找不到buff instanceID");
                }
                else
                {
                    logic.getBuffLogic().removeBuffByInstanceID(instanceID);
                }
            }
        }
        break;

        case ItemEquipActionType.AddSkill:
        {
            if (!CommonSetting.isClientDriveLogic)
            {
                return;
            }

            if (isOn)
            {
                logic.getFightLogic().addSkill(args[0], args[1]);
            }
            else
            {
                logic.getFightLogic().removeSkill(args[0]);
            }
        }
        break;
        }
    }