2020-04-18 21:28:19 +02:00
-- config tab --
2020-04-18 21:09:11 +02:00
2020-08-22 17:20:59 +02:00
local Antigrief = require ' antigrief '
2020-08-22 18:08:39 +02:00
local Color = require ' utils.color_presets '
2020-08-22 17:20:59 +02:00
local SessionData = require ' utils.datastore.session_data '
2020-08-22 17:30:28 +02:00
local Utils = require ' utils.core '
2020-12-14 20:36:37 +02:00
local SpamProtection = require ' utils.spam_protection '
2021-02-26 00:59:33 +02:00
local BottomFrame = require ' comfy_panel.bottom_frame '
2020-04-18 21:09:11 +02:00
local spaghett_entity_blacklist = {
2020-08-22 17:20:59 +02:00
[ ' logistic-chest-requester ' ] = true ,
[ ' logistic-chest-buffer ' ] = true ,
[ ' logistic-chest-active-provider ' ] = true
2020-04-18 21:09:11 +02:00
}
2020-08-22 20:15:56 +02:00
local function get_actor ( event , prefix , msg , admins_only )
2020-08-22 17:20:59 +02:00
local player = game.get_player ( event.player_index )
if not player or not player.valid then
return
end
2020-08-22 20:15:56 +02:00
if admins_only then
Utils.print_admins ( msg , player.name )
else
Utils.action_warning ( prefix , player.name .. ' ' .. msg )
end
2020-08-22 17:20:59 +02:00
end
2020-04-18 21:09:11 +02:00
local function spaghett_deny_building ( event )
2020-08-22 17:20:59 +02:00
local spaghett = global.comfy_panel_config . spaghett
if not spaghett.enabled then
return
end
local entity = event.created_entity
if not entity.valid then
return
end
if not spaghett_entity_blacklist [ event.created_entity . name ] then
return
end
if event.player_index then
game.players [ event.player_index ] . insert ( { name = entity.name , count = 1 } )
else
local inventory = event.robot . get_inventory ( defines.inventory . robot_cargo )
inventory.insert ( { name = entity.name , count = 1 } )
end
event.created_entity . surface.create_entity (
{
name = ' flying-text ' ,
position = entity.position ,
text = ' Spaghett Mode Active! ' ,
color = { r = 0.98 , g = 0.66 , b = 0.22 }
}
)
entity.destroy ( )
2020-04-18 21:09:11 +02:00
end
local function spaghett ( )
2021-03-24 18:36:07 +02:00
local spaghetti = global.comfy_panel_config . spaghett
if spaghetti.enabled then
2020-08-22 17:20:59 +02:00
for _ , f in pairs ( game.forces ) do
if f.technologies [ ' logistic-system ' ] . researched then
2021-03-24 18:36:07 +02:00
spaghetti.undo [ f.index ] = true
2020-08-22 17:20:59 +02:00
end
f.technologies [ ' logistic-system ' ] . enabled = false
f.technologies [ ' logistic-system ' ] . researched = false
end
else
for _ , f in pairs ( game.forces ) do
f.technologies [ ' logistic-system ' ] . enabled = true
2021-03-24 18:36:07 +02:00
if spaghetti.undo [ f.index ] then
2020-08-22 17:20:59 +02:00
f.technologies [ ' logistic-system ' ] . researched = true
2021-03-24 18:36:07 +02:00
spaghetti.undo [ f.index ] = nil
2020-08-22 17:20:59 +02:00
end
end
end
end
local function trust_connected_players ( )
local trust = SessionData.get_trusted_table ( )
local AG = Antigrief.get ( )
local players = game.connected_players
if not AG.enabled then
for _ , p in pairs ( players ) do
trust [ p.name ] = true
end
else
for _ , p in pairs ( players ) do
trust [ p.name ] = false
end
end
2020-04-18 21:09:11 +02:00
end
local functions = {
2020-08-22 17:20:59 +02:00
[ ' comfy_panel_spectator_switch ' ] = function ( event )
if event.element . switch_state == ' left ' then
game.players [ event.player_index ] . spectator = true
else
game.players [ event.player_index ] . spectator = false
end
end ,
2021-02-26 00:59:33 +02:00
[ ' comfy_panel_bottom_right_frame ' ] = function ( event )
local player = game.get_player ( event.player_index )
if event.element . switch_state == ' left ' then
local bottom_frame = BottomFrame.get_player_data ( player )
if not bottom_frame then
return
end
bottom_frame.bottom_left = true
BottomFrame.set_location ( player )
else
BottomFrame.get_player_data ( player , true )
BottomFrame.set_location ( player )
end
end ,
2020-08-22 17:20:59 +02:00
[ ' comfy_panel_auto_hotbar_switch ' ] = function ( event )
if event.element . switch_state == ' left ' then
global.auto_hotbar_enabled [ event.player_index ] = true
else
global.auto_hotbar_enabled [ event.player_index ] = false
end
end ,
[ ' comfy_panel_blueprint_toggle ' ] = function ( event )
if event.element . switch_state == ' left ' then
2020-12-14 20:36:37 +02:00
game.permissions . get_group ( ' Default ' ) . set_allows_action ( defines.input_action . open_blueprint_library_gui , true )
2020-08-22 17:20:59 +02:00
game.permissions . get_group ( ' Default ' ) . set_allows_action ( defines.input_action . import_blueprint_string , true )
2020-08-22 18:14:04 +02:00
get_actor ( event , ' {Blueprints} ' , ' has enabled blueprints! ' )
2020-08-22 17:20:59 +02:00
else
2020-12-14 20:36:37 +02:00
game.permissions . get_group ( ' Default ' ) . set_allows_action ( defines.input_action . open_blueprint_library_gui , false )
2020-08-22 17:20:59 +02:00
game.permissions . get_group ( ' Default ' ) . set_allows_action ( defines.input_action . import_blueprint_string , false )
2020-08-22 18:14:04 +02:00
get_actor ( event , ' {Blueprints} ' , ' has disabled blueprints! ' )
2020-08-22 17:20:59 +02:00
end
end ,
[ ' comfy_panel_spaghett_toggle ' ] = function ( event )
if event.element . switch_state == ' left ' then
global.comfy_panel_config . spaghett.enabled = true
2020-08-22 18:14:04 +02:00
get_actor ( event , ' {Spaghett} ' , ' has enabled spaghett mode! ' )
2020-08-22 17:20:59 +02:00
else
global.comfy_panel_config . spaghett.enabled = nil
2020-08-22 18:14:04 +02:00
get_actor ( event , ' {Spaghett} ' , ' has disabled spaghett mode! ' )
2020-08-22 17:20:59 +02:00
end
spaghett ( )
2020-09-08 15:21:03 +02:00
end ,
2020-12-14 20:36:37 +02:00
[ ' bb_team_balancing_toggle ' ] = function ( event )
if event.element . switch_state == ' left ' then
global.bb_settings . team_balancing = true
game.print ( ' Team balancing has been enabled! ' )
else
global.bb_settings . team_balancing = false
game.print ( ' Team balancing has been disabled! ' )
end
end ,
[ ' bb_only_admins_vote ' ] = function ( event )
if event.element . switch_state == ' left ' then
global.bb_settings . only_admins_vote = true
global.difficulty_player_votes = { }
game.print ( ' Admin-only difficulty voting has been enabled! ' )
else
global.bb_settings . only_admins_vote = false
game.print ( ' Admin-only difficulty voting has been disabled! ' )
end
end
2020-04-18 21:09:11 +02:00
}
2020-04-27 23:33:28 +02:00
local poll_function = {
2020-08-22 17:20:59 +02:00
[ ' comfy_panel_poll_trusted_toggle ' ] = function ( event )
if event.element . switch_state == ' left ' then
global.comfy_panel_config . poll_trusted = true
2020-08-22 18:14:04 +02:00
get_actor ( event , ' {Poll Mode} ' , ' has disabled non-trusted people to do polls. ' )
2020-08-22 17:20:59 +02:00
else
global.comfy_panel_config . poll_trusted = false
2020-08-22 18:14:04 +02:00
get_actor ( event , ' {Poll Mode} ' , ' has allowed non-trusted people to do polls. ' )
2020-08-22 17:20:59 +02:00
end
end ,
[ ' comfy_panel_poll_no_notify_toggle ' ] = function ( event )
2020-12-31 19:43:49 +02:00
local poll = is_loaded ( ' comfy_panel.poll ' )
2020-08-22 17:20:59 +02:00
local poll_table = poll.get_no_notify_players ( )
if event.element . switch_state == ' left ' then
poll_table [ event.player_index ] = false
else
poll_table [ event.player_index ] = true
end
end
}
local antigrief_functions = {
[ ' comfy_panel_disable_antigrief ' ] = function ( event )
local AG = Antigrief.get ( )
if event.element . switch_state == ' left ' then
AG.enabled = true
2020-08-22 20:15:56 +02:00
get_actor ( event , ' {Antigrief} ' , ' has enabled the antigrief function. ' , true )
2020-08-22 17:20:59 +02:00
else
AG.enabled = false
2020-08-22 20:15:56 +02:00
get_actor ( event , ' {Antigrief} ' , ' has disabled the antigrief function. ' , true )
2020-08-22 17:20:59 +02:00
end
trust_connected_players ( )
end
2020-04-27 23:33:28 +02:00
}
2020-08-22 18:08:39 +02:00
local fortress_functions = {
[ ' comfy_panel_disable_fullness ' ] = function ( event )
2020-12-31 19:43:49 +02:00
local Fullness = is_loaded ( ' modules.check_fullness ' )
2020-08-26 11:08:12 +02:00
local this = Fullness.get ( )
2020-08-22 18:08:39 +02:00
if event.element . switch_state == ' left ' then
this.fullness_enabled = true
get_actor ( event , ' {Fullness} ' , ' has enabled the inventory fullness function. ' )
else
this.fullness_enabled = false
get_actor ( event , ' {Fullness} ' , ' has disabled the inventory fullness function. ' )
end
end ,
[ ' comfy_panel_offline_players ' ] = function ( event )
2020-12-31 19:43:49 +02:00
local WPT = is_loaded ( ' maps.mountain_fortress_v3.table ' )
2020-08-22 18:08:39 +02:00
local this = WPT.get ( )
if event.element . switch_state == ' left ' then
this.offline_players_enabled = true
get_actor ( event , ' {Offline Players} ' , ' has enabled the offline player function. ' )
else
this.offline_players_enabled = false
get_actor ( event , ' {Offline Players} ' , ' has disabled the offline player function. ' )
end
end ,
[ ' comfy_panel_collapse_grace ' ] = function ( event )
2020-12-31 19:43:49 +02:00
local WPT = is_loaded ( ' maps.mountain_fortress_v3.table ' )
2020-08-22 18:08:39 +02:00
local this = WPT.get ( )
if event.element . switch_state == ' left ' then
this.collapse_grace = true
get_actor ( event , ' {Collapse} ' , ' has enabled the collapse function. Collapse will occur after wave 100! ' )
else
this.collapse_grace = false
2020-12-14 20:36:37 +02:00
get_actor ( event , ' {Collapse} ' , ' has disabled the collapse function. You must reach zone 2 for collapse to occur! ' )
2020-08-22 18:08:39 +02:00
end
end ,
[ ' comfy_panel_spill_items_to_surface ' ] = function ( event )
2020-12-31 19:43:49 +02:00
local WPT = is_loaded ( ' maps.mountain_fortress_v3.table ' )
2020-08-22 18:08:39 +02:00
local this = WPT.get ( )
if event.element . switch_state == ' left ' then
this.spill_items_to_surface = true
2020-12-14 20:36:37 +02:00
get_actor ( event , ' {Item Spill} ' , ' has enabled the ore spillage function. Ores now drop to surface when mining. ' )
2020-08-22 18:08:39 +02:00
else
this.spill_items_to_surface = false
2020-12-14 20:36:37 +02:00
get_actor ( event , ' {Item Spill} ' , ' has disabled the item spillage function. Ores no longer drop to surface when mining. ' )
2020-08-22 18:08:39 +02:00
end
2020-08-22 20:28:24 +02:00
end ,
[ ' comfy_panel_void_or_tile ' ] = function ( event )
2020-12-31 19:43:49 +02:00
local WPT = is_loaded ( ' maps.mountain_fortress_v3.table ' )
2020-08-22 20:28:24 +02:00
local this = WPT.get ( )
if event.element . switch_state == ' left ' then
this.void_or_tile = ' out-of-map '
2020-08-27 13:27:34 +02:00
get_actor ( event , ' {Void} ' , ' has changes the tiles of the zones to: out-of-map (void) ' )
2020-08-22 20:28:24 +02:00
else
this.void_or_tile = ' lab-dark-2 '
2020-08-27 13:27:34 +02:00
get_actor ( event , ' {Void} ' , ' has changes the tiles of the zones to: dark-tiles (flammable tiles) ' )
end
end ,
[ ' comfy_panel_trusted_only_car_tanks ' ] = function ( event )
2020-12-31 19:43:49 +02:00
local WPT = is_loaded ( ' maps.mountain_fortress_v3.table ' )
2020-08-27 13:27:34 +02:00
local this = WPT.get ( )
if event.element . switch_state == ' left ' then
this.trusted_only_car_tanks = true
get_actor ( event , ' {Market} ' , ' has changed so only trusted people can buy car/tanks. ' , true )
else
this.trusted_only_car_tanks = false
2020-08-27 13:28:21 +02:00
get_actor ( event , ' {Market} ' , ' has changed so everybody can buy car/tanks. ' , true )
2020-08-22 20:28:24 +02:00
end
2020-08-22 18:08:39 +02:00
end
}
2020-04-18 21:09:11 +02:00
local function add_switch ( element , switch_state , name , description_main , description )
2020-08-22 17:20:59 +02:00
local t = element.add ( { type = ' table ' , column_count = 5 } )
2021-03-24 18:36:07 +02:00
local on_label = t.add ( { type = ' label ' , caption = ' ON ' } )
on_label.style . padding = 0
on_label.style . left_padding = 10
on_label.style . font_color = { 0.77 , 0.77 , 0.77 }
2020-08-22 17:20:59 +02:00
local switch = t.add ( { type = ' switch ' , name = name } )
switch.switch_state = switch_state
switch.style . padding = 0
switch.style . margin = 0
2021-03-24 18:36:07 +02:00
local off_label = t.add ( { type = ' label ' , caption = ' OFF ' } )
off_label.style . padding = 0
off_label.style . font_color = { 0.70 , 0.70 , 0.70 }
local desc_main_label = t.add ( { type = ' label ' , caption = description_main } )
desc_main_label.style . padding = 2
desc_main_label.style . left_padding = 10
desc_main_label.style . minimal_width = 120
desc_main_label.style . font = ' heading-2 '
desc_main_label.style . font_color = { 0.88 , 0.88 , 0.99 }
local desc_label = t.add ( { type = ' label ' , caption = description } )
desc_label.style . padding = 2
desc_label.style . left_padding = 10
desc_label.style . single_line = false
desc_label.style . font = ' heading-3 '
desc_label.style . font_color = { 0.85 , 0.85 , 0.85 }
2020-08-22 17:20:59 +02:00
return switch
2020-04-18 21:09:11 +02:00
end
2020-08-22 17:20:59 +02:00
local build_config_gui = ( function ( player , frame )
local AG = Antigrief.get ( )
2020-08-22 18:08:39 +02:00
local switch_state
local label
2020-08-22 17:20:59 +02:00
local admin = player.admin
2020-08-22 20:15:56 +02:00
frame.clear ( )
2020-08-22 17:20:59 +02:00
2020-08-22 18:08:39 +02:00
local scroll_pane =
frame.add {
type = ' scroll-pane ' ,
horizontal_scroll_policy = ' never '
}
local scroll_style = scroll_pane.style
scroll_style.vertically_squashable = true
scroll_style.bottom_padding = 2
scroll_style.left_padding = 2
scroll_style.right_padding = 2
scroll_style.top_padding = 2
label = scroll_pane.add ( { type = ' label ' , caption = ' Player Settings ' } )
2020-08-22 17:20:59 +02:00
label.style . font = ' default-bold '
label.style . padding = 0
label.style . left_padding = 10
label.style . horizontal_align = ' left '
label.style . vertical_align = ' bottom '
label.style . font_color = { 0.55 , 0.55 , 0.99 }
2020-08-22 18:08:39 +02:00
scroll_pane.add ( { type = ' line ' } )
2020-08-22 17:20:59 +02:00
2020-08-22 18:08:39 +02:00
switch_state = ' right '
2020-08-22 17:20:59 +02:00
if player.spectator then
switch_state = ' left '
end
add_switch (
2020-08-22 18:08:39 +02:00
scroll_pane ,
2020-08-22 17:20:59 +02:00
switch_state ,
' comfy_panel_spectator_switch ' ,
' SpectatorMode ' ,
' Toggles zoom-to-world view noise effect. \n Environmental sounds will be based on map view. '
)
2020-08-22 18:08:39 +02:00
scroll_pane.add ( { type = ' line ' } )
2020-08-22 17:20:59 +02:00
if global.auto_hotbar_enabled then
2020-08-22 18:08:39 +02:00
switch_state = ' right '
2020-08-22 17:20:59 +02:00
if global.auto_hotbar_enabled [ player.index ] then
switch_state = ' left '
end
2020-12-14 20:36:37 +02:00
add_switch ( scroll_pane , switch_state , ' comfy_panel_auto_hotbar_switch ' , ' AutoHotbar ' , ' Automatically fills your hotbar with placeable items. ' )
2020-08-22 18:08:39 +02:00
scroll_pane.add ( { type = ' line ' } )
2020-08-22 17:20:59 +02:00
end
2020-12-31 19:43:49 +02:00
local poll = is_loaded ( ' comfy_panel.poll ' )
if poll then
2020-08-22 17:20:59 +02:00
local poll_table = poll.get_no_notify_players ( )
2020-08-22 18:08:39 +02:00
switch_state = ' right '
2020-08-22 17:20:59 +02:00
if not poll_table [ player.index ] then
switch_state = ' left '
end
2020-12-14 20:36:37 +02:00
add_switch ( scroll_pane , switch_state , ' comfy_panel_poll_no_notify_toggle ' , ' Notify on polls ' , ' Receive a message when new polls are created and popup the poll. ' )
2020-08-22 18:08:39 +02:00
scroll_pane.add ( { type = ' line ' } )
2020-08-22 17:20:59 +02:00
end
2021-02-26 00:59:33 +02:00
if BottomFrame.is_custom_buttons_enabled ( ) then
switch_state = ' right '
local bottom_frame = BottomFrame.get ( ' players ' )
if bottom_frame [ player.index ] then
switch_state = ' left '
end
add_switch (
scroll_pane ,
switch_state ,
' comfy_panel_bottom_right_frame ' ,
' Button Location ' ,
' Toggle to select if you want the bottom button on the right side or the left side. '
)
scroll_pane.add ( { type = ' line ' } )
end
2020-08-22 17:20:59 +02:00
if admin then
2020-08-22 18:08:39 +02:00
label = scroll_pane.add ( { type = ' label ' , caption = ' Admin Settings ' } )
2020-08-22 17:20:59 +02:00
label.style . font = ' default-bold '
label.style . padding = 0
label.style . left_padding = 10
label.style . top_padding = 10
label.style . horizontal_align = ' left '
label.style . vertical_align = ' bottom '
label.style . font_color = { 0.77 , 0.11 , 0.11 }
2020-08-22 18:08:39 +02:00
scroll_pane.add ( { type = ' line ' } )
2020-08-22 17:20:59 +02:00
2020-08-22 18:08:39 +02:00
switch_state = ' right '
2020-08-22 17:20:59 +02:00
if game.permissions . get_group ( ' Default ' ) . allows_action ( defines.input_action . open_blueprint_library_gui ) then
switch_state = ' left '
end
2020-12-14 20:36:37 +02:00
add_switch ( scroll_pane , switch_state , ' comfy_panel_blueprint_toggle ' , ' Blueprint Library ' , ' Toggles the usage of blueprint strings and the library. ' )
2020-08-22 17:20:59 +02:00
2020-08-22 18:08:39 +02:00
scroll_pane.add ( { type = ' line ' } )
2020-08-22 17:20:59 +02:00
2020-08-22 18:08:39 +02:00
switch_state = ' right '
2020-08-22 17:20:59 +02:00
if global.comfy_panel_config . spaghett.enabled then
switch_state = ' left '
end
2020-08-22 18:08:39 +02:00
add_switch (
scroll_pane ,
2020-08-22 17:20:59 +02:00
switch_state ,
' comfy_panel_spaghett_toggle ' ,
' Spaghett Mode ' ,
' Disables the Logistic System research. \n Requester, buffer or active-provider containers can not be built. '
)
2020-12-31 19:43:49 +02:00
if poll then
2020-08-22 18:08:39 +02:00
scroll_pane.add ( { type = ' line ' } )
switch_state = ' right '
2020-08-22 17:20:59 +02:00
if global.comfy_panel_config . poll_trusted then
switch_state = ' left '
end
2020-12-14 20:36:37 +02:00
add_switch ( scroll_pane , switch_state , ' comfy_panel_poll_trusted_toggle ' , ' Poll mode ' , ' Disables non-trusted plebs to create polls. ' )
2020-08-22 17:20:59 +02:00
end
2020-08-22 18:08:39 +02:00
scroll_pane.add ( { type = ' line ' } )
2020-08-22 17:20:59 +02:00
2020-08-22 18:08:39 +02:00
label = scroll_pane.add ( { type = ' label ' , caption = ' Antigrief Settings ' } )
2020-08-22 17:20:59 +02:00
label.style . font = ' default-bold '
label.style . padding = 0
label.style . left_padding = 10
label.style . top_padding = 10
label.style . horizontal_align = ' left '
label.style . vertical_align = ' bottom '
2020-08-22 18:08:39 +02:00
label.style . font_color = Color.yellow
2020-08-22 17:20:59 +02:00
2020-08-22 18:08:39 +02:00
switch_state = ' right '
2020-08-22 17:20:59 +02:00
if AG.enabled then
switch_state = ' left '
end
2020-12-14 20:36:37 +02:00
add_switch ( scroll_pane , switch_state , ' comfy_panel_disable_antigrief ' , ' Antigrief ' , ' Left = Enables antigrief / Right = Disables antigrief ' )
2020-08-22 18:08:39 +02:00
scroll_pane.add ( { type = ' line ' } )
2020-12-14 20:36:37 +02:00
2020-12-31 19:43:49 +02:00
if is_loaded ( ' maps.biter_battles_v2.main ' ) then
2020-09-08 15:21:03 +02:00
label = scroll_pane.add ( { type = ' label ' , caption = ' Biter Battles Settings ' } )
label.style . font = ' default-bold '
label.style . padding = 0
label.style . left_padding = 10
label.style . top_padding = 10
label.style . horizontal_align = ' left '
label.style . vertical_align = ' bottom '
label.style . font_color = Color.green
scroll_pane.add ( { type = ' line ' } )
2020-12-14 20:36:37 +02:00
2021-03-24 18:36:07 +02:00
local team_balancing_state = ' right '
2020-12-14 20:36:37 +02:00
if global.bb_settings . team_balancing then
2021-03-24 18:36:07 +02:00
team_balancing_state = ' left '
2020-12-14 20:36:37 +02:00
end
local switch =
add_switch (
scroll_pane ,
2021-03-24 18:36:07 +02:00
team_balancing_state ,
2020-12-14 20:36:37 +02:00
' bb_team_balancing_toggle ' ,
' Team Balancing ' ,
' Players can only join a team that has less or equal players than the opposing. '
)
if not admin then
switch.ignored_by_interaction = true
end
scroll_pane.add ( { type = ' line ' } )
2021-03-24 18:36:07 +02:00
local only_admins_vote_state = ' right '
2020-12-14 20:36:37 +02:00
if global.bb_settings . only_admins_vote then
2021-03-24 18:36:07 +02:00
only_admins_vote_state = ' left '
2020-12-14 20:36:37 +02:00
end
2021-03-24 18:36:07 +02:00
local only_admins_vote_switch =
add_switch (
scroll_pane ,
only_admins_vote_state ,
' bb_only_admins_vote ' ,
' Admin Vote ' ,
' Only admins can vote for map difficulty. Clears all currently existing votes. '
)
2020-12-14 20:36:37 +02:00
if not admin then
2021-03-24 18:36:07 +02:00
only_admins_vote_switch.ignored_by_interaction = true
2020-12-14 20:36:37 +02:00
end
scroll_pane.add ( { type = ' line ' } )
end
2020-12-31 19:43:49 +02:00
if is_loaded ( ' maps.mountain_fortress_v3.main ' ) then
2020-08-22 18:08:39 +02:00
label = scroll_pane.add ( { type = ' label ' , caption = ' Mountain Fortress Settings ' } )
label.style . font = ' default-bold '
label.style . padding = 0
label.style . left_padding = 10
label.style . top_padding = 10
label.style . horizontal_align = ' left '
label.style . vertical_align = ' bottom '
label.style . font_color = Color.green
2020-08-26 11:08:12 +02:00
2020-12-31 19:43:49 +02:00
local Fullness = is_loaded ( ' modules.check_fullness ' )
2020-08-26 11:08:12 +02:00
local full = Fullness.get ( )
2020-08-22 18:08:39 +02:00
switch_state = ' right '
2020-08-26 11:08:12 +02:00
if full.fullness_enabled then
2020-08-22 18:08:39 +02:00
switch_state = ' left '
end
2020-12-14 20:36:37 +02:00
add_switch ( scroll_pane , switch_state , ' comfy_panel_disable_fullness ' , ' Inventory Fullness ' , ' Left = Enables inventory fullness. \n Right = Disables inventory fullness. ' )
2020-08-22 18:08:39 +02:00
scroll_pane.add ( { type = ' line ' } )
2020-12-31 19:43:49 +02:00
local WPT = is_loaded ( ' maps.mountain_fortress_v3.table ' )
2020-08-26 11:08:12 +02:00
local this = WPT.get ( )
2020-08-22 18:08:39 +02:00
switch_state = ' right '
if this.offline_players_enabled then
switch_state = ' left '
end
add_switch (
scroll_pane ,
switch_state ,
' comfy_panel_offline_players ' ,
' Offline Players ' ,
2020-08-27 13:27:34 +02:00
' Left = Enables offline player inventory drop. \n Right = Disables offline player inventory drop. '
2020-08-22 18:08:39 +02:00
)
scroll_pane.add ( { type = ' line ' } )
2020-08-22 17:20:59 +02:00
2020-08-22 18:08:39 +02:00
switch_state = ' right '
if this.collapse_grace then
switch_state = ' left '
end
add_switch (
scroll_pane ,
switch_state ,
' comfy_panel_collapse_grace ' ,
' Collapse ' ,
2020-08-27 13:27:34 +02:00
' Left = Enables collapse after wave 100. \n Right = Disables collapse - you must reach zone 2 for collapse to occur. '
2020-08-22 18:08:39 +02:00
)
scroll_pane.add ( { type = ' line ' } )
switch_state = ' right '
if this.spill_items_to_surface then
switch_state = ' left '
end
add_switch (
scroll_pane ,
switch_state ,
' comfy_panel_spill_items_to_surface ' ,
' Spill Ores ' ,
2020-08-27 13:27:34 +02:00
' Left = Enables ore spillage to surface when mining. \n Right = Disables ore spillage to surface when mining. '
2020-08-22 18:08:39 +02:00
)
2020-08-22 18:14:04 +02:00
scroll_pane.add ( { type = ' line ' } )
2020-08-22 20:28:24 +02:00
switch_state = ' right '
if this.void_or_tile then
switch_state = ' left '
end
2020-12-14 20:36:37 +02:00
add_switch ( scroll_pane , switch_state , ' comfy_panel_void_or_tile ' , ' Void Tiles ' , ' Left = Changes the tiles to out-of-map. \n Right = Changes the tiles to lab-dark-2 ' )
2020-08-27 13:27:34 +02:00
scroll_pane.add ( { type = ' line ' } )
switch_state = ' right '
if this.trusted_only_car_tanks then
switch_state = ' left '
end
add_switch (
scroll_pane ,
switch_state ,
' comfy_panel_trusted_only_car_tanks ' ,
' Market Purchase ' ,
' Left = Allows only trusted people to buy car/tanks. \n Right = Allows everyone to buy car/tanks. '
2020-08-22 20:28:24 +02:00
)
scroll_pane.add ( { type = ' line ' } )
2020-08-22 18:08:39 +02:00
end
2020-08-22 17:20:59 +02:00
end
2020-08-22 18:08:39 +02:00
for _ , e in pairs ( scroll_pane.children ) do
2020-08-22 17:20:59 +02:00
if e.type == ' line ' then
e.style . padding = 0
e.style . margin = 0
end
end
2020-04-18 21:09:11 +02:00
end )
local function on_gui_switch_state_changed ( event )
2020-12-14 20:36:37 +02:00
local player = game.players [ event.player_index ]
if not ( player and player.valid ) then
return
end
2020-08-22 17:20:59 +02:00
if not event.element then
return
end
if not event.element . valid then
return
end
2020-12-14 20:36:37 +02:00
2020-08-22 17:20:59 +02:00
if functions [ event.element . name ] then
2021-01-12 22:52:45 +02:00
local is_spamming = SpamProtection.is_spamming ( player , nil , ' Config Functions Elem ' )
2020-12-14 20:36:37 +02:00
if is_spamming then
return
end
2020-08-22 17:20:59 +02:00
functions [ event.element . name ] ( event )
return
elseif antigrief_functions [ event.element . name ] then
2021-01-12 22:52:45 +02:00
local is_spamming = SpamProtection.is_spamming ( player , nil , ' Config AntiGrief Elem ' )
2020-12-14 20:36:37 +02:00
if is_spamming then
return
end
2020-08-22 17:20:59 +02:00
antigrief_functions [ event.element . name ] ( event )
return
2020-08-22 18:08:39 +02:00
elseif fortress_functions [ event.element . name ] then
2021-01-12 22:52:45 +02:00
local is_spamming = SpamProtection.is_spamming ( player , nil , ' Config Fortress Elem ' )
2020-12-14 20:36:37 +02:00
if is_spamming then
return
end
2020-08-22 18:08:39 +02:00
fortress_functions [ event.element . name ] ( event )
return
2020-12-31 19:43:49 +02:00
elseif is_loaded ( ' comfy_panel.poll ' ) then
2021-01-12 22:52:45 +02:00
local is_spamming = SpamProtection.is_spamming ( player , nil , ' Config Poll Elem ' )
2020-12-14 20:36:37 +02:00
if is_spamming then
return
end
2020-08-22 17:20:59 +02:00
if poll_function [ event.element . name ] then
poll_function [ event.element . name ] ( event )
return
end
end
2020-04-18 21:09:11 +02:00
end
2020-08-22 17:20:59 +02:00
local function on_force_created ( )
spaghett ( )
2020-04-18 21:09:11 +02:00
end
local function on_built_entity ( event )
2020-08-22 17:20:59 +02:00
spaghett_deny_building ( event )
2020-04-18 21:09:11 +02:00
end
local function on_robot_built_entity ( event )
2020-08-22 17:20:59 +02:00
spaghett_deny_building ( event )
2020-04-18 21:09:11 +02:00
end
local function on_init ( )
2020-08-22 17:20:59 +02:00
global.comfy_panel_config = { }
global.comfy_panel_config . spaghett = { }
global.comfy_panel_config . spaghett.undo = { }
global.comfy_panel_config . poll_trusted = false
global.comfy_panel_disable_antigrief = false
2020-04-18 21:09:11 +02:00
end
2020-08-22 17:20:59 +02:00
comfy_panel_tabs [ ' Config ' ] = { gui = build_config_gui , admin = false }
2020-04-18 21:09:11 +02:00
local Event = require ' utils.event '
Event.on_init ( on_init )
Event.add ( defines.events . on_gui_switch_state_changed , on_gui_switch_state_changed )
Event.add ( defines.events . on_force_created , on_force_created )
Event.add ( defines.events . on_built_entity , on_built_entity )
Event.add ( defines.events . on_robot_built_entity , on_robot_built_entity )