源战役客户端
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.

257 lines
7.2 KiB

  1. LightModel = LightModel or BaseClass(BaseVo, true)
  2. local LightModel = LightModel
  3. LightModel.REQUEST_CCMD_EVENT = "LightModel.REQUEST_CCMD_EVENT"
  4. LightModel.ANS_LIGHT_BASE = "LightModel.ANS_LIGHT_BASE"--幻光基础信息返回
  5. LightModel.ANS_LIGHT_UPGRADE = "LightModel.ANS_LIGHT_UPGRADE"--幻光升级返回
  6. LightModel.OPEN_LIGHT_ACTIVE_VIEW = "LightModel.OPEN_LIGHT_ACTIVE_VIEW"--幻光激活展示界面
  7. LightModel.OPEN_SUCCESS_VIEW = "LightModel.OPEN_SUCCESS_VIEW"
  8. -- 幻光品质色,从1到3,低级到高级
  9. LightModel.text_color = {
  10. [1] = ColorUtil.BLUE_DARK,
  11. [2] = ColorUtil.PURPLE_DARK,
  12. [3] = ColorUtil.ORANGE_DARK
  13. }
  14. function LightModel:__init()
  15. LightModel.Instance = self
  16. self:ResetData()
  17. end
  18. function LightModel:ResetData()
  19. self.light_info = {}--幻光信息
  20. self.red_light_active = {}--幻光红点
  21. self.red_light_upgrade = {}--幻光红点
  22. end
  23. function LightModel:GetInstance()
  24. if LightModel.Instance == nil then
  25. LightModel.Instance = LightModel.New()
  26. end
  27. return LightModel.Instance
  28. end
  29. function LightModel:getInstance()
  30. if LightModel.Instance == nil then
  31. LightModel.Instance = LightModel.New()
  32. end
  33. return LightModel.Instance
  34. end
  35. --登陆天数,幻光要用自己的登陆天数计算
  36. function LightModel:GetLoginDay( )
  37. return self.login_day or 0
  38. end
  39. function LightModel:SetLoginDay( value )
  40. self.login_day = value
  41. end
  42. function LightModel:GetLightInfo( )
  43. return self.light_info or {}
  44. end
  45. function LightModel:SetLightInfo( value )
  46. self.light_info = value
  47. end
  48. function LightModel:GetLightInfoOne( id )
  49. if not id then return end
  50. local base_info = self:GetLightInfo()
  51. for k,v in pairs(base_info) do
  52. if v.id == id then
  53. return v
  54. end
  55. end
  56. end
  57. function LightModel:GetLightUsingSkin( )
  58. local info = self:GetLightInfo( )
  59. if info then
  60. for k,v in pairs(info) do
  61. if v.display == 1 then
  62. return v.id
  63. end
  64. end
  65. end
  66. return 0
  67. end
  68. --获取单条基础配置
  69. function LightModel:GetLightConfOne( id )
  70. if not id then return false end
  71. return Config.Visus[id]
  72. end
  73. --获取单条等级配置
  74. function LightModel:GetLightLvConfOne( id,grade,lv )
  75. if not id then return false end
  76. grade = grade or 0
  77. lv = lv or 0
  78. return Config.Visuslv[id.. "@" .. grade .. "@" .. lv]
  79. end
  80. --判断幻光是否满级
  81. function LightModel:GetLightIsMax( id )
  82. local data = self:GetLightInfoOne(id)
  83. if not data then return end
  84. local conf_cur = self:GetLightLvConfOne( id,data.grade,data.lv )
  85. if not conf_cur then return true end--找不到配置跳出
  86. if tonumber(conf_cur.next_grade) == 0 and tonumber(conf_cur.next_lv) == 0 then
  87. return true
  88. else
  89. return false
  90. end
  91. end
  92. --幻光是否已激活
  93. function LightModel:GetLightIsActive( id )
  94. local data = self:GetLightInfoOne(id)
  95. if data and data.state == 1 then
  96. return true
  97. else
  98. return false
  99. end
  100. end
  101. function LightModel:GetLightShowTabInfo( )
  102. if not self.light_show_tab_conf_list then
  103. self.light_show_tab_conf_list = {}
  104. for k,v in pairs(Config.Visus) do
  105. table.insert( self.light_show_tab_conf_list, v )
  106. end
  107. local function sort_call( a,b )
  108. return a.id < b.id
  109. end
  110. table.sort( self.light_show_tab_conf_list, sort_call )
  111. end
  112. return self.light_show_tab_conf_list
  113. end
  114. --获取幻光列表
  115. function LightModel:GetLightSubTabInfo( main_type )
  116. local data = {}
  117. for k,v in pairs(Config.Visus) do
  118. -- if v.type == main_type then--现在不需要做分类了
  119. table.insert( data, v )
  120. -- end
  121. end
  122. -- 特殊排序规则
  123. -- 由低品质到高品质从上到下,同品质内按类型字数字大小排序
  124. local function sort_call( a,b )
  125. return a.color < b.color or (a.color == b.color and a.type < b.type)
  126. end
  127. table.sort( data, sort_call )
  128. return data
  129. end
  130. --幻光激活判断
  131. function LightModel:CanLightActive( check_new,id )
  132. if not id then return false end
  133. if check_new then
  134. self.red_light_active[id] = false
  135. local data = self:GetLightInfoOne( id )
  136. if data and data.state == 1 then
  137. --有数据说明已经激活
  138. elseif data and data.state == 0 then
  139. self.red_light_active[id] = true
  140. else
  141. local conf = self:GetLightConfOne( id )
  142. if conf and conf.item then
  143. local cost = stringtotable(conf.item)
  144. if TableSize(cost) > 0 then
  145. self.red_light_active[id] = GoodsModel:GetEnough( conf.item )
  146. end
  147. end
  148. end
  149. end
  150. return self.red_light_active[id]
  151. end
  152. --幻光升级判断
  153. function LightModel:CanLightUpGrade( check_new,id )
  154. if not id then return false end
  155. if check_new then
  156. self.red_light_upgrade[id] = false
  157. local data = self:GetLightInfoOne( id )
  158. if data then
  159. if self:CanLightActive(check_new,id) or self:GetLightIsMax(id) then
  160. else
  161. --判断材料
  162. local conf = self:GetLightLvConfOne( id,data.grade,data.lv )
  163. if conf then
  164. self.red_light_upgrade[id] = GoodsModel:GetEnough( conf.cost )
  165. end
  166. end
  167. end
  168. end
  169. return self.red_light_upgrade[id]
  170. end
  171. function LightModel:GetLightOneRed( check_new,id )
  172. if not id then return false end
  173. if check_new then
  174. self.red_light_active[id] = self:CanLightActive(check_new,id)
  175. self.red_light_upgrade[id] = self:CanLightUpGrade(check_new,id)
  176. end
  177. return self.red_light_active[id] or self.red_light_upgrade[id]
  178. end
  179. function LightModel:GetLightAllRed( check_new )
  180. if GetModuleIsOpen(147,nil,true) then
  181. -------------------------
  182. local base = self:GetLightShowTabInfo()
  183. if check_new then
  184. self.red_light_active = {}
  185. self.red_light_upgrade = {}
  186. for k,v in pairs(base) do
  187. self:GetLightOneRed(check_new,v.id)
  188. end
  189. end
  190. -------------------------
  191. for k,v in pairs(base) do
  192. if self:GetLightOneRed(false,v.id) then
  193. return true
  194. end
  195. end
  196. end
  197. return false
  198. end
  199. function LightModel:GetLightAllActive(check_new)
  200. local base = self:GetLightShowTabInfo()
  201. if check_new then
  202. self.red_light_active = {}
  203. for k,v in pairs(base) do
  204. self:CanLightActive(check_new,v.id)
  205. end
  206. end
  207. -------------------------
  208. for k,v in pairs(base) do
  209. if self:CanLightActive(false,v.id) then
  210. return true
  211. end
  212. end
  213. return false
  214. end
  215. function LightModel:GetLightAllUpGrade(check_new)
  216. local base = self:GetLightShowTabInfo()
  217. if check_new then
  218. self.red_light_upgrade = {}
  219. for k,v in pairs(base) do
  220. self:CanLightUpGrade(check_new,v.id)
  221. end
  222. end
  223. -------------------------
  224. for k,v in pairs(base) do
  225. if self:CanLightUpGrade(false,v.id) then
  226. return true
  227. end
  228. end
  229. return false
  230. end
  231. function LightModel:GetLightResById( id )
  232. local conf = self:GetLightConfOne( id )
  233. if conf and conf.figure then
  234. return "effect_role_glow" .. conf.figure
  235. else
  236. return ""
  237. end
  238. end