-----------------------------------------------------
-- Module RewardCenterLevel
-- Dialog视图模板
-----------------------------------------------------
module( "RewardCenterLevel",package.seeall )
setmetatable(RewardCenterLevel,{__index = dialog_t})
---------------------------实例变量--------------------------
local instance = nil
local NUM_SUB_ITEM = 4 -- 每行最多可以配置四个道具,至少要配置一个道具
local PAGE_COUNT = 3 --每页显示的领奖ITEM个数
local ITEM_MARGIN = 8
----------------------------实例的创建与销毁-------------------------
function getInstance()
instance = instance or new()
return instance
end
function destroyInstance()
if instance then
instance:dispose()
instance = nil
end
end
-----------------------------------------------------
function new()
local this = {}
setmetatable(this,{__index = RewardCenterLevel})
this:init()
return this
end
------------------------------实例的UI初始化-----------------------
function init(self)
dialog_t.init(self)
self._name = "RewardCenterLevel"
self._layout = Global.getInstance():loadUI("", "Sign") -- 注意这里用的 Sign.csd
self._core:addChild(self._layout)
self:initRegister()
end
-------------------------------实例UI对象的初始化与绑定----------------------
function controlRegister(self)
-- self.xxxx = Global.getInstance():getUINodeLoopByName(self._layout, "xxxx")
--
-- self.xxxx_list = Global.getInstance():getUINodeLoopByName(self._layout, "xxxx_list")
-- self.xxxx_list:setBounceEnabled(true)
-- self.xxxx_list:setItemsMargin(4.0)
-- self.xxxx_list:setItemModel(Global.getInstance():loadUI("", "xxxx_item"))
--
-- Global.getInstance():UIEventRegister("ended", self._name, self.xxxx, "btnxxxx")
Global.getInstance():getUINodeLoopByName(self._layout, "lbl_times"):setVisible(false)
Global.getInstance():getUINodeLoopByName(self._layout, "lbl_num"):setVisible(false)
Global.getInstance():getUINodeLoopByName(self._layout, "scv_itemlist"):setVisible(false)
self.lsv_main = Global.getInstance():getUINodeLoopByName(self._layout, "lsv_main")
self.lsv_main:setVisible(true)
self.lsv_main:setBounceEnabled(true)
self.lsv_main:setItemsMargin(ITEM_MARGIN)
local item_layer = Global.getInstance():loadUI("", "RewardCell")
local item_model = Global.getInstance():getUINodeLoopByName(item_layer, "pnl_main")
--self.lsv_main:setItemModel(Global.getInstance():getUINodeLoopByName(Global.getInstance():loadUI("", "RewardCell"), "pnl_item"))
self.lsv_main:setItemModel(item_model)
self.lsv_main:addScrollViewEventListener(ListScrollViewEvent)
self.btn_sign = Global.getInstance():getUINodeLoopByName(self._layout, "btn_sign")
self.btn_level = Global.getInstance():getUINodeLoopByName(self._layout, "btn_level")
self.btn_vip = Global.getInstance():getUINodeLoopByName(self._layout, "btn_vip")
self.btn_supply = Global.getInstance():getUINodeLoopByName(self._layout, "btn_supply")
self.btn_close = Global.getInstance():getUINodeLoopByName(self._layout, "btn_close")
self.btn_server = Global.getInstance():getUINodeLoopByName(self._layout, "btn_server")
Global.getInstance():UIEventRegister("ended", self._name, self.btn_close, "btnClose")
Global.getInstance():UIEventRegister("ended", self._name, self.btn_sign, "btnSign")
Global.getInstance():UIEventRegister("ended", self._name, self.btn_level, "btnLevel")
Global.getInstance():UIEventRegister("ended", self._name, self.btn_supply, "btnSupply")
Global.getInstance():UIEventRegister("ended", self._name, self.btn_server, "btnServer")
Global.getInstance():UIEventRegister("ended", self._name, self.btn_vip, "btnVip")
end
----------------------------消息注册-------------------------
function messageRegister(self)
-- self.listener1 = Global.getInstance():UIMessageRegister("xxxx", self._name)
end
-----------------------------消息清除------------------------
function messageUnRegister(self)
-- Global.getInstance():UIMessageUnRegister(self.listener1)
end
------------------------------消息触发回调-----------------------
function onMessage(self, name, data)
if "xxxx" == name then
elseif "" == name then
end
end
---------------------------通知注册--------------------------
function noticeRegister(self)
-- self.notice = Global.getInstance():UINoticeRegister("xxxx", self._name)
end
----------------------------通知清除-------------------------
function noticeUnRegister(self)
-- Global.getInstance():UINoticeUnRegister(self.notice)
end
-----------------------------通知触发回调------------------------
function onNotice(self, name, data)
if "xxxx" == name then
elseif "" == name then
end
end
-----------------------------初始化------------------------
function initRegister(self)
self:controlRegister()
self:messageRegister()
self:noticeRegister()
end
function releaseRegister( self )
self:messageUnRegister()
self:noticeUnRegister()
end
-----------------------------场景开始载入回调------------------------
function onEnter(self)
print(self._name .. " => " .. "onEnter")
self.now_count = 0
self.data = UserData.player.giftLevel
self.config = Configs.M("GiftLevel"):get()
self:LoadNextItems()
end
------------------------------场景清除回调-----------------------
function onExit(self)
print(self._name .. " => " .. "onExit")
end
-------------------------------实例销毁----------------------
function dispose(self)
self:releaseRegister()
if self._core then
self._core:removeFromParent(true)
self._core = nil
end
dialog_t.dispose(self)
end
--------------------------------UI刷新---------------------
function refreshUI(self)
end
function refreshData(self)
end
-----------------------------------------------------
function btnXXXX(self, sender, param)
end
function btnClose(self, sender, param)
Dialogs.getInstance():closeDialog(self._name)
end
function btnSign(self, sender, param)
print("#########btnSign in RewardCenterLevel##########")
Dialogs.getInstance():closeDialog(self._name)
Dialogs.getInstance():showDialog("RewardCenterSign")
end
function btnLevel(self, sender, param)
print("#########btnLevel in RewardCenterLevel##########")
Dialogs.getInstance():closeDialog(self._name)
Dialogs.getInstance():showDialog("RewardCenterLevel")
end
function btnVip(self, sender, param)
print("##########btnVip in RewardCenterLevel#############")
Dialogs.getInstance():closeDialog(self._name)
-- Dialogs.getInstance():showDialog("waiting..")
end
function btnSupply(self, sender, param)
print("##########btnSupply in RewardCenterLevel#############")
Dialogs.getInstance():closeDialog(self._name)
-- Dialogs.getInstance():showDialog("waiting..")
end
function btnServer(self, sender, param)
print("##########btnSupply in RewardCenterLevel#############")
Dialogs.getInstance():closeDialog(self._name)
Dialogs.getInstance():showDialog("RewardCenterServer")
end
function ListScrollViewEvent(sender, evenType)
if evenType == ccui.ScrollviewEventType.scrollToBottom then
print("Scroll_to_down")
getInstance().lsv_main:jumpToBottom()
getInstance():LoadNextItems()
elseif evenType == ccui.ScrollviewEventType.scrollToTop then
print("SCROLL_TO_TOP")
end
end
-----------额外自定义-----------
--加载新页,最初显示第一页也调用该函数
function LoadNextItems(self ) --要保证 level config里的数据是数组形式的数据
print("RewardCenterLevel.LoadNextItems")
local start = self.now_count + 1
--self.i = self.now_count + 1
self.now_count = math.min( self.now_count + PAGE_COUNT , #self.config)
-- 危险: 在 for 循环内部发消息会导致异步发送,应当让一个消息返回后再发送下一条,所以button状态的初始化用另一种方式
for i = start , self.now_count do -- i同时对应了config中的索引和listitem的索引
self.lsv_main:pushBackDefaultItem()
local item = self.lsv_main:getItem( i - 1)
--local config = Configs.M("GiftLevel"):get(i)
--赋值子item ,最多NUM_SUB_ITEM个
--local root = Global.getInstance():getUINodeLoopByName(item, "img_bg")
for j = 1, NUM_SUB_ITEM do
if self.config[i]["code" .. j] == nil then
break;
end
local cur_img = Global.getInstance():getUINodeLoopByName(item, "img_" .. j)
--Global.getInstance():UIEventRegister("ended", self._name, cur_img, "ShowTips", nil, self.config[i]["type" .. j]) --点击图片显示Tips
-- local txt_name = Global.getInstance():getUINodeLoopByName(subItem, "txt_name"):setString("waiting..")
-- local txt_cnt = Global.getInstance():getUINodeLoopByName(subItem, "txt_cnt"):setString(string.format("%d",config[i]["num" .. j])) --waiting..
end
self["btn_get" .. i] = Global.getInstance():getUINodeLoopByName(item, "btn_get")
--print("##### " .. self.config[i].level .. " " .. PlayerData.lv)
if self.config[i].level <= PlayerData.lv then
if self.data[tostring(self.config[i].level)] == nil then
self["btn_get" .. i]:setTitleText("not got")
Global.getInstance():UIEventRegister("ended", self._name, self["btn_get" .. i], "ClickBtn", nil, i)
else
self["btn_get" .. i]:setTouchEnabled(false)
self["btn_get" .. i]:setTitleText("got")
end
else
self["btn_get" .. i]:setTouchEnabled(false)
self["btn_get" .. i]:setTitleText("not reach")
end
end
end
function ClickBtn(self, sender, i)
--self["btn_" .. i]:loadTextureDisabled("")
Requests.getInstance():send("LevelReward_ButtonGot",{level=self.config[i].level},function (data)
self["btn_get" .. i]:setTouchEnabled(false)
self["btn_get" .. i]:setTitleText("got")
--注意self.data中的值也要改
self.data[tostring(self.config[i].level)] = 1 --self.data只起到标记作用,而且索引为自由number
end)
end
-- Module RewardCenterLevel
-- Dialog视图模板
-----------------------------------------------------
module( "RewardCenterLevel",package.seeall )
setmetatable(RewardCenterLevel,{__index = dialog_t})
---------------------------实例变量--------------------------
local instance = nil
local NUM_SUB_ITEM = 4 -- 每行最多可以配置四个道具,至少要配置一个道具
local PAGE_COUNT = 3 --每页显示的领奖ITEM个数
local ITEM_MARGIN = 8
----------------------------实例的创建与销毁-------------------------
function getInstance()
instance = instance or new()
return instance
end
function destroyInstance()
if instance then
instance:dispose()
instance = nil
end
end
-----------------------------------------------------
function new()
local this = {}
setmetatable(this,{__index = RewardCenterLevel})
this:init()
return this
end
------------------------------实例的UI初始化-----------------------
function init(self)
dialog_t.init(self)
self._name = "RewardCenterLevel"
self._layout = Global.getInstance():loadUI("", "Sign") -- 注意这里用的 Sign.csd
self._core:addChild(self._layout)
self:initRegister()
end
-------------------------------实例UI对象的初始化与绑定----------------------
function controlRegister(self)
-- self.xxxx = Global.getInstance():getUINodeLoopByName(self._layout, "xxxx")
--
-- self.xxxx_list = Global.getInstance():getUINodeLoopByName(self._layout, "xxxx_list")
-- self.xxxx_list:setBounceEnabled(true)
-- self.xxxx_list:setItemsMargin(4.0)
-- self.xxxx_list:setItemModel(Global.getInstance():loadUI("", "xxxx_item"))
--
-- Global.getInstance():UIEventRegister("ended", self._name, self.xxxx, "btnxxxx")
Global.getInstance():getUINodeLoopByName(self._layout, "lbl_times"):setVisible(false)
Global.getInstance():getUINodeLoopByName(self._layout, "lbl_num"):setVisible(false)
Global.getInstance():getUINodeLoopByName(self._layout, "scv_itemlist"):setVisible(false)
self.lsv_main = Global.getInstance():getUINodeLoopByName(self._layout, "lsv_main")
self.lsv_main:setVisible(true)
self.lsv_main:setBounceEnabled(true)
self.lsv_main:setItemsMargin(ITEM_MARGIN)
local item_layer = Global.getInstance():loadUI("", "RewardCell")
local item_model = Global.getInstance():getUINodeLoopByName(item_layer, "pnl_main")
--self.lsv_main:setItemModel(Global.getInstance():getUINodeLoopByName(Global.getInstance():loadUI("", "RewardCell"), "pnl_item"))
self.lsv_main:setItemModel(item_model)
self.lsv_main:addScrollViewEventListener(ListScrollViewEvent)
self.btn_sign = Global.getInstance():getUINodeLoopByName(self._layout, "btn_sign")
self.btn_level = Global.getInstance():getUINodeLoopByName(self._layout, "btn_level")
self.btn_vip = Global.getInstance():getUINodeLoopByName(self._layout, "btn_vip")
self.btn_supply = Global.getInstance():getUINodeLoopByName(self._layout, "btn_supply")
self.btn_close = Global.getInstance():getUINodeLoopByName(self._layout, "btn_close")
self.btn_server = Global.getInstance():getUINodeLoopByName(self._layout, "btn_server")
Global.getInstance():UIEventRegister("ended", self._name, self.btn_close, "btnClose")
Global.getInstance():UIEventRegister("ended", self._name, self.btn_sign, "btnSign")
Global.getInstance():UIEventRegister("ended", self._name, self.btn_level, "btnLevel")
Global.getInstance():UIEventRegister("ended", self._name, self.btn_supply, "btnSupply")
Global.getInstance():UIEventRegister("ended", self._name, self.btn_server, "btnServer")
Global.getInstance():UIEventRegister("ended", self._name, self.btn_vip, "btnVip")
end
----------------------------消息注册-------------------------
function messageRegister(self)
-- self.listener1 = Global.getInstance():UIMessageRegister("xxxx", self._name)
end
-----------------------------消息清除------------------------
function messageUnRegister(self)
-- Global.getInstance():UIMessageUnRegister(self.listener1)
end
------------------------------消息触发回调-----------------------
function onMessage(self, name, data)
if "xxxx" == name then
elseif "" == name then
end
end
---------------------------通知注册--------------------------
function noticeRegister(self)
-- self.notice = Global.getInstance():UINoticeRegister("xxxx", self._name)
end
----------------------------通知清除-------------------------
function noticeUnRegister(self)
-- Global.getInstance():UINoticeUnRegister(self.notice)
end
-----------------------------通知触发回调------------------------
function onNotice(self, name, data)
if "xxxx" == name then
elseif "" == name then
end
end
-----------------------------初始化------------------------
function initRegister(self)
self:controlRegister()
self:messageRegister()
self:noticeRegister()
end
function releaseRegister( self )
self:messageUnRegister()
self:noticeUnRegister()
end
-----------------------------场景开始载入回调------------------------
function onEnter(self)
print(self._name .. " => " .. "onEnter")
self.now_count = 0
self.data = UserData.player.giftLevel
self.config = Configs.M("GiftLevel"):get()
self:LoadNextItems()
end
------------------------------场景清除回调-----------------------
function onExit(self)
print(self._name .. " => " .. "onExit")
end
-------------------------------实例销毁----------------------
function dispose(self)
self:releaseRegister()
if self._core then
self._core:removeFromParent(true)
self._core = nil
end
dialog_t.dispose(self)
end
--------------------------------UI刷新---------------------
function refreshUI(self)
end
function refreshData(self)
end
-----------------------------------------------------
function btnXXXX(self, sender, param)
end
function btnClose(self, sender, param)
Dialogs.getInstance():closeDialog(self._name)
end
function btnSign(self, sender, param)
print("#########btnSign in RewardCenterLevel##########")
Dialogs.getInstance():closeDialog(self._name)
Dialogs.getInstance():showDialog("RewardCenterSign")
end
function btnLevel(self, sender, param)
print("#########btnLevel in RewardCenterLevel##########")
Dialogs.getInstance():closeDialog(self._name)
Dialogs.getInstance():showDialog("RewardCenterLevel")
end
function btnVip(self, sender, param)
print("##########btnVip in RewardCenterLevel#############")
Dialogs.getInstance():closeDialog(self._name)
-- Dialogs.getInstance():showDialog("waiting..")
end
function btnSupply(self, sender, param)
print("##########btnSupply in RewardCenterLevel#############")
Dialogs.getInstance():closeDialog(self._name)
-- Dialogs.getInstance():showDialog("waiting..")
end
function btnServer(self, sender, param)
print("##########btnSupply in RewardCenterLevel#############")
Dialogs.getInstance():closeDialog(self._name)
Dialogs.getInstance():showDialog("RewardCenterServer")
end
function ListScrollViewEvent(sender, evenType)
if evenType == ccui.ScrollviewEventType.scrollToBottom then
print("Scroll_to_down")
getInstance().lsv_main:jumpToBottom()
getInstance():LoadNextItems()
elseif evenType == ccui.ScrollviewEventType.scrollToTop then
print("SCROLL_TO_TOP")
end
end
-----------额外自定义-----------
--加载新页,最初显示第一页也调用该函数
function LoadNextItems(self ) --要保证 level config里的数据是数组形式的数据
print("RewardCenterLevel.LoadNextItems")
local start = self.now_count + 1
--self.i = self.now_count + 1
self.now_count = math.min( self.now_count + PAGE_COUNT , #self.config)
-- 危险: 在 for 循环内部发消息会导致异步发送,应当让一个消息返回后再发送下一条,所以button状态的初始化用另一种方式
for i = start , self.now_count do -- i同时对应了config中的索引和listitem的索引
self.lsv_main:pushBackDefaultItem()
local item = self.lsv_main:getItem( i - 1)
--local config = Configs.M("GiftLevel"):get(i)
--赋值子item ,最多NUM_SUB_ITEM个
--local root = Global.getInstance():getUINodeLoopByName(item, "img_bg")
for j = 1, NUM_SUB_ITEM do
if self.config[i]["code" .. j] == nil then
break;
end
local cur_img = Global.getInstance():getUINodeLoopByName(item, "img_" .. j)
--Global.getInstance():UIEventRegister("ended", self._name, cur_img, "ShowTips", nil, self.config[i]["type" .. j]) --点击图片显示Tips
-- local txt_name = Global.getInstance():getUINodeLoopByName(subItem, "txt_name"):setString("waiting..")
-- local txt_cnt = Global.getInstance():getUINodeLoopByName(subItem, "txt_cnt"):setString(string.format("%d",config[i]["num" .. j])) --waiting..
end
self["btn_get" .. i] = Global.getInstance():getUINodeLoopByName(item, "btn_get")
--print("##### " .. self.config[i].level .. " " .. PlayerData.lv)
if self.config[i].level <= PlayerData.lv then
if self.data[tostring(self.config[i].level)] == nil then
self["btn_get" .. i]:setTitleText("not got")
Global.getInstance():UIEventRegister("ended", self._name, self["btn_get" .. i], "ClickBtn", nil, i)
else
self["btn_get" .. i]:setTouchEnabled(false)
self["btn_get" .. i]:setTitleText("got")
end
else
self["btn_get" .. i]:setTouchEnabled(false)
self["btn_get" .. i]:setTitleText("not reach")
end
end
end
function ClickBtn(self, sender, i)
--self["btn_" .. i]:loadTextureDisabled("")
Requests.getInstance():send("LevelReward_ButtonGot",{level=self.config[i].level},function (data)
self["btn_get" .. i]:setTouchEnabled(false)
self["btn_get" .. i]:setTitleText("got")
--注意self.data中的值也要改
self.data[tostring(self.config[i].level)] = 1 --self.data只起到标记作用,而且索引为自由number
end)
end