forked from endernon/PGRData
485 lines
No EOL
18 KiB
Lua
485 lines
No EOL
18 KiB
Lua
XCourseConfig = XCourseConfig or {}
|
||
|
||
local TABLE_COURSE_SHARE = "Share/Fuben/Course/"
|
||
local TABLE_COURSE_CLINET = "Client/Fuben/Course/"
|
||
|
||
-- 面板页签类型,对应CourseActivity的SystemType
|
||
XCourseConfig.SystemType = {
|
||
Lesson = 1, -- 课程
|
||
Exam = 2, -- 考级
|
||
}
|
||
|
||
function XCourseConfig.Init()
|
||
XConfigCenter.CreateGetProperties(XCourseConfig, {
|
||
"CourseActivity",
|
||
"CourseChapter",
|
||
"CourseChapterDetail",
|
||
"CourseStage",
|
||
"CourseStageShowType",
|
||
"CourseClientConfig",
|
||
"CourseReward",
|
||
"CourseChapterGroup",
|
||
"CourseExamChapter",
|
||
"CourseLessonChapter"
|
||
}, {
|
||
"ReadByIntKey", TABLE_COURSE_CLINET .. "CourseActivity.tab", XTable.XTableCourseActivity, "StageType",
|
||
"ReadByIntKey", TABLE_COURSE_SHARE .. "CourseChapter.tab", XTable.XTableCourseChapter, "ChapterId",
|
||
"ReadByIntKey", TABLE_COURSE_CLINET .. "CourseChapterDetail.tab", XTable.XTableCourseChapterDetail, "ChapterId",
|
||
"ReadByIntKey", TABLE_COURSE_SHARE .. "CourseStage.tab", XTable.XTableCourseStage, "StageId",
|
||
"ReadByIntKey", TABLE_COURSE_CLINET .. "CourseStageShowType.tab", XTable.XTableCourseStageShowType, "StageShowType",
|
||
"ReadByStringKey", TABLE_COURSE_CLINET .. "CourseClientConfig.tab", XTable.XTableCourseClientConfig, "Key",
|
||
"ReadByIntKey", TABLE_COURSE_SHARE .. "CourseReward.tab", XTable.XTableCourseReward, "Id",
|
||
"ReadByIntKey", TABLE_COURSE_CLINET .. "CourseChapterGroup.tab", XTable.XTableCourseChapterGroup, "GroupId",
|
||
"ReadByIntKey", TABLE_COURSE_CLINET .. "CourseExamChapter.tab", XTable.XTableCourseExamChapter, "ChapterId",
|
||
"ReadByIntKey", TABLE_COURSE_CLINET .. "CourseLessonChapter.tab", XTable.XTableCourseLessonChapter, "ChapterId",
|
||
})
|
||
end
|
||
|
||
|
||
--==============================CourseActivity 考级页签==============================
|
||
-- 读取功能开启TimeId
|
||
function XCourseConfig.GetActivityTimeId(stageType)
|
||
local config = XCourseConfig.GetCourseActivity(stageType)
|
||
return config.TimeId
|
||
end
|
||
|
||
-- 读取章节组Id列表
|
||
function XCourseConfig.GetActivityGroupIds(stageType)
|
||
local config = XCourseConfig.GetCourseActivity(stageType)
|
||
return config.GroupIds
|
||
end
|
||
--==================================================================================
|
||
|
||
|
||
|
||
--===============================CourseChapter 课程=================================
|
||
local StageTypeToChapterIdList = {} --key: 章节类型,value: 章节Id列表
|
||
local StageIdToChapterIdMap = {} --key:CourseStage表的Id,value:CourseChapter表的Id
|
||
local IsInitChapterConfig = false
|
||
local InitChapterConfig = function()
|
||
if IsInitChapterConfig then
|
||
return
|
||
end
|
||
|
||
local stageIds
|
||
local stageType
|
||
local configs = XCourseConfig.GetCourseChapter()
|
||
for chapterId, config in pairs(configs) do
|
||
stageType = config.StageType
|
||
if not StageTypeToChapterIdList[stageType] then
|
||
StageTypeToChapterIdList[stageType] = {}
|
||
end
|
||
table.insert(StageTypeToChapterIdList[stageType], chapterId)
|
||
|
||
stageIds = config.StageIds
|
||
for index, stageId in ipairs(stageIds) do
|
||
StageIdToChapterIdMap[stageId] = chapterId
|
||
end
|
||
end
|
||
for _, chapterIdList in ipairs(StageTypeToChapterIdList) do
|
||
table.sort(chapterIdList, function(a, b)
|
||
local orderA = XCourseConfig.GetChapterOrder(a)
|
||
local orderB = XCourseConfig.GetChapterOrder(b)
|
||
if XTool.IsNumberValid(orderA) and XTool.IsNumberValid(orderB) and orderA ~= orderB then
|
||
if not XTool.IsNumberValid(orderA) then
|
||
return false
|
||
end
|
||
if not XTool.IsNumberValid(orderB) then
|
||
return true
|
||
end
|
||
return orderA < orderB
|
||
end
|
||
return a < b
|
||
end)
|
||
end
|
||
|
||
IsInitChapterConfig = true
|
||
end
|
||
|
||
function XCourseConfig.GetChapterIdByStageId(stageId)
|
||
InitChapterConfig()
|
||
return StageIdToChapterIdMap[stageId]
|
||
end
|
||
|
||
function XCourseConfig.GetChapterOrder(id)
|
||
local config = XCourseConfig.GetCourseChapterById(id)
|
||
return config and config.OrderId
|
||
end
|
||
|
||
-- 读取章节列表
|
||
function XCourseConfig.GetChapterIdListByStageType(stageType)
|
||
InitChapterConfig()
|
||
return StageTypeToChapterIdList[stageType] or {}
|
||
end
|
||
|
||
function XCourseConfig.GetCourseChapterById(chapterId)
|
||
return XCourseConfig.GetCourseChapter(chapterId, true)
|
||
end
|
||
|
||
function XCourseConfig.GetChapterStageType(chapterId)
|
||
local config = XCourseConfig.GetCourseChapterById(chapterId)
|
||
return not XTool.IsTableEmpty(config) and config.StageType or nil
|
||
end
|
||
|
||
function XCourseConfig.GetCourseChapterNeedPointById(chapterId)
|
||
local config = XCourseConfig.GetCourseChapterById(chapterId)
|
||
return not XTool.IsTableEmpty(config) and config.NeedPoint or nil
|
||
end
|
||
|
||
function XCourseConfig.GetCourseChapterPrevIdById(chapterId)
|
||
local config = XCourseConfig.GetCourseChapterById(chapterId)
|
||
return not XTool.IsTableEmpty(config) and config.PrevChapterId or nil
|
||
end
|
||
|
||
function XCourseConfig.GetCourseChapterStageIdsById(chapterId)
|
||
local config = XCourseConfig.GetCourseChapterById(chapterId)
|
||
return not XTool.IsTableEmpty(config) and config.StageIds or nil
|
||
end
|
||
|
||
function XCourseConfig.GetCourseChapterUnlockLessonPoint(chapterId)
|
||
local config = XCourseConfig.GetCourseChapterById(chapterId)
|
||
return not XTool.IsTableEmpty(config) and config.UnlockLessonPoint or nil
|
||
end
|
||
|
||
function XCourseConfig.GetCourseChapterPrevChapterId(chapterId)
|
||
local config = XCourseConfig.GetCourseChapterById(chapterId)
|
||
return not XTool.IsTableEmpty(config) and config.PrevChapterIds or {}
|
||
end
|
||
|
||
function XCourseConfig.GetCourseChapterClearPoint(chapterId)
|
||
local config = XCourseConfig.GetCourseChapterById(chapterId)
|
||
return not XTool.IsTableEmpty(config) and config.ClearPoint or nil
|
||
end
|
||
|
||
function XCourseConfig.GetCourseChapterName(chapterId)
|
||
local config = XCourseConfig.GetCourseChapterById(chapterId)
|
||
return not XTool.IsTableEmpty(config) and config.Name or nil
|
||
end
|
||
|
||
function XCourseConfig.GetCourseChapterShortName(chapterId, startPos, endPos)
|
||
startPos = startPos or 1
|
||
endPos = endPos or 4
|
||
local name = XCourseConfig.GetCourseChapterName(chapterId)
|
||
return string.sub(name, startPos, endPos)
|
||
end
|
||
|
||
function XCourseConfig.GetCourseChapterLockDesc(chapterId)
|
||
local config = XCourseConfig.GetCourseChapterById(chapterId)
|
||
return not XTool.IsTableEmpty(config) and config.LockDesc or nil
|
||
end
|
||
|
||
function XCourseConfig.GetCourseChapterUnlockLv(chapterId)
|
||
local config = XCourseConfig.GetCourseChapterById(chapterId)
|
||
return not XTool.IsTableEmpty(config) and config.UnlockLv or 0
|
||
end
|
||
|
||
--获得章节所有星星的数量
|
||
function XCourseConfig.GetTotalStarPointCount(chapterId)
|
||
local stageIdList = XCourseConfig.GetCourseChapterStageIdsById(chapterId)
|
||
local totalPointCount = 0
|
||
for index, stageId in ipairs(stageIdList) do
|
||
totalPointCount = totalPointCount + #XCourseConfig.GetCourseStageStarPointById(stageId)
|
||
end
|
||
return totalPointCount
|
||
end
|
||
--==================================================================================
|
||
|
||
|
||
|
||
--===================CourseLessonChapter 课程章节前端配置===========================
|
||
function XCourseConfig.GetLessonChapterGridNormalBg(id)
|
||
local config = XCourseConfig.GetCourseLessonChapter(id, true)
|
||
return config.GridNormalBg
|
||
end
|
||
|
||
function XCourseConfig.GetLessonChapterImgNum(id)
|
||
local config = XCourseConfig.GetCourseLessonChapter(id, true)
|
||
return config.ImgNum
|
||
end
|
||
|
||
function XCourseConfig.GetLessonChapterSortBg(id)
|
||
local config = XCourseConfig.GetCourseLessonChapter(id, true)
|
||
return config.SortBg
|
||
end
|
||
|
||
function XCourseConfig.GetLessonShowReward(id)
|
||
local config = XCourseConfig.GetCourseLessonChapter(id, true)
|
||
return config.ShowReward
|
||
end
|
||
--==================================================================================
|
||
|
||
--===================CourseExamChapter 执照章节前端配置===========================
|
||
function XCourseConfig.GetExamChapterGridNormalBg(id)
|
||
local config = XCourseConfig.GetCourseExamChapter(id, true)
|
||
return config.GridNormalBg
|
||
end
|
||
|
||
function XCourseConfig.GetExamChapterGridDisableBg(id)
|
||
local config = XCourseConfig.GetCourseExamChapter(id, true)
|
||
return config.GridDisableBg
|
||
end
|
||
|
||
function XCourseConfig.GetExamChapterGridShowReward(id)
|
||
local config = XCourseConfig.GetCourseExamChapter(id, true)
|
||
return config.ShowReward
|
||
end
|
||
|
||
function XCourseConfig.GetExamChapterGridShowRewardIcon(id)
|
||
local config = XCourseConfig.GetCourseExamChapter(id, true)
|
||
return config.RewardIcon
|
||
end
|
||
--==================================================================================
|
||
|
||
|
||
|
||
--===========================CourseChapterDetail 关卡详情=============================
|
||
function XCourseConfig.GetCourseChapterDetailById(chapterId)
|
||
return XCourseConfig.GetCourseChapterDetail(chapterId, true)
|
||
end
|
||
|
||
function XCourseConfig.GetCourseLessonDetailBgById(chapterId)
|
||
local config = XCourseConfig.GetCourseChapterDetailById(chapterId)
|
||
return not XTool.IsTableEmpty(config) and config.Bg or nil
|
||
end
|
||
|
||
function XCourseConfig.GetCourseLessonDetailDescTitleById(chapterId)
|
||
local config = XCourseConfig.GetCourseChapterDetailById(chapterId)
|
||
return not XTool.IsTableEmpty(config) and config.DescTitle or nil
|
||
end
|
||
|
||
function XCourseConfig.GetCourseLessonDetailDescById(chapterId)
|
||
local config = XCourseConfig.GetCourseChapterDetailById(chapterId)
|
||
return not XTool.IsTableEmpty(config) and config.Desc or nil
|
||
end
|
||
--==================================================================================
|
||
|
||
|
||
|
||
--================================CourseStage 课程==================================
|
||
function XCourseConfig.GetCourseStageById(stageId)
|
||
return XCourseConfig.GetCourseStage(stageId, true)
|
||
end
|
||
|
||
function XCourseConfig.GetCourseStagePrevStageIdById(stageId)
|
||
local config = XCourseConfig.GetCourseStageById(stageId)
|
||
return not XTool.IsTableEmpty(config) and config.PrevStageId
|
||
end
|
||
|
||
function XCourseConfig.GetCourseStageStarPointById(stageId)
|
||
local config = XCourseConfig.GetCourseStageById(stageId)
|
||
return not XTool.IsTableEmpty(config) and config.StarPoint or {}
|
||
end
|
||
|
||
function XCourseConfig.GetCourseStageShowTypeByStageId(stageId)
|
||
local config = XCourseConfig.GetCourseStageById(stageId)
|
||
return not XTool.IsTableEmpty(config) and config.StageShowType
|
||
end
|
||
|
||
function XCourseConfig.GetCourseStageNameById(stageId)
|
||
return XFubenConfigs.GetStageName(stageId)
|
||
end
|
||
|
||
function XCourseConfig.GetCourseStageDescById(stageId)
|
||
local config = XCourseConfig.GetCourseStageById(stageId)
|
||
return not XTool.IsTableEmpty(config) and config.Desc
|
||
end
|
||
|
||
function XCourseConfig.GetCourseLessonStageIdById(stageId)
|
||
local config = XCourseConfig.GetCourseStageById(stageId)
|
||
return not XTool.IsTableEmpty(config) and config.LessonStageId
|
||
end
|
||
--==================================================================================
|
||
|
||
|
||
|
||
--=====================CourseStageShowType 关卡类型展示=============================
|
||
function XCourseConfig.GetCourseStageShowTypeById(id)
|
||
return XCourseConfig.GetCourseStageShowType(id, true)
|
||
end
|
||
|
||
function XCourseConfig.GetStageShowTypeName(id)
|
||
local config = XCourseConfig.GetCourseStageShowTypeById(id)
|
||
return not XTool.IsTableEmpty(config) and config.TypeName or nil
|
||
end
|
||
|
||
function XCourseConfig.GetStageShowTypeTxtRewardTitle(id)
|
||
local config = XCourseConfig.GetCourseStageShowTypeById(id)
|
||
return not XTool.IsTableEmpty(config) and config.TxtRewardTitle or nil
|
||
end
|
||
|
||
function XCourseConfig.GetStageShowTypeTxtDescTitle(id)
|
||
local config = XCourseConfig.GetCourseStageShowTypeById(id)
|
||
return not XTool.IsTableEmpty(config) and config.TxtDescTitle or nil
|
||
end
|
||
|
||
function XCourseConfig.GetStageShowTypeIconPath(id)
|
||
local config = XCourseConfig.GetCourseStageShowTypeById(id)
|
||
return not XTool.IsTableEmpty(config) and config.IconPath or nil
|
||
end
|
||
|
||
function XCourseConfig.GetStageShowTypePrefabPath(id)
|
||
local config = XCourseConfig.GetCourseStageShowTypeById(id)
|
||
return not XTool.IsTableEmpty(config) and config.PrefabPath
|
||
end
|
||
--==================================================================================
|
||
|
||
|
||
|
||
--==========================CourseReward 奖励=======================================
|
||
local StageTypeToRewardIdList = {} --key: 章节类型,value: CourseRewardId列表
|
||
local StageTypeToRewardTotalPoint = {} --key:章节类型,value:总绩点
|
||
local ChapterIdToRewardId = {} --key:章节Id,value:CourseReward表的Id
|
||
local ChapterIdToRewardIdList = {} --key:章节Id,value:CourseReward表的Id列表
|
||
local IsInitCourseRewardConfig = false
|
||
local InitCourseRewardConfig = function()
|
||
if IsInitCourseRewardConfig then
|
||
return
|
||
end
|
||
|
||
local chapterId
|
||
local stageType
|
||
local configs = XCourseConfig.GetCourseReward()
|
||
for id, config in pairs(configs) do
|
||
chapterId = config.ChapterId
|
||
|
||
ChapterIdToRewardId[chapterId] = id
|
||
if not ChapterIdToRewardIdList[chapterId] then
|
||
ChapterIdToRewardIdList[chapterId] = {}
|
||
end
|
||
table.insert(ChapterIdToRewardIdList[chapterId], id)
|
||
|
||
stageType = XCourseConfig.GetChapterStageType(chapterId)
|
||
if not stageType then
|
||
XLog.Error(string.format("CourseReward配置中,chapterId:%d不存在", chapterId))
|
||
goto continue
|
||
end
|
||
if not StageTypeToRewardIdList[stageType] then
|
||
StageTypeToRewardIdList[stageType] = {}
|
||
end
|
||
table.insert(StageTypeToRewardIdList[stageType], id)
|
||
|
||
if not StageTypeToRewardTotalPoint[stageType] then
|
||
StageTypeToRewardTotalPoint[stageType] = 0
|
||
end
|
||
StageTypeToRewardTotalPoint[stageType] = StageTypeToRewardTotalPoint[stageType] + config.Point
|
||
|
||
:: continue ::
|
||
end
|
||
|
||
IsInitCourseRewardConfig = true
|
||
end
|
||
|
||
function XCourseConfig.GetRewardIdListByChapterId(chapterId)
|
||
InitCourseRewardConfig()
|
||
return ChapterIdToRewardIdList[chapterId] or {}
|
||
end
|
||
|
||
function XCourseConfig.GetRewardIdByChapterId(chapterId)
|
||
InitCourseRewardConfig()
|
||
return ChapterIdToRewardId[chapterId] or 0
|
||
end
|
||
|
||
function XCourseConfig.GetCourseRewardIdList(stageType)
|
||
InitCourseRewardConfig()
|
||
return StageTypeToRewardIdList[stageType] or {}
|
||
end
|
||
|
||
function XCourseConfig.GetRewardTotalPoint(stageType)
|
||
InitCourseRewardConfig()
|
||
return StageTypeToRewardTotalPoint[stageType] or 0
|
||
end
|
||
|
||
function XCourseConfig.GetRewardId(id)
|
||
local config = XCourseConfig.GetCourseReward(id, true)
|
||
return config.RewardId
|
||
end
|
||
|
||
function XCourseConfig.GetRewardPoint(id)
|
||
local config = XCourseConfig.GetCourseReward(id, true)
|
||
return config.Point
|
||
end
|
||
|
||
function XCourseConfig.GetRewardClearTipsTitle(id)
|
||
local config = XCourseConfig.GetCourseReward(id, true)
|
||
return config.ClearTipsTitle
|
||
end
|
||
|
||
function XCourseConfig.GetRewardChapterId(id)
|
||
local config = XCourseConfig.GetCourseReward(id, true)
|
||
return config.ChapterId
|
||
end
|
||
|
||
function XCourseConfig.GetRewardName(id)
|
||
local config = XCourseConfig.GetCourseReward(id, true)
|
||
return config.Name
|
||
end
|
||
--==================================================================================
|
||
|
||
--==========================CourseClientConfig 前端配置==============================
|
||
--获得章节弹窗的说明文本颜色(Values[1]:未达成;Values[2]:已达成)
|
||
function XCourseConfig.GetChapterTipsDescColor()
|
||
local values = XCourseConfig.GetCourseClientConfig("ChapterTipsDescColor").Values
|
||
return XUiHelper.Hexcolor2Color(values[1]), XUiHelper.Hexcolor2Color(values[2])
|
||
end
|
||
|
||
--获得章节弹窗的解锁条件文本(1:绩点;2:前置章节)
|
||
function XCourseConfig.GetChapterTipsUnlockDesc()
|
||
local values = XCourseConfig.GetCourseClientConfig("ChapterTipsUnlockDesc").Values
|
||
return values[1], values[2]
|
||
end
|
||
|
||
--获得战斗执照章节说明弹窗的按钮名(1:已解锁;2:未解锁)
|
||
function XCourseConfig.GetChapterTipsBtnName()
|
||
local values = XCourseConfig.GetCourseClientConfig("ExamChapterTipsBtnName").Values
|
||
return values[1], values[2]
|
||
end
|
||
|
||
--获得绩点道具Id
|
||
function XCourseConfig.GetPointItemId()
|
||
local values = XCourseConfig.GetCourseClientConfig("PointItemId").Values
|
||
return tonumber(values[1])
|
||
end
|
||
|
||
--获得课程关卡第几个格子的数字资源路径
|
||
function XCourseConfig.GetLessonStageImgNum(index)
|
||
return XCourseConfig.GetCourseClientConfig("LessonStageImgNum").Values[index]
|
||
end
|
||
|
||
--课程/考级结算提示
|
||
function XCourseConfig.GetCourseOrExamFinishTips(index)
|
||
local tips = XCourseConfig.GetCourseClientConfig("CourseOrExamFinishTips").Values[index]
|
||
return tips or ""
|
||
end
|
||
|
||
function XCourseConfig.GetRewardTips(index)
|
||
local tips = XCourseConfig.GetCourseClientConfig("RewardTips").Values[index]
|
||
return tips or ""
|
||
end
|
||
--==================================================================================
|
||
|
||
--==============================CourseChapterGroup 章节组===========================
|
||
function XCourseConfig.GetChapterIds(id)
|
||
local config = XCourseConfig.GetCourseChapterGroup(id, true)
|
||
return config.ChapterIds
|
||
end
|
||
|
||
function XCourseConfig.GetChapterGroupPrevChapterIds(id)
|
||
local config = XCourseConfig.GetCourseChapterGroup(id, true)
|
||
return config.PrevChapterIds
|
||
end
|
||
|
||
function XCourseConfig.GetChapterGroupUnlockLv(id)
|
||
local config = XCourseConfig.GetCourseChapterGroup(id, true)
|
||
return config.UnlockLv
|
||
end
|
||
|
||
function XCourseConfig.GetChapterGroupLockDesc(id)
|
||
local config = XCourseConfig.GetCourseChapterGroup(id, true)
|
||
return config.LockDesc
|
||
end
|
||
|
||
function XCourseConfig.GetChapterGroupBg(id)
|
||
local config = XCourseConfig.GetCourseChapterGroup(id, true)
|
||
return config.Bg
|
||
end
|
||
--================================================================================== |