#pragma once #include "ConfigBase.hpp" class CRSMConfig : public CRSMConfigBase { public: struct { Port ManagementPort = 9372; String ListFolder = "ScenarioLists"; String CommandSign = "!"; } CRSM; struct { struct { String Arguments = "/config:config /fullscreen /lobby:300 /nosignup Objects.c4d"; String Config = "config"; String Executable = "clonk-server"; List(String) IgnoreFolders = {"Network", "Records.c4f", "Savegames.c4f"}; Integer EmptyTimer = 60; } Server; struct { struct { Integer Count = 5; Integer Time = 3; } AntiFlood; Map(Integer, String) Moderators; Integer RegainAdminTime = 120; } Chat; } Clonk; struct { Boolean Auto = true; Boolean RandomizeAuto = true; Integer MaxWishesPerScen = 2; Integer MaxWishesPerUser = 2; Integer UserListLength = 5; Map(String, String) Alias; } Hosting; struct { Boolean Use = false; String Server = "irc.euirc.net"; String Nick = "CRSM"; String Password = ""; String RealName = "Dedicated Clonk server powered by CRSM"; String Channel = "#crsm"; Boolean UseIngameChat = false; String IngameChannel = "#crsm-ingame"; String QuitMessage = "Dedicated Clonk server powered by CRSM"; Integer ReconnectDelay = 10; String ScenListMessage = "A list of available scenarios is available ingame or in a lobby."; Map(String, String) Moderators; } IRC; struct { struct { String ReattachId = ""; } ProcessManager; struct { struct { String Directory; String ServerNick; String ServerPCName; } Clonk; } Volatile; struct { Map(String, String) AliasWishes; } Hosting; } Auto; struct { Boolean ServerUses = false; Boolean PromptEnabled = false; Integer RereadLimit = 50; } Readline; explicit CRSMConfig() : CRSMConfigBase({ ConfigValue(CRSM.ManagementPort), ConfigValue(CRSM.ListFolder), ConfigValue(CRSM.CommandSign), ConfigValue(Clonk.Server.Arguments), ConfigValue(Clonk.Server.Config), ConfigValue(Clonk.Server.Executable), ConfigValue(Clonk.Server.EmptyTimer), ConfigValue(Clonk.Server.IgnoreFolders), ConfigValue(Clonk.Chat.AntiFlood.Count), ConfigValue(Clonk.Chat.AntiFlood.Time), ConfigValue(Clonk.Chat.Moderators), ConfigValue(Clonk.Chat.RegainAdminTime), ConfigValue(Hosting.Auto), ConfigValue(Hosting.RandomizeAuto), ConfigValue(Hosting.MaxWishesPerScen), ConfigValue(Hosting.MaxWishesPerUser), ConfigValue(Hosting.UserListLength), ConfigValue(Hosting.Alias), ConfigValue(IRC.Use), ConfigValue(IRC.Server), ConfigValue(IRC.Nick), ConfigValue(IRC.Password), ConfigValue(IRC.RealName), ConfigValue(IRC.Channel), ConfigValue(IRC.UseIngameChat), ConfigValue(IRC.IngameChannel), ConfigValue(IRC.QuitMessage), ConfigValue(IRC.ReconnectDelay), ConfigValue(IRC.ScenListMessage), ConfigValue(IRC.Moderators), ConfigValue(Auto.ProcessManager.ReattachId), ConfigValue(Auto.Hosting.AliasWishes), ConfigValue(Readline.ServerUses), ConfigValue(Readline.PromptEnabled), ConfigValue(Readline.RereadLimit) }) {} void clear() { auto configVals = configValues; *this = CRSMConfig(); configValues = configVals; } };