From d7dc4554fc435f87f7643708498476f19787098d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B6=85=E7=BA=A7=E5=A6=96=E6=A2=A6=E5=8E=A8?= <12796194+youmuKon-supreme@user.noreply.gitee.com> Date: Sat, 26 Oct 2024 16:08:32 +0800 Subject: [PATCH 1/4] fix --- lua/core/game_mode.lua | 24 ++++++++++++++++++------ lua/core/package.lua | 25 +++++++++++++++++++------ 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/lua/core/game_mode.lua b/lua/core/game_mode.lua index 8229cf6..0f74b8a 100644 --- a/lua/core/game_mode.lua +++ b/lua/core/game_mode.lua @@ -101,13 +101,25 @@ function GameMode:getAdjustedProperty (player) end --- 向游戏模式中添加拓展包过滤。 ----@param whitelist string[] @ 白名单 ----@param blacklist string[] @ 黑名单 +---@param whitelist? string[] | string @ 白名单 +---@param blacklist? string[] | string @ 黑名单 function GameMode:addPackageFilter(whitelist, blacklist) - assert(type(whitelist) == "table") - assert(type(blacklist) == "table") - table.insertTable(self.whitelist, whitelist) - table.insertTable(self.blacklist, blacklist) + if whitelist then + if type(whitelist) == "string" then + whitelist = { whitelist } + elseif type(whitelist) ~= "table" then + whitelist = {} + end + self.whitelist = table.connect(self.whitelist or {}, whitelist) + end + if blacklist then + if type(whitelist) == "string" then + blacklist = { blacklist } + elseif type(blacklist) ~= "table" then + blacklist = {} + end + self.blacklist = table.connect(self.blacklist or {}, blacklist) + end end return GameMode diff --git a/lua/core/package.lua b/lua/core/package.lua index be6f4af..0145d32 100644 --- a/lua/core/package.lua +++ b/lua/core/package.lua @@ -94,12 +94,25 @@ function Package:setGameModeFilter(whitelist, blacklist) end --- 向拓展包中添加游戏模式过滤。 ----@param whitelist string[] @ 白名单 ----@param blacklist string[] @ 黑名单 +---@param whitelist? string[] | string @ 白名单 +---@param blacklist? string[] | string @ 黑名单 function Package:addGameModeFilter(whitelist, blacklist) - assert(type(whitelist) == "table") - assert(type(blacklist) == "table") - table.insertTable(self.game_modes_whitelist, whitelist) - table.insertTable(self.game_modes_blacklist, blacklist) + if whitelist then + if type(whitelist) == "string" then + whitelist = { whitelist } + elseif type(whitelist) ~= "table" then + whitelist = {} + end + self.game_modes_whitelist = table.connect(self.game_modes_whitelist or {}, whitelist) + end + if blacklist then + if type(whitelist) == "string" then + blacklist = { blacklist } + elseif type(blacklist) ~= "table" then + blacklist = {} + end + self.game_modes_whitelist = table.connect(self.game_modes_blacklist or {}, blacklist) + end end + return Package -- Gitee From 88518f0b75c64a059a3d5b132076fb0ee111feaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B6=85=E7=BA=A7=E5=A6=96=E6=A2=A6=E5=8E=A8?= <12796194+youmuKon-supreme@user.noreply.gitee.com> Date: Sat, 26 Oct 2024 22:55:27 +0800 Subject: [PATCH 2/4] =?UTF-8?q?whitelist=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/core/engine.lua | 25 ++++++++++++++++++++++--- lua/core/game_mode.lua | 26 ++------------------------ lua/core/package.lua | 14 ++------------ 3 files changed, 26 insertions(+), 39 deletions(-) diff --git a/lua/core/engine.lua b/lua/core/engine.lua index 19c1aa7..52da893 100644 --- a/lua/core/engine.lua +++ b/lua/core/engine.lua @@ -265,9 +265,28 @@ function Engine:loadDisabled() for mode_name, game_mode in pairs(self.game_modes) do local disabled_packages = {} for name, pkg in pairs(self.packages) do - if table.contains(game_mode.blacklist or Util.DummyTable, name) or - (game_mode.whitelist and not table.contains(game_mode.whitelist, name)) or - table.contains(pkg.game_modes_blacklist or Util.DummyTable, mode_name) or + --- GameMode对Package筛选 + if type(game_mode.whitelist) == "function" then + if not game_mode:whitelist(pkg) then + table.insert(disabled_packages, name) + end + elseif type(game_mode.whitelist) == "table" then + if not table.contains(game_mode.whitelist, name) then + table.insert(disabled_packages, name) + end + end + if type(game_mode.blacklist) == "function" then + if game_mode:blacklist(pkg) then + table.insert(disabled_packages, name) + end + elseif type(game_mode.blacklist) == "table" then + if table.contains(game_mode.blacklist, name) then + table.insert(disabled_packages, name) + end + end + + --- Package对GameMode筛选 + if table.contains(pkg.game_modes_blacklist or Util.DummyTable, mode_name) or (pkg.game_modes_whitelist and not table.contains(pkg.game_modes_whitelist, mode_name)) then table.insert(disabled_packages, name) end diff --git a/lua/core/game_mode.lua b/lua/core/game_mode.lua index 0f74b8a..c33cc6a 100644 --- a/lua/core/game_mode.lua +++ b/lua/core/game_mode.lua @@ -26,8 +26,8 @@ ---@field public maxPlayer integer @ 最大玩家数 ---@field public rule? TriggerSkill @ 规则(通过技能完成,通常用来为特定角色及特定时机提供触发事件) ---@field public logic? fun(): GameLogic @ 逻辑(通过function完成,通常用来初始化、分配身份及座次) ----@field public whitelist? string[] @ 白名单 ----@field public blacklist? string[] @ 黑名单 +---@field public whitelist? string[] | fun(self: GameMode, pkg: Package): bool @ 白名单 +---@field public blacklist? string[] | fun(self: GameMode, pkg: Package): bool @ 黑名单 ---@field public config_template? GameModeConfigEntry[] 游戏模式的配置页面,如此一个数组 local GameMode = class("GameMode") @@ -100,26 +100,4 @@ function GameMode:getAdjustedProperty (player) return list end ---- 向游戏模式中添加拓展包过滤。 ----@param whitelist? string[] | string @ 白名单 ----@param blacklist? string[] | string @ 黑名单 -function GameMode:addPackageFilter(whitelist, blacklist) - if whitelist then - if type(whitelist) == "string" then - whitelist = { whitelist } - elseif type(whitelist) ~= "table" then - whitelist = {} - end - self.whitelist = table.connect(self.whitelist or {}, whitelist) - end - if blacklist then - if type(whitelist) == "string" then - blacklist = { blacklist } - elseif type(blacklist) ~= "table" then - blacklist = {} - end - self.blacklist = table.connect(self.blacklist or {}, blacklist) - end -end - return GameMode diff --git a/lua/core/package.lua b/lua/core/package.lua index 0145d32..01cb2f1 100644 --- a/lua/core/package.lua +++ b/lua/core/package.lua @@ -94,23 +94,13 @@ function Package:setGameModeFilter(whitelist, blacklist) end --- 向拓展包中添加游戏模式过滤。 ----@param whitelist? string[] | string @ 白名单 ----@param blacklist? string[] | string @ 黑名单 +---@param whitelist? string[] @ 白名单 +---@param blacklist? string[] @ 黑名单 function Package:addGameModeFilter(whitelist, blacklist) if whitelist then - if type(whitelist) == "string" then - whitelist = { whitelist } - elseif type(whitelist) ~= "table" then - whitelist = {} - end self.game_modes_whitelist = table.connect(self.game_modes_whitelist or {}, whitelist) end if blacklist then - if type(whitelist) == "string" then - blacklist = { blacklist } - elseif type(blacklist) ~= "table" then - blacklist = {} - end self.game_modes_whitelist = table.connect(self.game_modes_blacklist or {}, blacklist) end end -- Gitee From a35672aaa4d8a812d8bcf9f8d68e7f15216a51e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B6=85=E7=BA=A7=E5=A6=96=E6=A2=A6=E5=8E=A8?= <12796194+youmuKon-supreme@user.noreply.gitee.com> Date: Sun, 27 Oct 2024 01:00:06 +0800 Subject: [PATCH 3/4] fix --- lua/core/package.lua | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/lua/core/package.lua b/lua/core/package.lua index 01cb2f1..94d90f1 100644 --- a/lua/core/package.lua +++ b/lua/core/package.lua @@ -93,16 +93,4 @@ function Package:setGameModeFilter(whitelist, blacklist) self.game_modes_blacklist = blacklist end ---- 向拓展包中添加游戏模式过滤。 ----@param whitelist? string[] @ 白名单 ----@param blacklist? string[] @ 黑名单 -function Package:addGameModeFilter(whitelist, blacklist) - if whitelist then - self.game_modes_whitelist = table.connect(self.game_modes_whitelist or {}, whitelist) - end - if blacklist then - self.game_modes_whitelist = table.connect(self.game_modes_blacklist or {}, blacklist) - end -end - return Package -- Gitee From 7a6550bc85b0a3911bcbaf62fe3e47071f34b674 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B6=85=E7=BA=A7=E5=A6=96=E6=A2=A6=E5=8E=A8?= <12796194+youmuKon-supreme@user.noreply.gitee.com> Date: Sun, 27 Oct 2024 01:01:03 +0800 Subject: [PATCH 4/4] fix --- lua/core/package.lua | 8 -------- 1 file changed, 8 deletions(-) diff --git a/lua/core/package.lua b/lua/core/package.lua index 94d90f1..04b1f73 100644 --- a/lua/core/package.lua +++ b/lua/core/package.lua @@ -85,12 +85,4 @@ function Package:addGameMode(game_mode) table.insert(self.game_modes, game_mode) end ---- 向拓展包中设置游戏模式过滤。 ----@param whitelist string[] @ 白名单 ----@param blacklist string[] @ 黑名单 -function Package:setGameModeFilter(whitelist, blacklist) - self.game_modes_whitelist = whitelist - self.game_modes_blacklist = blacklist -end - return Package -- Gitee