XMoeWarConfig = XMoeWarConfig or {} local tableInsert = table.insert local tableSort = table.sort local TABLE_MOEWAR_ACTIVITY = "Share/MoeWar/MoeWarActivity.tab" local TABLE_MOEWAR_INIT_PAIR = "Share/MoeWar/MoeWarInitPair.tab" local TABLE_MOEWAR_MAIL = "Share/MoeWar/MoeWarMail.tab" local TABLE_MOEWAR_MATCH = "Share/MoeWar/MoeWarMatch.tab" local TABLE_MOEWAR_PLAYER_GROUP = "Share/MoeWar/MoeWarPlayer.tab" local TABLE_MOEWAR_VOTE_ITEM = "Share/MoeWar/MoeWarVoteItem.tab" local TABLE_MOEWAR_PLAYER_CONFIG = "Client/MoeWar/MoeWarPlayerLocal.tab" local TABLE_MOEWAR_TASK_GROUP = "Client/MoeWar/MoeWarTaskGroup.tab" local TABLE_MOEWAR_RANK_GROUP = "Client/MoeWar/MoeWarRankGroup.tab" local TABLE_MOEWAR_PREPARATION_ACTIVITY = "Share/MoeWar/Preparation/MoeWarPreparationActivity.tab" local TABLE_MOEWAR_PREPARATION_ASSISTANCE = "Share/MoeWar/Preparation/MoeWarPreparationAssistance.tab" local TABLE_MOEWAR_PREPARATION_GEAR = "Share/MoeWar/Preparation/MoeWarPreparationGear.tab" local TABLE_MOEWAR_PREPARATION_HELPER = "Share/MoeWar/Preparation/MoeWarPreparationHelper.tab" local TABLE_MOEWAR_PREPARATION_MATCH = "Share/MoeWar/Preparation/MoeWarPreparationMatch.tab" local TABLE_MOEWAR_PREPARATION_QUESHION = "Share/MoeWar/Preparation/MoeWarPreparationQuestion.tab" local TABLE_MOEWAR_PREPARATION_STAGE = "Share/MoeWar/Preparation/MoeWarPreparationStage.tab" local TABLE_MOEWAR_PREPARATION_STAGE_TAG_LABEL = "Client/MoeWar/MoeWarPreparationStageTagLabel.tab" local TABLE_MOEWAR_PREPARATION_STAGE_EVALUATION_LABEL = "Client/MoeWar/MoeWarPreparationStageEvaluationLabel.tab" local TABLE_MOEWAR_ANIMATION = "Client/MoeWar/MoeWarAnimation.tab" local TABLE_MOEWAR_ANIMATION_GROUP = "Client/MoeWar/MoeWarAnimationGroup.tab" local TABLE_MOEWAR_ICON_CONFIG = "Client/MoeWar/MoeWarIconConfig.tab" local TABLE_MOEWAR_ACTIVITY_CONFIG = "Client/MoeWar/MoeWarActivityConfig.tab" local TABLE_MOEWAR_PARKOUR_STAGE = "Share/MoeWar/Parkour/MoeWarParkourStage.tab" local TABLE_MOEWAR_PARKOUR_ACTIVITY = "Share/MoeWar/Parkour/MoeWarParkourActivity.tab" local TABLE_MOEWAR_NAMEPLATE_CONFIG = "Client/MoeWar/MoeWarNameplateConfig.tab" local TABLE_MOEWAR_NAMEPLATE_STORE = "Share/MoeWar/MoeWarNameplateStore.tab" local TABLE_MOEWAR_CHARACTER_MOOD = "Client/MoeWar/MoeWarCharacterMood.tab" local TABLE_MOEWAR_THANK = "Client/MoeWar/MoeWarThank.tab" local TABLE_MOEWAR_SCHEDULE_TAB_GROUP = "Client/MoeWar/MoeWarScheduleTabGroup.tab" local MoeWarActivity = {} local MoeWarInitPair = {} local MoeWarMail = {} local MoeWarMatch = {} local MoeWarPlayers = {} local MoeWarGroups = {} local MoeWarVoteItem = {} local MoeWarPlayerCfg = {} local MoeWarTaskGroup = {} local MoeWarRankGroup = {} local MoeWarAnimation = {} local MoeWarAnimationGroup = {} local MoeWarIconConfig = {} local MoeWarActivityConfig = {} local MoeWarScheduleTabGroup = {} local DefaultActivityId = 1 local MoeWarPreparationActivity = {} local MoeWarPreparationAssistance = {} local MoeWarPreparationGear = {} local MoeWarPreparationHelper = {} local MoeWarPreparationMatch = {} local MoeWarPreparationQuestion = {} local MoeWarPreparationStage = {} local MoeWarPreparationStageTagLabel = {} local MoeWarPreparationStageEvaluationLabel = {} local PreparationAssistanceEffectIdList = {} local MoeWarCharacterMood = {} local MoeWarThank = {} local MoeWarParkourStage = {} local MoeWarParkourActivity = {} local MoeWarNameplateStore = {} local MoeWarNameplateConfig = {} local MoeWarRobotId2HelperId = {} XMoeWarConfig.KEY_GROUP_TAB_INDEX = "MOE_WAR_GROUP_TAB_INDEX_KEY" XMoeWarConfig.SKIP_KEY_PREFIX = "MOE_WAR_SKIP" XMoeWarConfig.DEFAULT_SELECT_KEY_PREFIX ="MOE_WAR_DEFAULT_SELECT" XMoeWarConfig.MOE_WAR_VOTE_ANIMATION_RECORD = "MOE_WAR_VOTE_ANIMATION_RECORD" XMoeWarConfig.MAX_NAMEPLATE_BUY_COUNT = 1 --铭牌最大购买数量 XMoeWarConfig.KEY_PARKOUR_TEAM = "KEY_PARKOUR_TEAM" XMoeWarConfig.ScheNameColor = { NORMAL = XUiHelper.Hexcolor2Color("1B1B1B"), WIN = XUiHelper.Hexcolor2Color("1B1B1B"), } XMoeWarConfig.ScheNumColor = { NORMAL = XUiHelper.Hexcolor2Color("6B6E6E"), WIN = XUiHelper.Hexcolor2Color("6B6E6E"), } XMoeWarConfig.RankIcon = { [1] = CS.XGame.ClientConfig:GetString("BabelTowerRankIcon1"), [2] = CS.XGame.ClientConfig:GetString("BabelTowerRankIcon2"), [3] = CS.XGame.ClientConfig:GetString("BabelTowerRankIcon3"), } XMoeWarConfig.ScheduleIcon = { [1] = CS.XGame.ClientConfig:GetString("MoeWarScheduleIcon1"), [2] = CS.XGame.ClientConfig:GetString("MoeWarScheduleIcon2"), [3] = CS.XGame.ClientConfig:GetString("MoeWarScheduleIcon3"), } XMoeWarConfig.MatchType = { Voting = 1, --投票期 Publicity = 2, --公示期 } XMoeWarConfig.SessionType = { -- 海选期 27进24 GameInAudition = 0, -- 第一轮投票期 24进18 FirstRoundVoting = 1, -- 失败周投票期上半场 18进12 FailWeekVotingUp = 2, -- 失败周投票期下半场 12进6 FailWeekVotingDown = 3, -- 半决赛 6进3 Game6In3 = 4, -- 总决赛 3进1 Game3In1 = 5, } XMoeWarConfig.SessionName = { "Game24In12", "Game12In6", "Game6In3", "Game3In1", } XMoeWarConfig.WarSituationType = { Default = 0, --默认 WinGroup = 1, --战胜组 FailGroup = 2, --失败组 WeedOut = 3, --淘汰 } XMoeWarConfig.RankType = { Daily = 1, Player = 2, } XMoeWarConfig.EventType = { Open = 1, Change = 2, VoteChange = 3, } XMoeWarConfig.MailType = { LastDay = 1, ResultOut = 2, VoteStart = 3, VoteEnd = 4, } XMoeWarConfig.SubTagType = { Top = 0, --顶部 Mid = 1, --中间 Btm = 2, --底部 All = 3, --唯一 } XMoeWarConfig.TaskType = { Daily = 1, --每日任务 Normal = 2, --累计任务 } XMoeWarConfig.ActionType = { Intro = 1, Thank = 2, } --帮手状态 XMoeWarConfig.PreparationHelperStatus = { NotCommunicating = 0, --未通讯 Communicating = 1, --通讯中 CommunicationEnd = 2, --通讯结束 RecruitFinish = 3, --已招募 RecruitFinishAndCommunicating = 4, --已招募并通讯中 } --场外援助效果类型 XMoeWarConfig.PreparationAssistanceEffectType = { Null = 0, --空 MaxCount = 1, --援助上限 ExcludeWrongAnswer = 2, --排除错误选项 RecoveryTime = 3, --恢复间隔 HelperDuration = 4, --增加帮手时长 } --招募答题信息类型 XMoeWarConfig.RecruitMsgType = { MyMsg = 1, OtherMsg = 2, MyNo = 3, MyYes = 4, Line = 5, GiftThank = 6, --赠礼回复 } --问题类型 XMoeWarConfig.QuestionType = { QuestionStart = 1, --开局问候 RandomQuestion = 2, --随机问题 RecruitRight = 3, --招募成功结语 RecruitLose = 4, --招募失败结语 } --赛事筹备开启状态 XMoeWarConfig.MatchState = { ["NotOpen"] = 1, --未开启 ["Open"] = 2, --开启中 ["Over"] = 3, --已结束 } --跑酷小游戏关卡状态 XMoeWarConfig.ParkourGameState = { Unopened = 1, --未开启 Opening = 2, --开启中 Over = 3, --已结束 } --跑酷积分结算Key XMoeWarConfig.ParkourSettleResultKey = { --总积分 TotalScore = "TotalScore", --移动积分 MoveScore = "MoveScore", --收集积分 CollectScore = "CollectScore", --移动距离 MoveDistance = "MoveDistance", --跑酷当日可获得票数 DailyReward = "DailyReward", } local InitPreparationAssistanceEffectIdList = function() local cfg = {} for effectId, v in pairs(MoeWarPreparationAssistance) do tableInsert(cfg, v) end tableSort(cfg, function(a, b) if a.Order ~= b.Order then return a.Order < b.Order end return a.EffectId < b.EffectId end) for _, v in pairs(cfg) do tableInsert(PreparationAssistanceEffectIdList, v.EffectId) end end function XMoeWarConfig.Init() MoeWarActivity = XTableManager.ReadByIntKey(TABLE_MOEWAR_ACTIVITY, XTable.XTableMoeWarActivity, "Id") MoeWarInitPair = XTableManager.ReadByIntKey(TABLE_MOEWAR_INIT_PAIR, XTable.XTableMoeWarInitPair, "Id") MoeWarMail = XTableManager.ReadByIntKey(TABLE_MOEWAR_MAIL, XTable.XTableMoeWarMail, "Id") MoeWarMatch = XTableManager.ReadByIntKey(TABLE_MOEWAR_MATCH, XTable.XTableMoeWarMatch, "Id") MoeWarPlayers = XTableManager.ReadByIntKey(TABLE_MOEWAR_PLAYER_GROUP, XTable.XTableMoeWarPlayer, "Id") MoeWarVoteItem = XTableManager.ReadByIntKey(TABLE_MOEWAR_VOTE_ITEM, XTable.XTableMoeWarVoteItem, "No") MoeWarPlayerCfg = XTableManager.ReadByIntKey(TABLE_MOEWAR_PLAYER_CONFIG, XTable.XTableMoeWarPlayerLocal, "Id") MoeWarTaskGroup = XTableManager.ReadByIntKey(TABLE_MOEWAR_TASK_GROUP, XTable.XTableMoeWarTaskGroup, "Id") MoeWarRankGroup = XTableManager.ReadByIntKey(TABLE_MOEWAR_RANK_GROUP, XTable.XTableMoeRankGroup, "RankType") MoeWarPreparationActivity = XTableManager.ReadByIntKey(TABLE_MOEWAR_PREPARATION_ACTIVITY, XTable.XTableMoeWarPreparationActivity, "Id") MoeWarPreparationAssistance = XTableManager.ReadByIntKey(TABLE_MOEWAR_PREPARATION_ASSISTANCE, XTable.XTableMoeWarPreparationAssistance, "EffectId") MoeWarPreparationGear = XTableManager.ReadByIntKey(TABLE_MOEWAR_PREPARATION_GEAR, XTable.XTableMoeWarPreparationGear, "Id") MoeWarPreparationHelper = XTableManager.ReadByIntKey(TABLE_MOEWAR_PREPARATION_HELPER, XTable.XTableMoeWarPreparationHelper, "Id") MoeWarPreparationMatch = XTableManager.ReadByIntKey(TABLE_MOEWAR_PREPARATION_MATCH, XTable.XTableMoeWarPreparationMatch, "Id") MoeWarPreparationQuestion = XTableManager.ReadByIntKey(TABLE_MOEWAR_PREPARATION_QUESHION, XTable.XTableMoeWarPreparationQuestion, "Id") MoeWarPreparationStage = XTableManager.ReadByIntKey(TABLE_MOEWAR_PREPARATION_STAGE, XTable.XTableMoeWarPreparationStage, "StageId") MoeWarPreparationStageTagLabel = XTableManager.ReadByIntKey(TABLE_MOEWAR_PREPARATION_STAGE_TAG_LABEL, XTable.XTableMoeWarPreparationStageTagLabel, "Id") MoeWarPreparationStageEvaluationLabel = XTableManager.ReadByIntKey(TABLE_MOEWAR_PREPARATION_STAGE_EVALUATION_LABEL, XTable.XTableMoeWarPreparationStageEvaluationLabel, "ReachNum") MoeWarIconConfig = XTableManager.ReadByIntKey(TABLE_MOEWAR_ICON_CONFIG,XTable.XTableMoeWarIconConfig,"Id") MoeWarActivityConfig = XTableManager.ReadByIntKey(TABLE_MOEWAR_ACTIVITY_CONFIG,XTable.XTableMoeWarActivityConfig,"Id") MoeWarAnimation = XTableManager.ReadByIntKey(TABLE_MOEWAR_ANIMATION, XTable.XTableMoeWarAnimation, "Id") MoeWarAnimationGroup = XTableManager.ReadByIntKey(TABLE_MOEWAR_ANIMATION_GROUP, XTable.XTableMoeWarAnimationGroup, "Id") MoeWarParkourStage = XTableManager.ReadByIntKey(TABLE_MOEWAR_PARKOUR_STAGE, XTable.XTableMoeWarParkourStage, "Id") MoeWarParkourActivity = XTableManager.ReadByIntKey(TABLE_MOEWAR_PARKOUR_ACTIVITY, XTable.XTableMoeWarParkourActivity, "Id") MoeWarNameplateConfig = XTableManager.ReadByIntKey(TABLE_MOEWAR_NAMEPLATE_CONFIG, XTable.XTableMoeWarMoeWarNameplateConfig, "Id") MoeWarNameplateStore = XTableManager.ReadByIntKey(TABLE_MOEWAR_NAMEPLATE_STORE, XTable.XTableMoeWarNameplateStore, "NameplateId") MoeWarCharacterMood = XTableManager.ReadByIntKey(TABLE_MOEWAR_CHARACTER_MOOD, XTable.XTableMoeWarCharacterMood, "Id") MoeWarThank = XTableManager.ReadByIntKey(TABLE_MOEWAR_THANK, XTable.XTableMoeWarThank, "Id") MoeWarScheduleTabGroup = XTableManager.ReadByIntKey(TABLE_MOEWAR_SCHEDULE_TAB_GROUP,XTable.XTableMoeWarScheduleTabGroup,"Id") for _, v in pairs(MoeWarPlayers) do if not MoeWarGroups[v.Group] then MoeWarGroups[v.Group] = {} end tableInsert(MoeWarGroups[v.Group], v) end for id, cfg in pairs(MoeWarPreparationHelper) do MoeWarRobotId2HelperId[cfg.RobotId] = id end InitPreparationAssistanceEffectIdList() end function XMoeWarConfig.GetPlayers() return MoeWarPlayers end function XMoeWarConfig.GetPlayerGroup(id) return MoeWarPlayers[id].Group end function XMoeWarConfig.GetGroups() return MoeWarGroups end function XMoeWarConfig.GetRankGroups() return MoeWarRankGroup end function XMoeWarConfig.GetRankGroupByType(type) return MoeWarRankGroup[type] end function XMoeWarConfig.GetGroupById(id) return MoeWarGroups[id] end function XMoeWarConfig.GetScheduleTabGroup() return MoeWarScheduleTabGroup end function XMoeWarConfig.GetPlayerCfg(id) local template = MoeWarPlayerCfg[id] if not template then XLog.ErrorTableDataNotFound("XMoeWarConfig.GetPlayerCfg", "MoeWarPlayerCfg", TABLE_MOEWAR_PLAYER_CONFIG, "Id", tostring(id)) return end return template end function XMoeWarConfig.GetActTemplates() return MoeWarActivity end function XMoeWarConfig.GetActivityTemplateById(id) id = id or DefaultActivityId if not MoeWarActivity[id] then XLog.ErrorTableDataNotFound("XMoeWarConfig.GetActivityTemplateById", "MoeWarActivity", TABLE_MOEWAR_ACTIVITY, "Id", tostring(id)) return end return MoeWarActivity[id] end function XMoeWarConfig.GetInitPair(id) return MoeWarInitPair[id] end function XMoeWarConfig.GetMail(id) return MoeWarMail[id] end function XMoeWarConfig.GetInitPairsByGroupId(groupId) local tempList = {} for k, v in pairs(MoeWarInitPair) do if v.GroupId == groupId then tableInsert(tempList, v) end end return tempList end function XMoeWarConfig.GetMatch(id) return MoeWarMatch[id] end function XMoeWarConfig.GetMatchCfgs() return MoeWarMatch end function XMoeWarConfig.GetVoteItems() return MoeWarVoteItem end function XMoeWarConfig.GetVoteItemById(id) return MoeWarVoteItem[id] end function XMoeWarConfig.GetVoteByItemId(ItemId) return MoeWarVoteItem[ItemId] end function XMoeWarConfig.GetTaskGroupCount() return #MoeWarTaskGroup end function XMoeWarConfig.GetTaskType(id) if not MoeWarTaskGroup[id] then XLog.ErrorTableDataNotFound("XMoeWarConfig.GetTaskType", "MoeWarTaskGroup", TABLE_MOEWAR_TASK_GROUP, "Id", tostring(id)) return end return MoeWarTaskGroup[id].Type end function XMoeWarConfig.GetTaskName(id) if not MoeWarTaskGroup[id] then XLog.ErrorTableDataNotFound("XMoeWarConfig.GetTaskName", "MoeWarTaskGroup", TABLE_MOEWAR_TASK_GROUP, "Id", tostring(id)) return end return MoeWarTaskGroup[id].Name end function XMoeWarConfig.GetTaskGroupId(id) if not MoeWarTaskGroup[id] then XLog.ErrorTableDataNotFound("XMoeWarConfig.GetTaskName", "MoeWarTaskGroup", TABLE_MOEWAR_TASK_GROUP, "Id", tostring(id)) return end return MoeWarTaskGroup[id].Group end function XMoeWarConfig.GetIconList(sessionId) if not MoeWarIconConfig[sessionId] then return end return MoeWarIconConfig[sessionId].IconList end function XMoeWarConfig.GetActivityTimeId(id) local template = XMoeWarConfig.GetActivityTemplateById(id) return template.ActivityTimeId end function XMoeWarConfig.GetActivityName(id) local template = XMoeWarConfig.GetActivityTemplateById(id) return template.Name end function XMoeWarConfig.GetActivityBg(id) local template = XMoeWarConfig.GetActivityTemplateById(id) return template.Background end function XMoeWarConfig.GetGachaSkipId() return MoeWarActivityConfig[1].GachaSkipId end function XMoeWarConfig.GetRewardSkipId() return MoeWarActivityConfig[1].RewardSkipId end function XMoeWarConfig.GetWebUrl() return MoeWarActivityConfig[1].WebUrl end function XMoeWarConfig.GetBeginStoryId() return MoeWarActivityConfig[1].BeginStoryId end function XMoeWarConfig.GetShowItems() return MoeWarActivityConfig[1].ShowItem end function XMoeWarConfig.GetMainHelpId() return MoeWarActivityConfig[1].MainHelpId end function XMoeWarConfig.GetVoteHelpId() return MoeWarActivityConfig[1].VoteHelpId end ---------MoeWarPreparationActivity begin--------- local GetPreparationActivity = function(id) local template = MoeWarPreparationActivity[id] if not template then XLog.ErrorTableDataNotFound("XMoeWarConfig.GetMoeWarPreparationActivity", "MoeWarPreparationActivity", TABLE_MOEWAR_PREPARATION_ACTIVITY, "Id", tostring(id)) return end return template end function XMoeWarConfig.GetPreparationDefaultActivityId() return MoeWarPreparationActivity[1] and MoeWarPreparationActivity[1].Id end function XMoeWarConfig.GetPreparationActivityIdInTime(isGetDefaultActivityId) local nowTime = XTime.GetServerNowTimestamp() local lastOverEndTime = 0 local defaultActivityId for _, v in pairs(MoeWarPreparationActivity) do if XFunctionManager.CheckInTimeByTimeId(v.TimeId) then return v.Id end --活动没有开启返回最新已结束的活动id if isGetDefaultActivityId then local endTime = XFunctionManager.GetEndTimeByTimeId(v.TimeId) if nowTime >= endTime and endTime > lastOverEndTime then lastOverEndTime = endTime defaultActivityId = v.Id end elseif nowTime < XFunctionManager.GetStartTimeByTimeId(v.TimeId) then return v.Id end end return defaultActivityId end function XMoeWarConfig.GetPreparationActivityTimeId(id) local config = GetPreparationActivity(id) return config.TimeId end function XMoeWarConfig.GetPreparationActivityMatchIds(id) local config = GetPreparationActivity(id) local matchIds = {} for _, matchId in ipairs(config.MatchIds) do if matchId > 0 then tableInsert(matchIds, matchId) end end return matchIds end function XMoeWarConfig.GetPreparationActivityMaxStageCount(id) local config = GetPreparationActivity(id) return config.MaxStageCount end function XMoeWarConfig.GetPreparationActivityStageRecoveryTime(id) local config = GetPreparationActivity(id) return config.StageRecoveryTime end function XMoeWarConfig.GetPreparationActivityPreparationGears(id) local config = GetPreparationActivity(id) return config.PreparationGears end function XMoeWarConfig.GetPreparationActivityPrePreparationGear(id, preparationGearId) local preparationGears = XMoeWarConfig.GetPreparationActivityPreparationGears(id) for i, gearId in ipairs(preparationGears) do if gearId == preparationGearId then return preparationGears[i - 1] end end end function XMoeWarConfig.GetPreparationActivityName(id) local config = GetPreparationActivity(id) return config.Name end function XMoeWarConfig.GetPreparationActivityRedminNum(id) local config = GetPreparationActivity(id) return config.RedminNum end function XMoeWarConfig.GetPreparationActivityGiftAmount(id) local config = GetPreparationActivity(id) return config.GiftAmount end ---------MoeWarPreparationActivity end----------- ---------MoeWarPreparationAssistance begin--------- local GetMoeWarPreparationAssistance = function(id) local template = MoeWarPreparationAssistance[id] if not template then XLog.ErrorTableDataNotFound("XMoeWarConfig.GetMoeWarPreparationAssistance", "MoeWarPreparationAssistance", TABLE_MOEWAR_PREPARATION_ASSISTANCE, "Id", tostring(id)) return end return template end local GetPreparationAssistanceIsShowInList = function(id) local config = GetMoeWarPreparationAssistance(id) return config.IsShowInList end function XMoeWarConfig.GetPreparationAssistanceSupportMaxCount() local voteItemId local level = 0 local maxCount = 0 for _, v in pairs(MoeWarPreparationAssistance) do if v.EffectType == XMoeWarConfig.PreparationAssistanceEffectType.MaxCount then voteItemId = XDataCenter.MoeWarManager.GetSupportVoteItemCount(v.VoteItemId) if voteItemId >= v.VoteItemCount and v.Level > level then level = v.Level maxCount = v.Param end end end return maxCount end function XMoeWarConfig.GetPreparationAssistanceAllDifferVoteItemId() local allDifferVoteItemIdDic = {} local allDifferVoteItemIdList = {} for _, v in pairs(MoeWarPreparationAssistance) do if not allDifferVoteItemIdDic[v.VoteItemId] then allDifferVoteItemIdDic[v.VoteItemId] = true tableInsert(allDifferVoteItemIdList, v.VoteItemId) end end return allDifferVoteItemIdList end function XMoeWarConfig.GetPreparationAssistanceVoteItemId(id) local config = GetMoeWarPreparationAssistance(id) return config.VoteItemId end function XMoeWarConfig.GetPreparationAssistanceVoteItemCount(id) local config = GetMoeWarPreparationAssistance(id) return config.VoteItemCount end function XMoeWarConfig.GetPreparationAssistanceTitle(id) local config = GetMoeWarPreparationAssistance(id) return config.Title end function XMoeWarConfig.GetPreparationAssistanceDesc(id) local config = GetMoeWarPreparationAssistance(id) return config.Desc end function XMoeWarConfig.GetPreparationAssistanceEffectIdList(isNotShowInList) if isNotShowInList then local effectIdList = {} local isShowInList for _, effectId in ipairs(PreparationAssistanceEffectIdList) do isShowInList = GetPreparationAssistanceIsShowInList(effectId) if isShowInList == 1 then tableInsert(effectIdList, effectId) end end return effectIdList end return PreparationAssistanceEffectIdList end function XMoeWarConfig.GetPreparationAssistanceEffectType(id) local config = GetMoeWarPreparationAssistance(id) return config.EffectType end function XMoeWarConfig.GetPreparationAssistanceParam(id) local config = GetMoeWarPreparationAssistance(id) return config.Param end function XMoeWarConfig.GetPreparationAssistanceLevel(id) local config = GetMoeWarPreparationAssistance(id) return config.Level end ---------MoeWarPreparationAssistance end----------- ---------MoeWarPreparationGear begin--------- local GetMoeWarPreparationGear = function(id) local template = MoeWarPreparationGear[id] if not template then XLog.ErrorTableDataNotFound("XMoeWarConfig.GetMoeWarPreparationGear", "MoeWarPreparationGear", TABLE_MOEWAR_PREPARATION_GEAR, "Id", tostring(id)) return end return template end function XMoeWarConfig.GetPreparationGearNeedCount(id) local config = GetMoeWarPreparationGear(id) return config.NeedCount end function XMoeWarConfig.GetPreparationGearShowRewardId(id) local config = GetMoeWarPreparationGear(id) return config.ShowRewardId end function XMoeWarConfig.GetPreparationGearMaxNeedCount(activityId) local gears = XMoeWarConfig.GetPreparationActivityPreparationGears(activityId) local maxNeedCount = 0 local needCount for _, gearId in ipairs(gears) do needCount = XMoeWarConfig.GetPreparationGearNeedCount(gearId) if needCount > maxNeedCount then maxNeedCount = needCount end end return maxNeedCount end ---------MoeWarPreparationGear end----------- ---------MoeWarPreparationHelper begin--------- local GetMoeWarPreparationHelper = function(id) local template = MoeWarPreparationHelper[id] if not template then XLog.ErrorTableDataNotFound("XMoeWarConfig.GetMoeWarPreparationHelper", "MoeWarPreparationHelper", TABLE_MOEWAR_PREPARATION_HELPER, "Id", tostring(id)) return end return template end function XMoeWarConfig.GetMoeWarPreparationHelperRobotId(id) local config = GetMoeWarPreparationHelper(id) return config.RobotId end function XMoeWarConfig.GetMoeWarPreparationHelperLabelIds(id) local config = GetMoeWarPreparationHelper(id) return config.LabelIds end function XMoeWarConfig.GetMoeWarPreparationHelperTotalQuestionCount(id) local questionCounts = XMoeWarConfig.GetMoeWarPreparationHelperQuestionCounts(id) local questionBankIds = XMoeWarConfig.GetMoeWarPreparationHelperQuestionBankIds(id) local totalCount = 0 local questionBankIdCount local realQuestionCount for i, questionCount in ipairs(questionCounts) do questionBankIdCount = XMoeWarConfig.GetPreparationQuestionBankIdCount(questionBankIds[i]) realQuestionCount = questionBankIdCount < questionCount and questionBankIdCount or questionCount totalCount = totalCount + realQuestionCount end return totalCount end function XMoeWarConfig.GetMoeWarPreparationCommunicateConsumeCount(id) local config = GetMoeWarPreparationHelper(id) return config.CommunicateConsumeCount end function XMoeWarConfig.GetCharacterFullNameByHelperId(helperId) local robotId = XMoeWarConfig.GetMoeWarPreparationHelperRobotId(helperId) local characterId = XRobotManager.GetCharacterId(robotId) return XCharacterConfigs.GetCharacterFullNameStr(characterId) end function XMoeWarConfig.GetMoeWarPreparationHelperQuestionCounts(id) local config = GetMoeWarPreparationHelper(id) return config.QuestionCounts end function XMoeWarConfig.GetMoeWarPreparationHelperQuestionBankIds(id) local config = GetMoeWarPreparationHelper(id) return config.QuestionBankIds end function XMoeWarConfig.GetMoeWarPreparationHelperCirleIcon(id) local config = GetMoeWarPreparationHelper(id) return config.CirleIcon end function XMoeWarConfig.GetHelperIdByRobotId(robotId) return MoeWarRobotId2HelperId[robotId] end function XMoeWarConfig.GetPreparationHelperMoodUpLimit(id) local config = GetMoeWarPreparationHelper(id) local moodUpLimit = config.MoodUpLimit return XTool.IsNumberValid(moodUpLimit) and moodUpLimit or 1 end function XMoeWarConfig.GetPreparationHelperGiftRecoveryMood(id) local config = GetMoeWarPreparationHelper(id) return config.GiftRecoveryMood end function XMoeWarConfig.GetPreparationHelperDefaultLock(id) if not XTool.IsNumberValid(id) then return false end local config = GetMoeWarPreparationHelper(id) return XTool.IsNumberValid(config.DefaultLock) end function XMoeWarConfig.GetPreparationHelperThankId(id) local config = GetMoeWarPreparationHelper(id) return config.ThankId end ---------MoeWarPreparationHelper end----------- ---------MoeWarPreparationMatch begin--------- local GetMoeWarPreparationMatch = function(id) local template = MoeWarPreparationMatch[id] if not template then XLog.ErrorTableDataNotFound("XMoeWarConfig.GetMoeWarPreparationMatch", "MoeWarPreparationMatch", TABLE_MOEWAR_PREPARATION_MATCH, "Id", tostring(id)) return end return template end function XMoeWarConfig.GetPreparationMatchTimeId(id) local config = GetMoeWarPreparationMatch(id) return config.TimeId end function XMoeWarConfig.GetPreparationMatchHelperIds(id) local config = GetMoeWarPreparationMatch(id) return config.HelperIds end function XMoeWarConfig.GetPreparationMatchName(id) local config = GetMoeWarPreparationMatch(id) return config.Name end function XMoeWarConfig.GetPreparationCurrOpenMatchId() local timeId for _, v in pairs(MoeWarPreparationMatch) do timeId = XMoeWarConfig.GetPreparationMatchTimeId(v.Id) if XFunctionManager.CheckInTimeByTimeId(timeId) then return v.Id end end end function XMoeWarConfig.IsFillPreparationStageLabel(stageLableId, helperId) if not stageLableId or (not helperId or helperId == 0) then return false end local helperLabelIds = XMoeWarConfig.GetMoeWarPreparationHelperLabelIds(helperId) for index, helperLabelId in ipairs(helperLabelIds) do if stageLableId == helperLabelId then return true end end return false end function XMoeWarConfig.GetPreparationMatchNumText(id) local config = GetMoeWarPreparationMatch(id) return config.NumText or "" end ---------MoeWarPreparationMatch end----------- ---------MoeWarPreparationQuestion begin--------- local GetMoeWarPreparationQuestion = function(id) local template = MoeWarPreparationQuestion[id] if not template then XLog.ErrorTableDataNotFound("XMoeWarConfig.GetMoeWarPreparationQuestion", "MoeWarPreparationQuestion", TABLE_MOEWAR_PREPARATION_QUESHION, "Id", tostring(id)) return end return template end function XMoeWarConfig.GetPreparationQuestionAnswers(id) local config = GetMoeWarPreparationQuestion(id) return config.Answers end function XMoeWarConfig.GetPreparationQuestionAnswer(id, index) local questionAnswers = XMoeWarConfig.GetPreparationQuestionAnswers(id) return questionAnswers and questionAnswers[index] end function XMoeWarConfig.GetPreparationQuestionPreChatId(id) local config = GetMoeWarPreparationQuestion(id) return config.PreChatId end function XMoeWarConfig.GetPreparationQuestionIdListByType(helperId, questionType) local questionIdList = {} for _, v in pairs(MoeWarPreparationQuestion) do if v.HelperId == helperId and v.Type == questionType then tableInsert(questionIdList, v.Id) end end local questionSortIdList = {} local questionIdDic = {} local preChatId local isStop = false while not isStop do isStop = true for i, id in ipairs(questionIdList) do preChatId = XMoeWarConfig.GetPreparationQuestionPreChatId(id) if preChatId == 0 or questionIdDic[preChatId] then tableInsert(questionSortIdList, id) questionIdDic[id] = true table.remove(questionIdList, i) isStop = false break end end end return questionSortIdList end function XMoeWarConfig.GetPreparationQuestionType(id) local config = GetMoeWarPreparationQuestion(id) return config.Type end function XMoeWarConfig.GetPreparationQuestion(id) local config = GetMoeWarPreparationQuestion(id) return config.Question end function XMoeWarConfig.GetPreparationQuestionRightReply(id) local config = GetMoeWarPreparationQuestion(id) return config.RightReply end function XMoeWarConfig.GetPreparationQuestionWrongReply(id) local config = GetMoeWarPreparationQuestion(id) return config.WrongReply end function XMoeWarConfig.GetPreparationQuestionChat(id) local config = GetMoeWarPreparationQuestion(id) return config.Chat or "" end function XMoeWarConfig.GetPreparationQuestionChatReply(id) local config = GetMoeWarPreparationQuestion(id) return config.ChatReply end function XMoeWarConfig.GetPreparationQuestionHelperIcon(id) local config = GetMoeWarPreparationQuestion(id) return config.HelperIcon end function XMoeWarConfig.GetPreparationQuestionId(helperId, questionType) for _, v in pairs(MoeWarPreparationQuestion) do if v.HelperId == helperId and questionType == v.Type then return v.Id end end end function XMoeWarConfig.GetPreparationQuestionBankIdCount(bankId) local count = 0 for _, v in pairs(MoeWarPreparationQuestion) do if v.BankId == bankId then count = count + 1 end end return count end function XMoeWarConfig.GetPreparationQuestionHelperName(id) local config = GetMoeWarPreparationQuestion(id) return config.HelperName end ---------MoeWarPreparationQuestion end----------- ---------MoeWarPreparationStage begin--------- local GetMoeWarPreparationStage = function(id) local template = MoeWarPreparationStage[id] if not template then XLog.ErrorTableDataNotFound("XMoeWarConfig.GetMoeWarPreparationStage", "MoeWarPreparationStage", TABLE_MOEWAR_PREPARATION_STAGE, "Id", tostring(id)) return end return template end --筹备关卡界面的基本奖励 function XMoeWarConfig.GetPreparationStageShowBaseRewardId(id) local config = GetMoeWarPreparationStage(id) return config.ShowBaseRewardId end function XMoeWarConfig.GetPreparationStageLabelIds(id) local config = GetMoeWarPreparationStage(id) local labelIds = {} for i, labelId in ipairs(config.LabelIds or {}) do if labelId > 0 then tableInsert(labelIds, labelId) end end return labelIds end function XMoeWarConfig.GetPreparationStageExtraRewardCount(stageId, showExtraRewardIdsIndex) local showExtraRewardIds = XMoeWarConfig.GetPreparationStageShowExtraRewardIds(stageId) local rewardId = showExtraRewardIds[showExtraRewardIdsIndex] if not rewardId then return 0 end local rewardList = XRewardManager.GetRewardList(rewardId) return rewardList[1].Count end function XMoeWarConfig.GetPreparationStageShowExtraRewardIds(stageId) local config = GetMoeWarPreparationStage(stageId) return config.ShowExtraRewardIds end function XMoeWarConfig.GetPreparationStageShowExtraRewardId(stageId, index) local config = GetMoeWarPreparationStage(stageId) local showExtraRewardIds = config.ShowExtraRewardIds return showExtraRewardIds[index] end function XMoeWarConfig.GetPreparationStageShowExtraRewardName(stageId, showExtraRewardIdsIndex) local showExtraRewardIds = XMoeWarConfig.GetPreparationStageShowExtraRewardIds(stageId) for index, showExtraRewardId in ipairs(showExtraRewardIds) do if index == showExtraRewardIdsIndex then local rewards = XRewardManager.GetRewardList(showExtraRewardId) local templateId = rewards[1] and rewards[1].TemplateId return (templateId and templateId > 0 and XGoodsCommonManager.GetGoodsName(templateId)) or "" end end return "" end --获得满足条件的数量 function XMoeWarConfig.GetPreparationFillConditionCount(stageId, helperId) local labelIds = XMoeWarConfig.GetPreparationStageLabelIds(stageId) local fillConditionCount = 0 for _, stageLabelId in ipairs(labelIds) do if XMoeWarConfig.IsFillPreparationStageLabel(stageLabelId, helperId) then fillConditionCount = fillConditionCount + 1 end end return fillConditionCount end --获得心情消耗 function XMoeWarConfig.GetStageCostMoodNum(stageId, helperId) local fillConditionCount = XMoeWarConfig.GetPreparationFillConditionCount(stageId, helperId) local config = GetMoeWarPreparationStage(stageId) if not config then return 0 end local levelCostMoodNums = config.LabelCostMoodNums return levelCostMoodNums[fillConditionCount] or config.BaseCostMoodNum end --通讯次数奖励 function XMoeWarConfig.GetPreparationStageShowSpecialRewardId(id) local config = GetMoeWarPreparationStage(id) return config.ShowSpecialRewardId end --筹备界面每个关卡的奖励 function XMoeWarConfig.GetPreparationStageShowAllRewardId(id) local config = GetMoeWarPreparationStage(id) return config.ShowAllRewardId end ---------MoeWarPreparationStage end----------- ---------MoeWarPreparationStageTagLabel begin--------- local GetPreparationStageTagLabel = function(id) local template = MoeWarPreparationStageTagLabel[id] if not template then XLog.ErrorTableDataNotFound("XMoeWarConfig.GetMoeWarPreparationStageTagLabel", "MoeWarPreparationStageTagLabel", TABLE_MOEWAR_PREPARATION_STAGE_TAG_LABEL, "Id", tostring(id)) return end return template end function XMoeWarConfig.GetPreparationStageTagLabelById(id) local config = GetPreparationStageTagLabel(id) return config.TagLabel end ---------MoeWarPreparationStageTagLabel end----------- ---------MoeWarPreparationStageEvaluationLabel begin---------- local GetPreparationStageEvaluationLabel = function(id) local template = MoeWarPreparationStageEvaluationLabel[id] if not template then XLog.ErrorTableDataNotFound("XMoeWarConfig.GetMoeWarPreparationStageEvaluationLabel", "MoeWarPreparationStageEvaluationLabel", TABLE_MOEWAR_PREPARATION_STAGE_EVALUATION_LABEL, "ReachNum", tostring(id)) return end return template end function XMoeWarConfig.GetPreparationStageEvaluationEvaluatioLabel(reachNum) local config = GetPreparationStageEvaluationLabel(reachNum) return config.EvaluatioLabel end ---------MoeWarPreparationStageEvaluationLabel end------------ ---------------------场景动画相关 begin-------------------- local function GetAnimationGroupConfig(groupId) local config = MoeWarAnimationGroup[groupId] if not config then XLog.Error("XMoeWarConfig GetAnimationGroupConfig error:配置不存在, groupId: " .. groupId .. ", 配置路径: " .. TABLE_MOEWAR_ANIMATION_GROUP) return end return config end --返回PlayerLocal表中配置的AnimationGroupIds function XMoeWarConfig.GetAllAnimationGroupIds() local animationGroupIds = {} for _, v in pairs(MoeWarPlayerCfg) do for _, winAnimGroupId in ipairs(v.WinAnimGroupId) do table.insert(animationGroupIds, winAnimGroupId) end for _, loseAnimGroupId in ipairs(v.LoseAnimGroupId) do table.insert(animationGroupIds, loseAnimGroupId) end end return animationGroupIds end function XMoeWarConfig.GetAnimationIds(groupId) local animationIds = {} local config = GetAnimationGroupConfig(groupId) for _, animationId in ipairs(config.AnimationId) do if XTool.IsNumberValid(animationId) then tableInsert(animationIds, animationId) end end return animationIds end function XMoeWarConfig.GetAnimationGroupInitModelName(groupId) local config = GetAnimationGroupConfig(groupId) return config.InitModelName end function XMoeWarConfig.GetAnimationGroupInitAnim(groupId) local config = GetAnimationGroupConfig(groupId) return config.InitAnim end local function GetAnimationConfig(animationId) local config = MoeWarAnimation[animationId] if not config then XLog.Error("XMoeWarConfig GetAnimationConfig error:配置不存在, animationId: " .. animationId .. ", 配置路径: " .. TABLE_MOEWAR_ANIMATION) return end return config end function XMoeWarConfig.GetAnimationModelName(animationId) local config = GetAnimationConfig(animationId) return config.ModelName end function XMoeWarConfig.GetAnimationAnimName(animationId) local config = GetAnimationConfig(animationId) return config.AnimName end function XMoeWarConfig.GetAnimationSpeed(animationId) local config = GetAnimationConfig(animationId) return config.Speed end function XMoeWarConfig.GetAnimationTotalDistance(groupId) local animationIds = XMoeWarConfig.GetAnimationIds(groupId) local totalDistance = 0 for _, animationId in ipairs(animationIds) do totalDistance = totalDistance + XMoeWarConfig.GetAnimationDistance(animationId) end return totalDistance end function XMoeWarConfig.GetAnimationDistance(animationId) local config = GetAnimationConfig(animationId) return config.Distance end function XMoeWarConfig.GetAnimationRoleEffect(animationId) local config = GetAnimationConfig(animationId) return config.RoleEffect, config.RoleEffectRoot end --runwayIndex:场景上的跑道下标 function XMoeWarConfig.GetAnimationSceneEffect(animationId, runwayIndex) local config = GetAnimationConfig(animationId) local sceneEffectRoot = config.SceneEffectRoot return config.SceneEffect, not string.IsNilOrEmpty(sceneEffectRoot) and string.format(sceneEffectRoot, runwayIndex) end XMoeWarConfig.ReloadAnimationConfigs = function() MoeWarAnimation = XTableManager.ReadByIntKey(TABLE_MOEWAR_ANIMATION, XTable.XTableMoeWarAnimation, "Id") MoeWarAnimationGroup = XTableManager.ReadByIntKey(TABLE_MOEWAR_ANIMATION_GROUP, XTable.XTableMoeWarAnimationGroup, "Id") end ---------------------场景动画相关 end-------------------- --region ------------------跑酷小游戏相关 start------------------- local GetParkourActivity = function(id) local cfg = MoeWarParkourActivity[id] if not cfg then XLog.ErrorTableDataNotFound("XMoeWarConfig.GetParkourActivity", "MoeWarParkourActivity", TABLE_MOEWAR_PARKOUR_ACTIVITY, "Id", id) return end return cfg end function XMoeWarConfig.GetParkourActivityId(useDefault) local timeOfNow = XTime.GetServerNowTimestamp() local activityId = 0 local lastOverEndTime = 0 for id, cfg in pairs(MoeWarParkourActivity) do if XFunctionManager.CheckInTimeByTimeId(cfg.TimeId) then return id end if useDefault then local timeOfEnd = XFunctionManager.GetEndTimeByTimeId(cfg.TimeId) if timeOfNow >= timeOfEnd and timeOfEnd > lastOverEndTime then activityId = cfg.Id lastOverEndTime = timeOfEnd end end end return activityId end local GetParkourTimeId = function (id) local cfg = GetParkourActivity(id) return cfg.TimeId end function XMoeWarConfig.GetParkourStageList(id) local cfg = GetParkourActivity(id) return cfg.StageId end function XMoeWarConfig.GetParkourRewardId(id) local cfg = GetParkourActivity(id) return cfg.RewardId end function XMoeWarConfig.GetParkourTeachStageId(id) local cfg = GetParkourActivity(id) return cfg.TeachStageId end function XMoeWarConfig.GetParkourStartTime(id) local timeId = GetParkourTimeId(id) return XFunctionManager.GetStartTimeByTimeId(timeId) end function XMoeWarConfig.GetParkourEndTime(id) local timeId = GetParkourTimeId(id) return XFunctionManager.GetEndTimeByTimeId(timeId) end function XMoeWarConfig.GetParkourStageTemplate(stageId) local template = MoeWarParkourStage[stageId] if not template then XLog.ErrorTableDataNotFound("XMoeWarConfig.GetParkourStageTemplate", "MoeWarParkourStage", TABLE_MOEWAR_PARKOUR_STAGE, "StageId", stageId) return end return template end function XMoeWarConfig.GetParkourDailyMaxReward(id) local cfg = GetParkourActivity(id) return cfg.DailyMaxReward end --endregion------------------跑酷小游戏相关 finish------------------ --region ------------------铭牌商城相关 start------------------- function XMoeWarConfig.GetMoeWarNameplateList() return MoeWarNameplateConfig end function XMoeWarConfig.GetMoeWarNameplateCostItemId(nameplateId) local cfg = MoeWarNameplateStore[nameplateId] return cfg and cfg.CostItemId or 0 end function XMoeWarConfig.GetMoeWarNameplateCostItemCount(nameplateId) local cfg = MoeWarNameplateStore[nameplateId] return cfg and cfg.CostItemCount or 0 end function XMoeWarConfig.GetPreNameplateId(nameplateId) local cfg = MoeWarNameplateStore[nameplateId] return cfg and cfg.PreNameplateId or 0 end function XMoeWarConfig.GetNameplateItemName(nameplateId) local cfg = MoeWarNameplateStore[nameplateId] return cfg and cfg.ItemName or "" end --endregion------------------铭牌商城相关 finish------------------ ---------------------心情显示相关 begin------------------ local GetCharacterMoodConfig = function(id) local config = MoeWarCharacterMood[id] if not config then XLog.Error("XMoeWarConfig GetAnimationConfig error:配置不存在, id: " .. id .. ", 配置路径: " .. TABLE_MOEWAR_CHARACTER_MOOD) return end return config end local IsInitCharacterMood = false local CharacterMoodIdList = {} local InitCharacterMood = function() if IsInitCharacterMood then return end for id in pairs(MoeWarCharacterMood) do tableInsert(CharacterMoodIdList, id) end tableSort(CharacterMoodIdList, function(idA, idB) local valueA = XMoeWarConfig.GetCharacterMoodMinValue(idA) local valueB = XMoeWarConfig.GetCharacterMoodMinValue(idB) return valueA > valueB end) IsInitCharacterMood = true end function XMoeWarConfig.GetCharacterMoodId(moodValue) InitCharacterMood() if moodValue then local minValue for _, id in ipairs(CharacterMoodIdList) do minValue = XMoeWarConfig.GetCharacterMoodMinValue(id) if moodValue > minValue then return id end end end return CharacterMoodIdList[#CharacterMoodIdList] end function XMoeWarConfig.GetCharacterMoodMinValue(id) local config = GetCharacterMoodConfig(id) return config.MoodMinValue end function XMoeWarConfig.GetCharacterMoodColor(id) local config = GetCharacterMoodConfig(id) return XUiHelper.Hexcolor2Color(config.Color) end function XMoeWarConfig.GetCharacterMoodIcon(id) local config = GetCharacterMoodConfig(id) return config.Icon end ---------------------心情显示相关 end-------------------- ---------------------赠礼回复相关 begin------------------ local GetThankConfig = function(id) local config = MoeWarThank[id] if not config then XLog.Error("XMoeWarConfig GetThankConfig error:配置不存在, id: " .. id .. ", 配置路径: " .. TABLE_MOEWAR_THANK) return end return config end function XMoeWarConfig.GetThankText(id) local config = GetThankConfig(id) return config.Text end ---------------------赠礼回复相关 end--------------------