ItemMoveProxy.lua 63 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572
  1. local RemoteProxy = requireProxy("remote/RemoteProxy")
  2. local ItemMoveProxy = class("ItemMoveProxy", RemoteProxy)
  3. ItemMoveProxy.NAME = global.ProxyTable.ItemMoveProxy
  4. ItemMoveProxy.ItemFrom = {
  5. BAG = 1, -- 背包
  6. PALYER_EQUIP = 2, -- 玩家身上
  7. QUICK_USE = 3, -- 快捷栏
  8. STORAGE = 4, -- 仓库
  9. BAG_GOLD = 5, -- 背包金币
  10. SELL = 6, -- 摆摊
  11. REPAIRE = 7, -- npc商店
  12. TRADE = 8, -- 面对面交易
  13. TRADE_GOLD = 10, -- 交易
  14. BEST_RINGS = 11, -- 极品首饰
  15. AUTO_TRADE = 12, -- 摆摊
  16. ITEMBOX = 13, -- 自定义UI ITEMBOX
  17. NPC_DO_SOMETHING = 14, -- NPC自定义放入框
  18. NEWTYPE = 15,
  19. HERO_BAG = 66, --英雄背包
  20. HERO_EQUIP = 67, -- 英雄装备
  21. HERO_BEST_RINGS = 68, -- 英雄极品首饰
  22. SSR_ITEM_BOX = 77, -- ssr 自定义ItemBox
  23. PETS_EQUIP = 78, -- 宠物装备
  24. SKILL_WIN = 79, -- PC 技能
  25. OTHER = 99 -- 其他
  26. }
  27. ItemMoveProxy.ItemGoTo = {
  28. BAG = 1,
  29. PALYER_EQUIP = 2,
  30. QUICK_USE = 3,
  31. STORAGE = 4,
  32. SELL = 5,
  33. DROP = 6,
  34. REPAIRE = 7,
  35. TRADE = 8,
  36. TRADE_GOLD = 10,
  37. BAG_GOLD = 11, --背包金币
  38. BEST_RINGS = 12, -- 极品首饰
  39. AUTO_TRADE = 13, -- 摆摊
  40. ITEMBOX = 14, -- 自定义UI ITEMBOX
  41. NPC_DO_SOMETHING = 15, -- NPC自定义放入框
  42. TreasureBox = 16,
  43. NEWTYPE = 17,
  44. HERO_BAG = 66, --英雄背包
  45. HERO_EQUIP = 67, -- 英雄装备
  46. HERO_BEST_RINGS = 68, -- 英雄极品首饰
  47. SSR_ITEM_BOX = 77, -- ssr 自定义ItemBox
  48. TOPUI = 78,
  49. }
  50. function ItemMoveProxy:ctor()
  51. ItemMoveProxy.super.ctor(self)
  52. self.onMovingItem = nil
  53. self.onMoving = false
  54. self.movingItemFrom = nil
  55. self.linkFunc = nil
  56. self.onMovingSkill = nil
  57. self._guiTypeNum = 0
  58. end
  59. function ItemMoveProxy:DropItem(data)
  60. local item = data.itemData
  61. -- 背包 -> 地面
  62. if not item or next(item) == nil then
  63. return true
  64. end
  65. global.Facade:sendNotification(global.NoticeTable.IntoDropItem, item)
  66. return false
  67. end
  68. function ItemMoveProxy:DropItem_Hero(data)
  69. local item = data.itemData
  70. -- 英雄背包 -> 地面
  71. if not item or next(item) == nil then
  72. return true
  73. end
  74. global.Facade:sendNotification(global.NoticeTable.IntoDropItem_Hero, item)
  75. return false
  76. end
  77. function ItemMoveProxy:DropGold(data)
  78. -- 丢弃金币 背包金币 -> 地面
  79. local function callback(btnType, data)
  80. local bagState = {
  81. goldState = 1
  82. }
  83. global.Facade:sendNotification(global.NoticeTable.Bag_State_Change, bagState)
  84. if data.editStr and data.editStr ~= "" then
  85. if type(data.editStr) == "string" then
  86. local num = tonumber(data.editStr)
  87. LuaSendMsg(global.MsgType.MSG_CS_MAP_GOOD_DISCARD, num, 0, 0, 0, 0, 0)
  88. end
  89. end
  90. end
  91. local data = {}
  92. data.str = GET_STRING(90020002)
  93. data.callback = callback
  94. data.btnType = 1
  95. data.showEdit = true
  96. data.editParams = {
  97. inputMode = 2
  98. }
  99. global.Facade:sendNotification(global.NoticeTable.Layer_CommonTips_Open, data)
  100. end
  101. function ItemMoveProxy:ChangeItemPos(data)
  102. -- 道具换位 背包 -> 背包
  103. local itemData = data.itemData
  104. local pos = data.pos
  105. local targetPosInBag = data.itemPosInbag --点击到的位置
  106. local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.Bag)
  107. local posMakeIndexInbag = BagProxy:GetMakeIndexByBagPos(targetPosInBag)
  108. local beginPos = BagProxy:GetBagPosByMakeIndex(itemData.MakeIndex)
  109. local posDataInBag = BagProxy:GetItemDataByMakeIndex(posMakeIndexInbag)
  110. local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
  111. if posMakeIndexInbag then
  112. if posMakeIndexInbag == itemData.MakeIndex then --不变
  113. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  114. elseif posDataInBag and posDataInBag.Index == itemData.Index and ItemConfigProxy:CheckItemOverLapById(itemData.Index) then
  115. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  116. BagProxy:RequestItemTwoToOne(posMakeIndexInbag, itemData.MakeIndex)
  117. return true
  118. else --换位
  119. -- 先结束事件
  120. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  121. BagProxy:ExchangePos(itemData.MakeIndex, targetPosInBag, posMakeIndexInbag, beginPos)
  122. if global.isWinPlayMode then
  123. global.Facade:sendNotification(global.NoticeTable.Item_Move_begin_On_BagPosChang,
  124. {
  125. MakeIndex = posMakeIndexInbag,
  126. pos = pos
  127. }
  128. )
  129. return true
  130. end
  131. end
  132. else --移动
  133. -- 先结束事件
  134. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  135. -- 再发刷新
  136. BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
  137. return true
  138. end
  139. end
  140. function ItemMoveProxy:ChangeItemPos_Hero(data)
  141. -- 道具换位 背包 -> 背包
  142. local itemData = data.itemData
  143. local pos = data.pos
  144. local targetPosInBag = data.itemPosInbag --点击到的位置
  145. local HeroBagProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroBagProxy)
  146. local posMakeIndexInbag = HeroBagProxy:GetMakeIndexByBagPos(targetPosInBag)
  147. local beginPos = HeroBagProxy:GetBagPosByMakeIndex(itemData.MakeIndex)
  148. local posDataInBag = HeroBagProxy:GetItemDataByMakeIndex(posMakeIndexInbag)
  149. local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
  150. if posMakeIndexInbag then
  151. if posMakeIndexInbag == itemData.MakeIndex then --不变
  152. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  153. elseif posDataInBag and posDataInBag.Index == itemData.Index and ItemConfigProxy:CheckItemOverLapById(itemData.Index) then
  154. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  155. HeroBagProxy:RequestItemTwoToOne(posMakeIndexInbag, itemData.MakeIndex)
  156. return true
  157. else --换位
  158. -- 先结束事件
  159. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  160. HeroBagProxy:ExchangePos(itemData.MakeIndex, targetPosInBag, posMakeIndexInbag, beginPos)
  161. if global.isWinPlayMode then
  162. global.Facade:sendNotification(global.NoticeTable.Item_Move_begin_On_HeroBagPosChang,
  163. {
  164. MakeIndex = posMakeIndexInbag,
  165. pos = pos
  166. }
  167. )
  168. return true
  169. end
  170. end
  171. else --移动
  172. -- 先结束事件
  173. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  174. -- 再发刷新
  175. HeroBagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
  176. return true
  177. end
  178. end
  179. function ItemMoveProxy:PutItemInTreasureBox(data)
  180. -- 道具换位 背包 -> 宝箱
  181. local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
  182. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  183. local layer = data.boxLayer
  184. local itemData = data.itemData
  185. local boxData = data.boxData
  186. local MakeIndex = itemData.MakeIndex
  187. local boxMakeIndex = boxData.MakeIndex
  188. if ItemConfigProxy:CheckItemTreasureBoxKey(itemData) then
  189. if MakeIndex and boxMakeIndex and itemData.Shape == boxData.Shape then
  190. LuaSendMsg(global.MsgType.MSG_SC_OPEN_TREASUREBOX, boxMakeIndex, MakeIndex)
  191. layer:setTouchEnabled(false)
  192. end
  193. end
  194. end
  195. function ItemMoveProxy:AddToQuickUse(data)
  196. -- 道具换位 背包 -> 快捷使用栏
  197. -- PC端将来自背包道具加入快捷栏 如果目标位置有道具则将该道具加入移动 该道具归属改变为来自背包
  198. -- 移动端 将道具加入快捷栏 如果快捷栏有道具 则将该道具移动到背包 不加入移动
  199. local itemData = data.itemData
  200. local pos = data.pos
  201. local posInQuickUse = data.posInQuickUse
  202. local AttrConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.AttrConfigProxy)
  203. local canPutInList = AttrConfigProxy:GetItemsConfigQuickUsable()
  204. if not posInQuickUse
  205. or posInQuickUse <= 0
  206. or posInQuickUse > global.MMO.QUICK_USE_SIZE
  207. or not canPutInList[itemData.StdMode] then
  208. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  209. return true
  210. end
  211. -- 先结束事件
  212. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  213. local QuickUseProxy = global.Facade:retrieveProxy(global.ProxyTable.QuickUseProxy)
  214. local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.Bag)
  215. local posData = QuickUseProxy:GetQucikUseDataByPos(posInQuickUse)
  216. -- 从背包移出
  217. BagProxy:DelItemData(itemData)
  218. if posData then --替换
  219. -- 置空
  220. QuickUseProxy:SetQuickUsePosData(posInQuickUse, posData, true)
  221. -- 加入背包
  222. BagProxy:AddItemDataAndNotice(posData)
  223. -- PC 将背包的该道具加入移动
  224. if global.isWinPlayMode then
  225. global.Facade:sendNotification(global.NoticeTable.Item_Move_begin_On_BagPosChang,
  226. {
  227. MakeIndex = posData.MakeIndex,
  228. pos = pos
  229. }
  230. )
  231. end
  232. end
  233. -- 加入快捷栏
  234. QuickUseProxy:SetQuickUsePosData(posInQuickUse, itemData)
  235. return true
  236. end
  237. function ItemMoveProxy:AddToQuickUse_FromHeroBag(data)
  238. -- 道具换位 背包 -> 快捷使用栏
  239. -- PC端将来自背包道具加入快捷栏 如果目标位置有道具则将该道具加入移动 该道具归属改变为来自背包
  240. -- 移动端 将道具加入快捷栏 如果快捷栏有道具 则将该道具移动到背包 不加入移动
  241. local itemData = data.itemData
  242. local pos = data.pos
  243. local posInQuickUse = data.posInQuickUse
  244. local AttrConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.AttrConfigProxy)
  245. local canPutInList = AttrConfigProxy:GetItemsConfigQuickUsable()
  246. if not posInQuickUse
  247. or posInQuickUse <= 0
  248. or posInQuickUse > global.MMO.QUICK_USE_SIZE
  249. or not canPutInList[itemData.StdMode] then
  250. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  251. return true
  252. end
  253. -- 先结束事件
  254. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  255. local QuickUseProxy = global.Facade:retrieveProxy(global.ProxyTable.QuickUseProxy)
  256. local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroBagProxy)
  257. local posData = QuickUseProxy:GetQucikUseDataByPos(posInQuickUse)
  258. -- 从背包移出
  259. BagProxy:DelItemData(itemData)
  260. if posData then --替换
  261. -- 置空
  262. QuickUseProxy:SetQuickUsePosData(posInQuickUse, posData, true)
  263. -- 加入背包
  264. BagProxy:AddItemDataAndNotice(posData)
  265. -- PC 将背包的该道具加入移动
  266. if global.isWinPlayMode then
  267. global.Facade:sendNotification(global.NoticeTable.Item_Move_begin_On_BagPosChang,
  268. {
  269. MakeIndex = posData.MakeIndex,
  270. pos = pos
  271. }
  272. )
  273. end
  274. end
  275. -- 加入快捷栏
  276. QuickUseProxy:SetQuickUsePosData(posInQuickUse, itemData)
  277. return true
  278. end
  279. function ItemMoveProxy:ChangeItemPosQuickUse(data)
  280. -- 道具换位 快捷栏 -> 快捷栏
  281. -- 换位 移动端直接换位
  282. -- PC端将目标位置的道具加入移动 来源位置为原移动道具位置
  283. local itemData = data.itemData
  284. local pos = data.pos
  285. local MakeIndex = itemData.MakeIndex
  286. local targetPos = data.posInQuickUse
  287. local QuickUseProxy = global.Facade:retrieveProxy(global.ProxyTable.QuickUseProxy)
  288. local myOldPos = QuickUseProxy:GetQucikUsePosByMakeIndex(MakeIndex)
  289. local targetItemData = QuickUseProxy:GetQucikUseDataByPos(targetPos)
  290. -- 清空原位置数据
  291. QuickUseProxy:SetQuickUsePosData(myOldPos, itemData, true)
  292. -- 清空目标位置数据
  293. if targetItemData then
  294. QuickUseProxy:SetQuickUsePosData(targetPos, targetItemData, true)
  295. end
  296. -- 目标位置数据加入
  297. QuickUseProxy:SetQuickUsePosData(targetPos, itemData)
  298. -- 原位置数据加入
  299. if targetItemData then
  300. QuickUseProxy:SetQuickUsePosData(myOldPos, targetItemData)
  301. end
  302. -- TODO: PC 端 将新创建节点的信息加入移动
  303. if global.isWinPlayMode then
  304. end
  305. end
  306. function ItemMoveProxy:DeleteQuickUse(data)
  307. -- 道具换位 快捷栏 -> 背包
  308. -- 如果背包格子满了 取消
  309. local itemData = data.itemData
  310. local MakeIndex = itemData.MakeIndex
  311. local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.Bag)
  312. local QuickUseProxy = global.Facade:retrieveProxy(global.ProxyTable.QuickUseProxy)
  313. local isFull = BagProxy:isToBeFull()
  314. if isFull then
  315. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  316. return true
  317. else
  318. -- 先结束事件
  319. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  320. -- 从快捷栏移出
  321. local pos = QuickUseProxy:GetQucikUsePosByMakeIndex(MakeIndex)
  322. QuickUseProxy:SetQuickUsePosData(pos, itemData, true)
  323. -- 加入背包
  324. BagProxy:AddItemDataAndNotice(itemData)
  325. return true
  326. end
  327. end
  328. function ItemMoveProxy:DeleteQuickUse_ToHeroBag(data)
  329. -- 道具换位 快捷栏 -> 英雄背包
  330. -- 如果背包格子满了 取消
  331. local itemData = data.itemData
  332. local MakeIndex = itemData.MakeIndex
  333. local HeroBagProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroBagProxy)
  334. local QuickUseProxy = global.Facade:retrieveProxy(global.ProxyTable.QuickUseProxy)
  335. local isFull = HeroBagProxy:isToBeFull()
  336. if isFull then
  337. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  338. return true
  339. else
  340. -- 先结束事件
  341. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  342. -- 从快捷栏移出
  343. local pos = QuickUseProxy:GetQucikUsePosByMakeIndex(MakeIndex)
  344. QuickUseProxy:SetQuickUsePosData(pos, itemData, true)
  345. -- 加入背包
  346. HeroBagProxy:RequestHumBagToHeroBag(data.itemData.MakeIndex, data.itemData.Name)
  347. return true
  348. end
  349. end
  350. function ItemMoveProxy:TakeOnBestRing(data)
  351. -- 装备 背包 -> 主角装备
  352. local itemData = data.itemData
  353. local pos = data.pos
  354. local equipPos = data.equipPos
  355. local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip)
  356. local list = EquipProxy:GetEquipPosByStdModeList(itemData.StdMode)
  357. if not list or not next(list) then
  358. if not global.isWinPlayMode then
  359. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  360. end
  361. return true
  362. end
  363. global.Facade:sendNotification(global.NoticeTable.TakeOnRequest,
  364. {
  365. itemData = itemData,
  366. pos = equipPos
  367. }
  368. )
  369. return false
  370. end
  371. function ItemMoveProxy:TakeOnBestRing_Hero( data )
  372. -- 装备 背包 -> 主角装备
  373. local itemData = data.itemData
  374. local pos = data.pos
  375. local equipPos = data.equipPos
  376. local HeroEquipProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroEquipProxy)
  377. local list = HeroEquipProxy:GetEquipPosByStdModeList(itemData.StdMode)
  378. if not list or not next(list) then
  379. if not global.isWinPlayMode then
  380. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  381. end
  382. return true
  383. end
  384. global.Facade:sendNotification(global.NoticeTable.HeroTakeOnRequest,
  385. {
  386. itemData = itemData,
  387. pos = equipPos
  388. }
  389. )
  390. return false
  391. end
  392. function ItemMoveProxy:TakeOnItem_Hero( data )
  393. -- 装备 背包 -> 主角装备
  394. local itemData = data.itemData
  395. local pos = data.pos
  396. local equipPos = data.equipPos
  397. local HeroEquipProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroEquipProxy)
  398. if equipPos == HeroEquipProxy:GetEquipTypeConfig().Equip_Type_Bujuk then
  399. local posItemData = HeroEquipProxy:GetEquipDataByPos(equipPos)
  400. if posItemData and posItemData.StdMode == 96 then
  401. local targetShape = posItemData.Shape
  402. local myAniCount = itemData.AniCount
  403. if itemData and itemData.StdMode == 3 and itemData.Shape == 4 and targetShape and myAniCount and targetShape == myAniCount then
  404. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  405. LuaSendMsg(global.MsgType.MSG_CS_ITEM_FIX_ITEMS, itemData.MakeIndex, posItemData.MakeIndex, 0, 0)
  406. return true
  407. end
  408. end
  409. end
  410. local list = HeroEquipProxy:GetEquipPosByStdModeList(itemData.StdMode)
  411. if not list or not next(list) then
  412. if not global.isWinPlayMode then
  413. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  414. end
  415. return true
  416. end
  417. local equipPosList = HeroEquipProxy:GetEquipMappingConfig(equipPos)
  418. equipPosList = equipPosList or { equipPos }
  419. for k, v in pairs(list) do
  420. for _, equipPosition in ipairs(equipPosList) do -- 头部位置 显示上只有头 实际穿了头和斗笠两个位置
  421. if v == equipPosition then
  422. global.Facade:sendNotification(global.NoticeTable.HeroTakeOnRequest,
  423. {
  424. itemData = itemData,
  425. pos = equipPosition
  426. }
  427. )
  428. return false
  429. end
  430. end
  431. end
  432. if not global.isWinPlayMode then
  433. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  434. end
  435. return true
  436. end
  437. function ItemMoveProxy:TakeOnItem_Hero_FromHumBag(data)
  438. -- 人物背包 -> 英雄装备
  439. dump(data,"TakeOnItem_Hero_FromHumBag_____")
  440. local itemData = data.itemData
  441. local pos = data.pos
  442. local equipPos = data.equipPos
  443. local HeroEquipProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroEquipProxy)
  444. if equipPos == HeroEquipProxy:GetEquipTypeConfig().Equip_Type_Bujuk then
  445. local posItemData = HeroEquipProxy:GetEquipDataByPos(equipPos)
  446. if posItemData and posItemData.StdMode == 96 then
  447. local targetShape = posItemData.Shape
  448. local myAniCount = itemData.AniCount
  449. if itemData and itemData.StdMode == 3 and itemData.Shape == 4 and targetShape and myAniCount and targetShape == myAniCount then
  450. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  451. LuaSendMsg(global.MsgType.MSG_CS_ITEM_FIX_ITEMS, itemData.MakeIndex, posItemData.MakeIndex, 0, 0)
  452. return true
  453. end
  454. end
  455. end
  456. local list = HeroEquipProxy:GetEquipPosByStdModeList(itemData.StdMode)
  457. if not list or not next(list) then
  458. if not global.isWinPlayMode then
  459. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  460. end
  461. return true
  462. end
  463. local equipPosList = HeroEquipProxy:GetEquipMappingConfig(equipPos)
  464. equipPosList = equipPosList or { equipPos }
  465. for k, v in pairs(list) do
  466. for _, equipPosition in ipairs(equipPosList) do -- 头部位置 显示上只有头 实际穿了头和斗笠两个位置
  467. if v == equipPosition then
  468. global.Facade:sendNotification(global.NoticeTable.HeroTakeOnRequestFromHumBag,
  469. {
  470. itemData = itemData,
  471. pos = equipPosition
  472. }
  473. )
  474. return false
  475. end
  476. end
  477. end
  478. if not global.isWinPlayMode then
  479. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  480. end
  481. return true
  482. end
  483. function ItemMoveProxy:TakeOnItem_FromHeroBag(data)
  484. -- 英雄背包 -> 主角装备
  485. local itemData = data.itemData
  486. local pos = data.pos
  487. local equipPos = data.equipPos
  488. local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip)
  489. if equipPos == EquipProxy:GetEquipTypeConfig().Equip_Type_Bujuk then
  490. local posItemData = EquipProxy:GetEquipDataByPos(equipPos)
  491. if posItemData and posItemData.StdMode == 96 then
  492. local targetShape = posItemData.Shape
  493. local myAniCount = itemData.AniCount
  494. if itemData and itemData.StdMode == 3 and itemData.Shape == 4 and targetShape and myAniCount and targetShape == myAniCount then
  495. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  496. LuaSendMsg(global.MsgType.MSG_CS_ITEM_FIX_ITEMS, itemData.MakeIndex, posItemData.MakeIndex, 0, 0)
  497. return true
  498. end
  499. end
  500. end
  501. local list = EquipProxy:GetEquipPosByStdModeList(itemData.StdMode)
  502. if not list or not next(list) then
  503. if not global.isWinPlayMode then
  504. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  505. end
  506. return true
  507. end
  508. local equipPosList = EquipProxy:GetEquipMappingConfig(equipPos)
  509. equipPosList = equipPosList or { equipPos }
  510. for k, v in pairs(list) do
  511. for _, equipPosition in ipairs(equipPosList) do -- 头部位置 显示上只有头 实际穿了头和斗笠两个位置
  512. if v == equipPosition then
  513. global.Facade:sendNotification(global.NoticeTable.TakeOnRequestFromHeroBag,
  514. {
  515. itemData = itemData,
  516. pos = equipPosition
  517. }
  518. )
  519. return false
  520. end
  521. end
  522. end
  523. if not global.isWinPlayMode then
  524. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  525. end
  526. return true
  527. end
  528. function ItemMoveProxy:TakeOnItem(data)
  529. -- 装备 背包 -> 主角装备
  530. local itemData = data.itemData
  531. local pos = data.pos
  532. local equipPos = data.equipPos
  533. local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip)
  534. if equipPos == EquipProxy:GetEquipTypeConfig().Equip_Type_Bujuk then
  535. local posItemData = EquipProxy:GetEquipDataByPos(equipPos)
  536. if posItemData and posItemData.StdMode == 96 then
  537. local targetShape = posItemData.Shape
  538. local myAniCount = itemData.AniCount
  539. if itemData and itemData.StdMode == 3 and itemData.Shape == 4 and targetShape and myAniCount and targetShape == myAniCount then
  540. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  541. LuaSendMsg(global.MsgType.MSG_CS_ITEM_FIX_ITEMS, itemData.MakeIndex, posItemData.MakeIndex, 0, 0)
  542. return true
  543. end
  544. end
  545. end
  546. local list = EquipProxy:GetEquipPosByStdModeList(itemData.StdMode)
  547. if not list or not next(list) then
  548. if not global.isWinPlayMode then
  549. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  550. end
  551. return true
  552. end
  553. local equipPosList = EquipProxy:GetEquipMappingConfig(equipPos)
  554. equipPosList = equipPosList or { equipPos }
  555. for k, v in pairs(list) do
  556. for _, equipPosition in ipairs(equipPosList) do -- 头部位置 显示上只有头 实际穿了头和斗笠两个位置
  557. if v == equipPosition then
  558. global.Facade:sendNotification(global.NoticeTable.TakeOnRequest,
  559. {
  560. itemData = itemData,
  561. pos = equipPosition
  562. }
  563. )
  564. return false
  565. end
  566. end
  567. end
  568. if not global.isWinPlayMode then
  569. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  570. end
  571. return true
  572. end
  573. --CancelMove_Hero
  574. function ItemMoveProxy:CancelHeroEquipMove_Hero(data)
  575. -- local itemData = data.itemData
  576. -- local pos = data.pos
  577. -- local HeroEquipProxy = global.Facade:retrieveProxy( global.ProxyTable.HeroEquipProxy )
  578. -- local MakeIndex = itemData.MakeIndex
  579. -- local equipItemData = HeroEquipProxy:GetEquipDataByMakeIndex(MakeIndex)
  580. -- -- 在拖动或者其他延时操作时,被自动穿戴替换道具,此时的异常处理
  581. -- if equipItemData then
  582. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  583. -- end
  584. return true
  585. end
  586. function ItemMoveProxy:TakeOffEquip_Hero(data)
  587. -- 脱下装备 英雄装备栏 -> 英雄背包
  588. dump(data,"TakeOffEquip_Hero___")
  589. local itemData = data.itemData
  590. local pos = data.pos
  591. local HeroEquipProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroEquipProxy)
  592. local MakeIndex = itemData.MakeIndex
  593. local equipItemData = HeroEquipProxy:GetEquipDataByMakeIndex(MakeIndex)
  594. -- 在拖动或者其他延时操作时,被自动穿戴替换道具,此时的异常处理
  595. if not equipItemData then
  596. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  597. return
  598. end
  599. global.Facade:sendNotification(global.NoticeTable.HeroTakeOffRequest, itemData)
  600. end
  601. function ItemMoveProxy:TakeOffEquip_Hero_To_HumBag(data)
  602. -- 脱下装备 英雄装备栏 -> 人物背包
  603. dump(data, "TakeOffEquip_Hero__to_HumBag")
  604. local itemData = data.itemData
  605. local pos = data.pos
  606. local HeroEquipProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroEquipProxy)
  607. local MakeIndex = itemData.MakeIndex
  608. local equipItemData = HeroEquipProxy:GetEquipDataByMakeIndex(MakeIndex)
  609. -- 在拖动或者其他延时操作时,被自动穿戴替换道具,此时的异常处理
  610. if not equipItemData then
  611. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  612. return
  613. end
  614. global.Facade:sendNotification(global.NoticeTable.HeroTakeOffRequestToHumBag, itemData)
  615. end
  616. function ItemMoveProxy:TakeOffEquip(data)
  617. -- 脱下装备 装备栏 -> 背包
  618. local itemData = data.itemData
  619. local pos = data.pos
  620. local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip)
  621. local MakeIndex = itemData.MakeIndex
  622. local equipItemData = EquipProxy:GetEquipDataByMakeIndex(MakeIndex)
  623. -- 在拖动或者其他延时操作时,被自动穿戴替换道具,此时的异常处理
  624. if not equipItemData then
  625. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  626. return
  627. end
  628. global.Facade:sendNotification(global.NoticeTable.TakeOffRequest, itemData)
  629. end
  630. function ItemMoveProxy:TakeOffEquip_To_HeroBag(data)
  631. dump(data, "TakeOffEquip_To_HeroBag")
  632. -- 脱下装备 人物装备栏 -> 英雄背包
  633. local itemData = data.itemData
  634. local pos = data.pos
  635. local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip)
  636. local MakeIndex = itemData.MakeIndex
  637. local equipItemData = EquipProxy:GetEquipDataByMakeIndex(MakeIndex)
  638. -- 在拖动或者其他延时操作时,被自动穿戴替换道具,此时的异常处理
  639. if not equipItemData then
  640. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  641. return
  642. end
  643. global.Facade:sendNotification(global.NoticeTable.TakeOffToHeroBagRequest, itemData)
  644. end
  645. --TODO:
  646. function ItemMoveProxy:QuickUseIntoSellRequire(data)
  647. -- 预出售 预修理 快捷栏 -> 预览界面
  648. local itemData = data.itemData
  649. local pos = data.pos
  650. local target = data.target
  651. end
  652. function ItemMoveProxy:AddItemIntoSellRepaire(data)
  653. -- 预出售 预修理 背包 -> 预览界面
  654. local itemData = data.itemData
  655. local pos = data.pos
  656. local target = data.target
  657. if not itemData then
  658. return true
  659. end
  660. local data = {
  661. Name = itemData.Name,
  662. MakeIndex = itemData.MakeIndex
  663. }
  664. local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.Bag)
  665. if target == ItemMoveProxy.ItemGoTo.SELL then
  666. local NPCSellProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCSellProxy)
  667. NPCSellProxy:SetOnSellingData(itemData)
  668. NPCSellProxy:RequestNpcStoreSellPre(data)
  669. elseif target == ItemMoveProxy.ItemGoTo.REPAIRE then
  670. local NPCRepaireProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCRepaireProxy)
  671. NPCRepaireProxy:SetOnRepairingData(itemData)
  672. NPCRepaireProxy:RequestNpcStoreRepairePre(data)
  673. elseif target == ItemMoveProxy.ItemGoTo.NPC_DO_SOMETHING then
  674. local NPCDoSomethingProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCDoSomethingProxy)
  675. NPCDoSomethingProxy:SetonDoThingsData(itemData)
  676. elseif target == ItemMoveProxy.ItemGoTo.NEWTYPE then
  677. local NPCNewTypeOkProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCNewTypeOkProxy)
  678. NPCNewTypeOkProxy:SetonDoThingsData(itemData)
  679. end
  680. local data = {
  681. itemData = itemData
  682. }
  683. global.Facade:sendNotification(global.NoticeTable.Layer_NPC_Sell_Repaire_UpDate, data)
  684. end
  685. --和背包丢弃同一接口, 快捷栏数据全部来自于背包
  686. function ItemMoveProxy:DropItemFromQuickUse(data)
  687. -- 丢弃 快捷栏 -> 地面
  688. local itemData = data.itemData
  689. if not itemData or not next(itemData) then
  690. return true
  691. end
  692. global.Facade:sendNotification(global.NoticeTable.IntoDropItem, itemData)
  693. return true
  694. end
  695. function ItemMoveProxy:PlayerEquipToPlayerEquip(data)
  696. -- 取消 装备栏 -> 装备栏
  697. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  698. return true
  699. end
  700. function ItemMoveProxy:CancelSellIntoBag(data)
  701. -- 取消 预出售 预修理 预览界面 -> 背包
  702. --移动端 直接取消
  703. --PC端 原位置 == 取消 新位置 移动到新位置 有物品的位置 交换位置并且添加该物品到移动
  704. local itemData = data.itemData
  705. local pos = data.pos
  706. local targetPosInBag = data.itemPosInbag
  707. local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.Bag)
  708. local posDataInbag = BagProxy:GetMakeIndexByBagPos(targetPosInBag)
  709. local beginPos = BagProxy:GetBagPosByMakeIndex(itemData.MakeIndex)
  710. local NPCSellProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCSellProxy)
  711. NPCSellProxy:ResetSellingState()
  712. if posDataInbag then
  713. if posDataInbag == itemData.MakeIndex then --不变
  714. -- 背包中的重新刷出来
  715. local data = {
  716. storage = {
  717. MakeIndex = itemData.MakeIndex,
  718. state = 1
  719. }
  720. }
  721. global.Facade:sendNotification(global.NoticeTable.Bag_State_Change, data)
  722. else --换位
  723. if global.isWinPlayMode then
  724. BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
  725. BagProxy:SetItemPosData(posDataInbag, beginPos)
  726. global.Facade:sendNotification(global.NoticeTable.Item_Move_begin_On_BagPosChang,
  727. {
  728. MakeIndex = posDataInbag,
  729. pos = pos
  730. }
  731. )
  732. else
  733. local newPos = BagProxy:NewItemPos()
  734. newPos = newPos < beginPos and newPos or beginPos
  735. -- 先结束事件
  736. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  737. -- 再发刷新
  738. BagProxy:SetItemPosData(itemData.MakeIndex, newPos)
  739. end
  740. return true
  741. end
  742. else --移动
  743. -- 先结束事件
  744. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  745. -- 再发刷新
  746. BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
  747. return true
  748. end
  749. end
  750. function ItemMoveProxy:CancelRequireIntoBag(data)
  751. -- 取消 预出售 预修理 预览界面 -> 背包
  752. -- 移动端 直接取消
  753. -- PC端 原位置 == 取消 新位置 移动到新位置 有物品的位置 交换位置并且添加该物品到移动
  754. local itemData = data.itemData
  755. local pos = data.pos
  756. local targetPosInBag = data.itemPosInbag
  757. local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.Bag)
  758. local posDataInbag = BagProxy:GetMakeIndexByBagPos(targetPosInBag)
  759. local beginPos = BagProxy:GetBagPosByMakeIndex(itemData.MakeIndex)
  760. local NPCRepaireProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCRepaireProxy)
  761. NPCRepaireProxy:ResetRepairingState()
  762. if posDataInbag then
  763. if posDataInbag == itemData.MakeIndex then --不变
  764. -- 背包中的重新刷出来
  765. local data = {
  766. storage = {
  767. MakeIndex = itemData.MakeIndex,
  768. state = 1
  769. }
  770. }
  771. global.Facade:sendNotification(global.NoticeTable.Bag_State_Change, data)
  772. else --换位
  773. if global.isWinPlayMode then
  774. BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
  775. BagProxy:SetItemPosData(posDataInbag, beginPos)
  776. global.Facade:sendNotification(global.NoticeTable.Item_Move_begin_On_BagPosChang,
  777. {
  778. MakeIndex = posDataInbag,
  779. pos = pos
  780. }
  781. )
  782. else
  783. local newPos = BagProxy:NewItemPos()
  784. newPos = newPos < beginPos and newPos or beginPos
  785. -- 先结束事件
  786. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  787. -- 再发刷新
  788. BagProxy:SetItemPosData(itemData.MakeIndex, newPos)
  789. end
  790. return true
  791. end
  792. else --移动
  793. -- 先结束事件
  794. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  795. -- 再发刷新
  796. BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
  797. return true
  798. end
  799. end
  800. function ItemMoveProxy:CancelDoSomethingIntoBag(data)
  801. -- 取消 请求 -> 背包
  802. -- 移动端 直接取消
  803. -- PC端 原位置 == 取消 新位置 移动到新位置 有物品的位置 交换位置并且添加该物品到移动
  804. local itemData = data.itemData
  805. local pos = data.pos
  806. local targetPosInBag = data.itemPosInbag
  807. local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.Bag)
  808. local posDataInbag = BagProxy:GetMakeIndexByBagPos(targetPosInBag)
  809. local beginPos = BagProxy:GetBagPosByMakeIndex(itemData.MakeIndex)
  810. local NPCDoSomethingProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCDoSomethingProxy)
  811. NPCDoSomethingProxy:CleanOnDoData()
  812. if posDataInbag then
  813. if posDataInbag == itemData.MakeIndex then --不变
  814. -- 背包中的重新刷出来
  815. local data = {
  816. storage = {
  817. MakeIndex = itemData.MakeIndex,
  818. state = 1
  819. }
  820. }
  821. global.Facade:sendNotification(global.NoticeTable.Bag_State_Change, data)
  822. else --换位
  823. if global.isWinPlayMode then
  824. BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
  825. BagProxy:SetItemPosData(posDataInbag, beginPos)
  826. global.Facade:sendNotification(global.NoticeTable.Item_Move_begin_On_BagPosChang,
  827. {
  828. MakeIndex = posDataInbag,
  829. pos = pos
  830. }
  831. )
  832. else
  833. local newPos = BagProxy:NewItemPos()
  834. newPos = newPos < beginPos and newPos or beginPos
  835. -- 先结束事件
  836. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  837. -- 再发刷新
  838. BagProxy:SetItemPosData(itemData.MakeIndex, newPos)
  839. end
  840. return true
  841. end
  842. else --移动
  843. -- 先结束事件
  844. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  845. -- 再发刷新
  846. BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
  847. return true
  848. end
  849. end
  850. function ItemMoveProxy:CancelNewTypeIntoBag(data)
  851. -- 取消 请求 -> 背包
  852. -- 移动端 直接取消
  853. -- PC端 原位置 == 取消 新位置 移动到新位置 有物品的位置 交换位置并且添加该物品到移动
  854. local itemData = data.itemData
  855. local pos = data.pos
  856. local targetPosInBag = data.itemPosInbag
  857. local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.Bag)
  858. local posDataInbag = BagProxy:GetMakeIndexByBagPos(targetPosInBag)
  859. local beginPos = BagProxy:GetBagPosByMakeIndex(itemData.MakeIndex)
  860. local NPCNewTypeOkProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCNewTypeOkProxy)
  861. NPCNewTypeOkProxy:CleanOnDoData()
  862. if posDataInbag then
  863. if posDataInbag == itemData.MakeIndex then --不变
  864. -- 背包中的重新刷出来
  865. local data = {
  866. storage = {
  867. MakeIndex = itemData.MakeIndex,
  868. state = 1
  869. }
  870. }
  871. global.Facade:sendNotification(global.NoticeTable.Bag_State_Change, data)
  872. else --换位
  873. if global.isWinPlayMode then
  874. BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
  875. BagProxy:SetItemPosData(posDataInbag, beginPos)
  876. global.Facade:sendNotification(global.NoticeTable.Item_Move_begin_On_BagPosChang,
  877. {
  878. MakeIndex = posDataInbag,
  879. pos = pos
  880. }
  881. )
  882. else
  883. local newPos = BagProxy:NewItemPos()
  884. newPos = newPos < beginPos and newPos or beginPos
  885. -- 先结束事件
  886. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  887. -- 再发刷新
  888. BagProxy:SetItemPosData(itemData.MakeIndex, newPos)
  889. end
  890. return true
  891. end
  892. else --移动
  893. -- 先结束事件
  894. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  895. -- 再发刷新
  896. BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
  897. return true
  898. end
  899. end
  900. function ItemMoveProxy:SellOrRequiredCancel(data)
  901. -- if global.isWinPlayMode then
  902. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  903. -- end
  904. end
  905. function ItemMoveProxy:AddItemIntoTrade(data)
  906. local TradeProxy = global.Facade:retrieveProxy(global.ProxyTable.TradeProxy)
  907. local state = TradeProxy:GetLockState()
  908. if state then
  909. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  910. return true
  911. end
  912. local itemData = data.itemData
  913. local pos = data.pos
  914. local targetPosInTrade = data.itemPosInTrade
  915. if not itemData then
  916. return true
  917. end
  918. local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
  919. local MakeIndex = itemData.MakeIndex
  920. local Name = itemData.Name
  921. local isBind,isSelf,isMeetType = CheckItemisBind(itemData, ItemConfigProxy:GetBindArticleType().TYPE_NOTRADE)
  922. if isMeetType then
  923. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  924. local data = {}
  925. data.str = string.format(GET_STRING(90020014), Name)
  926. data.btnType = 1
  927. global.Facade:sendNotification(global.NoticeTable.Layer_CommonTips_Open, data)
  928. return true
  929. else
  930. TradeProxy:RequestPutInItem(MakeIndex, Name)
  931. end
  932. end
  933. function ItemMoveProxy:DeleteItemIntoTrade(data)
  934. local TradeProxy = global.Facade:retrieveProxy(global.ProxyTable.TradeProxy)
  935. local state = TradeProxy:GetLockState()
  936. if state then
  937. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  938. return true
  939. end
  940. local itemData = data.itemData
  941. local pos = data.pos
  942. local targetPosInTrade = data.itemPosInTrade
  943. if not itemData then
  944. return true
  945. end
  946. local MakeIndex = itemData.MakeIndex
  947. local Name = itemData.Name
  948. TradeProxy:RequestPutOutItem(MakeIndex, Name)
  949. end
  950. function ItemMoveProxy:AddGoldToTrade(data)
  951. local TradeProxy = global.Facade:retrieveProxy(global.ProxyTable.TradeProxy)
  952. local state = TradeProxy:GetLockState()
  953. local moneyId = TradeProxy:GetTradeMoneyID()
  954. local MoneyProxy = global.Facade:retrieveProxy(global.ProxyTable.MoneyProxy)
  955. if state then
  956. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  957. return true
  958. end
  959. -- 交易金币 背包金币 -> 交易栏
  960. local function callback(btnType, data)
  961. local bagState = {
  962. goldState = 1
  963. }
  964. global.Facade:sendNotification(global.NoticeTable.Bag_State_Change, bagState)
  965. if data.editStr and data.editStr ~= "" then
  966. if type(data.editStr) == "string" then
  967. local num = tonumber(data.editStr)
  968. local TradeProxy = global.Facade:retrieveProxy(global.ProxyTable.TradeProxy)
  969. TradeProxy:RequestChangeMoney(num)
  970. end
  971. end
  972. end
  973. local data = {}
  974. local moneyName = moneyId and MoneyProxy:GetMoneyNameById(moneyId) or "金币"
  975. data.str = string.format(GET_STRING(90020016), moneyName)
  976. data.callback = callback
  977. data.btnType = 1
  978. data.showEdit = true
  979. data.editParams = {
  980. inputMode = 2
  981. }
  982. global.Facade:sendNotification(global.NoticeTable.Layer_CommonTips_Open, data)
  983. end
  984. function ItemMoveProxy:PutOutTradingGold(data)
  985. local TradeProxy = global.Facade:retrieveProxy(global.ProxyTable.TradeProxy)
  986. local state = TradeProxy:GetLockState()
  987. if state then
  988. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  989. return true
  990. end
  991. local tradingCount = 0
  992. local tradingCount = TradeProxy:GetSelfGoldNum() or 0
  993. if tradingCount > 0 then
  994. TradeProxy:RequestChangeMoney(0)
  995. end
  996. end
  997. --取出
  998. function ItemMoveProxy:GetOutStorageItemsToBag(data)
  999. local data = data.itemData
  1000. local StorageProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCStorageProxy)
  1001. StorageProxy:RequestPutOutStorageData(data.MakeIndex, data.Name)
  1002. end
  1003. --放入
  1004. function ItemMoveProxy:AddItemIntoStorage(data)
  1005. local data = data.itemData
  1006. local StorageProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCStorageProxy)
  1007. StorageProxy:RequestSaveToStorage(data.MakeIndex, data.Name)
  1008. end
  1009. function ItemMoveProxy:CancelPutOutStorage(data)
  1010. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  1011. end
  1012. -- 摆摊取出
  1013. function ItemMoveProxy:PutStallItemInBag(data)
  1014. local StallProxy = global.Facade:retrieveProxy(global.ProxyTable.StallProxy)
  1015. local itemData = data.itemData
  1016. local pos = data.pos
  1017. local targetPosInTrade = data.itemPosInTrade
  1018. if not CheckCanDoSomething() then
  1019. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  1020. return true
  1021. end
  1022. if not itemData then
  1023. -- 先结束事件
  1024. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  1025. return true
  1026. end
  1027. -- 先结束事件
  1028. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  1029. local MakeIndex = itemData.MakeIndex
  1030. local Name = itemData.Name
  1031. StallProxy:PutOutItem(MakeIndex)
  1032. end
  1033. -- 摆摊放入
  1034. function ItemMoveProxy:PutItemInStall(data)
  1035. local StallProxy = global.Facade:retrieveProxy(global.ProxyTable.StallProxy)
  1036. local itemData = data.itemData
  1037. local pos = data.pos
  1038. local targetPosInTrade = data.itemPosInTrade
  1039. if not CheckCanDoSomething() then
  1040. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  1041. return true
  1042. end
  1043. if not itemData then
  1044. return true
  1045. end
  1046. local MakeIndex = itemData.MakeIndex
  1047. local Name = itemData.Name
  1048. local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
  1049. local bindArticleType = ItemConfigProxy:GetBindArticleType()
  1050. local isBind, isSelf, isMeetType = CheckItemisBind(itemData, bindArticleType.TYPE_NOSTALL)
  1051. local noTrade = false --禁止摆摊
  1052. if not isMeetType and itemData.Article and itemData.Article ~= "" then
  1053. local parseArticle = string.split(itemData.Article, "|")
  1054. for k, v in pairs(parseArticle) do
  1055. if v == "9" then --物品禁止摆摊规则
  1056. noTrade = true
  1057. break
  1058. end
  1059. end
  1060. end
  1061. if isMeetType or noTrade then
  1062. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  1063. local data = {}
  1064. data.str = string.format(isBind and GET_STRING(90020005) or GET_STRING(90170005), Name)
  1065. data.btnType = 1
  1066. global.Facade:sendNotification(global.NoticeTable.Layer_CommonTips_Open, data)
  1067. return true
  1068. end
  1069. StallProxy:RequestPutInItem(MakeIndex)
  1070. end
  1071. -- itembox 取出
  1072. function ItemMoveProxy:PutITEMBOXItemInBag(data)
  1073. local boxindex = global.SUIManager:GetITEMBOXIndexByMakeIndex(data.itemData.MakeIndex)
  1074. if boxindex then
  1075. local npcProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
  1076. local submitData = {
  1077. index = boxindex,
  1078. npcid = npcProxy:GetCurrentNPCID()
  1079. }
  1080. global.SUIManager:RequestITEMBOXPutout(submitData)
  1081. end
  1082. end
  1083. -- itembox 放入
  1084. function ItemMoveProxy:PutItemInTEMBOX(data)
  1085. local function checkAble()
  1086. if data.stdmode == "*" then
  1087. return true
  1088. end
  1089. local slices = string.split(data.stdmode, ",")
  1090. for i, v in ipairs(slices) do
  1091. if tonumber(v) == data.itemData.StdMode then
  1092. return true
  1093. end
  1094. end
  1095. return false
  1096. end
  1097. if false == checkAble() then
  1098. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  1099. return nil
  1100. end
  1101. -- send msg
  1102. local npcProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
  1103. local submitData = {
  1104. makeindex = data.itemData.MakeIndex,
  1105. index = data.boxindex,
  1106. npcid = npcProxy:GetCurrentNPCID()
  1107. }
  1108. global.SUIManager:RequestITEMBOXPutin(submitData)
  1109. end
  1110. -- SSR itemBox
  1111. -- 取出
  1112. function ItemMoveProxy:PutSSRITEMBOXItemInBag(data)
  1113. local SSRUIManager = global.Facade:retrieveMediator("SSRUIManager")
  1114. local boxindex = SSRUIManager:GetITEMBOXIndexByMakeIndex(data.itemData.MakeIndex)
  1115. if boxindex then
  1116. global.Facade:sendNotification(global.NoticeTable.SSR_ITEMBOXWidget_Remove, { boxindex = boxindex })
  1117. if ssrGlobal_PutItemBoxItemToBag and type(ssrGlobal_PutItemBoxItemToBag) == "function" then
  1118. ssrGlobal_PutItemBoxItemToBag(boxindex, data.itemData)
  1119. end
  1120. local itemData = data.itemData
  1121. local pos = data.pos
  1122. local targetPosInBag = data.itemPosInbag
  1123. local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.Bag)
  1124. local posDataInbag = BagProxy:GetMakeIndexByBagPos(targetPosInBag)
  1125. local beginPos = BagProxy:GetBagPosByMakeIndex(itemData.MakeIndex)
  1126. if posDataInbag then
  1127. if posDataInbag == itemData.MakeIndex then --不变
  1128. -- 背包中的重新刷出来
  1129. local data = {
  1130. storage = {
  1131. MakeIndex = itemData.MakeIndex,
  1132. state = 1
  1133. }
  1134. }
  1135. global.Facade:sendNotification(global.NoticeTable.Bag_State_Change, data)
  1136. else --换位
  1137. if global.isWinPlayMode then
  1138. BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
  1139. BagProxy:SetItemPosData(posDataInbag, beginPos)
  1140. global.Facade:sendNotification(global.NoticeTable.Item_Move_begin_On_BagPosChang,
  1141. {
  1142. MakeIndex = posDataInbag,
  1143. pos = pos
  1144. }
  1145. )
  1146. else
  1147. local newPos = BagProxy:NewItemPos()
  1148. newPos = newPos < beginPos and newPos or beginPos
  1149. -- 先结束事件
  1150. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  1151. -- 再发刷新
  1152. BagProxy:SetItemPosData(itemData.MakeIndex, newPos)
  1153. end
  1154. return true
  1155. end
  1156. else --移动
  1157. -- 先结束事件
  1158. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  1159. -- 再发刷新
  1160. BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
  1161. return true
  1162. end
  1163. end
  1164. end
  1165. -- 放入
  1166. function ItemMoveProxy:PutItemInSSRITEMBOX(data)
  1167. local function checkAble()
  1168. if data.stdmode == "*" then
  1169. return true
  1170. end
  1171. local stdmodeList = {}
  1172. if type(data.stdmode) == "table" then
  1173. stdmodeList = data.stdmode
  1174. elseif type(data.stdmode) == "number" then
  1175. table.insert(stdmodeList, data.stdmode)
  1176. end
  1177. for i, v in ipairs(stdmodeList) do
  1178. if tonumber(v) == data.itemData.StdMode then
  1179. return true
  1180. end
  1181. end
  1182. return false
  1183. end
  1184. if false == checkAble() then
  1185. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  1186. return nil
  1187. end
  1188. global.Facade:sendNotification(global.NoticeTable.SSR_ITEMBOXWidget_Update, data)
  1189. if ssrGlobal_PutInItemBox and type(ssrGlobal_PutInItemBox) == "function" then
  1190. ssrGlobal_PutInItemBox(data.boxindex, data.itemData)
  1191. end
  1192. end
  1193. function ItemMoveProxy:TakeOffPetEquipLink(data)
  1194. -- 宠物装备栏 -> 背包 ( 不限制宠物
  1195. local itemData = data.itemData
  1196. local pos = data.pos
  1197. local PetsEquipProxy = global.Facade:retrieveProxy(global.ProxyTable.PetsEquipProxy)
  1198. local MakeIndex = itemData.MakeIndex
  1199. local equipItemData = PetsEquipProxy:GetEquipDataByMakeIndex(MakeIndex)
  1200. -- if not equipItemData then
  1201. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  1202. -- return
  1203. -- end
  1204. if type(data.linkFunc) == "function" then
  1205. data.linkFunc()
  1206. end
  1207. end
  1208. -----
  1209. function ItemMoveProxy:PutItemIntoSomeEquip(data)
  1210. -- 快捷栏 快捷栏 -> 主角装备
  1211. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  1212. local itemData = data.itemData
  1213. local pos = data.pos
  1214. local equipPos = data.equipPos
  1215. local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip)
  1216. if equipPos == EquipProxy:GetEquipTypeConfig().Equip_Type_Bujuk then
  1217. local posItemData = EquipProxy:GetEquipDataByPos(equipPos)
  1218. if posItemData and posItemData.StdMode == 96 then
  1219. local targetShape = posItemData.Shape
  1220. local myAniCount = itemData.AniCount
  1221. if itemData and itemData.StdMode == 3 and itemData.Shape == 4 and targetShape and myAniCount and targetShape == myAniCount then
  1222. LuaSendMsg(global.MsgType.MSG_CS_ITEM_FIX_ITEMS, itemData.MakeIndex, posItemData.MakeIndex, 0, 0)
  1223. end
  1224. end
  1225. end
  1226. return true
  1227. end
  1228. function ItemMoveProxy:HumBagToHeroBag(data)
  1229. -- 人物背包 -> 英雄背包
  1230. local itemData = data.itemData
  1231. local HeroBagProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroBagProxy)
  1232. if not HeroBagProxy:isToBeFull(true) then
  1233. HeroBagProxy:RequestHumBagToHeroBag(data.itemData.MakeIndex, data.itemData.Name)
  1234. end
  1235. end
  1236. function ItemMoveProxy:HeroBagToHumBag(data)
  1237. -- 人物背包 -> 英雄背包
  1238. local itemData = data.itemData
  1239. local HeroBagProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroBagProxy)
  1240. HeroBagProxy:RequestHeroBagToHumBag(data.itemData.MakeIndex, data.itemData.Name)
  1241. end
  1242. -----
  1243. function ItemMoveProxy:SkillShowToTopUI(data)
  1244. if not data.skillId then
  1245. return
  1246. end
  1247. global.Facade:sendNotification(global.NoticeTable.TopTouch_Add_Child, { skill = data.skillId, pos = data.pos })
  1248. SLBridge:onLUAEvent(LUA_EVENT_SKILL_ADD_TO_UI_WIN32, { skill = data.skillId, pos = data.pos })
  1249. end
  1250. ----------------------------
  1251. function ItemMoveProxy:ExchangeItemMoveItem(param)
  1252. local resetOldCallBack = param.resetOld
  1253. local newItemData = param.goMovingData
  1254. --step1:RESET Old ITEM STATE
  1255. resetOldCallBack()
  1256. --step2:CHANGE MOVING DATA ON newItemData
  1257. --TODO:将当前移动的节点用新的替换
  1258. end
  1259. function ItemMoveProxy:GetItemMoveFrome()
  1260. return self.movingItemFrom
  1261. end
  1262. function ItemMoveProxy:SetMoveItemData(data, from, skillId)
  1263. --有来源即可 可能移动的节点 不一定是道具
  1264. if from then
  1265. self.onMovingItem = data
  1266. self.onMoving = true
  1267. self.onMovingSkill = skillId
  1268. if skillId then
  1269. global.Facade:sendNotification(global.NoticeTable.TopTouch_Remove_Child, { skill = skillId })
  1270. SLBridge:onLUAEvent(LUA_EVENT_SKILL_REMOVE_TO_UI_WIN32, { skill = skillId })
  1271. end
  1272. else
  1273. self.onMovingItem = nil
  1274. self.onMoving = false
  1275. self.onMovingSkill = nil
  1276. end
  1277. self.movingItemFrom = from
  1278. end
  1279. function ItemMoveProxy:SetLinkFunc(func)
  1280. if type(func) == "function" then
  1281. self.linkFunc = func
  1282. else
  1283. self.linkFunc = nil
  1284. end
  1285. end
  1286. function ItemMoveProxy:GetItemCanGoTargetFunc(target)
  1287. if not self.movingItemFrom or not target then
  1288. return false
  1289. end
  1290. local itemTargetMap = ItemMoveProxy.ItemFromAndGoToMap[self.movingItemFrom]
  1291. if not itemTargetMap or not next(itemTargetMap) then
  1292. return false
  1293. end
  1294. local callBackFun = itemTargetMap[target]
  1295. return callBackFun
  1296. end
  1297. -- 如果不需要结束移动,或者在自己的逻辑中已经结束 则方法返回bool true
  1298. function ItemMoveProxy:CheckAndCallBack(data)
  1299. local target = data.target
  1300. local callBackFunc = self:GetItemCanGoTargetFunc(target)
  1301. if not callBackFunc then
  1302. if not global.isWinPlayMode then
  1303. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  1304. end
  1305. return
  1306. end
  1307. data.itemData = self.onMovingItem
  1308. data.linkFunc = self.linkFunc
  1309. data.skillId = self.onMovingSkill
  1310. if not callBackFunc(self, data) then
  1311. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  1312. end
  1313. end
  1314. function ItemMoveProxy:GetMovingItemState()
  1315. return self.onMoving
  1316. end
  1317. function ItemMoveProxy:GetMovingItemData()
  1318. return self.onMovingItem
  1319. end
  1320. function ItemMoveProxy:GetMovingSkill()
  1321. return self.onMovingSkill
  1322. end
  1323. function ItemMoveProxy:onRegister()
  1324. ItemMoveProxy.super.onRegister(self)
  1325. --放在最后 先注册方法
  1326. ItemMoveProxy.ItemFromAndGoToMap = {
  1327. [ItemMoveProxy.ItemFrom.BAG] = {
  1328. [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.ChangeItemPos,
  1329. [ItemMoveProxy.ItemGoTo.PALYER_EQUIP] = ItemMoveProxy.TakeOnItem,
  1330. [ItemMoveProxy.ItemGoTo.QUICK_USE] = ItemMoveProxy.AddToQuickUse,
  1331. [ItemMoveProxy.ItemGoTo.STORAGE] = ItemMoveProxy.AddItemIntoStorage,
  1332. [ItemMoveProxy.ItemGoTo.SELL] = ItemMoveProxy.AddItemIntoSellRepaire,
  1333. [ItemMoveProxy.ItemGoTo.DROP] = ItemMoveProxy.DropItem,
  1334. [ItemMoveProxy.ItemGoTo.REPAIRE] = ItemMoveProxy.AddItemIntoSellRepaire,
  1335. [ItemMoveProxy.ItemGoTo.TRADE] = ItemMoveProxy.AddItemIntoTrade,
  1336. [ItemMoveProxy.ItemGoTo.BEST_RINGS] = ItemMoveProxy.TakeOnBestRing,
  1337. [ItemMoveProxy.ItemGoTo.AUTO_TRADE] = ItemMoveProxy.PutItemInStall,
  1338. [ItemMoveProxy.ItemGoTo.ITEMBOX] = ItemMoveProxy.PutItemInTEMBOX,
  1339. [ItemMoveProxy.ItemGoTo.NPC_DO_SOMETHING] = ItemMoveProxy.AddItemIntoSellRepaire,
  1340. [ItemMoveProxy.ItemGoTo.TreasureBox] = ItemMoveProxy.PutItemInTreasureBox,
  1341. [ItemMoveProxy.ItemGoTo.HERO_BAG] = ItemMoveProxy.HumBagToHeroBag,
  1342. [ItemMoveProxy.ItemGoTo.NEWTYPE] = ItemMoveProxy.AddItemIntoSellRepaire,
  1343. [ItemMoveProxy.ItemGoTo.HERO_EQUIP] = ItemMoveProxy.TakeOnItem_Hero_FromHumBag,
  1344. [ItemMoveProxy.ItemGoTo.SSR_ITEM_BOX] = ItemMoveProxy.PutItemInSSRITEMBOX,
  1345. },
  1346. [ItemMoveProxy.ItemFrom.PALYER_EQUIP] = {
  1347. [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.TakeOffEquip,
  1348. [ItemMoveProxy.ItemGoTo.PALYER_EQUIP] = ItemMoveProxy.PlayerEquipToPlayerEquip,
  1349. [ItemMoveProxy.ItemGoTo.HERO_BAG] = ItemMoveProxy.TakeOffEquip_To_HeroBag,
  1350. },
  1351. [ItemMoveProxy.ItemFrom.QUICK_USE] = {
  1352. [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.DeleteQuickUse,
  1353. [ItemMoveProxy.ItemGoTo.QUICK_USE] = ItemMoveProxy.ChangeItemPosQuickUse,
  1354. -- [ItemMoveProxy.ItemGoTo.STORAGE] = ItemMoveProxy.AddItemIntoStorage,
  1355. -- [ItemMoveProxy.ItemGoTo.SELL] = ItemMoveProxy.QuickUseIntoSellRequire,
  1356. [ItemMoveProxy.ItemGoTo.DROP] = ItemMoveProxy.DropItemFromQuickUse,
  1357. -- [ItemMoveProxy.ItemGoTo.REPAIRE] = ItemMoveProxy.QuickUseIntoSellRequire,
  1358. [ItemMoveProxy.ItemGoTo.PALYER_EQUIP] = ItemMoveProxy.PutItemIntoSomeEquip,
  1359. [ItemMoveProxy.ItemGoTo.HERO_BAG] = ItemMoveProxy.DeleteQuickUse_ToHeroBag,
  1360. },
  1361. [ItemMoveProxy.ItemFrom.STORAGE] = {
  1362. [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.GetOutStorageItemsToBag,
  1363. [ItemMoveProxy.ItemGoTo.STORAGE] = ItemMoveProxy.CancelPutOutStorage,
  1364. },
  1365. [ItemMoveProxy.ItemFrom.BAG_GOLD] = {
  1366. [ItemMoveProxy.ItemGoTo.DROP] = ItemMoveProxy.DropGold,
  1367. [ItemMoveProxy.ItemGoTo.TRADE] = ItemMoveProxy.AddGoldToTrade,
  1368. [ItemMoveProxy.ItemGoTo.TRADE_GOLD] = ItemMoveProxy.AddGoldToTrade,
  1369. },
  1370. [ItemMoveProxy.ItemFrom.SELL] = {
  1371. [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.CancelSellIntoBag,
  1372. [ItemMoveProxy.ItemGoTo.QUICK_USE] = ItemMoveProxy.ChangeItemPos,
  1373. [ItemMoveProxy.ItemGoTo.SELL] = ItemMoveProxy.SellOrRequiredCancel
  1374. },
  1375. [ItemMoveProxy.ItemFrom.REPAIRE] = {
  1376. [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.CancelRequireIntoBag,
  1377. [ItemMoveProxy.ItemGoTo.QUICK_USE] = ItemMoveProxy.ChangeItemPos,
  1378. [ItemMoveProxy.ItemGoTo.REPAIRE] = ItemMoveProxy.SellOrRequiredCancel
  1379. },
  1380. [ItemMoveProxy.ItemFrom.TRADE] = {
  1381. [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.DeleteItemIntoTrade,
  1382. },
  1383. [ItemMoveProxy.ItemFrom.TRADE_GOLD] = {
  1384. [ItemMoveProxy.ItemGoTo.BAG_GOLD] = ItemMoveProxy.PutOutTradingGold,
  1385. },
  1386. [ItemMoveProxy.ItemFrom.BEST_RINGS] = {
  1387. [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.TakeOffEquip,
  1388. },
  1389. [ItemMoveProxy.ItemFrom.AUTO_TRADE] = {
  1390. [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.PutStallItemInBag,
  1391. },
  1392. [ItemMoveProxy.ItemFrom.ITEMBOX] = {
  1393. [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.PutITEMBOXItemInBag,
  1394. },
  1395. [ItemMoveProxy.ItemFrom.NPC_DO_SOMETHING] = {
  1396. [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.CancelDoSomethingIntoBag,
  1397. [ItemMoveProxy.ItemGoTo.QUICK_USE] = ItemMoveProxy.ChangeItemPos,
  1398. [ItemMoveProxy.ItemGoTo.NPC_DO_SOMETHING] = ItemMoveProxy.SellOrRequiredCancel
  1399. },
  1400. [ItemMoveProxy.ItemFrom.HERO_BAG] = {
  1401. [ItemMoveProxy.ItemGoTo.HERO_BAG] = ItemMoveProxy.ChangeItemPos_Hero,
  1402. [ItemMoveProxy.ItemGoTo.HERO_EQUIP] = ItemMoveProxy.TakeOnItem_Hero,
  1403. [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.HeroBagToHumBag,
  1404. [ItemMoveProxy.ItemGoTo.DROP] = ItemMoveProxy.DropItem_Hero,
  1405. [ItemMoveProxy.ItemGoTo.HERO_BEST_RINGS] = ItemMoveProxy.TakeOnBestRing_Hero,
  1406. [ItemMoveProxy.ItemGoTo.PALYER_EQUIP] = ItemMoveProxy.TakeOnItem_FromHeroBag,
  1407. },
  1408. [ItemMoveProxy.ItemFrom.HERO_EQUIP] = {
  1409. [ItemMoveProxy.ItemGoTo.HERO_BAG] = ItemMoveProxy.TakeOffEquip_Hero,
  1410. [ItemMoveProxy.ItemGoTo.HERO_EQUIP] = ItemMoveProxy.CancelHeroEquipMove_Hero,
  1411. [ItemMoveProxy.ItemGoTo.DROP] = ItemMoveProxy.CancelHeroEquipMove_Hero,
  1412. [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.TakeOffEquip_Hero_To_HumBag,
  1413. },
  1414. [ItemMoveProxy.ItemFrom.HERO_BEST_RINGS] = {
  1415. [ItemMoveProxy.ItemGoTo.HERO_BAG] = ItemMoveProxy.TakeOffEquip_Hero,
  1416. },
  1417. [ItemMoveProxy.ItemFrom.NEWTYPE] = {
  1418. [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.CancelNewTypeIntoBag,
  1419. [ItemMoveProxy.ItemGoTo.QUICK_USE] = ItemMoveProxy.ChangeItemPos,
  1420. [ItemMoveProxy.ItemGoTo.NEWTYPE] = ItemMoveProxy.SellOrRequiredCancel
  1421. },
  1422. [ItemMoveProxy.ItemFrom.SSR_ITEM_BOX] = {
  1423. [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.PutSSRITEMBOXItemInBag,
  1424. },
  1425. [ItemMoveProxy.ItemFrom.PETS_EQUIP] = {
  1426. [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.TakeOffPetEquipLink,
  1427. },
  1428. [ItemMoveProxy.ItemFrom.SKILL_WIN] = {
  1429. [ItemMoveProxy.ItemGoTo.TOPUI] = ItemMoveProxy.SkillShowToTopUI,
  1430. }
  1431. }
  1432. end
  1433. function ItemMoveProxy:AddMoveTypeAndFunc(from, to, fromToEvent, toFromEvent)
  1434. local type = 100 + self._guiTypeNum
  1435. if not ItemMoveProxy.ItemFrom[from] then
  1436. ItemMoveProxy.ItemFrom[from] = type
  1437. end
  1438. if not ItemMoveProxy.ItemGoTo[from] then
  1439. ItemMoveProxy.ItemGoTo[from] = type
  1440. end
  1441. self._guiTypeNum = self._guiTypeNum + 1
  1442. local toType = 100 + self._guiTypeNum
  1443. if not ItemMoveProxy.ItemFrom[to] then
  1444. ItemMoveProxy.ItemFrom[to] = toType
  1445. end
  1446. if not ItemMoveProxy.ItemGoTo[to] then
  1447. ItemMoveProxy.ItemGoTo[to] = toType
  1448. end
  1449. local fromType = ItemMoveProxy.ItemFrom[from]
  1450. local toType = ItemMoveProxy.ItemGoTo[to]
  1451. if fromToEvent then
  1452. if not ItemMoveProxy.ItemFromAndGoToMap[fromType] then
  1453. ItemMoveProxy.ItemFromAndGoToMap[fromType] = {
  1454. [toType] = fromToEvent
  1455. }
  1456. else
  1457. ItemMoveProxy.ItemFromAndGoToMap[fromType][toType] = fromToEvent
  1458. end
  1459. end
  1460. if toFromEvent then
  1461. if not ItemMoveProxy.ItemFromAndGoToMap[toType] then
  1462. ItemMoveProxy.ItemFromAndGoToMap[toType] = {
  1463. [fromType] = toFromEvent
  1464. }
  1465. else
  1466. ItemMoveProxy.ItemFromAndGoToMap[toType][fromType] = toFromEvent
  1467. end
  1468. end
  1469. end
  1470. return ItemMoveProxy