Пример #1
0
    /** 执行移除一个物品(倒序)(核心) */
    protected override bool doRemoveItemC(int id, int num)
    {
        int totalNum = _itemNums.get(id);

        if (totalNum < num)
        {
            return(false);
        }

        IntObjectMap <ItemData> iDic = _dicByID.get(id);

        if (iDic == null)
        {
            Ctrl.errorLog("此处不该为空");
            return(false);
        }

        //只有一个
        if (iDic.size() == 1)
        {
            ItemData data = iDic.getEver();

            if ((num = doRemoveItemOneC(data, num)) == 0)
            {
                return(true);
            }
        }
        else
        {
            _tempRemoveItemList.clear();

            ItemData[] values;
            ItemData   v;

            for (int i = (values = iDic.getValues()).Length - 1; i >= 0; --i)
            {
                if ((v = values[i]) != null)
                {
                    _tempRemoveItemList.add(v);
                }
            }

            //排序
            _tempRemoveItemList.sort(compareItemForRemove);

            ItemData[] values1 = _tempRemoveItemList.getValues();
            ItemData   v1;

            for (int i1 = 0, len1 = _tempRemoveItemList.size(); i1 < len1; ++i1)
            {
                v1 = values1[i1];

                num = doRemoveItemOneC(v1, num);

                if (num == 0)
                {
                    _tempRemoveItemList.clear();
                    return(true);
                }
            }

            _tempRemoveItemList.clear();
        }

        Ctrl.errorLog("物品不该没移除完");

        return(false);
    }