源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

173 lines
6.9 KiB

  1. --[[
  2. item
  3. --]]
  4. RoleLevelItem = RoleLevelItem or BaseClass(BaseItem)
  5. RoleLevelAlignType =
  6. {
  7. LEFT = 1,
  8. MIDDLE = 2,
  9. RIGHT = 3,
  10. SPECIAL = 4,
  11. }
  12. function RoleLevelItem:__init()
  13. self.base_file = "common"
  14. self.layout_file = "RoleLevelItem"
  15. self.is_delay_callback = true
  16. self.level = 1
  17. self.turn = 0
  18. self.need_lv = true
  19. self.alignment_type = RoleLevelAlignType.LEFT
  20. self.add_str = ""
  21. self.front_str = ""
  22. self.font_color = ColorUtil.WHITE
  23. self.font_size = 20
  24. self.orign_pos = -1
  25. self:Load()
  26. end
  27. function RoleLevelItem:Load_callback()
  28. self.left_level = self:GetChild("left_level") -- 左对齐文本
  29. self.middle_level = self:GetChild("middle_level") -- 居中文本
  30. self.middle_lv = self:GetChild("middle_lv")
  31. self.right_level = self:GetChild("right_level") -- 右对齐文本
  32. self.top_symbol = self:GetChild("top_symbol") -- 巅峰标志
  33. if self.need_refreshData then
  34. self:SetData(self.level,self.turn,self.need_lv,self.alignment_type,self.add_str,self.font_color,self.font_size,self.front_str)
  35. end
  36. end
  37. --[[
  38. level:
  39. turn
  40. need_lv "等级"
  41. alignment_type 1. 2. 3.
  42. add_str:
  43. font_color
  44. font_size
  45. front_str:
  46. --]]
  47. function RoleLevelItem:SetData(level,turn,need_lv,alignment_type,add_str,font_color,font_size,front_str)
  48. self.level = level or self.level
  49. self.turn = turn or self.turn
  50. self.need_lv = need_lv or false
  51. self.alignment_type = alignment_type or self.alignment_type
  52. self.add_str = add_str or self.add_str
  53. self.front_str = front_str or self.front_str
  54. self.font_color = font_color or self.font_color
  55. self.font_size = font_size or self.font_size
  56. if self.is_loaded then
  57. self.left_level.gameObject:SetActive(self.alignment_type == RoleLevelAlignType.LEFT or self.alignment_type == RoleLevelAlignType.SPECIAL)
  58. self.middle_level.gameObject:SetActive(self.alignment_type == RoleLevelAlignType.MIDDLE)
  59. self.middle_lv.gameObject:SetActive(self.alignment_type == RoleLevelAlignType.MIDDLE)
  60. self.right_level.gameObject:SetActive(self.alignment_type == RoleLevelAlignType.RIGHT)
  61. if self.alignment_type == RoleLevelAlignType.LEFT then
  62. self:SetLeftRoleLevel()
  63. elseif self.alignment_type == RoleLevelAlignType.MIDDLE then
  64. self:SetMiddleRoleLevel()
  65. elseif self.alignment_type == RoleLevelAlignType.RIGHT then
  66. self:SetRightRoleLevel()
  67. elseif self.alignment_type == RoleLevelAlignType.SPECIAL then
  68. self:SetSpecialRoleLevel()
  69. end
  70. if self.orign_pos ~= -1 then
  71. self:SetOrignPos(self.orign_pos)
  72. end
  73. self.need_refreshData = false
  74. else
  75. self.need_refreshData = true
  76. end
  77. end
  78. -- 设置需要显示巅峰标志的等级(左对齐)
  79. function RoleLevelItem:SetLeftRoleLevel()
  80. self.left_level:GetComponent("Text").fontSize = self.font_size
  81. self.left_level:GetComponent("Text").text = string.format("%s<color=%s>%s%s</color>",self.front_str,self.font_color,WordManager:GetRoleLevel(self.level,self.turn,self.need_lv,false),self.add_str)
  82. if WordManager:RoleLevelIsTop(self.level,self.turn) then
  83. --local text_len = self.left_level:GetComponent("Text").preferredWidth/2
  84. local img_r = self.top_symbol.sizeDelta.x/2
  85. local text_pos = self.left_level.localPosition
  86. SetLocalPosition(self.top_symbol.transform,img_r-15,text_pos.y-5,text_pos.z)
  87. SetLocalPosition(self.left_level.transform,(img_r+1)*2-15,text_pos.y,text_pos.z)
  88. self.top_symbol.gameObject:SetActive(true)
  89. else
  90. SetLocalPosition(self.left_level.transform,0,0,0)
  91. self.top_symbol.gameObject:SetActive(false)
  92. end
  93. end
  94. -- 设置需要显示巅峰标志的等级(左对齐)
  95. function RoleLevelItem:SetSpecialRoleLevel()
  96. self.left_level:GetComponent("Text").fontSize = self.font_size
  97. self.left_level:GetComponent("Text").text = string.format("<color=%s>%s%s%s</color>",self.font_color,self.front_str,WordManager:GetRoleLevel2(self.level,self.turn,self.need_lv,false),self.add_str)
  98. if WordManager:RoleLevelIsTop(self.level,self.turn) then
  99. --local text_len = self.left_level:GetComponent("Text").preferredWidth/2
  100. local img_r = self.top_symbol.sizeDelta.x/2
  101. local text_pos = self.left_level.localPosition
  102. SetLocalPosition(self.top_symbol.transform,img_r,text_pos.y,text_pos.z)
  103. SetLocalPosition(self.left_level.transform,(img_r+1)*2,text_pos.y,text_pos.z)
  104. self.top_symbol.gameObject:SetActive(true)
  105. else
  106. SetLocalPosition(self.left_level.transform,0,0,0)
  107. self.top_symbol.gameObject:SetActive(false)
  108. end
  109. end
  110. -- 设置需要显示巅峰标志的等级(居中)
  111. function RoleLevelItem:SetMiddleRoleLevel()
  112. self.middle_level:GetComponent("Text").fontSize = self.font_size
  113. self.middle_level:GetComponent("Text").text = string.format("%s<color=%s>%s</color>",self.front_str,self.font_color,self.add_str)
  114. self.middle_lv:GetComponent("Text").fontSize = self.font_size
  115. self.middle_lv:GetComponent("Text").text = string.format("<color=%s>%s</color>",self.font_color,WordManager:GetRoleLevel(self.level,self.turn,self.need_lv,false))
  116. local text_len = self.middle_level:GetComponent("Text").preferredWidth
  117. local length = -self.middle_level.transform.sizeDelta.x/2 +self.middle_lv.transform.sizeDelta.x/2
  118. local text_pos = self.middle_level.localPosition
  119. if WordManager:RoleLevelIsTop(self.level,self.turn) then
  120. local img_r = self.top_symbol.sizeDelta.x/2 + 1
  121. SetLocalPosition(self.top_symbol.transform, -self.middle_level.transform.sizeDelta.x/2+text_len+ img_r,self.top_symbol.transform.localPosition.y,text_pos.z)
  122. SetLocalPosition(self.middle_lv.transform, text_len + length+(img_r+20),self.middle_lv.transform.localPosition.y,text_pos.z)
  123. -- SetLocalPosition(self.top_symbol.transform,-(text_len + img_r),text_pos.y,text_pos.z)
  124. self.top_symbol.gameObject:SetActive(true)
  125. else
  126. self.top_symbol.gameObject:SetActive(false)
  127. SetLocalPosition(self.middle_lv.transform,text_len+length+20,self.middle_lv.transform.localPosition.y,text_pos.z)
  128. end
  129. end
  130. -- 设置需要显示巅峰标志的等级(右对齐)
  131. function RoleLevelItem:SetRightRoleLevel()
  132. self.right_level:GetComponent("Text").fontSize = self.font_size
  133. self.right_level:GetComponent("Text").text = string.format("%s<color=%s>%s%s</color>",self.front_str,self.font_color,WordManager:GetRoleLevel(self.level,self.turn,self.need_lv,false),self.add_str)
  134. if WordManager:RoleLevelIsTop(self.level,self.turn) then
  135. local text_len = self.right_level:GetComponent("Text").preferredWidth
  136. local img_r = self.top_symbol.sizeDelta.x/2 + 1
  137. local text_pos = self.right_level.localPosition
  138. SetLocalPosition(self.top_symbol.transform,-(text_len + img_r),text_pos.y,text_pos.z)
  139. self.top_symbol.gameObject:SetActive(true)
  140. else
  141. self.top_symbol.gameObject:SetActive(false)
  142. end
  143. end
  144. function RoleLevelItem:__delete()
  145. -- body
  146. end
  147. function RoleLevelItem:SetOrignPos(pos)
  148. pos = pos == nil and -1 or pos
  149. if self.is_loaded then
  150. if pos ~= -1 then
  151. self.transform.anchoredPosition = Vector2(pos.x,pos.y)
  152. self.orign_pos = -1
  153. end
  154. else
  155. self.orign_pos = pos
  156. end
  157. end