Files
Main/Assets/GameAssets/Resources/Lua/Logic/KaosOrderBaseSystem/KaosOrderSystem.lua
2025-01-25 04:38:09 +08:00

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