예제 #1
0
    /// <summary>
    /// 删除宠物
    /// </summary>
    public void removePet(int index)
    {
        PetUseLogic logic = getPet(index);

        if (logic == null)
        {
            me.warnLog("删除宠物时,未找到", index);
            return;
        }

        int id = logic.getData().id;

        logic.dispose();

        _d.petDic.remove(index);
        _petDic.remove(index);

        if (Global.isPetUnique)
        {
            _petDicByID.remove(id);
        }

        GameC.pool.petUseLogicPool.back(logic);

        me.dispatch(GameEventType.RemovePet, index);
    }
예제 #2
0
    /// <summary>
    /// 添加宠物
    /// </summary>
    public void addPet(PetUseData data)
    {
        _d.petDic.put(data.mIndex, data);

        PetUseLogic logic = GameC.pool.petUseLogicPool.getOne();

        initPetUseLogicByUseData(logic, data);

        me.dispatch(GameEventType.AddPet, data.mIndex);
    }
예제 #3
0
    /// <summary>
    /// 从库中读完数据后(做数据的补充解析)(onNewCreate后也会调用一次)(主线程)
    /// </summary>
    public override void afterReadData()
    {
        PetUseData[] values;
        PetUseData   v;

        for (int i = (values = _d.petDic.getValues()).Length - 1; i >= 0; --i)
        {
            if ((v = values[i]) != null)
            {
                PetUseLogic logic = GameC.pool.petUseLogicPool.getOne();
                initPetUseLogicByUseData(logic, v);
            }
        }
    }
예제 #4
0
    /// <summary>
    /// 宠物出战状态修改
    /// </summary>
    public void onPetWorkingChange(int mIndex, bool isWorking)
    {
        PetUseLogic logic = getPet(mIndex);

        if (logic == null)
        {
            me.warnLog("宠物出战时,找不到宠物");
            return;
        }

        logic.setIsWorking(isWorking);

        me.dispatch(GameEventType.PetIsWorkingChange, mIndex);
    }
예제 #5
0
    public void initPetUseLogicByUseData(PetUseLogic logic, PetUseData useData)
    {
        me.character.initUseLogicByUseData(logic, useData, Global.isPetNeedEquip, true, false);

        _petDic.put(logic.index, logic);

        if (Global.isPetUnique)
        {
            if (_petDicByID.contains(useData.id))
            {
                me.errorLog("已存在的宠物数据");
            }

            _petDicByID.put(useData.id, logic);
        }
    }
예제 #6
0
    /// <summary>
    /// 宠物休息
    /// </summary>
    public void petRest(int mIndex)
    {
        PetUseLogic logic = getPet(mIndex);

        if (logic == null)
        {
            me.showInfoCode(InfoCodeType.PetReset_notExist);
            return;
        }

        if (!logic.isWorking())
        {
            me.showInfoCode(InfoCodeType.PetReset_isNotWorkingNow);
            return;
        }

        me.send(PetRestRequest.create(mIndex));
    }
예제 #7
0
        protected override bool checkCanWork(PetUseLogic logic)
        {
            if (!_g20)
            {
                _m20 = instance.Type.GetMethod("checkCanWork", 1);
                _g20 = true;
            }

            if (_m20 != null && !_b20)
            {
                _b20   = true;
                _p1[0] = logic;
                bool re = (bool)appdomain.Invoke(_m20, instance, _p1);
                _p1[0] = null;
                _b20   = false;
                return(re);
            }
            else
            {
                return(base.checkCanWork(logic));
            }
        }
예제 #8
0
    /// <summary>
    /// 宠物出战
    /// </summary>
    public void petWork(int mIndex)
    {
        PetUseLogic logic = getPet(mIndex);

        if (logic == null)
        {
            me.showInfoCode(InfoCodeType.PetWork_notExist);
            return;
        }

        if (logic.isWorking())
        {
            me.showInfoCode(InfoCodeType.PetWork_isWorkingNow);
            return;
        }

        if (!checkCanWork(logic))
        {
            me.showInfoCode(InfoCodeType.PetWork_cantWork);
            return;
        }

        me.send(PetWorkRequest.create(logic.index));
    }
예제 #9
0
 /// <summary>
 /// 检查当前是否可出战
 /// </summary>
 protected virtual bool checkCanWork(PetUseLogic logic)
 {
     return(true);
 }