|
|
- DailyRechargeJipsawView = DailyRechargeJipsawView or BaseClass(BaseView)
- local math_random = math.random
- local table_insert = table.insert
- local table_remove = table.remove
-
- function DailyRechargeJipsawView:__init()
- self.base_file = "dailyRecharge"
- self.layout_file = "DailyRechargeJipsawView"
- self.layer_name = "Top"
- self.use_background = true
- self.is_set_zdepth = true
- self.select_idx = false
- self.item_list = {}
-
- self.model = RechargeActivityModel:getInstance()
-
-
- self.load_callback = function ()
- self:LoadSuccess()
- self:InitEvent()
- end
- self.destroy_callback = function ()
- self:Clear()
- end
- end
-
- function DailyRechargeJipsawView:Clear()
- for i,v in ipairs(self.item_list) do
- v:DeleteMe()
- end
- self.item_list = {}
- end
-
- function DailyRechargeJipsawView:LoadSuccess()
- local nodes = {
- "bg:raw", "help_btn:obj", "close_btn:obj", "contain", "title_text:txt", "reference_pic:raw",
- "restart_btn:obj",
- }
- self:GetChildren(nodes)
- lua_resM:setOutsideRawImage(self,self.bg_raw,GameResPath.GetViewBigBg("dailyRecharge_bg"),true)
-
- if self.need_refreshData then
- self:SetData(self.vo)
- end
- end
-
- function DailyRechargeJipsawView:InitEvent()
- local function onClickHandler(target)
- if self.close_btn_obj == target then
- self:Close()
- elseif self.help_btn_obj == target then
- if not self.is_win then
- self:GameHelp()
- else
- Message.show("游戏已结束")
- end
- elseif self.restart_btn_obj == target then
- Message.show("游戏开始")
- self:ReStartGame()
- end
- end
-
- AddClickEvent(self.close_btn_obj,onClickHandler)
- AddClickEvent(self.restart_btn_obj,onClickHandler)
- AddClickEvent(self.help_btn_obj,onClickHandler)
- end
-
-
- function DailyRechargeJipsawView:SetData()
- if self.is_loaded then
- self:ReStartGame()
- else
- self.need_refreshData = true
- end
- end
-
-
- function DailyRechargeJipsawView:UpdateView()
-
- for i,v in ipairs(self.item_list) do
- v:SetVisible(false)
- end
-
- local size_x = 935 * 0.5
- local size_y = 512 * 0.5
-
- local row = 3
- local col = 3
- local path = GameResPath.GetViewBigBg("arena_ragewar_bg")
- local pic_list, cell_x, cell_y = GetImageSplitUVRectInfo(size_x, size_y, row, col)
- local start_x = - (cell_x / 2 ) - (row /2 -1) * cell_x
- local start_y = - (cell_y / 2 ) - (col /2 -1) * cell_y
- local random_data = self:RandomData(row * col)
- self.pic_data = {}
- for i,v in ipairs(random_data) do
- local info = pic_list[v]
- local d =
- {
- pic_pos = v,
- cell_x = info.cell_x,
- cell_y = info.cell_y,
- uv_cell_x = info.uv_cell_x,
- uv_cell_y = info.uv_cell_y,
- uv_cell_w = info.uv_cell_w,
- uv_cell_h = info.uv_cell_h,
- }
- self.pic_data[i] = d
- end
-
- self.cfg =
- {
- start_x = start_x,
- start_y = start_y,
- row = row,
- col = col,
- size_x = size_x,
- size_y = size_y,
- max_num = row * col,
- }
- print('Cat:DailyRechargeJipsawView.lua[83] data', start_x, start_y, size_x, cell_x)
- PrintTable(self.pic_data)
- local idx = 1
- for i,v in ipairs(self.pic_data) do
- v.res_path = path
- local item = self.item_list[idx]
- local uv_rect = {x = v.uv_cell_x, y = v.uv_cell_y, w = v.uv_cell_w, h = v.uv_cell_h,}
- if not item then
- item = DailyRechargeJipsawItem.New(self.contain,nil,self.layer_name)
- self.item_list[idx] = item
- local function call_back(vo, pos)
- self:OnHandleClickItem(vo, pos)
- end
- item:SetClickCallBack(call_back)
- end
- item:SetVisible(true)
- item:SetData(v, idx)
- item:SetSize({x = v.cell_x, y = v.cell_y,})
- item:SetUIRect(uv_rect)
- local cur_row = math.floor((i - 1) / col)
- local cur_col = (i - 1) % col + 1
- item:SetAnchoredPosition(start_x + cur_row * v.cell_x, start_y + (cur_col - 1) * v.cell_y)
- item:SetSelect(false)
- idx = idx + 1
- end
- self.is_win = false
- lua_resM:setOutsideRawImage(self, self.reference_pic_raw, path)
- SetSizeDelta(self.reference_pic, size_x * 0.3 , size_y * 0.3)
- end
-
- function DailyRechargeJipsawView:OnHandleClickItem(vo, idx)
- if not self.select_idx then
- self:StopGameHelp()
- self.select_idx = idx
- for i,v in ipairs(self.item_list) do
- v:SetSelect(self.select_idx == v:GetIndex())
- end
- else
- if self.select_idx ~= idx then
- self:SwitchItem(self.select_idx, idx)
- end
- self.select_idx = false
- for i,v in ipairs(self.item_list) do
- v:SetSelect(false)
- end
- end
- end
-
- function DailyRechargeJipsawView:SwitchItem(old_idx, new_idx)
- local item_old = self.item_list[old_idx]
- local item_new = self.item_list[new_idx]
- local old_pos = item_old:GetAnchoredPosition()
- local new_pos = item_new:GetAnchoredPosition()
- self.item_list[old_idx] = item_new
- self.item_list[new_idx] = item_old
- item_old:SetAnchoredPosition(new_pos.x, new_pos.y)
- item_new:SetAnchoredPosition(old_pos.x, old_pos.y)
- item_old:SetIdx(new_idx)
- item_new:SetIdx(old_idx)
- self:CheckResult()
- end
-
- function DailyRechargeJipsawView:CheckResult()
- local max_num = self.cfg.max_num
- local is_win = true
- for i,v in ipairs(self.item_list) do
- if max_num >= i then
- if v:GetPicPos() ~= i then
- is_win = false
- break
- end
- end
- end
- if is_win then
- Message.show("游戏胜利")
- self.is_win = true
- end
- end
-
- function DailyRechargeJipsawView:RandomData(max_num)
- local list = {}
- local t = {}
- for i=1,max_num do
- t[i] = i
- end
- --先从2到倒数第二项,随机抽,保证一定能够错开
- local idx = math_random(2, #t - 1)
- local item = table_remove(t, idx)
- table_insert(list, item)
-
- while (#t > 0) do
- local idx = math_random(1, #t)
- local item = table_remove(t, idx)
- table_insert(list, item)
- end
- return list
- end
-
- function DailyRechargeJipsawView:ReStartGame()
- self:UpdateView()
- end
-
- function DailyRechargeJipsawView:GameHelp()
- local max_num = self.cfg.max_num
- local old_idx = -1
- local new_idx = -1
- for i,v in ipairs(self.item_list) do
- if max_num >= i then
- if old_idx == -1 and v:GetPicPos() ~= i then
- old_idx = i
- end
-
- if old_idx ~= -1 and v:GetPicPos() == old_idx then
- new_idx = i
- break
- end
- end
- end
-
- self.select_idx = false
- for i,v in ipairs(self.item_list) do
- if i == old_idx or i == new_idx then
- v:SetSelect(true)
- v:ShowTipsAni(true)
- else
- v:StopShowTipsAni()
- v:SetSelect(false)
- end
- end
- end
-
- function DailyRechargeJipsawView:StopGameHelp()
- for i,v in ipairs(self.item_list) do
- v:StopShowTipsAni()
- v:SetSelect(false)
- end
- end
|