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); } }
/// <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); } }
/// <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); }
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)); } }
/** 析构 */ 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; }
public void setEquipTool(PlayerEquipContainerTool tool) { _equipTool = tool; }
/// <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; } }