--[[ 势力驻地 ]] local GuildParty_Model = {} local private = {} local guild_party_pb = require 'Proto/guild_party_pb' local guild_party_oper_pb = require "Proto/guild_party_oper_pb" local EventSystem = require('Event/EventSystem') local guildPartyActivityTimes = 0 local guildPartyTotalActivityTimes = 1 local guildPartyExams = nil --答题的数据 local curActivityScore = 0 local curActivityBoxState = 1 --对饮的数据 local curDrinkPairData = nil local hasGetBoxCount = 0 local serverCollectBoxes = nil local nextAnswerTime = 0 local correctContent = nil local GuildPartyAnsweringCD = DataSheetManager.ConstData:GetDataByID("GuildPartyAnsweringCD").IntValue function GuildParty_Model.OnStartup() NetManager.RegisterMsgCB(MessageEnums.MessageLeaveGuildEncampment, private.RespExitGuildPartyMap) NetManager.RegisterMsgCB(MessageEnums.MessageReceiveExpRain, private.RespReceiveExpRain) NetManager.RegisterMsgCB(MessageEnums.MessageGetActivityPanel, private.RespGetActivityPanel) NetManager.RegisterMsgCB(MessageEnums.MessageGetQuestion, private.RespGetQuestion) NetManager.RegisterMsgCB(MessageEnums.MessageAnswerQuestion, private.RespAnswerQuestion) NetManager.RegisterMsgCB(MessageEnums.MessageGetAnswerRank, private.RespGetAnswerRank) NetManager.RegisterMsgCB(MessageEnums.MessageReceiveBox, private.RespReceiveBox) NetManager.RegisterMsgCB(MessageEnums.MessageG2CDrinkPair, private.G2CDrinkPair) NetManager.RegisterMsgCB(MessageEnums.MessageGetDrinkPair, private.RespGetDrinkData) NetManager.RegisterMsgCB(MessageEnums.MessageGetDrinkRank, private.RespGetDrinkRank) NetManager.RegisterMsgCB(MessageEnums.MessageS2CGuildPartyBoxInfo, private.S2CGuildPartyBoxInfo) NetManager.RegisterMsgCB(MessageEnums.MessageS2CRemoveGuildPartyBox, private.S2CRemoveGuildPartyBox) NetManager.RegisterMsgCB(MessageEnums.MessageS2CPickUpBoxFail, private.S2CPickUpBoxFail) NetManager.RegisterMsgCB(MessageEnums.MessageEndPickUpBox, private.RespEndPickCollectBox) end function GuildParty_Model.GetGuildPartyMapId() return DataSheetManager.ConstData:GetDataByID("GuildPartyMapID").IntValue end --离开驻地请求 function GuildParty_Model.ReqExitGuildPartyMap() UTL.MessageBox.ShowOKCancelBox("", UIUtils.GetLocalizedTxt(Const_IDS.IDS_Guild_QuitGuildMapConfirm), private.OnConfirmExitGuildPartyMap) end function private.OnConfirmExitGuildPartyMap() local msg = guild_party_oper_pb.LeaveGuildEncampmentReq() NetManager.SendMessage(MessageEnums.MessageLeaveGuildEncampment, msg) end function private.RespExitGuildPartyMap(msgResp) end ---------------------------------------驻地聚会活动--------------------------------------- --经验雨请求 function GuildParty_Model.ReqReceiveExpRain() local msg = guild_party_oper_pb.ReceiveExpRainReq() NetManager.SendMessage(MessageEnums.MessageReceiveExpRain, msg) end function private.RespReceiveExpRain(msgResp) end --请求活动信息 function GuildParty_Model.ReqGetActivityPanel() local msg = guild_party_oper_pb.GetActivityPanelReq() NetManager.SendMessage(MessageEnums.MessageGetActivityPanel, msg) end function private.RespGetActivityPanel(msgResp) curActivityScore = msgResp.totalScore curActivityBoxState = msgResp.state EventSystem.Dispatch(EventID.UI_GuildParty_UpdateActivityPanel) end function GuildParty_Model.SetLeftActivityExpTimes(guildPartyInfo) if guildPartyActivityTimes > 0 and guildPartyInfo.count <= 0 then CTL.Tips.AddTipsMsg(Const_IDS["IDS_GuildParty_NoRewardNumTip"]) end guildPartyActivityTimes = guildPartyInfo.count guildPartyTotalActivityTimes = guildPartyInfo.curMaxCount hasGetBoxCount = guildPartyInfo.pickUpBoxCount EventSystem.Dispatch(EventID.UI_GuildParty_LeftExpCount) end function GuildParty_Model.HasLeftExpCount() return guildPartyActivityTimes > 0 end function GuildParty_Model.GetActivityExpTimes() return guildPartyActivityTimes, guildPartyTotalActivityTimes end function GuildParty_Model.GetTotalActivityExpTimes() return DataSheetManager.ConstData:GetDataByID("GuildPartyHookRewardDailyNum").IntValue end --请求宝箱 function GuildParty_Model.ReqReceiveBox() local msg = guild_party_oper_pb.ReceiveBoxReq() NetManager.SendMessage(MessageEnums.MessageReceiveBox, msg) end function private.RespReceiveBox(msgResp) curActivityBoxState = msgResp.state EventSystem.Dispatch(EventID.UI_GuildParty_UpdateActivityPanel) end function GuildParty_Model.GetActivityPanelInfo() return curActivityScore, curActivityBoxState end function GuildParty_Model.ClearGuildPartyData() if guildPartyExams then table.clearArray(guildPartyExams) end GuildParty_Model.ClearDrinkData() end --------------------------------------驻地答题---------------------------------------------------- --请求题目 function GuildParty_Model.ReqGetQuestion() local msg = guild_party_oper_pb.GetQuestionReq() NetManager.SendMessage(MessageEnums.MessageGetQuestion, msg) end function private.RespGetQuestion(msgResp) guildPartyExams = msgResp.question CTL.GuildParty.RefreshExamData() end function GuildParty_Model.GetGuildPartyExams() return guildPartyExams end --请求答题 function GuildParty_Model.ReqAnswerQuestion(questionIndex, result) local msg = guild_party_oper_pb.AnswerQuestionReq() msg.index = questionIndex msg.result = result NetManager.SendMessage(MessageEnums.MessageAnswerQuestion, msg) end function private.RespAnswerQuestion(msgResp) nextAnswerTime = msgResp.NextAnswerTime if msgResp.RightIndex > 0 then MDL.ChannelChat.SendGuildPartyExamMsg(correctContent, 1, msgResp.RightIndex) end end --请求答题排行榜 function GuildParty_Model.ReqGetAnswerRank() local msg = guild_party_oper_pb.GetAnswerRankReq() NetManager.SendMessage(MessageEnums.MessageGetAnswerRank, msg) end function private.RespGetAnswerRank(msgResp) EventSystem.Dispatch(EventID.UI_GuildParty_ActivityRank, msgResp.infos, msgResp.self) end --------------------------------------驻地对饮---------------------------------------------------- function GuildParty_Model.ReqGetDrinkData() logging.log(LTAG.YL, "ReqGetDrinkData") local msg = guild_party_oper_pb.GetDrinkPairReq() NetManager.SendMessage(MessageEnums.MessageGetDrinkPair, msg) end function private.RespGetDrinkData(msgResp) curDrinkPairData = msgResp.pair logging.log(LTAG.YL, "RespGetDrinkData") CTL.GuildParty.RefreshDrinkData() end function private.G2CDrinkPair(msgResp) curDrinkPairData = msgResp.pair if CTL.GuildParty.IsSubActivityOpen() then logging.log(LTAG.YL, "G2CDrinkPair") CTL.GuildParty.RefreshDrinkData(true) end end function GuildParty_Model.GetDrinkPairData() return curDrinkPairData end function GuildParty_Model.GetDrinkRankReq() local msg = guild_party_oper_pb.GetDrinkRankReq() NetManager.SendMessage(MessageEnums.MessageGetDrinkRank, msg) end function private.RespGetDrinkRank(msgResp) EventSystem.Dispatch(EventID.UI_GuildParty_ActivityRank, msgResp.infos) end function GuildParty_Model.ReqDrink() local msg = guild_party_oper_pb.C2GDrink() NetManager.SendMessage(MessageEnums.MessageC2GDrink, msg) end function GuildParty_Model.ClearDrinkData() curDrinkPairData = nil end --------------------------------------驻地宝箱---------------------------------------------------- function private.S2CGuildPartyBoxInfo(collectBoxInfo) serverCollectBoxes = collectBoxInfo.infos logging.log(LTAG.YL, "S2CGuildPartyBoxInfo:" .. (serverCollectBoxes and #serverCollectBoxes or 0)) --可能服务器提前推过来数据 if CTL.GuildParty.IsSubActivityOpen() then CTL.GuildParty.InitAllCollectBoxes() end end function GuildParty_Model.GetServerCollectBoxes() return serverCollectBoxes end function private.S2CRemoveGuildPartyBox(removeBoxInfo) local boxDataArr = string.split(removeBoxInfo.boxId, ":")--removeBoxInfo.boxId CTL.GuildParty.RemoveOneBox(tonumber(boxDataArr[1]), tonumber(boxDataArr[2])) end function private.S2CPickUpBoxFail(pickUpBoxFail) if pickUpBoxFail.x == 1 then CTL.Tips.AddTipsMsg(Const_IDS.IDS_GuildParty_BePreempted) elseif pickUpBoxFail.x == 2 then CTL.GuildParty.TryTipBoxDisappear() end end function GuildParty_Model.ReqGetCollectData() logging.log(LTAG.YL, "ReqGetCollectData") local msg = guild_party_oper_pb.C2SGetGuildPartyBoxInfo() NetManager.SendMessage(MessageEnums.MessageC2SGetGuildPartyBoxInfo, msg) end function GuildParty_Model.ReqStartPickCollectBox(groupIndex, pointIndex) local msg = guild_party_oper_pb.C2SStartPickUpBox() msg.boxId = groupIndex .. ":" .. pointIndex NetManager.SendMessage(MessageEnums.MessageC2SStartPickUpBox, msg) end function GuildParty_Model.ReqEndPickCollectBox(groupIndex, pointIndex) local msg = guild_party_oper_pb.EndPickUpBoxReq() msg.boxId = groupIndex .. ":" .. pointIndex NetManager.SendMessage(MessageEnums.MessageEndPickUpBox, msg) end function private.RespEndPickCollectBox(msgResp) if msgResp.Resp.Code == 0 and msgResp.isSucc then CTL.GuildParty.StartGuildPartyTip(UIUtils.GetLocalizedTxt(Const_IDS["IDS_GuildParty_TreasureLootSucceedTip"]), 3) end end function GuildParty_Model.GetHasGetBoxCount() return hasGetBoxCount end function GuildParty_Model.GetSendTime() return nextAnswerTime - UTL.Time.GetServerTimestamp() end function GuildParty_Model.SetSendTime() nextAnswerTime = UTL.Time.GetServerTimestamp() + GuildPartyAnsweringCD end function GuildParty_Model.SetGuildPartyContent(content) correctContent = content end return GuildParty_Model