/// <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); } }
public override void initUseLogicByUseData(MUnitUseLogic logic, MUnitUseData useData, bool needFuncTool, bool needBindPlayer, bool isClientDrive) { if (!_g22) { _m22 = instance.Type.GetMethod("initUseLogicByUseData", 5); _g22 = true; } if (_m22 != null && !_b22) { _b22 = true; _p5[0] = logic; _p5[1] = useData; _p5[2] = needFuncTool; _p5[3] = needBindPlayer; _p5[4] = isClientDrive; appdomain.Invoke(_m22, instance, _p5); _p5[0] = null; _p5[1] = null; _p5[2] = null; _p5[3] = null; _p5[4] = null; _b22 = false; } else { base.initUseLogicByUseData(logic, useData, needFuncTool, needBindPlayer, isClientDrive); } }
/// <summary> /// 复制(深拷贝) /// </summary> protected override void toCopy(BaseData data) { if (!(data is MUnitUseData)) { return; } MUnitUseData mData = (MUnitUseData)data; this.id = mData.id; this.level = mData.level; if (mData.avatar != null) { this.avatar = (UnitAvatarData)mData.avatar.clone(); } else { this.avatar = null; nullObjError("avatar"); } if (mData.fight != null) { this.fight = (UnitFightData)mData.fight.clone(); } else { this.fight = null; nullObjError("fight"); } if (mData.equips != null) { this.equips = (EquipContainerData)mData.equips.clone(); } else { this.equips = null; nullObjError("equips"); } this.mIndex = mData.mIndex; this.isWorking = mData.isWorking; }
/// <summary> /// 复制(潜拷贝) /// </summary> protected override void toShadowCopy(BaseData data) { if (!(data is MUnitUseData)) { return; } MUnitUseData mData = (MUnitUseData)data; this.id = mData.id; this.level = mData.level; this.avatar = mData.avatar; this.fight = mData.fight; this.equips = mData.equips; this.mIndex = mData.mIndex; this.isWorking = mData.isWorking; }
/// <summary> /// 新创建的保存数据 /// </summary> protected void newCreateUseData(MUnitUseData useData) { useData.mIndex = getOneMUnitIndex(); useData.equips = GameC.factory.createEquipContainerData(); useData.equips.initDefault(); int unitType = useData.getUnitType(); foreach (EquipSlotTypeConfig v in EquipSlotTypeConfig.getDic()) { if (v != null && v.unitType == unitType) { if (v.isOpen) { //直接打开 useData.equips.openSlots.add(v.id); } } } }
protected override void setData(MUnitUseData data) { if (!_g1) { _m1 = instance.Type.GetMethod("setData", 1); _g1 = true; } if (_m1 != null && !_b1) { _b1 = true; _p1[0] = data; appdomain.Invoke(_m1, instance, _p1); _p1[0] = null; _b1 = false; } else { base.setData(data); } }
/** 析构 */ 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; }
/** 构建战斗逻辑(isRobot:是否是机器人) */ public void init(MUnitUseData data, bool isClientDrive) { setData(data); MUnitFightDataLogic fightLogic = _fightLogic = GameC.factory.createMUnitFightDataLogic(); fightLogic.construct(); if (isClientDrive) { //开全控 fightLogic.setIsDriveAll(true); } //绑定 fightLogic.setUseLogic(this); //构造 makeFightDataLogic(fightLogic); //标记index index = fightLogic.index = data.mIndex; fightLogic.setData(_data.fight, _data.avatar); _attributeLogic = fightLogic.attribute; _buffLogic = fightLogic.buff; int fightUnitID = data.getFightUnitID(); fightLogic.initByFightUnitConfig(fightUnitID); if (isClientDrive) { fightLogic.initByFightUnitLevelConfig(fightUnitID, data.level); } }
protected virtual void setData(MUnitUseData data) { _data = data; }
/// <summary> /// 是否数据一致 /// </summary> protected override bool toDataEquals(BaseData data) { MUnitUseData mData = (MUnitUseData)data; if (this.id != mData.id) { return(false); } if (this.level != mData.level) { return(false); } if (mData.avatar != null) { if (this.avatar == null) { return(false); } if (!this.avatar.dataEquals(mData.avatar)) { return(false); } } else { if (this.avatar != null) { return(false); } } if (mData.fight != null) { if (this.fight == null) { return(false); } if (!this.fight.dataEquals(mData.fight)) { return(false); } } else { if (this.fight != null) { return(false); } } if (mData.equips != null) { if (this.equips == null) { return(false); } if (!this.equips.dataEquals(mData.equips)) { return(false); } } else { if (this.equips != null) { return(false); } } if (this.mIndex != mData.mIndex) { return(false); } if (this.isWorking != mData.isWorking) { return(false); } return(true); }
/** 通过saveData初始化useData */ private void initMUnitUseBySave(MUnitUseData uData, MUnitSaveData sData) { uData.mIndex = sData.mIndex; uData.id = sData.id; uData.equips = sData.equips; //引用传递 }
protected override void setData(MUnitUseData data) { base.setData(data); _data = (GCharacterUseData)data; }