196 lines
8.0 KiB
Lua
196 lines
8.0 KiB
Lua
local LuaGameConditionUtils = {}
|
|
|
|
local _conditionHandlers = {
|
|
[GEnums.ConditionType.CheckStatisticVal] = function(params)
|
|
local args = LuaGameConditionUtils._extractInts(params)
|
|
return GameConditionUtils.GetStatisticValueByType(args[1], args[2] or 0)
|
|
end,
|
|
[GEnums.ConditionType.CheckStatisticValSum] = function(params)
|
|
local args = LuaGameConditionUtils._extractInts(params)
|
|
local arg2 = LuaGameConditionUtils._GetIntsAtIndex(params, 2)
|
|
local ret = GameConditionUtils.CheckStatisticValSum(args[1], arg2)
|
|
return ret
|
|
end,
|
|
[GEnums.ConditionType.CheckCharSkillLevel] = function(params)
|
|
local args = LuaGameConditionUtils._extractStrings(params)
|
|
return GameConditionUtils.GetCharSkillLevel(args[1] or "", args[2] or "")
|
|
end,
|
|
[GEnums.ConditionType.CheckDungeonTypePassNum] = function(params)
|
|
local args = LuaGameConditionUtils._extractStrings(params)
|
|
return GameConditionUtils.GetDungeonTypePassNum(args[1])
|
|
end,
|
|
[GEnums.ConditionType.CheckEtherSubmitCount] = function()
|
|
return GameConditionUtils.GetEthSubmitCount()
|
|
end,
|
|
[GEnums.ConditionType.CheckFactoryBlackBoxStateNum] = function(params)
|
|
local args = LuaGameConditionUtils._extractInts(params)
|
|
return GameConditionUtils.GetFactoryBlackBoxStateNum(args[1])
|
|
end,
|
|
[GEnums.ConditionType.CheckGreaterCharLevelNum] = function(params)
|
|
local args = LuaGameConditionUtils._extractInts(params)
|
|
return GameConditionUtils.GetGreaterCharLevelNum(args[1])
|
|
end,
|
|
[GEnums.ConditionType.CheckGreaterCharStageNum] = function(params)
|
|
local args = LuaGameConditionUtils._extractInts(params)
|
|
return GameConditionUtils.GetGreaterCharStageNum(args[1])
|
|
end,
|
|
[GEnums.ConditionType.CheckGreaterSettlementLevelNum] = function(params)
|
|
local args = LuaGameConditionUtils._extractInts(params)
|
|
return GameConditionUtils.GetGreaterSettlementLevelNum(args[1])
|
|
end,
|
|
[GEnums.ConditionType.CheckGreaterWeapeonLevelNum] = function(parameters)
|
|
local args = LuaGameConditionUtils._extractInts(parameters)
|
|
return GameConditionUtils.GetGreaterWeaponLevelNum(args[1])
|
|
end,
|
|
[GEnums.ConditionType.CheckGreaterWeapeonStageNum] = function(parameters)
|
|
local args = LuaGameConditionUtils._extractInts(parameters)
|
|
return GameConditionUtils.GetGreaterWeaponStageNum(args[1])
|
|
end,
|
|
[GEnums.ConditionType.CheckPassedGameMechanicsNum] = function(params)
|
|
local args = LuaGameConditionUtils._extractStrings(params)
|
|
return GameConditionUtils.GetPassedGameMechanicsNum(args[1])
|
|
end,
|
|
[GEnums.ConditionType.CheckSettlementLevelSum] = function(params)
|
|
local args = LuaGameConditionUtils._extractStrings(params)
|
|
return GameConditionUtils.GetSettlementLevelSum(args[1])
|
|
end,
|
|
[GEnums.ConditionType.CheckUnlockGroupTechNum] = function(params)
|
|
local args = LuaGameConditionUtils._extractStrings(params)
|
|
return GameConditionUtils.GetUnlockGroupTechNum(args[1])
|
|
end,
|
|
[GEnums.ConditionType.CheckSceneCollectionNum] = function(parameters)
|
|
local levelId = parameters[CSIndex(1)] and parameters[CSIndex(1)].valueStringList[CSIndex(1)] or ""
|
|
local collectionList = {}
|
|
local paramList = parameters[CSIndex(2)].valueStringList
|
|
local labelList = {}
|
|
for i = CSIndex(1), CSIndex(paramList.Count) do
|
|
table.insert(labelList, parameters[CSIndex(2)].valueStringList[i])
|
|
end
|
|
for _, label in pairs(labelList) do
|
|
local success, cfg = Tables.collectionLabelTable:TryGetValue(label)
|
|
if success then
|
|
for i = CSIndex(1), CSIndex(cfg.list.Count) do
|
|
table.insert(collectionList, cfg.list[i].prefabId)
|
|
end
|
|
end
|
|
end
|
|
return GameConditionUtils.GetSceneCollectionNum(levelId, collectionList)
|
|
end,
|
|
[GEnums.ConditionType.CheckBitSetCount] = function(params)
|
|
local args = LuaGameConditionUtils._extractInts(params)
|
|
local key = args[1]
|
|
local ret = GameConditionUtils.CheckBitSetCount(key)
|
|
return ret
|
|
end,
|
|
[GEnums.ConditionType.CheckWorldLevel] = function(params)
|
|
local ret = GameConditionUtils.CheckWorldLevel()
|
|
return ret
|
|
end,
|
|
[GEnums.ConditionType.CheckDomainShopChannelReachLvCnt] = function(params)
|
|
local args = LuaGameConditionUtils._extractStrings(params)
|
|
local arg1 = args[1]
|
|
local arg2 = args[2]
|
|
local ret = GameConditionUtils.CheckDomainShopChannelReachLvCnt(arg1, arg2)
|
|
return ret
|
|
end,
|
|
[GEnums.ConditionType.CheckDomainDevelopmentLevel] = function(params)
|
|
local args = LuaGameConditionUtils._extractStrings(params)
|
|
local arg1 = args[1]
|
|
local ret = GameConditionUtils.CheckDomainDevelopmentLevel(arg1)
|
|
return ret
|
|
end,
|
|
[GEnums.ConditionType.MissionStateEqual] = function(params)
|
|
local args = LuaGameConditionUtils._extractStrings(params)
|
|
local arg1 = args[1]
|
|
local arg2 = tonumber(args[2])
|
|
local arg3 = tonumber(args[3])
|
|
local ret = GameConditionUtils.MissionStateEqual(arg1, arg2, arg3)
|
|
return ret
|
|
end,
|
|
[GEnums.ConditionType.CheckPassGameMechanicsId] = function(params)
|
|
local args = LuaGameConditionUtils._extractStrings(params)
|
|
local arg1 = args[1]
|
|
local ret = GameConditionUtils.CheckPassGameMechanicsId(arg1)
|
|
return ret
|
|
end,
|
|
[GEnums.ConditionType.CheckEquipTierLevelNumCharNum] = function(params)
|
|
local arg1 = LuaGameConditionUtils._GetIntsAtIndex(params, 1)[1]
|
|
local arg2 = LuaGameConditionUtils._GetIntsAtIndex(params, 2)[1]
|
|
local arg3 = LuaGameConditionUtils._GetBoolsAtIndex(params, 3)[1] or false
|
|
local ret = GameConditionUtils.CheckEquipTierLevelNumCharNum(arg1, arg2, arg3)
|
|
return ret
|
|
end,
|
|
}
|
|
|
|
function LuaGameConditionUtils.getConditionValueByParameters(conditionType, parameters)
|
|
if not GameConditionUtils.CheckClientConditionType(conditionType) then
|
|
|
|
|
|
logger.info("调用了没有实现的Condition进度 :" .. tostring(conditionType))
|
|
return false, 0
|
|
end
|
|
local handler = _conditionHandlers[conditionType]
|
|
if handler then
|
|
local ok, result = pcall(handler, parameters)
|
|
if ok then
|
|
return true, result or 0
|
|
end
|
|
end
|
|
return false, 0
|
|
end
|
|
|
|
function LuaGameConditionUtils._extractInts(parameters)
|
|
local results = {}
|
|
for i = CSIndex(1), CSIndex(parameters.Count) do
|
|
results[#results + 1] = parameters[i].valueIntList[CSIndex(1)]
|
|
end
|
|
return results
|
|
end
|
|
|
|
function LuaGameConditionUtils._extractStrings(parameters)
|
|
local results = {}
|
|
for i = CSIndex(1), CSIndex(parameters.Count) do
|
|
results[#results + 1] = parameters[i].valueStringList[CSIndex(1)]
|
|
end
|
|
return results
|
|
end
|
|
|
|
function LuaGameConditionUtils._GetIntsAtIndex(parameters, luaIndex)
|
|
local results = {}
|
|
local csIndex = CSIndex(luaIndex)
|
|
if csIndex >= 0 and csIndex < parameters.Count then
|
|
local list = parameters[csIndex].valueIntList
|
|
for i = 0, list.Count - 1 do
|
|
table.insert(results, list[i])
|
|
end
|
|
end
|
|
return results
|
|
end
|
|
|
|
function LuaGameConditionUtils._GetStringsAtIndex(parameters, luaIndex)
|
|
local results = {}
|
|
local csIndex = CSIndex(luaIndex)
|
|
if csIndex >= 0 and csIndex < parameters.Count then
|
|
local list = parameters[csIndex].valueStringList
|
|
for i = 0, list.Count - 1 do
|
|
table.insert(results, list[i])
|
|
end
|
|
end
|
|
return results
|
|
end
|
|
|
|
function LuaGameConditionUtils._GetBoolsAtIndex(parameters, luaIndex)
|
|
local results = {}
|
|
local csIndex = CSIndex(luaIndex)
|
|
if csIndex >= 0 and csIndex < parameters.Count then
|
|
local list = parameters[csIndex].valueBoolList
|
|
for i = 0, list.Count - 1 do
|
|
table.insert(results, list[i])
|
|
end
|
|
end
|
|
return results
|
|
end
|
|
|
|
_G.LuaGameConditionUtils = LuaGameConditionUtils
|
|
return LuaGameConditionUtils
|