#pragma once #include "ConfigBase.hpp" class CRSMConfig : public ConfigBase { public: struct { Port ManagementPort = 9372; String ListFolder = "ScenarioLists"; String CommandSign = "!"; String StatsFile = "CrServerManager.stats"; String SessionFile = "CrServerManager.session"; } CRSM; struct { struct { String Arguments = "/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() : ConfigBase({ ConfigVal(CRSM.ManagementPort), ConfigVal(CRSM.ListFolder), ConfigVal(CRSM.CommandSign), ConfigVal(CRSM.StatsFile), ConfigVal(CRSM.SessionFile), ConfigVal(Clonk.Server.Arguments), ConfigVal(Clonk.Server.Config), ConfigVal(Clonk.Server.Executable), ConfigVal(Clonk.Server.EmptyTimer), ConfigVal(Clonk.Server.IgnoreFolders), ConfigVal(Clonk.Chat.AntiFlood.Count), ConfigVal(Clonk.Chat.AntiFlood.Time), ConfigVal(Clonk.Chat.Moderators), ConfigVal(Clonk.Chat.RegainAdminTime), ConfigVal(Hosting.Auto), ConfigVal(Hosting.RandomizeAuto), ConfigVal(Hosting.MaxWishesPerScen), ConfigVal(Hosting.MaxWishesPerUser), ConfigVal(Hosting.UserListLength), ConfigVal(Hosting.Alias), ConfigVal(IRC.Use), ConfigVal(IRC.Server), ConfigVal(IRC.Nick), ConfigVal(IRC.Password), ConfigVal(IRC.RealName), ConfigVal(IRC.Channel), ConfigVal(IRC.UseIngameChat), ConfigVal(IRC.IngameChannel), ConfigVal(IRC.QuitMessage), ConfigVal(IRC.ReconnectDelay), ConfigVal(IRC.ScenListMessage), ConfigVal(IRC.Moderators), ConfigVal(Auto.ProcessManager.ReattachId), ConfigVal(Auto.Hosting.AliasWishes), ConfigVal(Readline.ServerUses), ConfigVal(Readline.PromptEnabled), ConfigVal(Readline.RereadLimit) }) {} void clear() { auto configVals = configValues; *this = CRSMConfig(); configValues = configVals; } };