/// <summary> /// 创建实例 /// </summary> public static FuncMoveItemRequest create(int funcID, int fromIndex, int toIndex) { FuncMoveItemRequest re = (FuncMoveItemRequest)BytesControl.createRequest(dataID); re.funcID = funcID; re.fromIndex = fromIndex; re.toIndex = toIndex; return(re); }
/** 移动/交换物品 */ public void moveItem(int fromIndex, int toIndex) { ItemData item = getItem(fromIndex); if (item == null) { warnLog("移动物品时,找不到from物品", fromIndex); return; } if (!isIndexEnable(toIndex)) { warnLog("移动物品时,toIndex不可用", toIndex); return; } if (fromIndex == toIndex) { warnLog("移动物品时,序号相等", fromIndex); return; } if (CommonSetting.isClientDriveLogic) { ItemData toItem = getItem(toIndex); if (toItem != null) { int plusLast; //可叠加 if (canPlus(toItem, item) && (plusLast = toItem.getPlusLast()) != 0) { int dNum; //全部合并 if (plusLast == -1 || item.num <= plusLast) { dNum = item.num; } else { dNum = plusLast; } removeItemByIndex(fromIndex, dNum, CallWayType.MoveItem); //操作记录 _operateRecordList.add2(toIndex, dNum); toItem.num += dNum; doAddItemPartial(toIndex, dNum, toItem); flushAdd(CallWayType.MoveItem); return; } } //走交换逻辑 toSwapItem(fromIndex, toIndex, item, toItem); } else { me.send(FuncMoveItemRequest.create(_funcID, fromIndex, toIndex)); } }