Files
Endfield-Data/LuaScripts/Common/Utils/DomainPOIUtils.lua
2026-01-31 21:42:01 +07:00

767 lines
25 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
local DomainPOIUtils = {}
DomainPOIUtils.MarkTypeMap = {
[GEnums.DomainPoiType.KiteStation] = GEnums.MarkType.KiteStation,
[GEnums.DomainPoiType.DomainShop] = GEnums.MarkType.DomainShop,
[GEnums.DomainPoiType.DomainDepot] = GEnums.MarkType.DomainDepot,
[GEnums.DomainPoiType.RecycleBin] = GEnums.MarkType.Recycler,
}
DomainPOIUtils.POICanUnlock = {
[GEnums.DomainPoiType.KiteStation] = function(levelId)
return GameInstance.player.kiteStationSystem:GetAllCanUnlockKiteStationIdsByLevelId(levelId)
end,
[GEnums.DomainPoiType.RecycleBin] = function(levelId)
return GameInstance.player.recycleBinSystem:GetAllCanUnlockRecycleBinIdsByLevelId(levelId)
end,
[GEnums.DomainPoiType.DomainDepot] = function(levelId)
return GameInstance.player.domainDepotSystem:GetAllCanUnlockDomainDepotIdsByLevelId(levelId)
end,
[GEnums.DomainPoiType.DomainShop] = function(levelId)
return DomainPOIUtils.GetAllCanUpDomainShopChannelIds(levelId, true)
end,
}
DomainPOIUtils.POICanUpgrade = {
[GEnums.DomainPoiType.KiteStation] = function(levelId)
return GameInstance.player.kiteStationSystem:GetAllCanLevelUpKiteStationIdsByLevelId(levelId)
end,
[GEnums.DomainPoiType.RecycleBin] = function(levelId)
return GameInstance.player.recycleBinSystem:GetAllCanLevelUpRecycleBinIdsByLevelId(levelId)
end,
[GEnums.DomainPoiType.DomainDepot] = function(levelId)
return GameInstance.player.domainDepotSystem:GetAllCanUpgradeDomainDepotIdsByLevelId(levelId)
end,
[GEnums.DomainPoiType.DomainShop] = function(levelId)
return DomainPOIUtils.GetAllCanUpDomainShopChannelIds(levelId, false)
end,
}
function DomainPOIUtils.GetAllCanUpDomainShopChannelIds(levelId, isCheckUnlock)
local channelIds = {}
local level001Id = "map01_lv001"
if levelId ~= level001Id then
local hasCfg, cfg = Tables.shopChannelLevelPOIMapTable:TryGetValue(level001Id)
if not hasCfg then
return channelIds
end
local channelId = cfg.channelPartner
local _, shopChannelCfg = Tables.shopChannelDevelopmentTable:TryGetValue(channelId)
local shopGroupData = GameInstance.player.shopSystem:GetShopGroupData(shopChannelCfg.shopGroupId)
local hasValue, curLv = shopGroupData.domainChannelData.channelLevelMap:TryGetValue(channelId)
if not hasValue or curLv < 2 then
return channelIds
end
end
local hasCfg, cfg = Tables.shopChannelLevelPOIMapTable:TryGetValue(levelId)
if not hasCfg then
return channelIds
end
local channelId = cfg.channelPartner
local info = DomainPOIUtils.GetPoiUpgradeCtrlInfo[GEnums.DomainPoiType.DomainShop](channelId, false)
if (isCheckUnlock and info.curLevel > 0)
or (not isCheckUnlock and info.curLevel <= 0)
then
return channelIds
end
if string.isEmpty(info.upgradeQuestId) then
info.questState = CS.Beyond.Gameplay.MissionSystem.QuestState.Completed
else
info.questState = GameInstance.player.mission:GetQuestState(info.upgradeQuestId)
end
if info.questState ~= CS.Beyond.Gameplay.MissionSystem.QuestState.Completed then
return channelIds
end
if info.curLevel >= info.maxLevel then
return channelIds
end
local _, domainCfg = Tables.domainDataTable:TryGetValue(info.domainId)
local moneyId = domainCfg.domainGoldItemId
local curMoneyCount = Utils.getItemCount(moneyId)
local isMoneyEnough = curMoneyCount >= info.upgradeCostMoney
if isMoneyEnough then
table.insert(channelIds, channelId)
end
return channelIds
end
DomainPOIUtils.GetRedDotInfoFunc = {
[GEnums.DomainPoiType.DomainDepot] = "getRedDotInfoDomainDepot",
[GEnums.DomainPoiType.KiteStation] = "getKiteStationRedDotInfo",
}
function DomainPOIUtils.getRedDotInfoDomainDepot(domainId)
return {
redDotName = "DomainDepot",
redDotArgs = domainId,
}
end
function DomainPOIUtils.getKiteStationRedDotInfo(domainId)
return {
redDotName = "KiteStationCollectionReward",
redDotArgs = "",
}
end
DomainPOIUtils.CheckCanOpenPOIFunc = {
[GEnums.DomainPoiType.DomainShop] = "checkCanOpenDomainShop",
[GEnums.DomainPoiType.DomainDepot] = "checkCanOpenDomainDepot",
[GEnums.DomainPoiType.KiteStation] = "checkCanOpenKiteStation",
}
function DomainPOIUtils.checkCanOpenDomainShop(domainId)
local _, domainCfg = Tables.domainDataTable:TryGetValue(domainId)
local shopGroupId = domainCfg.domainShopGroupId
local shopGroupData = GameInstance.player.shopSystem:GetShopGroupData(shopGroupId)
return shopGroupData.domainChannelData and shopGroupData.domainChannelData.channelLevelMap.Count > 0
end
function DomainPOIUtils.checkCanOpenDomainDepot(domainId)
for domainDepotId, domainDepotCfg in pairs(Tables.domainDepotTable) do
if domainDepotCfg.domainId == domainId then
local domainDepotData = GameInstance.player.domainDepotSystem:GetDomainDepotDataById(domainDepotId)
if domainDepotData and domainDepotData.level > 0 then
return true
end
end
end
return false
end
function DomainPOIUtils.checkCanOpenKiteStation(domainId)
for kiteStationId, kiteStationCfg in pairs(Tables.kiteStationLevelTable) do
if kiteStationCfg.domainId == domainId then
local kiteStationData = GameInstance.player.kiteStationSystem:GetKiteStationDataByInstId(kiteStationId)
if kiteStationData and kiteStationData.level > 0 then
return true
end
end
end
return false
end
function DomainPOIUtils.getUpgradeCtrlArgsTemplate()
return {
domainId = "",
levelId = "",
titleName = "",
descList = {},
upgradeQuestId = "",
upgradeQuestDesc = "",
upgradeCostMoney = 0,
curLevel = 0,
targetLevel = 0,
maxLevel = 0,
isFinalMaxLevel = false,
contentInfoList = {}
}
end
DomainPOIUtils.GetPoiUpgradeCtrlInfo = {
[GEnums.DomainPoiType.DomainShop] = function(channelId, needContentInfo)
local info = DomainPOIUtils.getUpgradeCtrlArgsTemplate()
local _, shopChannelCfg = Tables.shopChannelDevelopmentTable:TryGetValue(channelId)
local shopGroupId = shopChannelCfg.shopGroupId
local _, shopGroupDomainCfg = Tables.shopGroupDomainTable:TryGetValue(shopGroupId)
local domainId = shopGroupDomainCfg.domainId
local _, domainCfg = Tables.domainDataTable:TryGetValue(domainId)
local _, shopGroupCfg = Tables.shopGroupTable:TryGetValue(shopGroupId)
local commonShopId, randomShopId
for _, shopId in pairs(shopGroupCfg.shopIds) do
local _, shopCfg = Tables.shopTable:TryGetValue(shopId)
if shopCfg.shopRefreshType == GEnums.ShopRefreshType.None then
commonShopId = shopId
elseif shopCfg.shopRefreshType == GEnums.ShopRefreshType.RefreshRandom then
randomShopId = shopId
end
end
local _, commonShopCfg = Tables.shopTable:TryGetValue(commonShopId)
local _, randomShopCfg = Tables.shopTable:TryGetValue(randomShopId)
local shopSystem = GameInstance.player.shopSystem
local shopGroupData = shopSystem:GetShopGroupData(shopGroupId)
local channelData = shopGroupData.domainChannelData
local hasValue, curLv = channelData.channelLevelMap:TryGetValue(channelId)
if not hasValue then
curLv = 0
end
local nextLv = curLv + 1
local maxLv = 0
for _, _ in pairs(shopChannelCfg.channelLevelMap) do
maxLv = maxLv + 1
end
local _, nextLvChannelCfg = shopChannelCfg.channelLevelMap:TryGetValue(nextLv)
local costMoney = 0
if nextLv <= maxLv and nextLvChannelCfg then
for i = 0, #nextLvChannelCfg.costItemIdList - 1 do
if nextLvChannelCfg.costItemIdList[i] == domainCfg.domainGoldItemId then
costMoney = nextLvChannelCfg.costItemNumList[i]
break
end
end
end
info.domainId = domainId
info.levelId = shopChannelCfg.levelId
info.titleName = shopChannelCfg.channelName
local _, curLvChannelCfg = shopChannelCfg.channelLevelMap:TryGetValue(curLv)
if curLvChannelCfg and not string.isEmpty(curLvChannelCfg.channelDesc) then
table.insert(info.descList, curLvChannelCfg.channelDesc)
end
if nextLvChannelCfg and not string.isEmpty(nextLvChannelCfg.upgradeDesc) and curLv < maxLv then
table.insert(info.descList, nextLvChannelCfg.upgradeDesc)
end
info.upgradeQuestId = Tables.shopDomainConst.domainShopUnlockQuestId
info.upgradeQuestDesc = Language.LUA_DOMAIN_SHOP_UNLOCK_QUEST_DESC
info.upgradeCostMoney = costMoney
info.curLevel = curLv
info.targetLevel = nextLv
info.maxLevel = maxLv
if curLvChannelCfg then
info.isFinalMaxLevel = curLvChannelCfg.isFinalMaxLevel
else
info.isFinalMaxLevel = false
end
info.domainShopChannelId = channelId
info.domainShopGroupId = shopGroupId
if not needContentInfo then
return info
end
if info.curLevel >= info.maxLevel then
return info
end
local randomGoodsUnlockLv = shopSystem:GetChannelUnlockRandomGoodsLevel(randomShopId, channelId)
local newlyCommonGoods = {}
local newlyRandomGoods = {}
for i = 0, #nextLvChannelCfg.newGoodsList - 1 do
local newGoodsId = nextLvChannelCfg.newGoodsList[i]
local _, goodsCfg = Tables.shopGoodsTable:TryGetValue(newGoodsId)
local itemBundleCfg = UIUtils.getRewardFirstItem(goodsCfg.rewardId)
local itemBundle = {
id = itemBundleCfg.id,
}
if lume.find(commonShopCfg.shopGoodsIds, newGoodsId) then
table.insert(newlyCommonGoods, itemBundle)
else
table.insert(newlyRandomGoods, itemBundle)
end
end
if #newlyCommonGoods > 0 then
DomainPOIUtils.insertContentCommonTitle(
info,
UIConst.UI_SPRITE_SHOP_TRADE_MARKET_ICON_SMALL .. "/" .. commonShopCfg.iconId,
commonShopCfg.shopName
)
DomainPOIUtils.insertContentItemList(info, nil, newlyCommonGoods)
end
local needShowNewLimit = false
if #newlyRandomGoods > 0 then
local randomShopData = shopSystem:GetShopData(randomShopId)
local curRandomShopGoodsCount = randomShopData.goodList.Count
local curDomainRandomShopIsUnlock = shopSystem:CheckShopUnlocked(randomShopId) and curRandomShopGoodsCount > 0
if not curDomainRandomShopIsUnlock and nextLv == randomGoodsUnlockLv then
DomainPOIUtils.insertContentCommonTitle(
info,
UIConst.UI_SPRITE_SHOP_TRADE_MARKET_ICON_SMALL .. "/" .. randomShopCfg.iconId,
randomShopCfg.shopName
)
DomainPOIUtils.insertContentTextImgText(info, Language.LUA_DOMAIN_SHOP_UPGRADE_RANDOM_SHOP_OPEN_TITLE, {
{
text2 = Language.LUA_DOMAIN_SHOP_UPGRADE_RANDOM_SHOP_OPEN_DESC,
fontSizeLevel = 2,
}
}, 2)
DomainPOIUtils.insertContentItemList(info, nil, newlyRandomGoods)
elseif curDomainRandomShopIsUnlock then
DomainPOIUtils.insertContentCommonTitle(
info,
UIConst.UI_SPRITE_SHOP_TRADE_MARKET_ICON_SMALL .. "/" .. randomShopCfg.iconId,
randomShopCfg.shopName
)
DomainPOIUtils.insertContentItemList(info, nil, newlyRandomGoods)
needShowNewLimit = true
end
else
needShowNewLimit = true
local isAddLimit = nextLvChannelCfg.randGoodsBaseLimitUp > 0
local isAddLimitUp = nextLvChannelCfg.randGoodsDailyAddLimitUp > 0
if isAddLimit or isAddLimitUp then
DomainPOIUtils.insertContentCommonTitle(
info,
UIConst.UI_SPRITE_SHOP_TRADE_MARKET_ICON_SMALL .. "/" .. randomShopCfg.iconId,
randomShopCfg.shopName
)
end
end
if needShowNewLimit then
local curBaseLimit = channelData.buyRandomGoodsLimitCount
local curDailyAddLimit = channelData.buyRandomGoodsLimitUpCount
local iconPath = UIConst.UI_SPRITE_COMMON .. "/deco_common_arrow"
local isAddLimit = nextLvChannelCfg.randGoodsBaseLimitUp > 0
local isAddLimitUp = nextLvChannelCfg.randGoodsDailyAddLimitUp > 0
if isAddLimit then
local newlyBaseLimit = nextLvChannelCfg.randGoodsBaseLimitUp + curBaseLimit
DomainPOIUtils.insertContentTextImgText(info, Language.LUA_DOMAIN_SHOP_UPGRADE_BASE_LIMIT, {
{
text1 = curBaseLimit,
icon = iconPath,
text2 = newlyBaseLimit,
}
}, 2)
end
if isAddLimitUp then
local newlyDailyAddLimit = nextLvChannelCfg.randGoodsDailyAddLimitUp + curDailyAddLimit
DomainPOIUtils.insertContentTextImgText(info, Language.LUA_DOMAIN_SHOP_UPGRADE_ADD_LIMIT, {
{
text1 = curDailyAddLimit,
icon = iconPath,
text2 = newlyDailyAddLimit,
}
}, 2)
end
end
return info
end,
}
DomainPOIUtils.contentTypeEnum = {
CommonTitle = 1,
ItemList = 2,
TextImgText = 3,
RewardList = 4,
TitleWithText = 5,
}
function DomainPOIUtils.insertContentCommonTitle(upgradeCtrlArgs, titleIcon, titleName)
local info = {
contentType = DomainPOIUtils.contentTypeEnum.CommonTitle,
icon = titleIcon,
titleName = titleName,
}
table.insert(upgradeCtrlArgs.contentInfoList, info)
end
function DomainPOIUtils.insertContentItemList(upgradeCtrlArgs, title, itemBundleList)
local info = {
contentType = DomainPOIUtils.contentTypeEnum.ItemList,
title = title,
itemBundleList = itemBundleList,
}
if itemBundleList ~= nil and #itemBundleList > 0 then
info.useNaviGroup = true
end
table.insert(upgradeCtrlArgs.contentInfoList, info)
end
function DomainPOIUtils.insertContentTextImgText(upgradeCtrlArgs, title, contentList, indentLevel)
local info = {
contentType = DomainPOIUtils.contentTypeEnum.TextImgText,
title = title,
contentList = contentList,
indentLevel = indentLevel,
}
table.insert(upgradeCtrlArgs.contentInfoList, info)
end
function DomainPOIUtils.insertContentRewardList(upgradeCtrlArgs, itemBundleList, tagStateName, hasArrow)
local info = {
contentType = DomainPOIUtils.contentTypeEnum.RewardList,
itemBundleList = itemBundleList,
tagStateName = tagStateName,
hasArrow = hasArrow,
}
if itemBundleList ~= nil and #itemBundleList > 0 then
info.useNaviGroup = true
end
table.insert(upgradeCtrlArgs.contentInfoList, info)
end
function DomainPOIUtils.insertContentTitleWithText(upgradeCtrlArgs, title, contentText)
local info = {
contentType = DomainPOIUtils.contentTypeEnum.TitleWithText,
title = title,
contentText = contentText,
}
table.insert(upgradeCtrlArgs.contentInfoList, info)
end
DomainPOIUtils.GetPOILevelNewVersionInfoFunc = {
[GEnums.DomainPoiType.Settlement] = "getSettlementLevelNewVersionInfo",
[GEnums.DomainPoiType.DomainShop] = "getDomainShopLevelNewVersionInfo",
[GEnums.DomainPoiType.KiteStation] = "getKiteStationLevelNewVersionInfo",
[GEnums.DomainPoiType.DomainDepot] = "getDomainDepotLevelNewVersionInfo",
}
function DomainPOIUtils.getSettlementLevelNewVersionInfo(levelId, nowVersion)
local _, stlMapCfg = Tables.settlementLevelPOIMapTable:TryGetValue(levelId)
if not stlMapCfg then
return nil
end
local stlId = stlMapCfg.settlementId
local settlementSystem = GameInstance.player.settlementSystem
local stlData = settlementSystem:GetUnlockSettlementData(stlId)
if not stlData then
return nil
end
local _, stlCfg = Tables.settlementBasicDataTable:TryGetValue(stlId)
if not stlCfg then
logger.error("据点数据缺失据点id", stlId)
end
local curMaxLv = #stlCfg.settlementLevelMap
local lastVersion = stlCfg.settlementLevelMap[curMaxLv - 1].versionStart
local hasLvDiff = lastVersion == nowVersion
local rewardList = {}
local itemIdSet = {}
local curStlLv = stlData.level
for checkLv = 1, curStlLv do
local itemMap = stlCfg.settlementLevelMap[checkLv].settlementTradeItemMap
for _, stlItemCfg in pairs(itemMap) do
if stlItemCfg.versionStart == nowVersion then
local itemId = stlItemCfg.itemId
local _, itemCfg = Tables.itemTable:TryGetValue(itemId)
if not itemIdSet[itemId] and itemCfg then
itemIdSet[itemId] = true
table.insert(rewardList, {
id = itemId,
count = 0,
rarity = itemCfg.rarity,
sortId1 = itemCfg.sortId1,
sortId2 = itemCfg.sortId2,
})
end
end
end
end
table.sort(rewardList, Utils.genSortFunction({ "rarity", "sortId1", "sortId2", "id" }))
if not hasLvDiff and #rewardList <= 0 then
return nil
end
local info = {
levelPoiName = stlCfg.settlementName,
poiCurVersionMaxLv = curMaxLv,
rewardList = rewardList
}
return info
end
function DomainPOIUtils.getDomainShopLevelNewVersionInfo(levelId, nowVersion)
local _, channelMapCfg = Tables.shopChannelLevelPOIMapTable:TryGetValue(levelId)
if not channelMapCfg then
return nil
end
local channelId = channelMapCfg.channelPartner
local _, channelCfg = Tables.shopChannelDevelopmentTable:TryGetValue(channelId)
if not channelCfg then
return nil
end
local shopGroupId = channelCfg.shopGroupId
local shopGroupData = GameInstance.player.shopSystem:GetShopGroupData(shopGroupId)
if not shopGroupData.domainChannelData then
return nil
end
local hasValue, curLevel = shopGroupData.domainChannelData.channelLevelMap:TryGetValue(channelId)
if not hasValue or curLevel <= 0 then
return nil
end
local curMaxLv = #channelCfg.channelLevelMap
local lastVersion = channelCfg.channelLevelMap[CSIndex(curMaxLv)].versionStart
local hasMaxLvDiff = lastVersion == nowVersion
if not hasMaxLvDiff then
return nil
end
local info = {
levelPoiName = channelCfg.channelName,
poiCurVersionMaxLv = curMaxLv,
}
return info
end
function DomainPOIUtils.getKiteStationLevelNewVersionInfo(levelId, nowVersion)
local _, kiteStationLevelCfg = Tables.kiteStationLevelTable:TryGetValue(levelId)
if not kiteStationLevelCfg then
return nil
end
local curMaxLv = #kiteStationLevelCfg.list
local lastVersion = kiteStationLevelCfg.list[CSIndex(curMaxLv)].versionStart
local hasMaxLvDiff = lastVersion == nowVersion
if not hasMaxLvDiff then
return nil
end
local info = {
levelPoiName = kiteStationLevelCfg.list[CSIndex(curMaxLv)].name,
poiCurVersionMaxLv = curMaxLv,
}
return info
end
function DomainPOIUtils.getDomainDepotLevelNewVersionInfo(levelId, nowVersion)
local levelDepotId, levelDepotName
for depotId, depotCfg in pairs(Tables.domainDepotTable) do
if depotCfg.refLevelId == levelId then
levelDepotId = depotId
levelDepotName = depotCfg.depotName
break
end
end
if not levelDepotId then
return nil
end
local levelSuccess, domainDepotLevelList = Tables.domainDepotLevelTable:TryGetValue(levelDepotId)
if not levelSuccess then
return nil
end
domainDepotLevelList = domainDepotLevelList.levelList
local currMaxLevel = #domainDepotLevelList
local currMaxLevelCfg = domainDepotLevelList[CSIndex(currMaxLevel)]
if currMaxLevelCfg.versionStart ~= nowVersion then
return nil
end
return {
levelPoiName = levelDepotName,
poiCurVersionMaxLv = currMaxLevel,
}
end
function DomainPOIUtils.tryGetDomainNewVersionInfo(domainId, gmForceShowVersion)
local hasCfg, domainCfg = Tables.domainDataTable:TryGetValue(domainId)
if not hasCfg then
logger.error("domain表数据缺失domain id", domainId)
return nil
end
local nowVersion = CS.Beyond.GlobalOptions.instance.branchVersion
local domainVersionDiffInfo = {
domainId = domainId,
domainIcon = domainCfg.domainIcon,
domainName = domainCfg.domainName,
nowVersion = nowVersion,
domainCurMaxLv = domainCfg.domainDevelopmentLevel.Count,
poiVersionInfoList = {},
}
local poiVersionInfoList = domainVersionDiffInfo.poiVersionInfoList
local gmForceShow = false
if not string.isEmpty(gmForceShowVersion) then
gmForceShow = true
nowVersion = gmForceShowVersion
end
local poiVersionInfo = DomainPOIUtils.tryGetPOINewVersionInfo(GEnums.DomainPoiType.Settlement, domainCfg, nowVersion, gmForceShow)
if poiVersionInfo then
table.insert(poiVersionInfoList, poiVersionInfo)
end
for _, poiType in pairs(domainCfg.domainPoiTypeGroup) do
poiVersionInfo = DomainPOIUtils.tryGetPOINewVersionInfo(poiType, domainCfg, nowVersion, gmForceShow)
if poiVersionInfo then
table.insert(poiVersionInfoList, poiVersionInfo)
end
end
return domainVersionDiffInfo
end
function DomainPOIUtils.tryGetPOINewVersionInfo(poiType, domainCfg, nowVersion, gmForceShow)
local domainId = domainCfg.domainId
local hasRecord, oldVersion = GameInstance.player.domainDevelopmentSystem:TryReadPoiVersion(domainId, poiType)
if not hasRecord then
return nil
end
if oldVersion == nowVersion then
if not gmForceShow then
return nil
end
end
local hasCfg, poiCfg = Tables.domainPoiTable:TryGetValue(poiType)
if not hasCfg then
return nil
end
local levelVersionInfoList = {}
for _, levelId in pairs(domainCfg.levelGroup) do
local levelName = Tables.levelDescTable[levelId].showName
local funcName = DomainPOIUtils.GetPOILevelNewVersionInfoFunc[poiType]
if string.isEmpty(funcName) then
logger.error("DomainPOIUtils.GetPOILevelNewVersionInfoFunc方法缺失类型", poiType)
else
local levelVersionInfo = DomainPOIUtils[funcName](levelId, nowVersion)
if levelVersionInfo then
levelVersionInfo.levelName = levelName
table.insert(levelVersionInfoList, levelVersionInfo)
end
end
end
if #levelVersionInfoList > 0 then
local poiVersionInfo = {
poiType = poiType,
poiName = poiCfg.name,
poiIcon = poiCfg.noBackgroundIcon,
levelVersionInfoList = levelVersionInfoList,
}
return poiVersionInfo
else
return nil
end
end
function DomainPOIUtils.resolveOpenSettlementArgs(args)
local domainId
local defaultStlId
if args and type(args) == "string" then
local hasCfg, levelCfg = DataManager.levelBasicInfoTable:TryGetValue(args)
if hasCfg then
domainId = levelCfg.domainName
local _, cfg = Tables.settlementLevelPOIMapTable:TryGetValue(args)
if cfg then
defaultStlId = cfg.settlementId
end
else
domainId = args
end
elseif type(args) == "table" and not string.isEmpty(args.domainId) then
domainId = args.domainId
else
domainId = ScopeUtil.GetCurrentChapterIdAsStr()
end
return domainId, defaultStlId
end
_G.DomainPOIUtils = DomainPOIUtils
return DomainPOIUtils