PGRData/Script/matrix/xconfig/XSignBoardConfigs.lua
2024-09-01 22:49:41 +02:00

259 lines
No EOL
7.5 KiB
Lua

XSignBoardConfigs = XSignBoardConfigs or {}
XSignBoardEventType = {
CLICK = 10001, --点击
ROCK = 10002, --摇晃
LOGIN = 101, --登录
COMEBACK = 102, --n天未登录
WIN = 103, --胜利
WINBUT = 104, -- 胜利,看板不在队里
LOST = 105, --失败
LOSTBUT = 106, --失败,不在队伍
MAIL = 107, --邮件
TASK = 108, --任务奖励
DAILY_REWARD = 109, --日常活跃奖励
LOW_POWER = 110, -- 低电量
PLAY_TIME = 111, --游戏时长
RECEIVE_GIFT = 112, --收到礼物
GIVE_GIFT = 113, --赠送礼物
IDLE = 1, --待机
FAVOR_UP = 2, --好感度提升
CHANGE = 120, --改变角色
}
XSignBoardUiShowType = {
UiPhotograph = 1, --拍照界面
UiPhotographPortrait = 2, --拍照界面(竖屏)
UiMain = 3, --主界面
UiFavorabilityNew = 4, --看板娘界面
}
XSignBoardUiAnimType = {
Normal = 0,
Self = 1,
None = 2,
}
local TABLE_SIGNBOARD_FEEDBACK = "Client/Signboard/SignBoardFeedback.tab";
--总表
local TableSignBoardFeedback = nil
--以角色Id为索引
local TableSignBoardRoleIdIndexs = {}
--无角色限制
local TableSignBoardIndexs = {}
local TableSignBoardBreak = nil
--初始化
function XSignBoardConfigs.Init()
TableSignBoardFeedback = XTableManager.ReadByIntKey(TABLE_SIGNBOARD_FEEDBACK, XTable.XTableSignBoardFeedback, "Id")
TableSignBoardRoleIdIndexs = {}
for _, var in pairs(TableSignBoardFeedback) do
if not var.RoleId then
TableSignBoardIndexs = TableSignBoardIndexs or {}
TableSignBoardIndexs[var.ConditionId] = TableSignBoardIndexs[var.ConditionId] or {}
table.insert(TableSignBoardIndexs[var.ConditionId], var)
elseif var.RoleId == "None" then
TableSignBoardBreak = var
else
local roleIds = string.Split(var.RoleId, "|")
if roleIds then
for _, roleId in ipairs(roleIds) do
roleId = tonumber(roleId)
TableSignBoardRoleIdIndexs[roleId] = TableSignBoardRoleIdIndexs[roleId] or {}
TableSignBoardRoleIdIndexs[roleId][var.ConditionId] = TableSignBoardRoleIdIndexs[roleId][var.ConditionId] or {}
table.insert(TableSignBoardRoleIdIndexs[roleId][var.ConditionId], var)
end
end
end
end
end
--获取表数据
function XSignBoardConfigs.GetSignBoardConfig()
if not TableSignBoardFeedback then
return nil
end
return TableSignBoardFeedback
end
--获取被动事件
function XSignBoardConfigs.GetPassiveSignBoardConfig(roleId)
if not TableSignBoardFeedback then
return nil
end
local roleConfigs = XSignBoardConfigs.GetSignBoardConfigByRoldId(roleId)
if not roleConfigs then
return
end
local configs = {}
for _, v in ipairs(roleConfigs) do
if v.ConditionId < 10000 and v.ConditionId >= 100 then --被动事件少于10000 大于=100
table.insert(configs, v)
end
end
return configs
end
--获取打断的播放
function XSignBoardConfigs.GetBreakPlayElements()
return TableSignBoardBreak
end
--获取
function XSignBoardConfigs.GetSignBoardConfigById(id)
if not TableSignBoardFeedback then
return
end
return TableSignBoardFeedback[id]
end
--获取角色所有事件
function XSignBoardConfigs.GetSignBoardConfigByRoldId(roleId)
local all = {}
if TableSignBoardRoleIdIndexs and TableSignBoardRoleIdIndexs[roleId] then
for _, v in pairs(TableSignBoardRoleIdIndexs[roleId]) do
for _, var in ipairs(v) do
table.insert(all, var)
end
end
end
if TableSignBoardIndexs then
for _, v in pairs(TableSignBoardIndexs) do
for _, var in ipairs(v) do
table.insert(all, var)
end
end
end
return all
end
--获取角色所有事件
function XSignBoardConfigs.GetSignBoardConfigByRoldIdAndCondition(roleId, conditionId)
local all = {}
if TableSignBoardRoleIdIndexs and TableSignBoardRoleIdIndexs[roleId] then
local configs = TableSignBoardRoleIdIndexs[roleId][conditionId]
if configs then
for _, v in ipairs(configs) do
table.insert(all, v)
end
end
end
if TableSignBoardIndexs and TableSignBoardIndexs[conditionId] then
for _, v in ipairs(TableSignBoardIndexs[conditionId]) do
table.insert(all, v)
end
end
return all
end
--根据操作获取表数据
function XSignBoardConfigs.GetSignBoardConfigByFeedback(roleId, conditionId, param)
if not TableSignBoardRoleIdIndexs then
return
end
local configs = XSignBoardConfigs.GetSignBoardConfigByRoldIdAndCondition(roleId, conditionId)
if not configs or #configs <= 0 then
return
end
if not param or param < 0 then
return configs
end
local fitterCfg = {}
if conditionId == XSignBoardEventType.CLICK then
for _, var in ipairs(configs) do
if var.ConditionParam < 0 or var.ConditionParam == param then
table.insert(fitterCfg, var)
end
end
elseif conditionId == XSignBoardEventType.ROCK then
for _, var in ipairs(configs) do
if var.ConditionParam == math.ceil(param) then
table.insert(fitterCfg, var)
end
end
end
return fitterCfg
end
-- v1.32 角色特殊动作动画相关
--================================================================================
function XSignBoardConfigs.GetSignBoardSceneAnim(signBoardid)
local signBoard = XSignBoardConfigs.GetSignBoardConfigById(signBoardid)
if not signBoard then
return nil
end
return signBoard.SceneCamAnimPrefab
end
function XSignBoardConfigs.GetIsUseSelfUiAnim(signBoardid, uiName)
local signBoard = XSignBoardConfigs.GetSignBoardConfigById(signBoardid)
if not signBoard or XTool.IsTableEmpty(signBoard.IsUseSelfUiAnims) or not uiName then
return nil
end
return signBoard.IsUseSelfUiAnims[XSignBoardUiShowType[uiName]]
end
-- 判断动作是否有镜头动画
function XSignBoardConfigs.CheckIsHaveSceneAnim(signBoardid)
local signBoard = XSignBoardConfigs.GetSignBoardConfigById(signBoardid)
if not signBoard then
return false
end
return not string.IsNilOrEmpty(signBoard.SceneCamAnimPrefab)
end
-- 判断动作是否播放Ui隐藏动画
function XSignBoardConfigs.CheckIsShowHideUi(signBoardid)
local signBoard = XSignBoardConfigs.GetSignBoardConfigById(signBoardid)
if not signBoard then
return false
end
return signBoard.IsShowHideUi
end
-- 是否使用自己的Ui动画
function XSignBoardConfigs.CheckIsUseSelfUiAnim(signBoardid, uiName)
local signBoard = XSignBoardConfigs.GetIsUseSelfUiAnim(signBoardid, uiName)
return signBoard == XSignBoardUiAnimType.Self
end
-- 是否使用通用的Ui动画
function XSignBoardConfigs.CheckIsUseNormalUiAnim(signBoardid, uiName)
local signBoard = XSignBoardConfigs.GetIsUseSelfUiAnim(signBoardid, uiName)
return signBoard == XSignBoardUiAnimType.Normal
end
-- 是否使用位置和旋转
function XSignBoardConfigs.CheckIsUseCamPosAndRot(signBoardid)
local signBoard = XSignBoardConfigs.GetSignBoardConfigById(signBoardid)
if not signBoard then
return false
end
return signBoard.IsUseCamPosAndRot == 1
end
--================================================================================