/** 执行移除一个物品(倒序)(核心) */ 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); }