local HomeMain_Model = {} local private = {} local EventSystem = require('Event/EventSystem') local claim_gift_code_pb = require('Proto/claim_gift_code_pb') HomeMain_Model.PlayerUIType = { BattlePlayer = 1,--战斗玩家血条UI TeamBattlePlayer = 2, --组队玩法中玩家血条UI TeamBattleMember = 3, --组队玩法中队员血条UI EnemyPlayer = 4, --敌方玩家血条UI } --主界面按钮组展开类型 HomeMain_Model.TownFoldType = { RightBottom = 1, --右下角 RightTop = 2, --右上角 } private.capitalBuffInfos = nil --主城buff列表 private.capitalBuffTimerHandle = nil function HomeMain_Model.OnStartup() NetManager.RegisterMsgCB(MessageEnums.MessageClaimGiftCode,private.ClaimGiftCodeResp) HomeMain_Model.TownGuideToggle = 0 private.townHomeUIFoldRT = true private.townHomeUIFoldRB = false private.capitalBuffData = {} for i,v in DataSheetManager.CapitalBuffData:GetEnumerator() do private.capitalBuffData[v.BuffID] = 1 end end --触发时间后的在前 function private.SortBuffRule(a,b) local config_a = DataSheetManager.CapitalBuffData:GetDataByRelateID(a.caBuffId) local config_b = DataSheetManager.CapitalBuffData:GetDataByRelateID(b.caBuffId) local time_a = a.endTime - config_a.BuffDuration local time_b = b.endTime - config_b.BuffDuration return time_a > time_b end --全量推送,由于需要客户端做计时从列表删除buff,不能用proto结构 function HomeMain_Model.SyncCapitalBuff(infos) private.capitalBuffInfos = {} for i, v in ipairs(infos) do private.capitalBuffInfos[i] = v end table.sort(private.capitalBuffInfos, private.SortBuffRule) private.UpdateCapitalBuff() end function private.UpdateCapitalBuff() if private.capitalBuffTimerHandle then TimerUtil.Remove(private.capitalBuffTimerHandle) end local curTime = UTL.Time.GetServerTimestamp() local minTime for i = #private.capitalBuffInfos, 1, -1 do local buff = private.capitalBuffInfos[i] local offset = buff.endTime - curTime if offset <= 0 then table.remove(private.capitalBuffInfos, i) --时间到,飘字提示 local caBuffConfig = DataSheetManager.CapitalBuffData:GetDataByRelateID(buff.caBuffId) if caBuffConfig and string.isNilOrEmpty(caBuffConfig.BuffEndingDescription) == false then CTL.Tips.AddTipsMsg(Const_IDS[caBuffConfig.BuffEndingDescription]) end else if minTime == nil or offset < minTime then minTime = offset end end end if minTime then private.capitalBuffTimerHandle = TimerUtil.Interval(private.UpdateCapitalBuff, minTime, 1) end EventSystem.Dispatch(EventID.UI_UpdateBuff_Town) end function HomeMain_Model.GetBuffList() return private.capitalBuffInfos end --获取禁言buff function HomeMain_Model.GetSilenceBuff() if private.capitalBuffInfos then local silenceRightsData = DataSheetManager.OfficialRights:GetDataByRightsID(MDL.OfficialPrivilege.OptType.Silence) for i, v in ipairs(private.capitalBuffInfos) do if v.caBuffId == silenceRightsData.BuffID then return v end end end return nil end --buff是否为主城buff function HomeMain_Model.GetIfBuffCapital(buffID) if private.capitalBuffData[buffID] then return true end return false end function HomeMain_Model.GetTownHomeUIFoldStateByType(type) if type == HomeMain_Model.TownFoldType.RightTop then return private.townHomeUIFoldRT elseif type == HomeMain_Model.TownFoldType.RightBottom then return private.townHomeUIFoldRB end end function HomeMain_Model.SetTownHomeUIFoldStateByType(type, state) if type == HomeMain_Model.TownFoldType.RightTop then private.townHomeUIFoldRT = state elseif type == HomeMain_Model.TownFoldType.RightBottom then private.townHomeUIFoldRB = state end end function HomeMain_Model.ClaimGiftCodeReq(code) local msg = claim_gift_code_pb.ClaimGiftCodeReq() msg.GiftCode = code NetManager.SendMessage(MessageEnums.MessageClaimGiftCode, msg) end function private.ClaimGiftCodeResp(msgResp) logging.log(LTAG.LOG, "ClaimGiftCodeResp", msgResp) if msgResp.Resp.Code == 0 then UIManager.CloseView(Const_UI_Lua.UIEnum.UIMessageInputView) end end function HomeMain_Model.SetLastNoticeRed(red) private.lastNoticeRed = red end function HomeMain_Model.GetLastNoticeRed() return private.lastNoticeRed end return HomeMain_Model