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

360 rivejä
11 KiB

1 kuukausi sitten
  1. EmpowerModel = EmpowerModel or BaseClass(BaseVo, true)
  2. local EmpowerModel = EmpowerModel
  3. function EmpowerModel:__init()
  4. self.Instance = self
  5. self:Reset()
  6. -- self.Config_Marble_reward = DeepCopy(Config.Marblereward)
  7. self.Config_Marble_kv = Config.Latticekv
  8. -- self.Config_Marble_Count_Reward = {}
  9. -- for k,v in pairs(DeepCopy(Config.Marblecountreward)) do -- 下标是100 · 200 · 没法老实再存一个
  10. -- table.insert(self.Config_Marble_Count_Reward,v)
  11. -- end
  12. -- local function sort_func(a, b)
  13. -- return a.count < b.count
  14. -- end
  15. -- table.sort(self.Config_Marble_Count_Reward, sort_func)
  16. self.Config_Equip_Shop = Config.Equipshop
  17. self.showEquipShopList = {}
  18. self.equipShopResetNum = 0
  19. self.empowerRedDotList = {}
  20. self.vo41400 = {} -- 存储41400
  21. self.isAutoBuy41401 = false
  22. self.isOnceBuy41401 = false
  23. self.isAutoReset41404 = false
  24. self.isAutoBuyGridWalk = false
  25. self.gridWalkRandomNum = math.random(1, #EmpowerConst.GridWalkDicePos)
  26. self.coupon_id = self:GetConfigMarbleKvVal("coupon_id") or 270012--代金券ID
  27. self.coupon_exchange_data = self:GetConfigMarbleKvVal("voucher_for_gold")--代金券抵扣数量
  28. self.reset_num = self:GetConfigMarbleKvVal("coupon_id") or 270012--抽奖进度重置次数
  29. self.reset_limit_data = stringtotable(self:GetConfigMarbleKvVal("reset_lattice_cost"))--重置VIP限制
  30. self.reset_limit_walk_data = stringtotable(Config.Latticekv["lattice_vip_point"].val)--重置VIP限制升品之路
  31. end
  32. function EmpowerModel:Reset()
  33. self.ran_red_dot_info = {}
  34. end
  35. function EmpowerModel:GetInstance()
  36. if self.Instance == nil then
  37. self.Instance = EmpowerModel.New()
  38. end
  39. return self.Instance
  40. end
  41. -- function EmpowerModel:GetFreshTreasureQualitys()
  42. -- local addAllVal = 0
  43. -- for k,v in pairs(self.Config_Marble_reward) do
  44. -- print(k,v)
  45. -- addAllVal = addAllVal + v.val
  46. -- end
  47. -- local randomNum = math.random(1,addAllVal)
  48. -- for k,v in pairs(self.Config_Marble_reward) do
  49. -- print("============>>> YiRan:EmpowerModel [start:35] randomNum :",randomNum)
  50. -- if randomNum - v.val <= 0 then
  51. -- return ErlangParser:GetInstance():Parse(v.qualitys)[1]
  52. -- else
  53. -- randomNum = randomNum - v.val
  54. -- end
  55. -- end
  56. -- end
  57. function EmpowerModel:GetVo41400( )
  58. return self.vo41400
  59. end
  60. function EmpowerModel:SetVo41400(vo)
  61. self.vo41400 = vo
  62. end
  63. function EmpowerModel:GetConfigMarbleKvVal(keyName)
  64. for k,v in pairs(self.Config_Marble_kv) do
  65. -- print("============>>> YiRan:EmpowerModel [start:54] Trim(v.key) :",Trim(v.key))
  66. if Trim(v.key) == keyName then
  67. return v.val
  68. end
  69. end
  70. end
  71. function EmpowerModel:GetEquipShopList()
  72. return self.showEquipShopList
  73. end
  74. function EmpowerModel:GetEquipShopResetNum()
  75. return self.equipShopResetNum
  76. end
  77. function EmpowerModel:GetEquipShopResetTime()
  78. return self.equipShopResetTime
  79. end
  80. function EmpowerModel:SetEquipShopList(vo)
  81. local newList = {}
  82. for k,v in pairs(self.Config_Equip_Shop) do
  83. for sk,sv in pairs(vo.shop_list) do
  84. if v.index == sv.index then
  85. local list = {}
  86. list.state = sv.state
  87. list.shopList = v
  88. table.insert(newList,list)
  89. end
  90. end
  91. end
  92. local sort_func = function ( a, b )
  93. if a.shopList.is_pay == 0 and b.shopList.is_pay ~= 0 then
  94. return true
  95. end
  96. if a.shopList.discount ~= b.shopList.discount then
  97. return a.shopList.discount < b.shopList.discount
  98. end
  99. return a.shopList.price < b.shopList.price
  100. end
  101. table.sort(newList, sort_func)
  102. self.showEquipShopList = newList
  103. self.equipShopResetNum = vo.reset_count
  104. self.equipShopResetTime = vo.time
  105. end
  106. -- function EmpowerModel:GetConfigMarbleCountReward( )
  107. -- local function sort_func(a, b)
  108. -- return a.count < b.count
  109. -- end
  110. -- table.sort(self.Config_Marble_Count_Reward, sort_func)
  111. -- end
  112. function EmpowerModel:IsRedDotEmpowerShop( )
  113. local shopList = self:GetEquipShopList()
  114. if not shopList then return end
  115. --print("=============>>> YiRan:EmpowerModel [start:131] shopList------------------------------------------")
  116. --PrintTable(shopList)
  117. --print("=============>>> YiRan:EmpowerModel [end] ------------------------------------------")
  118. for k,v in pairs(shopList) do
  119. if v.state == 0 and v.shopList.is_pay == 0 then -- 拥有免费道具未领
  120. return true
  121. end
  122. end
  123. return false
  124. end
  125. function EmpowerModel:IsRedDotEmpowerTreasure( )
  126. --[[ 旧弹珠台红点
  127. local vo41400 = self:GetVo41400( )
  128. if not vo41400 or not vo41400.reward then return end
  129. -- print("=============>>> YiRan:EmpowerModel [start:113] vo41400.reward ------------------------------------------")
  130. -- PrintTable(vo41400.reward)
  131. -- print("=============>>> YiRan:EmpowerModel [end] ------------------------------------------")
  132. for k,v in pairs(vo41400.reward) do
  133. if (v.state == 1) then
  134. return true
  135. end
  136. end
  137. local count = vo41400.count + 1 -- 告知下一次,当前次数得加1
  138. if count and count <= self:GetConfigMarbleKvVal("free_count") then
  139. return true
  140. end
  141. return false]]
  142. ----新
  143. self.is_red_for_game = false
  144. if self.grid_game_info and self.grid_game_info.free_count > 0 then
  145. self.is_red_for_game = true
  146. end
  147. return self.is_red_for_game
  148. end
  149. function EmpowerModel:IsNeedRed(id)
  150. local redEmpowerTreasureBool = self:GetEmpowerRedDotList()[EmpowerConst.EmpowerViewType.EmpowerTreasure]
  151. local redEmpowerShopBool = self:GetEmpowerRedDotList()[EmpowerConst.EmpowerViewType.EmpowerShop]
  152. if id == EmpowerConst.EmpowerViewType.EmpowerTreasure then
  153. redEmpowerTreasureBool = self:IsRedDotEmpowerTreasure()
  154. self.empowerRedDotList[id] = redEmpowerTreasureBool
  155. self:Fire(EmpowerConst.UPDATA_TREASURE_RED_IFNO)
  156. elseif id == EmpowerConst.EmpowerViewType.EmpowerShop then
  157. redEmpowerShopBool = self:IsRedDotEmpowerShop()
  158. self.empowerRedDotList[id] = redEmpowerShopBool
  159. self:Fire(EmpowerConst.EMPOWER_SHOP_RED_DOT)
  160. else
  161. end
  162. local bool = redEmpowerTreasureBool or redEmpowerShopBool
  163. EquipModel:getInstance():IsNeedRed(EquipModel.MainTab.RedEquip)
  164. GlobalEventSystem:Fire(ActivityIconManager.UPDATE_ICON_TIPS, 414, bool)
  165. end
  166. function EmpowerModel:GetEmpowerRedDotList()
  167. return self.empowerRedDotList
  168. end
  169. function EmpowerModel:GetEmpowerCoinGoodId( )
  170. local exchange_cost = Config.Latticekv["exchange_cost"].val -- 升品寻宝和弹珠寻宝区分开self:GetConfigMarbleKvVal("exchange_cost")
  171. local exchange_cost_list = stringtotable(exchange_cost)[1]
  172. local exchangePropId = exchange_cost_list[2]
  173. return exchangePropId
  174. end
  175. --获得代金券ID
  176. function EmpowerModel:GetCouponId( )
  177. return self.coupon_id
  178. end
  179. --获得代金券兑换钻石数量
  180. function EmpowerModel:GetCouponExchangeNum( )
  181. return self.coupon_exchange_data
  182. end
  183. --获得当前条件下重置次数
  184. function EmpowerModel:GetResetLimitNum( )
  185. local vip_flag = RoleManager.Instance.mainRoleInfo.vip_flag
  186. local reset_limit = 0--当前充值次数
  187. local reset_next_vip = nil--下一次重置次数增加的VIP等级
  188. local reset_next_limit = nil--下一次的重置次数
  189. for k,v in ipairs(self.reset_limit_data) do
  190. if vip_flag >= v[1] then
  191. reset_limit = v[2]
  192. end
  193. end
  194. for i,v in ipairs(self.reset_limit_data) do
  195. if reset_limit < v[2] then
  196. reset_next_vip = v[1]
  197. reset_next_limit = v[2]
  198. break
  199. end
  200. end
  201. return reset_limit,reset_next_vip,reset_next_limit
  202. end
  203. --获得当前条件下重置次数 升品之路
  204. function EmpowerModel:GetResetLimitNumWalk( )
  205. local vip_flag = RoleManager.Instance.mainRoleInfo.vip_flag
  206. local reset_limit = 0--当前充值次数
  207. local reset_next_vip = nil--下一次重置次数增加的VIP等级
  208. local reset_next_limit = nil--下一次的重置次数
  209. for k,v in ipairs(self.reset_limit_walk_data) do
  210. if vip_flag >= v[1] then
  211. reset_limit = v[2]
  212. end
  213. end
  214. for i,v in ipairs(self.reset_limit_walk_data) do
  215. if reset_limit < v[2] then
  216. reset_next_vip = v[1]
  217. reset_next_limit = v[2]
  218. break
  219. end
  220. end
  221. return reset_limit,reset_next_vip,reset_next_limit
  222. end
  223. ------------新挪过来的升品之路走格子
  224. function EmpowerModel:GetGridGameInfo( )
  225. --print("=============>>> YiRan:EmpowerModel [start:213] self.grid_game_info ------------------------------------------")
  226. --PrintTable(self.grid_game_info)
  227. --print("=============>>> YiRan:EmpowerModel [end] ------------------------------------------")
  228. --[[测试数据用 local debug_scmd = self.grid_game_info or {
  229. turn = 1,
  230. step = 0,
  231. reset_count = 0,
  232. free_count = 3,
  233. show_reward = {}
  234. }
  235. for i=1,24 do
  236. table.insert(debug_scmd.show_reward, {step_id=i, step_reward={{good_id=230001, good_num=12}}})
  237. end
  238. ]]
  239. return self.grid_game_info --debug_scmd--
  240. end
  241. function EmpowerModel:SetGridGameInfo( value )
  242. --print("=============>>> YiRan:EmpowerModel [start:25] value ------------------------------------------")
  243. --PrintTable(value)
  244. --print("=============>>> YiRan:EmpowerModel [end] ------------------------------------------")
  245. self:ChangeVar("grid_game_info", value, true, true)
  246. self:Fire(EmpowerConst.EMPOWER_RED_DOT,EmpowerConst.EmpowerViewType.EmpowerTreasure)
  247. end
  248. function EmpowerModel:SetIsDoubleTime(value)
  249. if value == 2 then
  250. self.is_double_time = true
  251. else
  252. self.is_double_time = false
  253. end
  254. end
  255. --更新主界面图标状态
  256. function EmpowerModel:UpdateMainIconState( )
  257. local item = ActivityIconManager:getInstance():GetViewIcon(414)
  258. if item then
  259. item:SetSpecialImg()
  260. end
  261. end
  262. function EmpowerModel:GetIsDoubleTime( )
  263. return self.is_double_time or false
  264. end
  265. function EmpowerModel:GetIsShowingGameView( )
  266. return self.is_showing_game_view
  267. end
  268. function EmpowerModel:SetIsShowingGameView( value )
  269. self.is_showing_game_view = value
  270. end
  271. function EmpowerModel:GetIsShowingShopView( )
  272. return self.is_showing_shop_view
  273. end
  274. function EmpowerModel:SetIsShowingShopView( value )
  275. self.is_showing_shop_view = value
  276. end
  277. function EmpowerModel:GetGameSumRewardList( )
  278. if not self.grid_game_info or not self.grid_game_info.show_reward then return end
  279. local list = {}
  280. for k,v in pairs(self.grid_game_info.show_reward) do
  281. for _,award_info in pairs(v.step_reward or {}) do
  282. local has_find = false
  283. if not (v.is_double == 2) then -- 非双倍的奖励 可以叠加
  284. for kk,vv in pairs(list) do
  285. if vv[2] == award_info.good_id then
  286. vv[3] = vv[3] + award_info.good_num
  287. has_find = true
  288. break
  289. end
  290. end
  291. end
  292. if not has_find then
  293. table.insert(list, {[1] = 100, [2] = award_info.good_id, [3] = award_info.good_num})
  294. end
  295. end
  296. end
  297. if self:GetIsDoubleTime( ) then
  298. local temp_list = DeepCopy(list)
  299. for i,v in ipairs(temp_list) do
  300. list[i][3] = v[3] / 2
  301. table.insert(list, {[1] = v[1], [2] = v[2], [3] = v[3] / 2, is_mul = true})
  302. end
  303. end
  304. local sort_func = function ( a, b )
  305. if a.is_mul and (not b.is_mul) then
  306. return true
  307. end
  308. return false
  309. end
  310. table.sort(list, sort_func)
  311. local data = {}
  312. data.award = list
  313. --data.not_show_anim = true
  314. return data
  315. end