summaryrefslogtreecommitdiffstats
path: root/src/crsm.hpp
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2015-09-24 22:10:19 +0200
committerMarkus Mittendrein <git@maxmitti.tk>2015-09-24 22:10:19 +0200
commit50d9907af2522a9a6e02a171b9a26938a743971c (patch)
treeb1f903bae3e13c2db94ba288666d5621e6389e19 /src/crsm.hpp
parenta1ea09de117bff522e08c4e5e3aa386ba192d276 (diff)
downloadmanager-50d9907af2522a9a6e02a171b9a26938a743971c.tar.gz
manager-50d9907af2522a9a6e02a171b9a26938a743971c.zip
Save session to CrServerManager.session on detach and load it on
reattaching
Diffstat (limited to 'src/crsm.hpp')
-rw-r--r--src/crsm.hpp32
1 files changed, 25 insertions, 7 deletions
diff --git a/src/crsm.hpp b/src/crsm.hpp
index 43a15ae..b2f0671 100644
--- a/src/crsm.hpp
+++ b/src/crsm.hpp
@@ -23,6 +23,7 @@
#include "CRSMConfig.hpp"
#define CONFIG_FILE_NAME "CrServerManager.conf"
+#define SESSION_FILE_NAME "CrServerManager.session"
#define CUR_SCEN_FILE_NAME "curscen.txt"
#define LAST_SCEN_FILE_NAME "lastscen.txt"
#define SCOREBOARD_FILE_NAME Config.Auto.Volatile.Clonk.Directory + "scoreboard.html"
@@ -106,29 +107,46 @@ private:
CRSMConfig Config;
- struct CRSMSession {
- bool League = false;
+ struct CRSMSession : public CRSMConfigBase {
+ Boolean League = false;
enum {None = -1, Lobby = 0, Loading = 1, Running = 2} State = None;
- bool UserWish = false;
- int CountDown = -1;
- QString ScenarioName = "";
+ Boolean UserWish = false;
+ Integer CountDown = -1;
+ String ScenarioName = "";
struct {
ClientInfo Admin;
- QMap<QString, ClientInfo> Clients;
+ Map(String, ClientInfo) Clients;
QMap<ClientInfo, QDateTime> LeaveAdmins;
} Clonk;
struct {
ClientInfo Admin;
- bool UseIngameChat = false;
+ Boolean UseIngameChat = false;
} IRC;
void clear()
{
+ auto configVals = configValues;
*this = CRSMSession();
+ configValues = configVals;
}
+
+ CRSMSession() : CRSMConfigBase::CRSMConfigBase({
+ ConfigValue(League),
+ ConfigValue((Integer&)State),
+ ConfigValue(UserWish),
+ ConfigValue(CountDown),
+ ConfigValue(ScenarioName),
+
+ ConfigValue(Clonk.Admin),
+ ConfigValue(Clonk.Clients),
+ ConfigValue(Clonk.Clients),
+
+ ConfigValue(IRC.Admin),
+ ConfigValue(IRC.UseIngameChat),
+ }) {}
} Session;
QList<ScenarioSettings> userlist;