1
0
mirror of https://github.com/Refactorio/RedMew.git synced 2025-01-18 03:21:47 +02:00

Merge pull request #738 from plague006/cleanup/global

Clean up global
This commit is contained in:
Matthew 2019-02-04 12:27:44 -05:00 committed by GitHub
commit 5449642d4d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 101 additions and 67 deletions

View File

@ -1,5 +1,6 @@
local Task = require 'utils.task'
local Token = require 'utils.token'
local Global = require 'utils.global'
local UserGroups = require 'features.user_groups'
local Report = require 'features.report'
local Utils = require 'utils.core'
@ -11,7 +12,16 @@ local format = string.format
local loadstring = loadstring
--- A table of players with tpmode turned on
global.tp_players = {}
local tp_players = {}
Global.register(
{
tp_players = tp_players
},
function(tbl)
tp_players = tbl.tp_players
end
)
--- Sends a message to all online admins
local function admin_chat(args, player)
@ -209,11 +219,11 @@ local function teleport_location(_, player)
Game.player_print('Teleporting to your selected entity.')
end
--- If a player is in the global.tp_players list, remove ghosts they place and teleport them to that position
--- If a player is in the tp_players list, remove ghosts they place and teleport them to that position
local function built_entity(event)
local index = event.player_index
if global.tp_players[index] then
if tp_players[index] then
local entity = event.created_entity
if not entity or not entity.valid or entity.type ~= 'entity-ghost' then
@ -228,13 +238,13 @@ end
--- Adds/removes players from the tp_players table (admin only)
local function toggle_tp_mode(_, player)
local index = player.index
local toggled = global.tp_players[index]
local toggled = tp_players[index]
if toggled then
global.tp_players[index] = nil
tp_players[index] = nil
Game.player_print('tp mode is now off')
else
global.tp_players[index] = true
tp_players[index] = true
Game.player_print('tp mode is now on - place a ghost entity to teleport there.')
end
end

View File

@ -1,6 +1,7 @@
local Event = require 'utils.event'
local Gui = require 'utils.gui'
local Game = require 'utils.game'
local Global = require 'utils.global'
local brush_tool = 'refined-hazard-concrete'
@ -39,13 +40,23 @@ local filter_element_name = Gui.uid_name()
local filters_table_name = Gui.uid_name()
local filter_table_close_button_name = Gui.uid_name()
global.paint_brushes_by_player = {}
local paint_brushes_by_player = {}
Global.register(
{
paint_brushes_by_player = paint_brushes_by_player
},
function(tbl)
paint_brushes_by_player = tbl.paint_brushes_by_player
end
)
local function player_build_tile(event)
if event.item.name ~= brush_tool then
return
end
local replace_tile = global.paint_brushes_by_player[event.player_index]
local replace_tile = paint_brushes_by_player[event.player_index]
if not replace_tile then
return
end
@ -130,7 +141,7 @@ local function toggle(event)
caption = 'Paint Brush'
}
local tooltip = global.paint_brushes_by_player[event.player_index] or ''
local tooltip = paint_brushes_by_player[event.player_index] or ''
local brush =
main_frame.add({type = 'flow'}).add {
@ -156,7 +167,7 @@ Gui.on_click(
filter_button_name,
function(event)
if event.button == defines.mouse_button_type.right then
global.paint_brushes_by_player[event.player_index] = nil
paint_brushes_by_player[event.player_index] = nil
local element = event.element
element.sprite = 'utility/pump_cannot_connect_icon'
element.tooltip = ''
@ -174,7 +185,7 @@ Gui.on_click(
brush.sprite = 'utility/pump_cannot_connect_icon'
brush.tooltip = ''
global.paint_brushes_by_player[event.player_index] = nil
paint_brushes_by_player[event.player_index] = nil
end
)
@ -185,7 +196,7 @@ Gui.on_click(
local frame = Gui.get_data(element)
local filter_button = Gui.get_data(frame)
global.paint_brushes_by_player[event.player_index] = element.tooltip
paint_brushes_by_player[event.player_index] = element.tooltip
filter_button.sprite = element.sprite
filter_button.tooltip = element.tooltip

View File

@ -75,38 +75,41 @@ local function item_not_sanctioned(item)
return (name:find('capsule') or name == 'cliff-explosives' or name == 'raw-fish' or name == 'discharge-defense-remote')
end
global.entities_allowed_to_bomb = {
['stone-wall'] = true,
['transport-belt'] = true,
['fast-transport-belt'] = true,
['express-transport-belt'] = true,
['construction-robot'] = true,
['player'] = true,
['gun-turret'] = true,
['laser-turret'] = true,
['flamethrower-turret'] = true,
['rail'] = true,
['rail-chain-signal'] = true,
['rail-signal'] = true,
['tile-ghost'] = true,
['entity-ghost'] = true,
['gate'] = true,
['electric-pole'] = true,
['small-electric-pole'] = true,
['medium-electric-pole'] = true,
['big-electric-pole'] = true,
['logistic-robot'] = true,
['defender'] = true,
['destroyer'] = true,
['distractor'] = true
global.nuke_control = {
entities_allowed_to_bomb = {
['stone-wall'] = true,
['transport-belt'] = true,
['fast-transport-belt'] = true,
['express-transport-belt'] = true,
['construction-robot'] = true,
['player'] = true,
['gun-turret'] = true,
['laser-turret'] = true,
['flamethrower-turret'] = true,
['rail'] = true,
['rail-chain-signal'] = true,
['rail-signal'] = true,
['tile-ghost'] = true,
['entity-ghost'] = true,
['gate'] = true,
['electric-pole'] = true,
['small-electric-pole'] = true,
['medium-electric-pole'] = true,
['big-electric-pole'] = true,
['logistic-robot'] = true,
['defender'] = true,
['destroyer'] = true,
['distractor'] = true
},
players_warned = {}
}
local entities_allowed_to_bomb = global.nuke_control.entities_allowed_to_bomb
local players_warned = global.nuke_control.players_warned
local function entity_allowed_to_bomb(entity)
return global.entities_allowed_to_bomb[entity.name]
return entities_allowed_to_bomb[entity.name]
end
global.players_warned = {}
local function on_capsule_used(event)
local item = event.item
local player = Game.get_player_by_index(event.player_index)
@ -143,12 +146,12 @@ local function on_capsule_used(event)
end
end
if count > 8 then
if global.players_warned[event.player_index] then
if players_warned[event.player_index] then
if nuke_control.enable_autoban then
Server.ban_sync(player.name, format('Damaged %i entities with %s. This action was performed automatically. If you want to contest this ban please visit redmew.com/discord.', count, item.name), '<script>')
end
else
global.players_warned[event.player_index] = true
players_warned[event.player_index] = true
if nuke_control.enable_autokick then
game.kick_player(player, format('Damaged %i entities with %s -Antigrief', count, item.name))
end

View File

@ -6,10 +6,25 @@
local Event = require 'utils.event'
local Game = require 'utils.game'
local Command = require 'utils.command'
local Global = require 'utils.global'
local primitives = {reactors_enabled = {global.config.reactor_meltdown.on_by_default}}
local wastelands = {}
local reactors = {}
Global.register(
{
primitives = primitives,
wastelands = wastelands,
reactors = reactors
},
function(tbl)
primitives = tbl.primitives
wastelands = tbl.wastelands
reactors = tbl.reactors
end
)
global.reactors_enabled = global.config.reactor_meltdown.on_by_default
global.wastelands = {}
global.reactors = {}
local wasteland_duration_seconds = 300
local function spawn_wasteland(surface, position)
@ -51,7 +66,7 @@ local function spawn_wasteland(surface, position)
end
local function entity_destroyed(event)
if not global.reactors_enabled or not event.entity.valid or event.entity.name ~= 'nuclear-reactor' then
if not primitives.reactors_enabled or not event.entity.valid or event.entity.name ~= 'nuclear-reactor' then
return
end
@ -60,7 +75,7 @@ local function entity_destroyed(event)
if reactor.temperature > 700 then
reactor.surface.create_entity {name = 'atomic-rocket', position = reactor.position, target = reactor, speed = 1}
spawn_wasteland(reactor.surface, reactor.position)
global.wastelands[reactor.position.x .. '/' .. reactor.position.y] = {
wastelands[reactor.position.x .. '/' .. reactor.position.y] = {
position = reactor.position,
surface_id = reactor.surface.index,
creation_time = game.tick
@ -70,18 +85,13 @@ end
local function alert(reactor)
for _, p in pairs(game.players) do
p.add_custom_alert(
reactor,
{type = 'item', name = 'nuclear-reactor'},
string.format('Reactor at %s°C', math.floor(reactor.temperature)),
true
)
p.add_custom_alert(reactor, {type = 'item', name = 'nuclear-reactor'}, string.format('Reactor at %s°C', math.floor(reactor.temperature)), true)
end
end
local function check_reactors()
for _ in pairs(game.surfaces) do
for i, reactor in pairs(global.reactors) do
for i, reactor in pairs(reactors) do
if reactor.valid then
if reactor.temperature > 800 then
alert(reactor)
@ -97,17 +107,17 @@ local function check_reactors()
speed = 1
}
spawn_wasteland(reactor.surface, reactor.position)
global.wastelands[reactor.position.x .. '/' .. reactor.position.y] = {
wastelands[reactor.position.x .. '/' .. reactor.position.y] = {
position = reactor.position,
surface_id = reactor.surface.index,
creation_time = game.tick
}
table.remove(global.reactors, i)
table.remove(reactors, i)
else
reactor.health = 500 - (reactor.temperature - 800) * 2.5
end
else
table.remove(global.reactors, i)
table.remove(reactors, i)
end
end
--global.last_reactor_warning = last_reactor_warning
@ -115,21 +125,21 @@ local function check_reactors()
end
local function check_wastelands()
for index, wl in pairs(global.wastelands) do
for index, wl in pairs(wastelands) do
local age = game.tick - wl.creation_time
wl.last_checked = wl.last_checked or 0
if (game.tick - wl.last_checked) > 899 then
wl.last_checked = game.tick
spawn_wasteland(game.surfaces[wl.surface_id], wl.position)
if age > wasteland_duration_seconds * 60 - 1 then
global.wastelands[index] = nil
local reactors =
wastelands[index] = nil
local wasteland_reactors =
game.surfaces[wl.surface_id].find_entities_filtered {
position = wl.position,
name = 'nuclear-reactor'
}
if reactors[1] then
reactors[1].destroy()
if wasteland_reactors[1] then
wasteland_reactors[1].destroy()
end
end
end
@ -137,7 +147,7 @@ local function check_wastelands()
end
local function on_tick()
if global.reactors_enabled then
if primitives.reactors_enabled then
check_wastelands()
check_reactors()
end
@ -147,14 +157,14 @@ local function entity_build(event)
if not event.created_entity.valid then
return
end
if event.created_entity.name == 'nuclear-reactor' and event.created_entity.surface.name ~= "antigrief" then
table.insert(global.reactors, event.created_entity)
if event.created_entity.name == 'nuclear-reactor' and event.created_entity.surface.name ~= 'antigrief' then
table.insert(reactors, event.created_entity)
end
end
local function reactor_toggle()
global.reactors_enabled = not global.reactors_enabled
if global.reactors_enabled then
primitives.reactors_enabled = not primitives.reactors_enabled
if primitives.reactors_enabled then
game.print('Reactor meltdown activated.')
else
game.print('Reactor meltdown deactivated.')
@ -162,7 +172,7 @@ local function reactor_toggle()
end
local function is_meltdown()
if global.reactors_enabled then
if primitives.reactors_enabled then
Game.player_print('Reactor meltdown is enabled.')
else
Game.player_print('Reactor meltdown is disabled.')