feat: change future to assign roles to table

This commit is contained in:
oof2win2
2022-11-12 22:31:36 +01:00
committed by Cooldude2606
parent ceca8fbf00
commit 2d9cfd8e11
2 changed files with 13 additions and 12 deletions

View File

@@ -374,7 +374,9 @@ function Roles.assign_player(player, roles, by_player_name, skip_checks, silent)
if Roles.player_has_role(player, "Jail") then if Roles.player_has_role(player, "Jail") then
local to_assign = JailOldRole.old_roles[valid_player.name] or {} local to_assign = JailOldRole.old_roles[valid_player.name] or {}
for _, role in ipairs(roles) do for _, role in ipairs(roles) do
table.insert(to_assign, role) if not to_assign[role] then
to_assign[role] = 1
end
end end
JailOldRole.old_roles[valid_player.name] = to_assign JailOldRole.old_roles[valid_player.name] = to_assign
return return

View File

@@ -18,11 +18,10 @@
local Roles = require 'expcore.roles' --- @dep expcore.roles local Roles = require 'expcore.roles' --- @dep expcore.roles
local Game = require 'utils.game' --- @dep utils.game local Game = require 'utils.game' --- @dep utils.game
local Global = require 'utils.global' --- @dep utils.global
local JailOldRole = require 'modules.control.jail_old_role' --- @dep modules.control.jail_old_role local JailOldRole = require 'modules.control.jail_old_role' --- @dep modules.control.jail_old_role
local valid_player = Game.get_player_from_any local valid_player = Game.get_player_from_any
local assign_roles = Roles.assign_player local assign_role = Roles.assign_player
local unassign_roles = Roles.unassign_player local unassign_roles = Roles.unassign_player
local has_role = Roles.player_has_role local has_role = Roles.player_has_role
local get_roles = Roles.get_player_roles local get_roles = Roles.get_player_roles
@@ -44,12 +43,6 @@ local Jail = {
} }
} }
local old_roles = Jail.old_roles
Global.register(old_roles, function(tbl)
Jail.old_roles = tbl
old_roles = tbl
end)
--- Used to emit the jail related events --- Used to emit the jail related events
-- @tparam number event the name of the event that will be emited -- @tparam number event the name of the event that will be emited
-- @tparam LuaPlayer player the player who is being acted on -- @tparam LuaPlayer player the player who is being acted on
@@ -90,7 +83,11 @@ function Jail.jail_player(player, by_player_name, reason)
if has_role(player, 'Jail') then return end if has_role(player, 'Jail') then return end
local roles = get_roles(player) local roles = get_roles(player)
JailOldRole.old_roles[player.name] = roles local old_roles = {}
for _, role in ipairs(roles) do
old_roles[role.name] = 1
end
JailOldRole.old_roles[player.name] = old_roles
player.walking_state = { walking = false } player.walking_state = { walking = false }
player.riding_state = { acceleration = defines.riding.acceleration.nothing, direction = player.riding_state.direction } player.riding_state = { acceleration = defines.riding.acceleration.nothing, direction = player.riding_state.direction }
@@ -99,7 +96,7 @@ function Jail.jail_player(player, by_player_name, reason)
player.picking_state = false player.picking_state = false
player.repair_state = { repairing = false } player.repair_state = { repairing = false }
assign_roles(player, 'Jail', by_player_name, nil, true) assign_role(player, 'Jail', by_player_name, nil, true)
unassign_roles(player, roles, by_player_name, nil, true) unassign_roles(player, roles, by_player_name, nil, true)
event_emit(Jail.events.on_player_jailed, player, by_player_name, reason) event_emit(Jail.events.on_player_jailed, player, by_player_name, reason)
@@ -120,7 +117,9 @@ function Jail.unjail_player(player, by_player_name)
local roles = JailOldRole.old_roles[player.name] or {} local roles = JailOldRole.old_roles[player.name] or {}
unassign_roles(player, 'Jail', by_player_name, nil, true) unassign_roles(player, 'Jail', by_player_name, nil, true)
assign_roles(player, roles, by_player_name, nil, true) for role, _ in pairs(roles) do
assign_role(player, role, by_player_name, nil, true)
end
event_emit(Jail.events.on_player_unjailed, player, by_player_name) event_emit(Jail.events.on_player_unjailed, player, by_player_name)