mirror of
https://github.com/Oarcinae/FactorioScenarioMultiplayerSpawn.git
synced 2025-01-10 00:28:22 +02:00
146 lines
6.0 KiB
Lua
146 lines
6.0 KiB
Lua
-- game_opts.lua
|
|
-- Jan 2018
|
|
-- Display current game options, maybe have some admin controls here
|
|
|
|
-- Main Configuration File
|
|
require("config")
|
|
require("lib/oarc_utils")
|
|
|
|
function CreateGameOptionsGui(event)
|
|
local player = game.players[event.player_index]
|
|
if player.gui.top.game_options == nil then
|
|
player.gui.top.add{name="game_options", type="button", caption="Info"}
|
|
end
|
|
end
|
|
|
|
local function ExpandGameOptionsGui(player)
|
|
local frame = player.gui.left["game_options_panel"]
|
|
if (frame) then
|
|
frame.destroy()
|
|
else
|
|
local frame = player.gui.left.add{type="frame",
|
|
name="game_options_panel",
|
|
caption="Server Info:",
|
|
direction="vertical"}
|
|
|
|
-- General Server Info:
|
|
AddLabel(frame, "info_1", global.welcome_msg, my_longer_label_style)
|
|
AddLabel(frame, "info_2", SERVER_MSG, my_longer_label_style)
|
|
AddSpacer(frame, "info_spacer1")
|
|
|
|
-- Enemy Settings:
|
|
local enemy_expansion_txt = "disabled"
|
|
if game.map_settings.enemy_expansion.enabled then enemy_expansion_txt = "enabled" end
|
|
|
|
local enemy_text="Server Run Time: " .. formattime_hours_mins(game.tick) .. "\n" ..
|
|
"Current Evolution: " .. string.format("%.4f", game.forces["enemy"].evolution_factor) .. "\n" ..
|
|
"Enemy evolution time factor: " .. game.map_settings.enemy_evolution.time_factor .. "\n" ..
|
|
"Enemy evolution pollution factor: " .. game.map_settings.enemy_evolution.pollution_factor .. "\n" ..
|
|
"Enemy evolution destroy factor: " .. game.map_settings.enemy_evolution.destroy_factor .. "\n" ..
|
|
"Enemy expansion is " .. enemy_expansion_txt
|
|
|
|
AddLabel(frame, "enemy_info", enemy_text, my_longer_label_style)
|
|
AddSpacer(frame, "enemy_info_spacer1")
|
|
|
|
-- Game Mode:
|
|
AddLabel(frame, "core_mod_en", "Core game mode (separate spawns) is enabled.", my_longer_label_style)
|
|
if (not ENABLE_SEPARATE_SPAWNS) then
|
|
frame.core_mod_en.caption="Core game mode (separate spawns) is DISABLED."
|
|
frame.core_mod_en.style.font_color=my_color_red
|
|
end
|
|
|
|
-- Soft Mods:
|
|
local soft_mods_string = "Oarc Core"
|
|
if (not ENABLE_SEPARATE_SPAWNS) then
|
|
soft_mods_string = "Oarc Core [DISABLED!]"
|
|
end
|
|
-- if (ENABLE_RSO) then
|
|
-- soft_mods_string = soft_mods_string .. ", RSO"
|
|
-- end
|
|
if (ENABLE_UNDECORATOR) then
|
|
soft_mods_string = soft_mods_string .. ", Undecorator"
|
|
end
|
|
if (ENABLE_TAGS) then
|
|
soft_mods_string = soft_mods_string .. ", Tags"
|
|
end
|
|
if (ENABLE_LONGREACH) then
|
|
soft_mods_string = soft_mods_string .. ", Long Reach"
|
|
end
|
|
if (ENABLE_AUTOFILL) then
|
|
soft_mods_string = soft_mods_string .. ", Auto Fill"
|
|
end
|
|
if (ENABLE_PLAYER_LIST) then
|
|
soft_mods_string = soft_mods_string .. ", Player List"
|
|
end
|
|
|
|
local game_info_str = "Soft Mods Enabled: " .. soft_mods_string
|
|
|
|
-- Spawn options:
|
|
if (ENABLE_SEPARATE_TEAMS) then
|
|
game_info_str = game_info_str.."\n".."You are allowed to spawn on your own team (have your own research tree). All teams are friendly!"
|
|
end
|
|
if (ENABLE_BUDDY_SPAWN) then
|
|
game_info_str = game_info_str.."\n".."You can chose to spawn alongside a buddy if you spawn together at the same time."
|
|
end
|
|
if (ENABLE_SHARED_SPAWNS) then
|
|
game_info_str = game_info_str.."\n".."Spawn hosts may choose to share their spawn and allow other players to join them."
|
|
end
|
|
if (ENABLE_SEPARATE_TEAMS and ENABLE_SHARED_TEAM_VISION) then
|
|
game_info_str = game_info_str.."\n".."Everyone (all teams) have shared vision."
|
|
end
|
|
if (FRONTIER_ROCKET_SILO_MODE) then
|
|
game_info_str = game_info_str.."\n".."Silos are NOT craftable. There is at least one already located on the map."
|
|
end
|
|
if (ENABLE_REGROWTH) then
|
|
game_info_str = game_info_str.."\n".."Old parts of the map will slowly be deleted over time (chunks without any player buildings)."
|
|
end
|
|
if (ENABLE_POWER_ARMOR_QUICK_START) then
|
|
game_info_str = game_info_str.."\n".."Power armor quick start enabled."
|
|
end
|
|
|
|
AddLabel(frame, "game_info_label", game_info_str, my_longer_label_style)
|
|
|
|
if (ENABLE_ABANDONED_BASE_REMOVAL) then
|
|
AddLabel(frame, "leave_warning_msg", "If you leave within " .. MIN_ONLINE_TIME_IN_MINUTES .. " minutes of joining, your base and character will be deleted.", my_longer_label_style)
|
|
frame.leave_warning_msg.style.font_color=my_color_red
|
|
end
|
|
|
|
-- Ending Spacer
|
|
AddSpacer(frame, "end_spacer")
|
|
|
|
-- ADMIN CONTROLS
|
|
if (player.admin) then
|
|
player_list = {}
|
|
for _,player in pairs(game.connected_players) do
|
|
table.insert(player_list, player.name)
|
|
end
|
|
frame.add{name = "ban_players_dropdown",
|
|
type = "drop-down",
|
|
items = player_list}
|
|
frame.add{name="ban_player", type="button", caption="Ban Player"}
|
|
end
|
|
end
|
|
end
|
|
|
|
function GameOptionsGuiClick(event)
|
|
if not (event and event.element and event.element.valid) then return end
|
|
local player = game.players[event.element.player_index]
|
|
local name = event.element.name
|
|
|
|
if (name == "game_options") then
|
|
ExpandGameOptionsGui(player)
|
|
end
|
|
|
|
if (name == "ban_player") then
|
|
banIndex = event.element.parent.ban_players_dropdown.selected_index
|
|
|
|
if (banIndex ~= 0) then
|
|
banPlayer = event.element.parent.ban_players_dropdown.get_item(banIndex)
|
|
if (game.players[banPlayer]) then
|
|
game.ban_player(banPlayer, "Banned for griefing - Banned from admin panel.")
|
|
DebugPrint("Banning " .. banPlayer)
|
|
end
|
|
end
|
|
end
|
|
end
|