protected override void onItemUse(int id, int num, ItemData itemData, UseItemArgData arg) { if (!_g39) { _m39 = instance.Type.GetMethod("onItemUse", 4); _g39 = true; } if (_m39 != null && !_b39) { _b39 = true; _p4[0] = id; _p4[1] = num; _p4[2] = itemData; _p4[3] = arg; appdomain.Invoke(_m39, instance, _p4); _p4[0] = null; _p4[1] = null; _p4[2] = null; _p4[3] = null; _b39 = false; } else { base.onItemUse(id, num, itemData, arg); } }
protected void doItemUseActions(int[][] actions, int num, UseItemArgData arg) { foreach (int[] v in actions) { doOneItemUseAction(v, num, arg); } }
protected override bool checkOneItemUseConditionForAction(int[] args, int num, UseItemArgData arg, bool needNotice) { if (!_g41) { _m41 = instance.Type.GetMethod("checkOneItemUseConditionForAction", 4); _g41 = true; } if (_m41 != null && !_b41) { _b41 = true; _p4[0] = args; _p4[1] = num; _p4[2] = arg; _p4[3] = needNotice; bool re = (bool)appdomain.Invoke(_m41, instance, _p4); _p4[0] = null; _p4[1] = null; _p4[2] = null; _p4[3] = null; _b41 = false; return(re); } else { return(base.checkOneItemUseConditionForAction(args, num, arg, needNotice)); } }
//add //use /** 通过ID使用物品 */ public override bool useItemByID(int id, UseItemArgData arg) { ItemRecordData rData; if ((rData = getRecordData(id)) == null) { return(false); } if (rData.num <= 0 || rData.removeIndex == -1) { return(false); } ItemData data; int index; if ((data = _list.get(index = rData.removeIndex)) == null) { Ctrl.throwError("不该找不到数据"); return(false); } return(doUseItem(data, index, 1, arg)); }
/// <summary> /// 检查物品使用条件 /// </summary> public bool checkItemUseConditions(ItemData data, int num, UseItemArgData arg, bool needNotice) { int[][] conditions; if ((conditions = data.config.useConditions) != null) { foreach (int[] v in conditions) { if (!checkOneItemUseCondition(v, needNotice)) { return(false); } } } foreach (int[] v in data.config.useActions) { if (!checkOneItemUseConditionForAction(v, num, arg, needNotice)) { return(false); } } return(true); }
public override bool useItemByIndex(int index, int num, UseItemArgData arg) { if (!_g43) { _m43 = instance.Type.GetMethod("useItemByIndex", 3); _g43 = true; } if (_m43 != null && !_b43) { _b43 = true; _p3[0] = index; _p3[1] = num; _p3[2] = arg; bool re = (bool)appdomain.Invoke(_m43, instance, _p3); _p3[0] = null; _p3[1] = null; _p3[2] = null; _b43 = false; return(re); } else { return(base.useItemByIndex(index, num, arg)); } }
/// <summary> /// 执行单个道具物品动作 /// </summary> protected void doOneItemUseAction(int[] args, int num, UseItemArgData arg) { if (!CommonSetting.isClientDriveLogic) { return; } me.role.doOneRoleAction(args, num, CallWayType.UseItem); }
/// <summary> /// 执行使用物品 /// </summary> public void toUseItem(int id, int num, UseItemArgData arg) { int[][] actions; if ((actions = ItemConfig.get(id).useActions) != null) { doItemUseActions(actions, num, arg); } toLogRemoveItem(id, num, CallWayType.UseItem); onItemUse(id, num, null, arg); }
/// <summary> /// 执行使用物品 /// </summary> public void toUseItem(ItemData data, int num, UseItemArgData arg) { int[][] actions; if ((actions = data.config.useActions) != null) { doItemUseActions(actions, num, arg); } toLogRemoveItem(data.id, num, CallWayType.UseItem); onItemUse(data.id, num, data, arg); }
/// <summary> /// 回池 /// </summary> protected override void toRelease(DataPool pool) { base.toRelease(pool); this.index = 0; this.num = 0; this.itemID = 0; if (this.arg != null) { this.arg.release(pool); this.arg = null; } }
protected override void copyData() { base.copyData(); UseItemArgData argTemp = arg; if (argTemp != null) { this.arg = (UseItemArgData)argTemp.clone(); } else { this.arg = null; } }
/** 使用物品 */ public bool useItemByIndex(int index, int num, UseItemArgData arg) { if (!ensureNum(num)) { return(false); } ItemData data; if ((data = getItem(index)) == null) { return(false); } return(doUseItem(data, index, num, arg)); }
protected bool doUseItem(ItemData data, int index, int num, UseItemArgData arg) { //不是道具不能使用 if (data.config.type != ItemType.Tool) { return(false); } if (data.num < num) { return(false); } if (!checkCanUseItem(data, num, arg, true)) { return(false); } if (CommonSetting.isClientDriveLogic) { bool needRemove = data.num == num; doRemoveItemByIndexC(index, num, data); flushRemove(CallWayType.UseItem); toUseItem(data, num, arg); if (needRemove) { //回收 releaseItem(data); } } else { toSendUseItem(data, index, num, arg); } return(true); }
public override UseItemArgData createUseItemArgData(int type) { if (!_g1) { _m1 = instance.Type.GetMethod("createUseItemArgData", 1); _g1 = true; } if (_m1 != null && !_b1) { _b1 = true; _p1[0] = type; UseItemArgData re = (UseItemArgData)appdomain.Invoke(_m1, instance, _p1); _p1[0] = null; _b1 = false; return(re); } else { return(base.createUseItemArgData(type)); } }
/** 通过ID使用物品 */ public override bool useItemByID(int id, UseItemArgData arg) { if (getItemNum(id) == 0) { return(false); } IntObjectMap <ItemData> dic = _dicByID.get(id); ItemData[] values; ItemData v; for (int i = (values = dic.getValues()).Length - 1; i >= 0; --i) { if ((v = values[i]) != null) { return(doUseItem(v, v.index, 1, arg)); } } return(false); }
public override bool useItemByID(int id, UseItemArgData arg) { if (!_g42) { _m42 = instance.Type.GetMethod("useItemByID", 2); _g42 = true; } if (_m42 != null && !_b42) { _b42 = true; _p2[0] = id; _p2[1] = arg; bool re = (bool)appdomain.Invoke(_m42, instance, _p2); _p2[0] = null; _p2[1] = null; _b42 = false; return(re); } else { return(base.useItemByID(id, arg)); } }
protected override void toUseItem(int id, int num, UseItemArgData arg) { me.bag.toUseItem(id, num, arg); }
protected override void toUseItem(ItemData data, int num, UseItemArgData arg) { me.bag.toUseItem(data, num, arg); }
protected override void toSendUseItem(ItemData data, int index, int num, UseItemArgData arg) { me.send(FuncUseItemRequest.create(_funcID, index, num, data.id, arg)); }
public override bool checkCanUseItem(ItemData data, int num, UseItemArgData arg, bool needNotice) { return(me.bag.checkItemUseConditions(data, num, arg, needNotice)); }
/// <summary> /// 创建实例 /// </summary> public static FuncUseItemRequest create(int funcID, int index, int num, int itemID, UseItemArgData arg) { FuncUseItemRequest re = (FuncUseItemRequest)BytesControl.createRequest(dataID); re.funcID = funcID; re.index = index; re.num = num; re.itemID = itemID; re.arg = arg; return(re); }
/** 执行使用物品通过id */ protected virtual void toUseItem(int id, int num, UseItemArgData arg) { }
/** 检查是否可使用物品 */ public virtual bool checkCanUseItem(ItemData data, int num, UseItemArgData arg, bool needNotice) { return(true); }
//use /** 通过ID使用物品 */ abstract public bool useItemByID(int id, UseItemArgData arg);
/// <summary> /// 物品使用 /// </summary> protected virtual void onItemUse(int id, int num, ItemData itemData, UseItemArgData arg) { }
/// <summary> /// 执行单个道具物品动作 /// </summary> protected virtual bool checkOneItemUseConditionForAction(int[] args, int num, UseItemArgData arg, bool needNotice) { return(me.role.checkOneRoleConditionForAction(args, num)); }
/// <summary> /// 使用物品 /// </summary> public virtual bool useItemByIndex(int index, int num, UseItemArgData arg) { Ctrl.throwError("must override"); return(false); }
/** 执行使用物品 */ protected virtual void toUseItem(ItemData data, int num, UseItemArgData arg) { }
/// <summary> /// 使用物品 /// </summary> public bool useItemByIndex(int index, UseItemArgData arg) { return(useItemByIndex(index, 1, arg)); }
/** 发送使用物品 */ protected virtual void toSendUseItem(ItemData data, int index, int num, UseItemArgData arg) { }