HeroIntoDropItemCommand.lua 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. local HeroIntoDropItemCommand = class('HeroIntoDropItemCommand', framework.SimpleCommand)
  2. function HeroIntoDropItemCommand:ctor()
  3. end
  4. function HeroIntoDropItemCommand:execute(notification)
  5. local itemData = notification:getBody()
  6. if itemData then
  7. local function drop(dropNum)
  8. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_End)
  9. local Name = itemData.Name
  10. local MakeIndex = itemData.MakeIndex
  11. LuaSendMsg(global.MsgType.MSG_CS_MAP_ITEM_DISCARD_HERO, MakeIndex, dropNum or 0, 0, 0, Name, string.len(Name))
  12. end
  13. local dropItemNum = 0
  14. local function RefreshBagItem()
  15. -- 背包中的重新刷出来
  16. local data = {
  17. dropping = {
  18. MakeIndex = itemData.MakeIndex,
  19. state = 1
  20. }
  21. }
  22. global.Facade:sendNotification(global.NoticeTable.HeroBag_State_Change, data)
  23. end
  24. local function CancelAndReset()
  25. local ItemManagerProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemManagerProxy)
  26. local itemFrom = ItemManagerProxy:GetItemBelong(itemData.MakeIndex)
  27. if itemFrom == global.MMO.ITEM_FROM_BELONG_HEROBAG then
  28. RefreshBagItem()
  29. end
  30. global.Facade:sendNotification(global.NoticeTable.Layer_Moved_Cancel)
  31. end
  32. local function DropItems()
  33. local dropTips = CHECK_SERVER_OPTION(global.MMO.SERVER_DROP_TIPS)
  34. local isBind = CheckItemisBind(itemData)
  35. local ServerTimeProxy = global.Facade:retrieveProxy(global.ProxyTable.ServerTimeProxy)
  36. local isKf = ServerTimeProxy:IsKfState()
  37. if isKf or (isBind and dropTips == 0) then
  38. local function checkBind(atype, aData)
  39. if not isKf and atype == 1 then
  40. drop(dropItemNum)
  41. else
  42. CancelAndReset()
  43. end
  44. end
  45. local data = {}
  46. data.str = isKf and string.format(GET_STRING(90020015)) or string.format(GET_STRING(90020013), itemData.Name)
  47. data.callback = checkBind
  48. data.btnType = isKf and 1 or 2
  49. global.Facade:sendNotification(global.NoticeTable.Layer_CommonTips_Open, data)
  50. else
  51. drop(dropItemNum)
  52. end
  53. end
  54. -- 随机石 回城石
  55. local ItemManagerProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemManagerProxy)
  56. local isStone = ItemManagerProxy:IsCityStone(itemData) or ItemManagerProxy:IsRandStone(itemData)
  57. local ItemConfigProxy = global.Facade:retrieveProxy(global.ProxyTable.ItemConfigProxy)
  58. if not isStone and ItemConfigProxy:CheckItemOverLap(itemData) then
  59. -- 叠加道具使用
  60. local Name = itemData.Name
  61. local MakeIndex = itemData.MakeIndex
  62. local function callback(btnType, data)
  63. local num = 0
  64. if data.editStr and tonumber(data.editStr) then
  65. num = tonumber(data.editStr)
  66. end
  67. if num > itemData.OverLap then
  68. dropItemNum = itemData.OverLap
  69. DropItems()
  70. elseif num <= 0 then
  71. CancelAndReset()
  72. return
  73. else
  74. dropItemNum = num
  75. DropItems()
  76. end
  77. end
  78. local data = {}
  79. data.str = GET_STRING(90020009)
  80. data.callback = callback
  81. data.btnType = SL:GetMetaValue("GAME_DATA","DropCancelShow") and 2 or 1
  82. data.showEdit = true
  83. data.editParams = {
  84. inputMode = 2
  85. }
  86. global.Facade:sendNotification(global.NoticeTable.Layer_CommonTips_Open, data)
  87. else
  88. DropItems()
  89. end
  90. end
  91. end
  92. return HeroIntoDropItemCommand