/// <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); }
/// <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); }
/// <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); } } }
/// <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); }
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); } }
/// <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)); }
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)); } }
/// <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)); }
/// <summary> /// 检查当前是否可出战 /// </summary> protected virtual bool checkCanWork(PetUseLogic logic) { return(true); }