RefreshActorBoothCommand.lua 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. local RefreshActorBoothCommand = class('RefreshActorBoothCommand', framework.SimpleCommand)
  2. local Border = 28
  3. local ContentWidth = 200
  4. local OffY = 60
  5. local CornerOffY = 96.5
  6. local contentColorID = 255
  7. local fontSizeMob = SL:GetMetaValue("GAME_DATA","sceneFontSize") or SL:GetMetaValue("GAME_DATA","SCENE_FONT_SIZE")
  8. local fontSizeWin = SL:GetMetaValue("GAME_DATA","sceneFontSize_pc") or SL:GetMetaValue("GAME_DATA","SCENE_FONT_SIZE_PC")
  9. local fontSize = global.isWinPlayMode and fontSizeWin or fontSizeMob
  10. function RefreshActorBoothCommand:ctor()
  11. end
  12. function RefreshActorBoothCommand:execute(notification)
  13. local data = notification:getBody()
  14. local actorID = data.actorID
  15. local actor = data.actor
  16. if not actor then
  17. return
  18. end
  19. global.HUDManager:RemoveHUD(actorID, global.MMO.HUD_TYPE_SPRITE, global.MMO.HUD_SPRITE_BOOTH_NAME_BG)
  20. global.HUDManager:RemoveHUD(actorID, global.MMO.HUD_TYPE_TIPS, global.MMO.HUD_LABEL_BOOTH_NAME)
  21. if not actor:IsStallStatus() then
  22. return nil
  23. end
  24. if SL:GetMetaValue("SETTING_ENABLED", SLDefine.SETTINGID.SETTING_IDX_IGNORE_STALL) == 1 then
  25. return nil
  26. end
  27. local spriteOffY = OffY
  28. local textOffY = OffY + 5
  29. local cornerOffY = CornerOffY
  30. -- content
  31. local hudName = global.HUDManager:GetHUD(actorID, global.MMO.HUD_TYPE_TIPS, global.MMO.HUD_LABEL_BOOTH_NAME)
  32. if not hudName then
  33. hudName = global.HUDManager:CreateHUD(actorID, global.MMO.HUD_TYPE_TIPS, global.MMO.HUD_LABEL_BOOTH_NAME, cc.p(0, textOffY + Border * 0.5))
  34. end
  35. global.HUDManager:SetHUDOffset(actorID, global.MMO.HUD_TYPE_TIPS, global.MMO.HUD_LABEL_BOOTH_NAME, cc.p(0, textOffY + Border * 0.5))
  36. local boothName = actor:GetStallName()
  37. local colorID = tonumber( CHECK_SERVER_OPTION(global.MMO.SERVER_STALL_COLOR) ) or contentColorID
  38. hudName:removeAllChildren()
  39. local RichTextHelp = requireUtil("RichTextHelp")
  40. local textName = RichTextHelp:CreateRichTextWithXML(boothName, ContentWidth, fontSize, GET_COLOR_BYID(colorID))
  41. hudName:addChild(textName)
  42. textName:setAnchorPoint(cc.p(0.5, 0))
  43. textName:formatText()
  44. -- bg
  45. local textSize = textName:getContentSize()
  46. local hudSprite = global.HUDManager:GetHUD(actorID, global.MMO.HUD_TYPE_SPRITE, global.MMO.HUD_SPRITE_BOOTH_NAME_BG)
  47. if not hudSprite then
  48. hudSprite = global.HUDManager:CreateHUD(actorID, global.MMO.HUD_TYPE_SPRITE, global.MMO.HUD_SPRITE_BOOTH_NAME_BG, cc.p(0, spriteOffY + Border * 0.5))
  49. hudSprite:setAnchorPoint(cc.p(0.5, 0))
  50. hudSprite:setTexture(global.MMO.PATH_RES_PUBLIC .. "1900000676.png")
  51. hudSprite:setContentSize(cc.size(textSize.width + 20, textSize.height + 10))
  52. end
  53. global.HUDManager:SetHUDOffset(actorID, global.MMO.HUD_TYPE_SPRITE, global.MMO.HUD_SPRITE_BOOTH_NAME_BG, cc.p(0, spriteOffY + Border * 0.5))
  54. -- refresh actor position
  55. local pos = actor:getPosition()
  56. actor:setPosition(pos.x, pos.y)
  57. end
  58. return RefreshActorBoothCommand