예제 #1
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);
        }
    }
예제 #2
0
        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);
            }
        }
예제 #3
0
    /// <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;
    }
예제 #4
0
    /// <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;
    }
예제 #5
0
    /// <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);
                }
            }
        }
    }
예제 #6
0
        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);
            }
        }
예제 #7
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;
    }
예제 #8
0
    /** 构建战斗逻辑(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);
        }
    }
예제 #9
0
 protected virtual void setData(MUnitUseData data)
 {
     _data = data;
 }
예제 #10
0
    /// <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);
    }
예제 #11
0
 /** 通过saveData初始化useData */
 private void initMUnitUseBySave(MUnitUseData uData, MUnitSaveData sData)
 {
     uData.mIndex = sData.mIndex;
     uData.id     = sData.id;
     uData.equips = sData.equips;      //引用传递
 }
예제 #12
0
    protected override void setData(MUnitUseData data)
    {
        base.setData(data);

        _data = (GCharacterUseData)data;
    }