| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572 |
- local RemoteProxy = requireProxy("remote/RemoteProxy")
- local ItemMoveProxy = class("ItemMoveProxy", RemoteProxy)
- ItemMoveProxy.NAME = global.ProxyTable.ItemMoveProxy
- ItemMoveProxy.ItemFrom = {
- BAG = 1, -- 背包
- PALYER_EQUIP = 2, -- 玩家身上
- QUICK_USE = 3, -- 快捷栏
- STORAGE = 4, -- 仓库
- BAG_GOLD = 5, -- 背包金币
- SELL = 6, -- 摆摊
- REPAIRE = 7, -- npc商店
- TRADE = 8, -- 面对面交易
- TRADE_GOLD = 10, -- 交易
- BEST_RINGS = 11, -- 极品首饰
- AUTO_TRADE = 12, -- 摆摊
- ITEMBOX = 13, -- 自定义UI ITEMBOX
- NPC_DO_SOMETHING = 14, -- NPC自定义放入框
- NEWTYPE = 15,
- HERO_BAG = 66, --英雄背包
- HERO_EQUIP = 67, -- 英雄装备
- HERO_BEST_RINGS = 68, -- 英雄极品首饰
- SSR_ITEM_BOX = 77, -- ssr 自定义ItemBox
- PETS_EQUIP = 78, -- 宠物装备
- SKILL_WIN = 79, -- PC 技能
- OTHER = 99 -- 其他
- }
- ItemMoveProxy.ItemGoTo = {
- BAG = 1,
- PALYER_EQUIP = 2,
- QUICK_USE = 3,
- STORAGE = 4,
- SELL = 5,
- DROP = 6,
- REPAIRE = 7,
- TRADE = 8,
- TRADE_GOLD = 10,
- BAG_GOLD = 11, --背包金币
- BEST_RINGS = 12, -- 极品首饰
- AUTO_TRADE = 13, -- 摆摊
- ITEMBOX = 14, -- 自定义UI ITEMBOX
- NPC_DO_SOMETHING = 15, -- NPC自定义放入框
- TreasureBox = 16,
- NEWTYPE = 17,
- HERO_BAG = 66, --英雄背包
- HERO_EQUIP = 67, -- 英雄装备
- HERO_BEST_RINGS = 68, -- 英雄极品首饰
- SSR_ITEM_BOX = 77, -- ssr 自定义ItemBox
- TOPUI = 78,
- }
- function ItemMoveProxy:ctor()
- ItemMoveProxy.super.ctor(self)
- self.onMovingItem = nil
- self.onMoving = false
- self.movingItemFrom = nil
- self.linkFunc = nil
- self.onMovingSkill = nil
- self._guiTypeNum = 0
- end
- function ItemMoveProxy:DropItem(data)
- local item = data.itemData
- -- 背包 -> 地面
- if not item or next(item) == nil then
- return true
- end
- global.Facade:sendNotification(global.NoticeTable.IntoDropItem, item)
- return false
- end
- function ItemMoveProxy:DropItem_Hero(data)
- local item = data.itemData
- -- 英雄背包 -> 地面
- if not item or next(item) == nil then
- return true
- end
- global.Facade:sendNotification(global.NoticeTable.IntoDropItem_Hero, item)
- return false
- end
- function ItemMoveProxy:DropGold(data)
- -- 丢弃金币 背包金币 -> 地面
- local function callback(btnType, data)
- local bagState = {
- goldState = 1
- }
- global.Facade:sendNotification(global.NoticeTable.Bag_State_Change, bagState)
- if data.editStr and data.editStr ~= "" then
- if type(data.editStr) == "string" then
- local num = tonumber(data.editStr)
- LuaSendMsg(global.MsgType.MSG_CS_MAP_GOOD_DISCARD, num, 0, 0, 0, 0, 0)
- end
- end
- end
- local data = {}
- data.str = GET_STRING(90020002)
- data.callback = callback
- data.btnType = 1
- data.showEdit = true
- data.editParams = {
- inputMode = 2
- }
- global.Facade:sendNotification(global.NoticeTable.Layer_CommonTips_Open, data)
- end
- function ItemMoveProxy:ChangeItemPos(data)
- -- 道具换位 背包 -> 背包
- local itemData = data.itemData
- local pos = data.pos
- local targetPosInBag = data.itemPosInbag --点击到的位置
- local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.Bag)
- local posMakeIndexInbag = BagProxy:GetMakeIndexByBagPos(targetPosInBag)
- local beginPos = BagProxy:GetBagPosByMakeIndex(itemData.MakeIndex)
- local posDataInBag = BagProxy:GetItemDataByMakeIndex(posMakeIndexInbag)
- local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
- if posMakeIndexInbag then
- if posMakeIndexInbag == itemData.MakeIndex then --不变
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- elseif posDataInBag and posDataInBag.Index == itemData.Index and ItemConfigProxy:CheckItemOverLapById(itemData.Index) then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- BagProxy:RequestItemTwoToOne(posMakeIndexInbag, itemData.MakeIndex)
- return true
- else --换位
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- BagProxy:ExchangePos(itemData.MakeIndex, targetPosInBag, posMakeIndexInbag, beginPos)
- if global.isWinPlayMode then
- global.Facade:sendNotification(global.NoticeTable.Item_Move_begin_On_BagPosChang,
- {
- MakeIndex = posMakeIndexInbag,
- pos = pos
- }
- )
- return true
- end
- end
- else --移动
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- -- 再发刷新
- BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
- return true
- end
- end
- function ItemMoveProxy:ChangeItemPos_Hero(data)
- -- 道具换位 背包 -> 背包
- local itemData = data.itemData
- local pos = data.pos
- local targetPosInBag = data.itemPosInbag --点击到的位置
- local HeroBagProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroBagProxy)
- local posMakeIndexInbag = HeroBagProxy:GetMakeIndexByBagPos(targetPosInBag)
- local beginPos = HeroBagProxy:GetBagPosByMakeIndex(itemData.MakeIndex)
- local posDataInBag = HeroBagProxy:GetItemDataByMakeIndex(posMakeIndexInbag)
- local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
- if posMakeIndexInbag then
- if posMakeIndexInbag == itemData.MakeIndex then --不变
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- elseif posDataInBag and posDataInBag.Index == itemData.Index and ItemConfigProxy:CheckItemOverLapById(itemData.Index) then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- HeroBagProxy:RequestItemTwoToOne(posMakeIndexInbag, itemData.MakeIndex)
- return true
- else --换位
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- HeroBagProxy:ExchangePos(itemData.MakeIndex, targetPosInBag, posMakeIndexInbag, beginPos)
- if global.isWinPlayMode then
- global.Facade:sendNotification(global.NoticeTable.Item_Move_begin_On_HeroBagPosChang,
- {
- MakeIndex = posMakeIndexInbag,
- pos = pos
- }
- )
- return true
- end
- end
- else --移动
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- -- 再发刷新
- HeroBagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
- return true
- end
- end
- function ItemMoveProxy:PutItemInTreasureBox(data)
- -- 道具换位 背包 -> 宝箱
- local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- local layer = data.boxLayer
- local itemData = data.itemData
- local boxData = data.boxData
- local MakeIndex = itemData.MakeIndex
- local boxMakeIndex = boxData.MakeIndex
- if ItemConfigProxy:CheckItemTreasureBoxKey(itemData) then
- if MakeIndex and boxMakeIndex and itemData.Shape == boxData.Shape then
- LuaSendMsg(global.MsgType.MSG_SC_OPEN_TREASUREBOX, boxMakeIndex, MakeIndex)
- layer:setTouchEnabled(false)
- end
- end
- end
- function ItemMoveProxy:AddToQuickUse(data)
- -- 道具换位 背包 -> 快捷使用栏
- -- PC端将来自背包道具加入快捷栏 如果目标位置有道具则将该道具加入移动 该道具归属改变为来自背包
- -- 移动端 将道具加入快捷栏 如果快捷栏有道具 则将该道具移动到背包 不加入移动
- local itemData = data.itemData
- local pos = data.pos
- local posInQuickUse = data.posInQuickUse
- local AttrConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.AttrConfigProxy)
- local canPutInList = AttrConfigProxy:GetItemsConfigQuickUsable()
- if not posInQuickUse
- or posInQuickUse <= 0
- or posInQuickUse > global.MMO.QUICK_USE_SIZE
- or not canPutInList[itemData.StdMode] then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- return true
- end
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- local QuickUseProxy = global.Facade:retrieveProxy(global.ProxyTable.QuickUseProxy)
- local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.Bag)
- local posData = QuickUseProxy:GetQucikUseDataByPos(posInQuickUse)
- -- 从背包移出
- BagProxy:DelItemData(itemData)
- if posData then --替换
- -- 置空
- QuickUseProxy:SetQuickUsePosData(posInQuickUse, posData, true)
- -- 加入背包
- BagProxy:AddItemDataAndNotice(posData)
- -- PC 将背包的该道具加入移动
- if global.isWinPlayMode then
- global.Facade:sendNotification(global.NoticeTable.Item_Move_begin_On_BagPosChang,
- {
- MakeIndex = posData.MakeIndex,
- pos = pos
- }
- )
- end
- end
- -- 加入快捷栏
- QuickUseProxy:SetQuickUsePosData(posInQuickUse, itemData)
- return true
- end
- function ItemMoveProxy:AddToQuickUse_FromHeroBag(data)
- -- 道具换位 背包 -> 快捷使用栏
- -- PC端将来自背包道具加入快捷栏 如果目标位置有道具则将该道具加入移动 该道具归属改变为来自背包
- -- 移动端 将道具加入快捷栏 如果快捷栏有道具 则将该道具移动到背包 不加入移动
- local itemData = data.itemData
- local pos = data.pos
- local posInQuickUse = data.posInQuickUse
- local AttrConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.AttrConfigProxy)
- local canPutInList = AttrConfigProxy:GetItemsConfigQuickUsable()
- if not posInQuickUse
- or posInQuickUse <= 0
- or posInQuickUse > global.MMO.QUICK_USE_SIZE
- or not canPutInList[itemData.StdMode] then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- return true
- end
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- local QuickUseProxy = global.Facade:retrieveProxy(global.ProxyTable.QuickUseProxy)
- local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroBagProxy)
- local posData = QuickUseProxy:GetQucikUseDataByPos(posInQuickUse)
- -- 从背包移出
- BagProxy:DelItemData(itemData)
- if posData then --替换
- -- 置空
- QuickUseProxy:SetQuickUsePosData(posInQuickUse, posData, true)
- -- 加入背包
- BagProxy:AddItemDataAndNotice(posData)
- -- PC 将背包的该道具加入移动
- if global.isWinPlayMode then
- global.Facade:sendNotification(global.NoticeTable.Item_Move_begin_On_BagPosChang,
- {
- MakeIndex = posData.MakeIndex,
- pos = pos
- }
- )
- end
- end
- -- 加入快捷栏
- QuickUseProxy:SetQuickUsePosData(posInQuickUse, itemData)
- return true
- end
- function ItemMoveProxy:ChangeItemPosQuickUse(data)
- -- 道具换位 快捷栏 -> 快捷栏
- -- 换位 移动端直接换位
- -- PC端将目标位置的道具加入移动 来源位置为原移动道具位置
- local itemData = data.itemData
- local pos = data.pos
- local MakeIndex = itemData.MakeIndex
- local targetPos = data.posInQuickUse
- local QuickUseProxy = global.Facade:retrieveProxy(global.ProxyTable.QuickUseProxy)
- local myOldPos = QuickUseProxy:GetQucikUsePosByMakeIndex(MakeIndex)
- local targetItemData = QuickUseProxy:GetQucikUseDataByPos(targetPos)
- -- 清空原位置数据
- QuickUseProxy:SetQuickUsePosData(myOldPos, itemData, true)
- -- 清空目标位置数据
- if targetItemData then
- QuickUseProxy:SetQuickUsePosData(targetPos, targetItemData, true)
- end
- -- 目标位置数据加入
- QuickUseProxy:SetQuickUsePosData(targetPos, itemData)
- -- 原位置数据加入
- if targetItemData then
- QuickUseProxy:SetQuickUsePosData(myOldPos, targetItemData)
- end
- -- TODO: PC 端 将新创建节点的信息加入移动
- if global.isWinPlayMode then
- end
- end
- function ItemMoveProxy:DeleteQuickUse(data)
- -- 道具换位 快捷栏 -> 背包
- -- 如果背包格子满了 取消
- local itemData = data.itemData
- local MakeIndex = itemData.MakeIndex
- local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.Bag)
- local QuickUseProxy = global.Facade:retrieveProxy(global.ProxyTable.QuickUseProxy)
- local isFull = BagProxy:isToBeFull()
- if isFull then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- return true
- else
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- -- 从快捷栏移出
- local pos = QuickUseProxy:GetQucikUsePosByMakeIndex(MakeIndex)
- QuickUseProxy:SetQuickUsePosData(pos, itemData, true)
- -- 加入背包
- BagProxy:AddItemDataAndNotice(itemData)
- return true
- end
- end
- function ItemMoveProxy:DeleteQuickUse_ToHeroBag(data)
- -- 道具换位 快捷栏 -> 英雄背包
- -- 如果背包格子满了 取消
- local itemData = data.itemData
- local MakeIndex = itemData.MakeIndex
- local HeroBagProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroBagProxy)
- local QuickUseProxy = global.Facade:retrieveProxy(global.ProxyTable.QuickUseProxy)
- local isFull = HeroBagProxy:isToBeFull()
- if isFull then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- return true
- else
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- -- 从快捷栏移出
- local pos = QuickUseProxy:GetQucikUsePosByMakeIndex(MakeIndex)
- QuickUseProxy:SetQuickUsePosData(pos, itemData, true)
- -- 加入背包
- HeroBagProxy:RequestHumBagToHeroBag(data.itemData.MakeIndex, data.itemData.Name)
- return true
- end
- end
- function ItemMoveProxy:TakeOnBestRing(data)
- -- 装备 背包 -> 主角装备
- local itemData = data.itemData
- local pos = data.pos
- local equipPos = data.equipPos
- local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip)
- local list = EquipProxy:GetEquipPosByStdModeList(itemData.StdMode)
- if not list or not next(list) then
- if not global.isWinPlayMode then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- end
- return true
- end
- global.Facade:sendNotification(global.NoticeTable.TakeOnRequest,
- {
- itemData = itemData,
- pos = equipPos
- }
- )
- return false
- end
- function ItemMoveProxy:TakeOnBestRing_Hero( data )
- -- 装备 背包 -> 主角装备
- local itemData = data.itemData
- local pos = data.pos
- local equipPos = data.equipPos
- local HeroEquipProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroEquipProxy)
- local list = HeroEquipProxy:GetEquipPosByStdModeList(itemData.StdMode)
- if not list or not next(list) then
- if not global.isWinPlayMode then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- end
- return true
- end
- global.Facade:sendNotification(global.NoticeTable.HeroTakeOnRequest,
- {
- itemData = itemData,
- pos = equipPos
- }
- )
- return false
- end
- function ItemMoveProxy:TakeOnItem_Hero( data )
- -- 装备 背包 -> 主角装备
- local itemData = data.itemData
- local pos = data.pos
- local equipPos = data.equipPos
- local HeroEquipProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroEquipProxy)
- if equipPos == HeroEquipProxy:GetEquipTypeConfig().Equip_Type_Bujuk then
- local posItemData = HeroEquipProxy:GetEquipDataByPos(equipPos)
- if posItemData and posItemData.StdMode == 96 then
- local targetShape = posItemData.Shape
- local myAniCount = itemData.AniCount
- if itemData and itemData.StdMode == 3 and itemData.Shape == 4 and targetShape and myAniCount and targetShape == myAniCount then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- LuaSendMsg(global.MsgType.MSG_CS_ITEM_FIX_ITEMS, itemData.MakeIndex, posItemData.MakeIndex, 0, 0)
- return true
- end
- end
- end
- local list = HeroEquipProxy:GetEquipPosByStdModeList(itemData.StdMode)
- if not list or not next(list) then
- if not global.isWinPlayMode then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- end
- return true
- end
- local equipPosList = HeroEquipProxy:GetEquipMappingConfig(equipPos)
- equipPosList = equipPosList or { equipPos }
- for k, v in pairs(list) do
- for _, equipPosition in ipairs(equipPosList) do -- 头部位置 显示上只有头 实际穿了头和斗笠两个位置
- if v == equipPosition then
- global.Facade:sendNotification(global.NoticeTable.HeroTakeOnRequest,
- {
- itemData = itemData,
- pos = equipPosition
- }
- )
- return false
- end
- end
- end
- if not global.isWinPlayMode then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- end
- return true
- end
- function ItemMoveProxy:TakeOnItem_Hero_FromHumBag(data)
- -- 人物背包 -> 英雄装备
- dump(data,"TakeOnItem_Hero_FromHumBag_____")
- local itemData = data.itemData
- local pos = data.pos
- local equipPos = data.equipPos
- local HeroEquipProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroEquipProxy)
- if equipPos == HeroEquipProxy:GetEquipTypeConfig().Equip_Type_Bujuk then
- local posItemData = HeroEquipProxy:GetEquipDataByPos(equipPos)
- if posItemData and posItemData.StdMode == 96 then
- local targetShape = posItemData.Shape
- local myAniCount = itemData.AniCount
- if itemData and itemData.StdMode == 3 and itemData.Shape == 4 and targetShape and myAniCount and targetShape == myAniCount then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- LuaSendMsg(global.MsgType.MSG_CS_ITEM_FIX_ITEMS, itemData.MakeIndex, posItemData.MakeIndex, 0, 0)
- return true
- end
- end
- end
- local list = HeroEquipProxy:GetEquipPosByStdModeList(itemData.StdMode)
- if not list or not next(list) then
- if not global.isWinPlayMode then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- end
- return true
- end
- local equipPosList = HeroEquipProxy:GetEquipMappingConfig(equipPos)
- equipPosList = equipPosList or { equipPos }
- for k, v in pairs(list) do
- for _, equipPosition in ipairs(equipPosList) do -- 头部位置 显示上只有头 实际穿了头和斗笠两个位置
- if v == equipPosition then
- global.Facade:sendNotification(global.NoticeTable.HeroTakeOnRequestFromHumBag,
- {
- itemData = itemData,
- pos = equipPosition
- }
- )
- return false
- end
- end
- end
- if not global.isWinPlayMode then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- end
- return true
- end
- function ItemMoveProxy:TakeOnItem_FromHeroBag(data)
- -- 英雄背包 -> 主角装备
- local itemData = data.itemData
- local pos = data.pos
- local equipPos = data.equipPos
- local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip)
- if equipPos == EquipProxy:GetEquipTypeConfig().Equip_Type_Bujuk then
- local posItemData = EquipProxy:GetEquipDataByPos(equipPos)
- if posItemData and posItemData.StdMode == 96 then
- local targetShape = posItemData.Shape
- local myAniCount = itemData.AniCount
- if itemData and itemData.StdMode == 3 and itemData.Shape == 4 and targetShape and myAniCount and targetShape == myAniCount then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- LuaSendMsg(global.MsgType.MSG_CS_ITEM_FIX_ITEMS, itemData.MakeIndex, posItemData.MakeIndex, 0, 0)
- return true
- end
- end
- end
- local list = EquipProxy:GetEquipPosByStdModeList(itemData.StdMode)
- if not list or not next(list) then
- if not global.isWinPlayMode then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- end
- return true
- end
- local equipPosList = EquipProxy:GetEquipMappingConfig(equipPos)
- equipPosList = equipPosList or { equipPos }
- for k, v in pairs(list) do
- for _, equipPosition in ipairs(equipPosList) do -- 头部位置 显示上只有头 实际穿了头和斗笠两个位置
- if v == equipPosition then
- global.Facade:sendNotification(global.NoticeTable.TakeOnRequestFromHeroBag,
- {
- itemData = itemData,
- pos = equipPosition
- }
- )
- return false
- end
- end
- end
- if not global.isWinPlayMode then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- end
- return true
- end
- function ItemMoveProxy:TakeOnItem(data)
- -- 装备 背包 -> 主角装备
- local itemData = data.itemData
- local pos = data.pos
- local equipPos = data.equipPos
- local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip)
- if equipPos == EquipProxy:GetEquipTypeConfig().Equip_Type_Bujuk then
- local posItemData = EquipProxy:GetEquipDataByPos(equipPos)
- if posItemData and posItemData.StdMode == 96 then
- local targetShape = posItemData.Shape
- local myAniCount = itemData.AniCount
- if itemData and itemData.StdMode == 3 and itemData.Shape == 4 and targetShape and myAniCount and targetShape == myAniCount then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- LuaSendMsg(global.MsgType.MSG_CS_ITEM_FIX_ITEMS, itemData.MakeIndex, posItemData.MakeIndex, 0, 0)
- return true
- end
- end
- end
- local list = EquipProxy:GetEquipPosByStdModeList(itemData.StdMode)
- if not list or not next(list) then
- if not global.isWinPlayMode then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- end
- return true
- end
- local equipPosList = EquipProxy:GetEquipMappingConfig(equipPos)
- equipPosList = equipPosList or { equipPos }
- for k, v in pairs(list) do
- for _, equipPosition in ipairs(equipPosList) do -- 头部位置 显示上只有头 实际穿了头和斗笠两个位置
- if v == equipPosition then
- global.Facade:sendNotification(global.NoticeTable.TakeOnRequest,
- {
- itemData = itemData,
- pos = equipPosition
- }
- )
- return false
- end
- end
- end
- if not global.isWinPlayMode then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- end
- return true
- end
- --CancelMove_Hero
- function ItemMoveProxy:CancelHeroEquipMove_Hero(data)
- -- local itemData = data.itemData
- -- local pos = data.pos
- -- local HeroEquipProxy = global.Facade:retrieveProxy( global.ProxyTable.HeroEquipProxy )
- -- local MakeIndex = itemData.MakeIndex
- -- local equipItemData = HeroEquipProxy:GetEquipDataByMakeIndex(MakeIndex)
- -- -- 在拖动或者其他延时操作时,被自动穿戴替换道具,此时的异常处理
- -- if equipItemData then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- -- end
- return true
- end
- function ItemMoveProxy:TakeOffEquip_Hero(data)
- -- 脱下装备 英雄装备栏 -> 英雄背包
- dump(data,"TakeOffEquip_Hero___")
- local itemData = data.itemData
- local pos = data.pos
- local HeroEquipProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroEquipProxy)
- local MakeIndex = itemData.MakeIndex
- local equipItemData = HeroEquipProxy:GetEquipDataByMakeIndex(MakeIndex)
- -- 在拖动或者其他延时操作时,被自动穿戴替换道具,此时的异常处理
- if not equipItemData then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- return
- end
- global.Facade:sendNotification(global.NoticeTable.HeroTakeOffRequest, itemData)
- end
- function ItemMoveProxy:TakeOffEquip_Hero_To_HumBag(data)
- -- 脱下装备 英雄装备栏 -> 人物背包
- dump(data, "TakeOffEquip_Hero__to_HumBag")
- local itemData = data.itemData
- local pos = data.pos
- local HeroEquipProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroEquipProxy)
- local MakeIndex = itemData.MakeIndex
- local equipItemData = HeroEquipProxy:GetEquipDataByMakeIndex(MakeIndex)
- -- 在拖动或者其他延时操作时,被自动穿戴替换道具,此时的异常处理
- if not equipItemData then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- return
- end
- global.Facade:sendNotification(global.NoticeTable.HeroTakeOffRequestToHumBag, itemData)
- end
- function ItemMoveProxy:TakeOffEquip(data)
- -- 脱下装备 装备栏 -> 背包
- local itemData = data.itemData
- local pos = data.pos
- local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip)
- local MakeIndex = itemData.MakeIndex
- local equipItemData = EquipProxy:GetEquipDataByMakeIndex(MakeIndex)
- -- 在拖动或者其他延时操作时,被自动穿戴替换道具,此时的异常处理
- if not equipItemData then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- return
- end
- global.Facade:sendNotification(global.NoticeTable.TakeOffRequest, itemData)
- end
- function ItemMoveProxy:TakeOffEquip_To_HeroBag(data)
- dump(data, "TakeOffEquip_To_HeroBag")
- -- 脱下装备 人物装备栏 -> 英雄背包
- local itemData = data.itemData
- local pos = data.pos
- local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip)
- local MakeIndex = itemData.MakeIndex
- local equipItemData = EquipProxy:GetEquipDataByMakeIndex(MakeIndex)
- -- 在拖动或者其他延时操作时,被自动穿戴替换道具,此时的异常处理
- if not equipItemData then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- return
- end
- global.Facade:sendNotification(global.NoticeTable.TakeOffToHeroBagRequest, itemData)
- end
- --TODO:
- function ItemMoveProxy:QuickUseIntoSellRequire(data)
- -- 预出售 预修理 快捷栏 -> 预览界面
- local itemData = data.itemData
- local pos = data.pos
- local target = data.target
- end
- function ItemMoveProxy:AddItemIntoSellRepaire(data)
- -- 预出售 预修理 背包 -> 预览界面
- local itemData = data.itemData
- local pos = data.pos
- local target = data.target
- if not itemData then
- return true
- end
- local data = {
- Name = itemData.Name,
- MakeIndex = itemData.MakeIndex
- }
- local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.Bag)
- if target == ItemMoveProxy.ItemGoTo.SELL then
- local NPCSellProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCSellProxy)
- NPCSellProxy:SetOnSellingData(itemData)
- NPCSellProxy:RequestNpcStoreSellPre(data)
- elseif target == ItemMoveProxy.ItemGoTo.REPAIRE then
- local NPCRepaireProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCRepaireProxy)
- NPCRepaireProxy:SetOnRepairingData(itemData)
- NPCRepaireProxy:RequestNpcStoreRepairePre(data)
- elseif target == ItemMoveProxy.ItemGoTo.NPC_DO_SOMETHING then
- local NPCDoSomethingProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCDoSomethingProxy)
- NPCDoSomethingProxy:SetonDoThingsData(itemData)
- elseif target == ItemMoveProxy.ItemGoTo.NEWTYPE then
- local NPCNewTypeOkProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCNewTypeOkProxy)
- NPCNewTypeOkProxy:SetonDoThingsData(itemData)
- end
- local data = {
- itemData = itemData
- }
- global.Facade:sendNotification(global.NoticeTable.Layer_NPC_Sell_Repaire_UpDate, data)
- end
- --和背包丢弃同一接口, 快捷栏数据全部来自于背包
- function ItemMoveProxy:DropItemFromQuickUse(data)
- -- 丢弃 快捷栏 -> 地面
- local itemData = data.itemData
- if not itemData or not next(itemData) then
- return true
- end
- global.Facade:sendNotification(global.NoticeTable.IntoDropItem, itemData)
- return true
- end
- function ItemMoveProxy:PlayerEquipToPlayerEquip(data)
- -- 取消 装备栏 -> 装备栏
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- return true
- end
- function ItemMoveProxy:CancelSellIntoBag(data)
- -- 取消 预出售 预修理 预览界面 -> 背包
- --移动端 直接取消
- --PC端 原位置 == 取消 新位置 移动到新位置 有物品的位置 交换位置并且添加该物品到移动
- local itemData = data.itemData
- local pos = data.pos
- local targetPosInBag = data.itemPosInbag
- local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.Bag)
- local posDataInbag = BagProxy:GetMakeIndexByBagPos(targetPosInBag)
- local beginPos = BagProxy:GetBagPosByMakeIndex(itemData.MakeIndex)
- local NPCSellProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCSellProxy)
- NPCSellProxy:ResetSellingState()
- if posDataInbag then
- if posDataInbag == itemData.MakeIndex then --不变
- -- 背包中的重新刷出来
- local data = {
- storage = {
- MakeIndex = itemData.MakeIndex,
- state = 1
- }
- }
- global.Facade:sendNotification(global.NoticeTable.Bag_State_Change, data)
- else --换位
- if global.isWinPlayMode then
- BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
- BagProxy:SetItemPosData(posDataInbag, beginPos)
- global.Facade:sendNotification(global.NoticeTable.Item_Move_begin_On_BagPosChang,
- {
- MakeIndex = posDataInbag,
- pos = pos
- }
- )
- else
- local newPos = BagProxy:NewItemPos()
- newPos = newPos < beginPos and newPos or beginPos
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- -- 再发刷新
- BagProxy:SetItemPosData(itemData.MakeIndex, newPos)
- end
- return true
- end
- else --移动
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- -- 再发刷新
- BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
- return true
- end
- end
- function ItemMoveProxy:CancelRequireIntoBag(data)
- -- 取消 预出售 预修理 预览界面 -> 背包
- -- 移动端 直接取消
- -- PC端 原位置 == 取消 新位置 移动到新位置 有物品的位置 交换位置并且添加该物品到移动
- local itemData = data.itemData
- local pos = data.pos
- local targetPosInBag = data.itemPosInbag
- local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.Bag)
- local posDataInbag = BagProxy:GetMakeIndexByBagPos(targetPosInBag)
- local beginPos = BagProxy:GetBagPosByMakeIndex(itemData.MakeIndex)
- local NPCRepaireProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCRepaireProxy)
- NPCRepaireProxy:ResetRepairingState()
- if posDataInbag then
- if posDataInbag == itemData.MakeIndex then --不变
- -- 背包中的重新刷出来
- local data = {
- storage = {
- MakeIndex = itemData.MakeIndex,
- state = 1
- }
- }
- global.Facade:sendNotification(global.NoticeTable.Bag_State_Change, data)
- else --换位
- if global.isWinPlayMode then
- BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
- BagProxy:SetItemPosData(posDataInbag, beginPos)
- global.Facade:sendNotification(global.NoticeTable.Item_Move_begin_On_BagPosChang,
- {
- MakeIndex = posDataInbag,
- pos = pos
- }
- )
- else
- local newPos = BagProxy:NewItemPos()
- newPos = newPos < beginPos and newPos or beginPos
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- -- 再发刷新
- BagProxy:SetItemPosData(itemData.MakeIndex, newPos)
- end
- return true
- end
- else --移动
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- -- 再发刷新
- BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
- return true
- end
- end
- function ItemMoveProxy:CancelDoSomethingIntoBag(data)
- -- 取消 请求 -> 背包
- -- 移动端 直接取消
- -- PC端 原位置 == 取消 新位置 移动到新位置 有物品的位置 交换位置并且添加该物品到移动
- local itemData = data.itemData
- local pos = data.pos
- local targetPosInBag = data.itemPosInbag
- local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.Bag)
- local posDataInbag = BagProxy:GetMakeIndexByBagPos(targetPosInBag)
- local beginPos = BagProxy:GetBagPosByMakeIndex(itemData.MakeIndex)
- local NPCDoSomethingProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCDoSomethingProxy)
- NPCDoSomethingProxy:CleanOnDoData()
- if posDataInbag then
- if posDataInbag == itemData.MakeIndex then --不变
- -- 背包中的重新刷出来
- local data = {
- storage = {
- MakeIndex = itemData.MakeIndex,
- state = 1
- }
- }
- global.Facade:sendNotification(global.NoticeTable.Bag_State_Change, data)
- else --换位
- if global.isWinPlayMode then
- BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
- BagProxy:SetItemPosData(posDataInbag, beginPos)
- global.Facade:sendNotification(global.NoticeTable.Item_Move_begin_On_BagPosChang,
- {
- MakeIndex = posDataInbag,
- pos = pos
- }
- )
- else
- local newPos = BagProxy:NewItemPos()
- newPos = newPos < beginPos and newPos or beginPos
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- -- 再发刷新
- BagProxy:SetItemPosData(itemData.MakeIndex, newPos)
- end
- return true
- end
- else --移动
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- -- 再发刷新
- BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
- return true
- end
- end
- function ItemMoveProxy:CancelNewTypeIntoBag(data)
- -- 取消 请求 -> 背包
- -- 移动端 直接取消
- -- PC端 原位置 == 取消 新位置 移动到新位置 有物品的位置 交换位置并且添加该物品到移动
- local itemData = data.itemData
- local pos = data.pos
- local targetPosInBag = data.itemPosInbag
- local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.Bag)
- local posDataInbag = BagProxy:GetMakeIndexByBagPos(targetPosInBag)
- local beginPos = BagProxy:GetBagPosByMakeIndex(itemData.MakeIndex)
- local NPCNewTypeOkProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCNewTypeOkProxy)
- NPCNewTypeOkProxy:CleanOnDoData()
- if posDataInbag then
- if posDataInbag == itemData.MakeIndex then --不变
- -- 背包中的重新刷出来
- local data = {
- storage = {
- MakeIndex = itemData.MakeIndex,
- state = 1
- }
- }
- global.Facade:sendNotification(global.NoticeTable.Bag_State_Change, data)
- else --换位
- if global.isWinPlayMode then
- BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
- BagProxy:SetItemPosData(posDataInbag, beginPos)
- global.Facade:sendNotification(global.NoticeTable.Item_Move_begin_On_BagPosChang,
- {
- MakeIndex = posDataInbag,
- pos = pos
- }
- )
- else
- local newPos = BagProxy:NewItemPos()
- newPos = newPos < beginPos and newPos or beginPos
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- -- 再发刷新
- BagProxy:SetItemPosData(itemData.MakeIndex, newPos)
- end
- return true
- end
- else --移动
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- -- 再发刷新
- BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
- return true
- end
- end
- function ItemMoveProxy:SellOrRequiredCancel(data)
- -- if global.isWinPlayMode then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- -- end
- end
- function ItemMoveProxy:AddItemIntoTrade(data)
- local TradeProxy = global.Facade:retrieveProxy(global.ProxyTable.TradeProxy)
- local state = TradeProxy:GetLockState()
- if state then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- return true
- end
- local itemData = data.itemData
- local pos = data.pos
- local targetPosInTrade = data.itemPosInTrade
- if not itemData then
- return true
- end
- local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
- local MakeIndex = itemData.MakeIndex
- local Name = itemData.Name
- local isBind,isSelf,isMeetType = CheckItemisBind(itemData, ItemConfigProxy:GetBindArticleType().TYPE_NOTRADE)
- if isMeetType then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- local data = {}
- data.str = string.format(GET_STRING(90020014), Name)
- data.btnType = 1
- global.Facade:sendNotification(global.NoticeTable.Layer_CommonTips_Open, data)
- return true
- else
- TradeProxy:RequestPutInItem(MakeIndex, Name)
- end
- end
- function ItemMoveProxy:DeleteItemIntoTrade(data)
- local TradeProxy = global.Facade:retrieveProxy(global.ProxyTable.TradeProxy)
- local state = TradeProxy:GetLockState()
- if state then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- return true
- end
- local itemData = data.itemData
- local pos = data.pos
- local targetPosInTrade = data.itemPosInTrade
- if not itemData then
- return true
- end
- local MakeIndex = itemData.MakeIndex
- local Name = itemData.Name
- TradeProxy:RequestPutOutItem(MakeIndex, Name)
- end
- function ItemMoveProxy:AddGoldToTrade(data)
- local TradeProxy = global.Facade:retrieveProxy(global.ProxyTable.TradeProxy)
- local state = TradeProxy:GetLockState()
- local moneyId = TradeProxy:GetTradeMoneyID()
- local MoneyProxy = global.Facade:retrieveProxy(global.ProxyTable.MoneyProxy)
- if state then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- return true
- end
- -- 交易金币 背包金币 -> 交易栏
- local function callback(btnType, data)
- local bagState = {
- goldState = 1
- }
- global.Facade:sendNotification(global.NoticeTable.Bag_State_Change, bagState)
- if data.editStr and data.editStr ~= "" then
- if type(data.editStr) == "string" then
- local num = tonumber(data.editStr)
- local TradeProxy = global.Facade:retrieveProxy(global.ProxyTable.TradeProxy)
- TradeProxy:RequestChangeMoney(num)
- end
- end
- end
- local data = {}
- local moneyName = moneyId and MoneyProxy:GetMoneyNameById(moneyId) or "金币"
- data.str = string.format(GET_STRING(90020016), moneyName)
- data.callback = callback
- data.btnType = 1
- data.showEdit = true
- data.editParams = {
- inputMode = 2
- }
- global.Facade:sendNotification(global.NoticeTable.Layer_CommonTips_Open, data)
- end
- function ItemMoveProxy:PutOutTradingGold(data)
- local TradeProxy = global.Facade:retrieveProxy(global.ProxyTable.TradeProxy)
- local state = TradeProxy:GetLockState()
- if state then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- return true
- end
- local tradingCount = 0
- local tradingCount = TradeProxy:GetSelfGoldNum() or 0
- if tradingCount > 0 then
- TradeProxy:RequestChangeMoney(0)
- end
- end
- --取出
- function ItemMoveProxy:GetOutStorageItemsToBag(data)
- local data = data.itemData
- local StorageProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCStorageProxy)
- StorageProxy:RequestPutOutStorageData(data.MakeIndex, data.Name)
- end
- --放入
- function ItemMoveProxy:AddItemIntoStorage(data)
- local data = data.itemData
- local StorageProxy = global.Facade:retrieveProxy(global.ProxyTable.NPCStorageProxy)
- StorageProxy:RequestSaveToStorage(data.MakeIndex, data.Name)
- end
- function ItemMoveProxy:CancelPutOutStorage(data)
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- end
- -- 摆摊取出
- function ItemMoveProxy:PutStallItemInBag(data)
- local StallProxy = global.Facade:retrieveProxy(global.ProxyTable.StallProxy)
- local itemData = data.itemData
- local pos = data.pos
- local targetPosInTrade = data.itemPosInTrade
- if not CheckCanDoSomething() then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- return true
- end
- if not itemData then
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- return true
- end
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- local MakeIndex = itemData.MakeIndex
- local Name = itemData.Name
- StallProxy:PutOutItem(MakeIndex)
- end
- -- 摆摊放入
- function ItemMoveProxy:PutItemInStall(data)
- local StallProxy = global.Facade:retrieveProxy(global.ProxyTable.StallProxy)
- local itemData = data.itemData
- local pos = data.pos
- local targetPosInTrade = data.itemPosInTrade
- if not CheckCanDoSomething() then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- return true
- end
- if not itemData then
- return true
- end
- local MakeIndex = itemData.MakeIndex
- local Name = itemData.Name
- local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
- local bindArticleType = ItemConfigProxy:GetBindArticleType()
- local isBind, isSelf, isMeetType = CheckItemisBind(itemData, bindArticleType.TYPE_NOSTALL)
- local noTrade = false --禁止摆摊
- if not isMeetType and itemData.Article and itemData.Article ~= "" then
- local parseArticle = string.split(itemData.Article, "|")
- for k, v in pairs(parseArticle) do
- if v == "9" then --物品禁止摆摊规则
- noTrade = true
- break
- end
- end
- end
- if isMeetType or noTrade then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- local data = {}
- data.str = string.format(isBind and GET_STRING(90020005) or GET_STRING(90170005), Name)
- data.btnType = 1
- global.Facade:sendNotification(global.NoticeTable.Layer_CommonTips_Open, data)
- return true
- end
- StallProxy:RequestPutInItem(MakeIndex)
- end
- -- itembox 取出
- function ItemMoveProxy:PutITEMBOXItemInBag(data)
- local boxindex = global.SUIManager:GetITEMBOXIndexByMakeIndex(data.itemData.MakeIndex)
- if boxindex then
- local npcProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
- local submitData = {
- index = boxindex,
- npcid = npcProxy:GetCurrentNPCID()
- }
- global.SUIManager:RequestITEMBOXPutout(submitData)
- end
- end
- -- itembox 放入
- function ItemMoveProxy:PutItemInTEMBOX(data)
- local function checkAble()
- if data.stdmode == "*" then
- return true
- end
- local slices = string.split(data.stdmode, ",")
- for i, v in ipairs(slices) do
- if tonumber(v) == data.itemData.StdMode then
- return true
- end
- end
- return false
- end
- if false == checkAble() then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- return nil
- end
- -- send msg
- local npcProxy = global.Facade:retrieveProxy(global.ProxyTable.NPC)
- local submitData = {
- makeindex = data.itemData.MakeIndex,
- index = data.boxindex,
- npcid = npcProxy:GetCurrentNPCID()
- }
- global.SUIManager:RequestITEMBOXPutin(submitData)
- end
- -- SSR itemBox
- -- 取出
- function ItemMoveProxy:PutSSRITEMBOXItemInBag(data)
- local SSRUIManager = global.Facade:retrieveMediator("SSRUIManager")
- local boxindex = SSRUIManager:GetITEMBOXIndexByMakeIndex(data.itemData.MakeIndex)
- if boxindex then
- global.Facade:sendNotification(global.NoticeTable.SSR_ITEMBOXWidget_Remove, { boxindex = boxindex })
- if ssrGlobal_PutItemBoxItemToBag and type(ssrGlobal_PutItemBoxItemToBag) == "function" then
- ssrGlobal_PutItemBoxItemToBag(boxindex, data.itemData)
- end
- local itemData = data.itemData
- local pos = data.pos
- local targetPosInBag = data.itemPosInbag
- local BagProxy = global.Facade:retrieveProxy(global.ProxyTable.Bag)
- local posDataInbag = BagProxy:GetMakeIndexByBagPos(targetPosInBag)
- local beginPos = BagProxy:GetBagPosByMakeIndex(itemData.MakeIndex)
- if posDataInbag then
- if posDataInbag == itemData.MakeIndex then --不变
- -- 背包中的重新刷出来
- local data = {
- storage = {
- MakeIndex = itemData.MakeIndex,
- state = 1
- }
- }
- global.Facade:sendNotification(global.NoticeTable.Bag_State_Change, data)
- else --换位
- if global.isWinPlayMode then
- BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
- BagProxy:SetItemPosData(posDataInbag, beginPos)
- global.Facade:sendNotification(global.NoticeTable.Item_Move_begin_On_BagPosChang,
- {
- MakeIndex = posDataInbag,
- pos = pos
- }
- )
- else
- local newPos = BagProxy:NewItemPos()
- newPos = newPos < beginPos and newPos or beginPos
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- -- 再发刷新
- BagProxy:SetItemPosData(itemData.MakeIndex, newPos)
- end
- return true
- end
- else --移动
- -- 先结束事件
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- -- 再发刷新
- BagProxy:SetItemPosData(itemData.MakeIndex, targetPosInBag)
- return true
- end
- end
- end
- -- 放入
- function ItemMoveProxy:PutItemInSSRITEMBOX(data)
- local function checkAble()
- if data.stdmode == "*" then
- return true
- end
- local stdmodeList = {}
- if type(data.stdmode) == "table" then
- stdmodeList = data.stdmode
- elseif type(data.stdmode) == "number" then
- table.insert(stdmodeList, data.stdmode)
- end
- for i, v in ipairs(stdmodeList) do
- if tonumber(v) == data.itemData.StdMode then
- return true
- end
- end
- return false
- end
- if false == checkAble() then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- return nil
- end
- global.Facade:sendNotification(global.NoticeTable.SSR_ITEMBOXWidget_Update, data)
- if ssrGlobal_PutInItemBox and type(ssrGlobal_PutInItemBox) == "function" then
- ssrGlobal_PutInItemBox(data.boxindex, data.itemData)
- end
- end
- function ItemMoveProxy:TakeOffPetEquipLink(data)
- -- 宠物装备栏 -> 背包 ( 不限制宠物
- local itemData = data.itemData
- local pos = data.pos
- local PetsEquipProxy = global.Facade:retrieveProxy(global.ProxyTable.PetsEquipProxy)
- local MakeIndex = itemData.MakeIndex
- local equipItemData = PetsEquipProxy:GetEquipDataByMakeIndex(MakeIndex)
- -- if not equipItemData then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- -- return
- -- end
- if type(data.linkFunc) == "function" then
- data.linkFunc()
- end
- end
- -----
- function ItemMoveProxy:PutItemIntoSomeEquip(data)
- -- 快捷栏 快捷栏 -> 主角装备
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- local itemData = data.itemData
- local pos = data.pos
- local equipPos = data.equipPos
- local EquipProxy = global.Facade:retrieveProxy(global.ProxyTable.Equip)
- if equipPos == EquipProxy:GetEquipTypeConfig().Equip_Type_Bujuk then
- local posItemData = EquipProxy:GetEquipDataByPos(equipPos)
- if posItemData and posItemData.StdMode == 96 then
- local targetShape = posItemData.Shape
- local myAniCount = itemData.AniCount
- if itemData and itemData.StdMode == 3 and itemData.Shape == 4 and targetShape and myAniCount and targetShape == myAniCount then
- LuaSendMsg(global.MsgType.MSG_CS_ITEM_FIX_ITEMS, itemData.MakeIndex, posItemData.MakeIndex, 0, 0)
- end
- end
- end
- return true
- end
- function ItemMoveProxy:HumBagToHeroBag(data)
- -- 人物背包 -> 英雄背包
- local itemData = data.itemData
- local HeroBagProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroBagProxy)
- if not HeroBagProxy:isToBeFull(true) then
- HeroBagProxy:RequestHumBagToHeroBag(data.itemData.MakeIndex, data.itemData.Name)
- end
- end
- function ItemMoveProxy:HeroBagToHumBag(data)
- -- 人物背包 -> 英雄背包
- local itemData = data.itemData
- local HeroBagProxy = global.Facade:retrieveProxy(global.ProxyTable.HeroBagProxy)
- HeroBagProxy:RequestHeroBagToHumBag(data.itemData.MakeIndex, data.itemData.Name)
- end
- -----
- function ItemMoveProxy:SkillShowToTopUI(data)
- if not data.skillId then
- return
- end
- global.Facade:sendNotification(global.NoticeTable.TopTouch_Add_Child, { skill = data.skillId, pos = data.pos })
- SLBridge:onLUAEvent(LUA_EVENT_SKILL_ADD_TO_UI_WIN32, { skill = data.skillId, pos = data.pos })
- end
- ----------------------------
- function ItemMoveProxy:ExchangeItemMoveItem(param)
- local resetOldCallBack = param.resetOld
- local newItemData = param.goMovingData
- --step1:RESET Old ITEM STATE
- resetOldCallBack()
- --step2:CHANGE MOVING DATA ON newItemData
- --TODO:将当前移动的节点用新的替换
- end
- function ItemMoveProxy:GetItemMoveFrome()
- return self.movingItemFrom
- end
- function ItemMoveProxy:SetMoveItemData(data, from, skillId)
- --有来源即可 可能移动的节点 不一定是道具
- if from then
- self.onMovingItem = data
- self.onMoving = true
- self.onMovingSkill = skillId
- if skillId then
- global.Facade:sendNotification(global.NoticeTable.TopTouch_Remove_Child, { skill = skillId })
- SLBridge:onLUAEvent(LUA_EVENT_SKILL_REMOVE_TO_UI_WIN32, { skill = skillId })
- end
- else
- self.onMovingItem = nil
- self.onMoving = false
- self.onMovingSkill = nil
- end
- self.movingItemFrom = from
- end
- function ItemMoveProxy:SetLinkFunc(func)
- if type(func) == "function" then
- self.linkFunc = func
- else
- self.linkFunc = nil
- end
- end
- function ItemMoveProxy:GetItemCanGoTargetFunc(target)
- if not self.movingItemFrom or not target then
- return false
- end
- local itemTargetMap = ItemMoveProxy.ItemFromAndGoToMap[self.movingItemFrom]
- if not itemTargetMap or not next(itemTargetMap) then
- return false
- end
- local callBackFun = itemTargetMap[target]
- return callBackFun
- end
- -- 如果不需要结束移动,或者在自己的逻辑中已经结束 则方法返回bool true
- function ItemMoveProxy:CheckAndCallBack(data)
- local target = data.target
- local callBackFunc = self:GetItemCanGoTargetFunc(target)
- if not callBackFunc then
- if not global.isWinPlayMode then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
- end
- return
- end
- data.itemData = self.onMovingItem
- data.linkFunc = self.linkFunc
- data.skillId = self.onMovingSkill
- if not callBackFunc(self, data) then
- global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
- end
- end
- function ItemMoveProxy:GetMovingItemState()
- return self.onMoving
- end
- function ItemMoveProxy:GetMovingItemData()
- return self.onMovingItem
- end
- function ItemMoveProxy:GetMovingSkill()
- return self.onMovingSkill
- end
- function ItemMoveProxy:onRegister()
- ItemMoveProxy.super.onRegister(self)
- --放在最后 先注册方法
- ItemMoveProxy.ItemFromAndGoToMap = {
- [ItemMoveProxy.ItemFrom.BAG] = {
- [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.ChangeItemPos,
- [ItemMoveProxy.ItemGoTo.PALYER_EQUIP] = ItemMoveProxy.TakeOnItem,
- [ItemMoveProxy.ItemGoTo.QUICK_USE] = ItemMoveProxy.AddToQuickUse,
- [ItemMoveProxy.ItemGoTo.STORAGE] = ItemMoveProxy.AddItemIntoStorage,
- [ItemMoveProxy.ItemGoTo.SELL] = ItemMoveProxy.AddItemIntoSellRepaire,
- [ItemMoveProxy.ItemGoTo.DROP] = ItemMoveProxy.DropItem,
- [ItemMoveProxy.ItemGoTo.REPAIRE] = ItemMoveProxy.AddItemIntoSellRepaire,
- [ItemMoveProxy.ItemGoTo.TRADE] = ItemMoveProxy.AddItemIntoTrade,
- [ItemMoveProxy.ItemGoTo.BEST_RINGS] = ItemMoveProxy.TakeOnBestRing,
- [ItemMoveProxy.ItemGoTo.AUTO_TRADE] = ItemMoveProxy.PutItemInStall,
- [ItemMoveProxy.ItemGoTo.ITEMBOX] = ItemMoveProxy.PutItemInTEMBOX,
- [ItemMoveProxy.ItemGoTo.NPC_DO_SOMETHING] = ItemMoveProxy.AddItemIntoSellRepaire,
- [ItemMoveProxy.ItemGoTo.TreasureBox] = ItemMoveProxy.PutItemInTreasureBox,
- [ItemMoveProxy.ItemGoTo.HERO_BAG] = ItemMoveProxy.HumBagToHeroBag,
- [ItemMoveProxy.ItemGoTo.NEWTYPE] = ItemMoveProxy.AddItemIntoSellRepaire,
- [ItemMoveProxy.ItemGoTo.HERO_EQUIP] = ItemMoveProxy.TakeOnItem_Hero_FromHumBag,
- [ItemMoveProxy.ItemGoTo.SSR_ITEM_BOX] = ItemMoveProxy.PutItemInSSRITEMBOX,
- },
- [ItemMoveProxy.ItemFrom.PALYER_EQUIP] = {
- [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.TakeOffEquip,
- [ItemMoveProxy.ItemGoTo.PALYER_EQUIP] = ItemMoveProxy.PlayerEquipToPlayerEquip,
- [ItemMoveProxy.ItemGoTo.HERO_BAG] = ItemMoveProxy.TakeOffEquip_To_HeroBag,
- },
- [ItemMoveProxy.ItemFrom.QUICK_USE] = {
- [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.DeleteQuickUse,
- [ItemMoveProxy.ItemGoTo.QUICK_USE] = ItemMoveProxy.ChangeItemPosQuickUse,
- -- [ItemMoveProxy.ItemGoTo.STORAGE] = ItemMoveProxy.AddItemIntoStorage,
- -- [ItemMoveProxy.ItemGoTo.SELL] = ItemMoveProxy.QuickUseIntoSellRequire,
- [ItemMoveProxy.ItemGoTo.DROP] = ItemMoveProxy.DropItemFromQuickUse,
- -- [ItemMoveProxy.ItemGoTo.REPAIRE] = ItemMoveProxy.QuickUseIntoSellRequire,
- [ItemMoveProxy.ItemGoTo.PALYER_EQUIP] = ItemMoveProxy.PutItemIntoSomeEquip,
- [ItemMoveProxy.ItemGoTo.HERO_BAG] = ItemMoveProxy.DeleteQuickUse_ToHeroBag,
- },
- [ItemMoveProxy.ItemFrom.STORAGE] = {
- [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.GetOutStorageItemsToBag,
- [ItemMoveProxy.ItemGoTo.STORAGE] = ItemMoveProxy.CancelPutOutStorage,
- },
- [ItemMoveProxy.ItemFrom.BAG_GOLD] = {
- [ItemMoveProxy.ItemGoTo.DROP] = ItemMoveProxy.DropGold,
- [ItemMoveProxy.ItemGoTo.TRADE] = ItemMoveProxy.AddGoldToTrade,
- [ItemMoveProxy.ItemGoTo.TRADE_GOLD] = ItemMoveProxy.AddGoldToTrade,
- },
- [ItemMoveProxy.ItemFrom.SELL] = {
- [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.CancelSellIntoBag,
- [ItemMoveProxy.ItemGoTo.QUICK_USE] = ItemMoveProxy.ChangeItemPos,
- [ItemMoveProxy.ItemGoTo.SELL] = ItemMoveProxy.SellOrRequiredCancel
- },
- [ItemMoveProxy.ItemFrom.REPAIRE] = {
- [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.CancelRequireIntoBag,
- [ItemMoveProxy.ItemGoTo.QUICK_USE] = ItemMoveProxy.ChangeItemPos,
- [ItemMoveProxy.ItemGoTo.REPAIRE] = ItemMoveProxy.SellOrRequiredCancel
- },
- [ItemMoveProxy.ItemFrom.TRADE] = {
- [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.DeleteItemIntoTrade,
- },
- [ItemMoveProxy.ItemFrom.TRADE_GOLD] = {
- [ItemMoveProxy.ItemGoTo.BAG_GOLD] = ItemMoveProxy.PutOutTradingGold,
- },
- [ItemMoveProxy.ItemFrom.BEST_RINGS] = {
- [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.TakeOffEquip,
- },
- [ItemMoveProxy.ItemFrom.AUTO_TRADE] = {
- [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.PutStallItemInBag,
- },
- [ItemMoveProxy.ItemFrom.ITEMBOX] = {
- [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.PutITEMBOXItemInBag,
- },
- [ItemMoveProxy.ItemFrom.NPC_DO_SOMETHING] = {
- [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.CancelDoSomethingIntoBag,
- [ItemMoveProxy.ItemGoTo.QUICK_USE] = ItemMoveProxy.ChangeItemPos,
- [ItemMoveProxy.ItemGoTo.NPC_DO_SOMETHING] = ItemMoveProxy.SellOrRequiredCancel
- },
- [ItemMoveProxy.ItemFrom.HERO_BAG] = {
- [ItemMoveProxy.ItemGoTo.HERO_BAG] = ItemMoveProxy.ChangeItemPos_Hero,
- [ItemMoveProxy.ItemGoTo.HERO_EQUIP] = ItemMoveProxy.TakeOnItem_Hero,
- [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.HeroBagToHumBag,
- [ItemMoveProxy.ItemGoTo.DROP] = ItemMoveProxy.DropItem_Hero,
- [ItemMoveProxy.ItemGoTo.HERO_BEST_RINGS] = ItemMoveProxy.TakeOnBestRing_Hero,
- [ItemMoveProxy.ItemGoTo.PALYER_EQUIP] = ItemMoveProxy.TakeOnItem_FromHeroBag,
- },
- [ItemMoveProxy.ItemFrom.HERO_EQUIP] = {
- [ItemMoveProxy.ItemGoTo.HERO_BAG] = ItemMoveProxy.TakeOffEquip_Hero,
- [ItemMoveProxy.ItemGoTo.HERO_EQUIP] = ItemMoveProxy.CancelHeroEquipMove_Hero,
- [ItemMoveProxy.ItemGoTo.DROP] = ItemMoveProxy.CancelHeroEquipMove_Hero,
- [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.TakeOffEquip_Hero_To_HumBag,
- },
- [ItemMoveProxy.ItemFrom.HERO_BEST_RINGS] = {
- [ItemMoveProxy.ItemGoTo.HERO_BAG] = ItemMoveProxy.TakeOffEquip_Hero,
- },
- [ItemMoveProxy.ItemFrom.NEWTYPE] = {
- [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.CancelNewTypeIntoBag,
- [ItemMoveProxy.ItemGoTo.QUICK_USE] = ItemMoveProxy.ChangeItemPos,
- [ItemMoveProxy.ItemGoTo.NEWTYPE] = ItemMoveProxy.SellOrRequiredCancel
- },
- [ItemMoveProxy.ItemFrom.SSR_ITEM_BOX] = {
- [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.PutSSRITEMBOXItemInBag,
- },
- [ItemMoveProxy.ItemFrom.PETS_EQUIP] = {
- [ItemMoveProxy.ItemGoTo.BAG] = ItemMoveProxy.TakeOffPetEquipLink,
- },
- [ItemMoveProxy.ItemFrom.SKILL_WIN] = {
- [ItemMoveProxy.ItemGoTo.TOPUI] = ItemMoveProxy.SkillShowToTopUI,
- }
- }
- end
- function ItemMoveProxy:AddMoveTypeAndFunc(from, to, fromToEvent, toFromEvent)
- local type = 100 + self._guiTypeNum
- if not ItemMoveProxy.ItemFrom[from] then
- ItemMoveProxy.ItemFrom[from] = type
- end
- if not ItemMoveProxy.ItemGoTo[from] then
- ItemMoveProxy.ItemGoTo[from] = type
- end
- self._guiTypeNum = self._guiTypeNum + 1
- local toType = 100 + self._guiTypeNum
- if not ItemMoveProxy.ItemFrom[to] then
- ItemMoveProxy.ItemFrom[to] = toType
- end
- if not ItemMoveProxy.ItemGoTo[to] then
- ItemMoveProxy.ItemGoTo[to] = toType
- end
- local fromType = ItemMoveProxy.ItemFrom[from]
- local toType = ItemMoveProxy.ItemGoTo[to]
- if fromToEvent then
- if not ItemMoveProxy.ItemFromAndGoToMap[fromType] then
- ItemMoveProxy.ItemFromAndGoToMap[fromType] = {
- [toType] = fromToEvent
- }
- else
- ItemMoveProxy.ItemFromAndGoToMap[fromType][toType] = fromToEvent
- end
- end
- if toFromEvent then
- if not ItemMoveProxy.ItemFromAndGoToMap[toType] then
- ItemMoveProxy.ItemFromAndGoToMap[toType] = {
- [fromType] = toFromEvent
- }
- else
- ItemMoveProxy.ItemFromAndGoToMap[toType][fromType] = toFromEvent
- end
- end
- end
- return ItemMoveProxy
|