Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
 protected void doItemUseActions(int[][] actions, int num, UseItemArgData arg)
 {
     foreach (int[] v in actions)
     {
         doOneItemUseAction(v, num, arg);
     }
 }
Esempio n. 3
0
        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));
            }
        }
Esempio n. 4
0
    //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));
    }
Esempio n. 5
0
    /// <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);
    }
Esempio n. 6
0
        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));
            }
        }
Esempio n. 7
0
    /// <summary>
    /// 执行单个道具物品动作
    /// </summary>
    protected void doOneItemUseAction(int[] args, int num, UseItemArgData arg)
    {
        if (!CommonSetting.isClientDriveLogic)
        {
            return;
        }

        me.role.doOneRoleAction(args, num, CallWayType.UseItem);
    }
Esempio n. 8
0
    /// <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);
    }
Esempio n. 9
0
    /// <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);
    }
Esempio n. 10
0
    /// <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;
        }
    }
Esempio n. 11
0
    protected override void copyData()
    {
        base.copyData();
        UseItemArgData argTemp = arg;

        if (argTemp != null)
        {
            this.arg = (UseItemArgData)argTemp.clone();
        }
        else
        {
            this.arg = null;
        }
    }
Esempio n. 12
0
    /** 使用物品 */
    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));
    }
Esempio n. 13
0
    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);
    }
Esempio n. 14
0
        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));
            }
        }
Esempio n. 15
0
    /** 通过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);
    }
Esempio n. 16
0
        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));
 }
Esempio n. 21
0
    /// <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);
    }
Esempio n. 22
0
 /** 执行使用物品通过id */
 protected virtual void toUseItem(int id, int num, UseItemArgData arg)
 {
 }
Esempio n. 23
0
 /** 检查是否可使用物品 */
 public virtual bool checkCanUseItem(ItemData data, int num, UseItemArgData arg, bool needNotice)
 {
     return(true);
 }
Esempio n. 24
0
    //use

    /** 通过ID使用物品 */
    abstract public bool useItemByID(int id, UseItemArgData arg);
Esempio n. 25
0
 /// <summary>
 /// 物品使用
 /// </summary>
 protected virtual void onItemUse(int id, int num, ItemData itemData, UseItemArgData arg)
 {
 }
Esempio n. 26
0
 /// <summary>
 /// 执行单个道具物品动作
 /// </summary>
 protected virtual bool checkOneItemUseConditionForAction(int[] args, int num, UseItemArgData arg, bool needNotice)
 {
     return(me.role.checkOneRoleConditionForAction(args, num));
 }
Esempio n. 27
0
 /// <summary>
 /// 使用物品
 /// </summary>
 public virtual bool useItemByIndex(int index, int num, UseItemArgData arg)
 {
     Ctrl.throwError("must override");
     return(false);
 }
Esempio n. 28
0
 /** 执行使用物品 */
 protected virtual void toUseItem(ItemData data, int num, UseItemArgData arg)
 {
 }
Esempio n. 29
0
 /// <summary>
 /// 使用物品
 /// </summary>
 public bool useItemByIndex(int index, UseItemArgData arg)
 {
     return(useItemByIndex(index, 1, arg));
 }
Esempio n. 30
0
 /** 发送使用物品 */
 protected virtual void toSendUseItem(ItemData data, int index, int num, UseItemArgData arg)
 {
 }