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

206 lines
7.5 KiB

PowerTurnTableModel = PowerTurnTableModel or BaseClass(BaseVo, true)
local PowerTurnTableModel = PowerTurnTableModel
PowerTurnTableModel.REQUEST_INFO = "PowerTurnTableModel.REQUEST_INFO"
PowerTurnTableModel.UPDATE_VIEW_INFO = "PowerTurnTableModel.UPDATE_VIEW_INFO" -- 更新源能转盘红点
PowerTurnTableModel.OPEN_MAIN_VIEW = "PowerTurnTableModel.OPEN_MAIN_VIEW" -- 打开源能转盘界面
PowerTurnTableModel.OPEN_EXCHANGE_VIEW = "PowerTurnTableModel.OPEN_EXCHANGE_VIEW"--打开积分兑换界面
PowerTurnTableModel.START_TURN_ACTION = "PowerTurnTableModel.START_TURN_ACTION"--开始转盘动画
PowerTurnTableModel.UPDATE_RECORD_INFO = "PowerTurnTableModel.UPDATE_RECORD_INFO"--更新日志
PowerTurnTableModel.UPDATE_EXCHANGE_VIEW = "PowerTurnTableModel.UPDATE_EXCHANGE_VIEW"--刷新兑换界面
PowerTurnTableModel.OPEN_EXCHANGE_REQ_VIEW = "PowerTurnTableModel.OPEN_EXCHANGE_REQ_VIEW"--打开兑换请求界面
function PowerTurnTableModel:__init()
PowerTurnTableModel.Instance = self
self:Reset()
end
function PowerTurnTableModel:Reset()
self.is_skip_turn_table_action = false
self.server_award_info = {}--界面信息
self.record_info_list = {}--日志信息
self.exchange_info = {}--兑换界面信息
self.buy_toggle = {}--购买确认
self.login_red_list = {}
self.time_id_list = {}
self.time_red_list = {}--倒计时五小时有积分可以兑换就有红点
self.can_exchange_red_list = {}--可以兑换的红点列表
end
function PowerTurnTableModel:getInstance()
if self.Instance == nil then
self.Instance = PowerTurnTableModel.New()
end
return self.Instance
end
--检查源能转盘开启
function PowerTurnTableModel:CheckPowerTurnTableIconBoolOpen( sub_type )
local base_type = CustomActivityModel.CustomActBaseType.POWER_TURNTABLE
local sub_type = sub_type or CustomActivityModel:getInstance():getActMinSubType(base_type)
local level = RoleManager.Instance.mainRoleInfo.level
local act_list = CustomActivityModel:getInstance():getActList(base_type, sub_type)
local is_open = false
local end_time = 0
local open_level = 1
local icon_sub_type = base_type*1000 + sub_type
if sub_type >= 10001 then
icon_sub_type = base_type*100000 + sub_type
end
if act_list and act_list.etime then
for l,w in pairs(act_list.condition_list) do
if type(w) == "table" and w[1] == "role_lv" then
open_level = tonumber(w[2])
break
end
end
local have_time = TimeUtil:getServerTime( ) - act_list.stime
end_time = act_list.etime - TimeUtil:getServerTime()
is_open = have_time > 0 and end_time > 0 and open_level <= RoleManager.Instance.mainRoleInfo.level
if GetModuleIsOpen(331,base_type) then
if is_open then
self:SetDelayTimeList(sub_type)
ActivityIconManager:getInstance():addIcon(icon_sub_type, end_time)
else
ActivityIconManager:getInstance():deleteIcon(icon_sub_type)
end
else
-- print("huangcong:KfActivityModel [62]: ",key)
end
else
ActivityIconManager:getInstance():deleteIcon(icon_sub_type)
end
end
function PowerTurnTableModel:SetDelayTimeList( sub_type )
if self.time_id_list[sub_type] then
GlobalTimerQuest:CancelQuest(self.time_id_list[sub_type])
self.time_id_list[sub_type] = nil
end
if self.time_red_list[sub_type] then
return
end
local base_type = CustomActivityModel.CustomActBaseType.POWER_TURNTABLE
local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) or {}
if not act_list then return end
local end_time = act_list.etime
local haly_hour = 3600*5
local sec = end_time - TimeUtil:getServerTime()
if sec > 0 then
local function onTimer()
sec = end_time - TimeUtil:getServerTime()
if sec < haly_hour then--五小时有可以兑换的要给予红点且所有奖励有未购买完的
if self.time_id_list[sub_type] then
GlobalTimerQuest:CancelQuest(self.time_id_list[sub_type])
self.time_id_list[sub_type] = nil
end
self.time_red_list[sub_type] = true
self:CheckPowerTurnTableMainRedDot(sub_type)
self:Fire(PowerTurnTableModel.UPDATE_VIEW_INFO,sub_type)
end
end
onTimer()
if not self.time_id_list[sub_type] then
self.time_id_list[sub_type] = GlobalTimerQuest:AddPeriodQuest(onTimer, 1, -1)
end
end
end
--源能转盘信息
function PowerTurnTableModel:SetPowerTurnTableInfo( vo )
local sort_func = function ( a, b )
return a.id < b.id
end
table.sort(vo.pool_list, sort_func)
for i,v in ipairs(vo.pool_list) do
v.reward = stringtotable(v.reward)[1]
end
self.server_award_info[vo.sub_type] = vo
self:Fire(PowerTurnTableModel.UPDATE_VIEW_INFO,vo.sub_type)
self:CheckPowerTurnTableMainRedDot(vo.sub_type)
end
function PowerTurnTableModel:GetPowerTurnTableInfo( sub_type )
return self.server_award_info[sub_type]
end
function PowerTurnTableModel:CheckPowerTurnTableMainRedDot( sub_type )
local bool = false
local base_type = CustomActivityModel.CustomActBaseType.POWER_TURNTABLE
if not sub_type then return end
local icon_sub_type = base_type*1000 + sub_type
if sub_type >= 10001 then
icon_sub_type = base_type*100000 + sub_type
end
local act_list = CustomActivityModel:getInstance():getActList(base_type, sub_type)
if not act_list then
return
else
local server_award_info = self:GetPowerTurnTableInfo(sub_type)
if server_award_info and server_award_info.free_time and server_award_info.free_time > 0 then--免费红点
bool = true
end
if not bool and not self.login_red_list[sub_type] then--每次登陆给一次红点
bool = true
end
if not bool and self.time_red_list[sub_type] and self.can_exchange_red_list[sub_type] then--倒计时5小时兑换红点
bool = true
end
if not bool then
local last_time_list = self:GetPowerTTScoreCookie()--积分按钮每日首次红点
local score = self.server_award_info[sub_type] and self.server_award_info[sub_type].score or 0
if not last_time_list[sub_type] then
bool = score > 0
end
end
GlobalEventSystem:Fire(ActivityIconManager.UPDATE_ICON_TIPS, icon_sub_type, bool)
end
end
--设置抽奖记录数据
function PowerTurnTableModel:SetRecordInfo( scmd )
self.record_info_list[scmd.sub_type] = scmd.list
end
function PowerTurnTableModel:GetRecordInfo( sub_type )
return self.record_info_list[sub_type]
end
--设置兑换界面数据
function PowerTurnTableModel:SetExchangeInfoList( scmd )
self.can_exchange_red_list[scmd.sub_type] = false
for i,v in ipairs(scmd.swap_list) do
v.reward = stringtotable(v.reward)[1]
v.sort_id = v.id + (v.left_times == 0 and 1000 or 0)--兑换完置底
if v.left_times > 0 and scmd.cur_score >= v.score and not self.can_exchange_red_list[scmd.sub_type] then
self.can_exchange_red_list[scmd.sub_type] = true
end
end
local sort_func = function ( a, b )
return a.sort_id < b.sort_id
end
table.sort(scmd.swap_list, sort_func)
self.exchange_info[scmd.sub_type] = scmd.swap_list
self:CheckPowerTurnTableMainRedDot(scmd.sub_type)
end
--获得源能转盘兑换界面信息
function PowerTurnTableModel:GetExchangeInfoList( sub_type )
return self.exchange_info[sub_type]
end
--设置源能转盘红点cookie
function PowerTurnTableModel:SetPowerTTScoreCookie( sub_type,time )
local list = self:GetPowerTTScoreCookie() or {}
list[sub_type] = time
CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_DAY2,CookieKey.POWER_TURN_TABLE_SCORE_RED,list)
CookieWrapper.Instance:WriteAll()
end
--获得源能转盘红点cookie
function PowerTurnTableModel:GetPowerTTScoreCookie( )
local bool = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.POWER_TURN_TABLE_SCORE_RED) or {}
return bool
end