--自选礼包
|
|
GiftOptionalView = GiftOptionalView or BaseClass(BaseView)
|
|
|
|
function GiftOptionalView:__init()
|
|
self.base_file = "gift"
|
|
self.layout_file = "GiftOptionalView"
|
|
self.layer_name = "UI"
|
|
self.destroy_imm = true
|
|
self.is_set_zdepth = true
|
|
self.use_background = true
|
|
self.close_mode = CloseMode.CloseDestroy
|
|
self.model = GiftModel:getInstance()
|
|
-- self.append_to_ctl_queue = true --是否要添加进界面堆栈
|
|
self:AddPreLoadList("gift", {"GiftOptionalItem"})
|
|
self.background_alpha = 0.85
|
|
self.reward_item_list = {}
|
|
self.now_choice_list = {}
|
|
|
|
self.load_callback = function ()
|
|
self:LoadSuccess()
|
|
self:addEvents()
|
|
end
|
|
|
|
self.open_callback = function ()
|
|
self:setData()
|
|
end
|
|
|
|
self.close_callback = function ()
|
|
|
|
end
|
|
|
|
self.destroy_callback = function ()
|
|
self:DestroySuccess()
|
|
end
|
|
end
|
|
|
|
function GiftOptionalView:Open(goods_vo)
|
|
self.goods_vo = goods_vo
|
|
self.max_num = goods_vo.goods_num
|
|
BaseView.Open(self)
|
|
end
|
|
|
|
function GiftOptionalView:DestroySuccess()
|
|
if self.choice_event then
|
|
self.model:UnBind(self.choice_event)
|
|
self.choice_event = nil
|
|
end
|
|
for k,v in pairs(self.reward_item_list) do
|
|
v:DeleteMe()
|
|
end
|
|
self.reward_item_list = {}
|
|
|
|
-- if self.tabWindowComponent then
|
|
-- self.tabWindowComponent:DeleteMe()
|
|
-- self.tabWindowComponent = nil
|
|
-- end
|
|
end
|
|
function GiftOptionalView:LoadSuccess()
|
|
local nodes = {
|
|
-- "Window:raw","Window/windowCloseBtn:obj",
|
|
"tips_text:tmp",--"Window/windowTitleCon/windowTitleText:txt",
|
|
"sure_btn:obj", "ScrollView/Viewport/Content",
|
|
"bg:raw", "btn_close:obj",
|
|
}
|
|
self:GetChildren(nodes)
|
|
lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg('gift_optiona_bg'), false)
|
|
-- local closeWin_callback = function()
|
|
-- self:Close()
|
|
-- end
|
|
-- self.tabWindowComponent = UITabWindow.New(self.transform,{},nil,closeWin_callback,self.background_wnd,self.transform, UITabWindow.SizeSmallNoTab, false,nil,true)
|
|
-- self.tabWindowComponent:SetBackgroundRes("gift_optiona_bg_945_536")
|
|
-- self.tabWindowComponent:SetTitleText("自选礼包")
|
|
-- self.tabWindowComponent:ChangeShowFlag("Empower", 270013)
|
|
|
|
-- lua_resM:setOutsideRawImage(self, self.Window_raw, GameResPath.GetViewBigBg("gift_optiona_bg_945_536"))
|
|
|
|
end
|
|
|
|
function GiftOptionalView:addEvents()
|
|
local function click_func(target)
|
|
if target == self.btn_close_obj then
|
|
self:Close()
|
|
elseif target == self.sure_btn_obj then
|
|
local num = self:GetMaxNum()
|
|
if num >= self.max_num then
|
|
Message.show("您还没选择领取的物品哦~")
|
|
else
|
|
local goods_id = self.goods_vo.goods_id
|
|
local type_id = self.goods_vo.type_id
|
|
-- local num = GoodsModel:getInstance():GetTypeGoodsNum(type_id)
|
|
local chose_num = 0
|
|
local list = {}
|
|
local sum_chosen_num = 0
|
|
for k,v in pairs(self.now_choice_list) do
|
|
if v > 0 then
|
|
sum_chosen_num = sum_chosen_num + v
|
|
local temp = {seqno = self.optional_info.goods_list[k].id, seqnum = v}
|
|
table.insert(list, temp)
|
|
end
|
|
end
|
|
if sum_chosen_num % self:GetOptionalNum(type_id) ~= 0 then
|
|
Message.show("有剩余选择次数未使用")
|
|
return
|
|
end
|
|
chose_num = sum_chosen_num/self:GetOptionalNum(type_id)
|
|
self.model:Fire(GiftModel.PROTO_CCMD_EVENT, 15086, goods_id, type_id, chose_num, list)
|
|
end
|
|
end
|
|
end
|
|
AddClickEvent(self.sure_btn_obj, click_func)
|
|
AddClickEvent(self.btn_close_obj, click_func)
|
|
|
|
local function choice_func(index,count)
|
|
self:handleOneChoice(index,count)
|
|
end
|
|
self.choice_event = self.model:Bind(GiftModel.CHOICE_ONE_ITEM, choice_func)
|
|
end
|
|
|
|
function GiftOptionalView:GetOptionalNum( type_id )
|
|
|
|
for k,v in pairs(Config.Optionalgift) do
|
|
if v.goods_id == type_id then
|
|
return v.optional_num
|
|
end
|
|
end
|
|
return 0
|
|
end
|
|
function GiftOptionalView:setData()
|
|
local goods_base = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.goods_vo.type_id)
|
|
local str_color = WordManager.GetGoodsColor(goods_base.color)
|
|
local kind, list = self.model:getOptionalConfig(self.goods_vo.type_id)
|
|
|
|
local optional_num = self:GetOptionalNum(self.goods_vo.type_id)
|
|
self.max_num = self.goods_vo.goods_num * optional_num --GoodsModel:getInstance():GetTypeGoodsNum(self.goods_vo.type_id)
|
|
self.optional_info = list
|
|
local color = tonumber(self.max_num) == 0 and ColorUtil.RED_DARK or ColorUtil.GREEN_DARK
|
|
self.tips_text_tmp.text = string.format("剩余可选数量:%s个", HtmlColorTxt( self.max_num, color))
|
|
function get_func( )
|
|
return self:GetMaxNum()
|
|
end
|
|
for i,v in ipairs(self.optional_info.goods_list) do
|
|
local item = self.reward_item_list[i]
|
|
if not item then
|
|
item = GiftOptionalItem.New(self.Content, nil, self.layer_name)
|
|
-- item:SetPosition(110*(i-1), 0)
|
|
item.GetMaxNum = get_func
|
|
self.reward_item_list[i] = item
|
|
end
|
|
item:setData(i, v)
|
|
end
|
|
end
|
|
|
|
function GiftOptionalView:GetMaxNum( )
|
|
local num = 0
|
|
for k,v in pairs(self.now_choice_list) do
|
|
num = num + v
|
|
end
|
|
if self.max_num >= num then
|
|
return self.max_num - num
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
|
|
function GiftOptionalView:handleOneChoice(index,count)
|
|
self.now_choice_list[index] = count
|
|
local num = 0
|
|
for k,v in pairs(self.now_choice_list) do
|
|
num = num + v
|
|
end
|
|
local rest_num = self.max_num - num
|
|
local color = tonumber(rest_num) == 0 and ColorUtil.RED_DARK or ColorUtil.GREEN_DARK
|
|
self.tips_text_tmp.text = string.format("剩余可选数量:%s个", HtmlColorTxt( rest_num, color))
|
|
end
|
|
|
|
function GiftOptionalView:checkBoolEnough()
|
|
local now_count = 0
|
|
for k,v in pairs(self.now_choice_list) do
|
|
now_count = now_count + 1
|
|
end
|
|
if now_count == self.optional_info.can_count then
|
|
return 1
|
|
elseif now_count > self.optional_info.can_count then
|
|
return 2
|
|
else
|
|
return 3
|
|
end
|
|
end
|