244 lines
7.7 KiB
Lua
244 lines
7.7 KiB
Lua
------------------------------------------------
|
|
--作者: gzy
|
|
--日期: 2021-04-13
|
|
--文件: KaosOrderSystem.lua
|
|
--模块: KaosOrderSystem
|
|
--描述: 犒赏令系统
|
|
------------------------------------------------
|
|
|
|
local L_HuangGuLingData = require"Logic.KaosOrderBaseSystem.HuangGuLingData"
|
|
|
|
local KaosOrderSystem = {
|
|
KaosOrderType = KaosOrderType.HuangGuLing,
|
|
--荒古令的个数
|
|
HuangGuLingPoint = 0,
|
|
--当日获取的荒古令数量
|
|
HuangGuLingDayPoint = 0,
|
|
--荒古令当前rank
|
|
HuangGuLingCurRank = 1,
|
|
--是否购买过特权
|
|
isBuySpecail = 0,
|
|
-- 荒古令数据模型字典 {key == rank, value = HuangGuLingData:{CfgId, Cfg, RewardState}}
|
|
HGLDicData = nil,
|
|
--是否可以刷新轮次
|
|
CanRefreshRank = false,
|
|
}
|
|
|
|
function KaosOrderSystem:Initialize()
|
|
end
|
|
|
|
function KaosOrderSystem:UnInitialize()
|
|
self.HGLDicData = nil
|
|
end
|
|
|
|
--外部调用 通过rank获取奖励列表信息
|
|
function KaosOrderSystem:GetDataList(rankId)
|
|
if rankId == nil then
|
|
rankId = self.HuangGuLingCurRank
|
|
end
|
|
local _ret = nil
|
|
local _dic = self:GetDatas()
|
|
if _dic ~= nil then
|
|
_ret = _dic[rankId]
|
|
end
|
|
return _ret
|
|
end
|
|
|
|
--获取字典
|
|
function KaosOrderSystem:GetDatas()
|
|
if self.HGLDicData == nil then
|
|
self.HGLDicData = Dictionary:New()
|
|
self:GetHGLConfig()
|
|
end
|
|
return self.HGLDicData
|
|
end
|
|
|
|
--读配置
|
|
function KaosOrderSystem:GetHGLConfig()
|
|
local rank_1 = List:New()
|
|
local rank_2 = List:New()
|
|
local rank_3 = List:New()
|
|
DataConfig.DataKaoShangLingHorse:Foreach(function(k,v)
|
|
local data = L_HuangGuLingData:New(k)
|
|
if data.Rank == 1 then
|
|
rank_1:Add(data)
|
|
elseif data.Rank == 2 then
|
|
rank_2:Add(data)
|
|
elseif data.Rank == 3 then
|
|
rank_3:Add(data)
|
|
end
|
|
end)
|
|
self.HGLDicData[1] = rank_1
|
|
self.HGLDicData[2] = rank_2
|
|
self.HGLDicData[3] = rank_3
|
|
end
|
|
|
|
--更新奖励领取状态
|
|
function KaosOrderSystem:SetHGLRewardsListState(ComList , SpecList)
|
|
local curRewardsList = self:GetDataList(self.HuangGuLingCurRank)
|
|
if ComList ~= nil then
|
|
for i = 1, #curRewardsList do
|
|
for j = 1, #ComList do
|
|
if curRewardsList[i].Id == ComList[j] then
|
|
curRewardsList[i]:SetFreeState(true)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if SpecList~= nil then
|
|
for i = 1, #curRewardsList do
|
|
for j = 1, #SpecList do
|
|
if curRewardsList[i].Id == SpecList[j] then
|
|
curRewardsList[i]:SetSpecialState(true)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function KaosOrderSystem:ReSetHGLRewardsListState()
|
|
local curRewardsList = self:GetDataList(self.HuangGuLingCurRank)
|
|
for i = 1, #curRewardsList do
|
|
curRewardsList[i]:SetFreeState(false)
|
|
curRewardsList[i]:SetSpecialState(false)
|
|
end
|
|
end
|
|
|
|
|
|
--是否是当前奖励列表的最后一个
|
|
function KaosOrderSystem:IsLastReward(id)
|
|
local keys = self.HGLDicData:GetKeys()
|
|
for i = 1, #keys do
|
|
for j = 1, #self.HGLDicData[i] do
|
|
if self.HGLDicData[i][j].Id == id then
|
|
return self.HGLDicData[i][j].IfLast == 1
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--获取可以领取的奖励列表
|
|
function KaosOrderSystem:GetCanRewardList( isSpecail )
|
|
if isSpecail ~= nil and isSpecail then
|
|
local _list = self:GetDataList(self.HuangGuLingCurRank)
|
|
local _ret = List:New()
|
|
for i = 1, #_list do
|
|
if _list[i].Score <= self.HuangGuLingPoint then
|
|
_ret:Add(_list[i])
|
|
end
|
|
end
|
|
return _ret
|
|
end
|
|
end
|
|
|
|
function KaosOrderSystem:CanReward()
|
|
local _can = false
|
|
local _RewardsList = self:GetDataList()
|
|
for i = 1, #_RewardsList do
|
|
if _RewardsList[i].Score > self.HuangGuLingPoint then
|
|
break
|
|
end
|
|
if self.isBuySpecail == 1 then
|
|
if _RewardsList[i].SpecialItemState == false then
|
|
_can = true
|
|
return _can
|
|
end
|
|
else
|
|
if _RewardsList[i].FreeItemState == false then
|
|
_can = true
|
|
return _can
|
|
end
|
|
end
|
|
end
|
|
return _can
|
|
end
|
|
|
|
|
|
--给服务器发打开面板消息
|
|
function KaosOrderSystem:ReqOpenKaoShangLingPanel(typeId)
|
|
local _msg = ReqMsg.MSG_KaoShangLing.ReqOpenKaoShangLingPanel:New()
|
|
_msg.type = typeId -- 1 荒古令
|
|
_msg:Send()
|
|
end
|
|
|
|
--给服务器发领奖消息
|
|
function KaosOrderSystem:ReqKaoShangLingReward(typeId , isOneKey , key)
|
|
local _msg = ReqMsg.MSG_KaoShangLing.ReqKaoShangLingReward:New()
|
|
_msg.type = typeId -- 1 荒古令
|
|
_msg.isOneKey = isOneKey
|
|
_msg.key = key
|
|
_msg:Send()
|
|
end
|
|
|
|
--给服务器发刷新消息
|
|
function KaosOrderSystem:ReqKaoShangLingRefreshRank(typeId)
|
|
local _msg = ReqMsg.MSG_KaoShangLing.ReqKaoShangLingRefreshRank:New()
|
|
_msg.type = typeId -- 1 荒古令
|
|
_msg:Send()
|
|
end
|
|
|
|
--给服务器发买高级奖励消息
|
|
function KaosOrderSystem:ReqBuySpecailKaoShangLing(typeId)
|
|
local _msg = ReqMsg.MSG_KaoShangLing.ReqBuySpecailKaoShangLing:New()
|
|
_msg.type = typeId -- 1 荒古令
|
|
_msg:Send()
|
|
end
|
|
|
|
|
|
|
|
--服务器接受 打开面板消息
|
|
function KaosOrderSystem:ResOpenKaoShangLingPanel(msg)
|
|
self.CanRefreshRank = false
|
|
local _HuangGuLingData = msg.kaoShangLingInfoList[1]
|
|
--kaoShangLingInfoList[] 1 = 荒古令 2 = 其他
|
|
if _HuangGuLingData ~= nil then
|
|
self.HuangGuLingPoint = _HuangGuLingData.scoreTotal
|
|
self.KaosOrderType = _HuangGuLingData.type
|
|
self.HuangGuLingCurRank = _HuangGuLingData.rank
|
|
self.HuangGuLingDayPoint = _HuangGuLingData.scoreDay
|
|
self.isBuySpecail = _HuangGuLingData.isBuySpecail
|
|
self:SetHGLRewardsListState(_HuangGuLingData.commonRewardList , _HuangGuLingData.specailRewardist)
|
|
if _HuangGuLingData.commonRewardList ~= nil then
|
|
for i = 1, #_HuangGuLingData.commonRewardList do
|
|
if self:IsLastReward(_HuangGuLingData.commonRewardList[i]) then
|
|
self.CanRefreshRank = true
|
|
end
|
|
end
|
|
end
|
|
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_CROSSMOUNTBOSS_REFRESBTNREDPOINR , self:CanReward())
|
|
end
|
|
end
|
|
|
|
--服务器接收 领奖消息
|
|
function KaosOrderSystem:ResKaoShangLingReward(msg)
|
|
self.CanRefreshRank = false
|
|
self:SetHGLRewardsListState(msg.commonRewardList , msg.specailRewardist)
|
|
for i = 1, #msg.commonRewardList do
|
|
if self:IsLastReward(msg.commonRewardList[i]) then
|
|
self.CanRefreshRank = true
|
|
end
|
|
end
|
|
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_HuangGuLing_UPDATE)
|
|
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_CROSSMOUNTBOSS_REFRESBTNREDPOINR , self:CanReward())
|
|
end
|
|
|
|
--服务器接收 刷新轮次消息
|
|
function KaosOrderSystem:ResKaoShangLingRefreshRank(msg)
|
|
self.CanRefreshRank = false
|
|
self:ReSetHGLRewardsListState()
|
|
local playerId = GameCenter.GameSceneSystem:GetLocalPlayerID()
|
|
PlayerPrefs.SetInt("HuangGuLingRankRefreshTipOverd" .. playerId, 0)
|
|
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_HuangGuLing_UPDATE)
|
|
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_HuangGuLing_REFRESHRANK)
|
|
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_CROSSMOUNTBOSS_REFRESBTNREDPOINR , self:CanReward())
|
|
end
|
|
|
|
--服务器接收 买高级奖励消息
|
|
function KaosOrderSystem:ResBuySpecailKaoShangLing(msg)
|
|
self.isBuySpecail = msg.isBuySpecail
|
|
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_HuangGuLing_UPDATE)
|
|
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_HuangGuLing_BUYSUCCESS)
|
|
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_CROSSMOUNTBOSS_REFRESBTNREDPOINR , self:CanReward())
|
|
end
|
|
|
|
return KaosOrderSystem |