//TODO implement server error log //TODO add loop to write all client things /// <summary> /// Writes all game objects to the database /// </summary> /// <param name="gameID">ID of game (used for database bucket)</param> public static void DatabaseWriteAll(string gameID) { // ========= test DatabaseWrite.DatabaseWrite_Test(gameID); // ========= write CLOCK DatabaseWrite.DatabaseWrite_Clock(gameID, Globals_Game.clock); // ========= write GLOBALS_SERVER/GAME DICTIONARIES DatabaseWrite.DatabaseWrite_Dictionary(gameID, "combatValues", Globals_Server.combatValues); DatabaseWrite.DatabaseWrite_Dictionary(gameID, "recruitRatios", Globals_Server.recruitRatios); DatabaseWrite.DatabaseWrite_Dictionary(gameID, "battleProbabilities", Globals_Server.battleProbabilities); DatabaseWrite.DatabaseWrite_Dictionary(gameID, "gameTypes", Globals_Server.gameTypes); DatabaseWrite.DatabaseWrite_Dictionary(gameID, "ownershipChallenges", Globals_Game.ownershipChallenges); Console.WriteLine("Finished writing dictionaries"); // convert jEntryPriorities prior to writing Dictionary <string, byte> jEntryPriorities_serialised = DatabaseWrite.JentryPriorities_serialise(Globals_Game.jEntryPriorities); DatabaseWrite.DatabaseWrite_Dictionary(gameID, "jEntryPriorities", jEntryPriorities_serialised); // ========= write JOURNALS DatabaseWrite.DatabaseWrite_Journal(gameID, "serverScheduledEvents", Globals_Game.scheduledEvents); DatabaseWrite.DatabaseWrite_Journal(gameID, "serverPastEvents", Globals_Game.pastEvents); Console.WriteLine("Finished writing journals"); // ========= write GLOBALS_GAME/CLIENT/SERVER CHARACTER VARIABLES // Globals_Game.sysAdmin if (Globals_Game.sysAdmin != null) { DatabaseWrite.DatabaseWrite_String(gameID, "sysAdmin", Globals_Game.sysAdmin.charID); } // Globals_Game.kingOne if (Globals_Game.kingOne != null) { DatabaseWrite.DatabaseWrite_String(gameID, "kingOne", Globals_Game.kingOne.charID); } // Globals_Game.kingTwo if (Globals_Game.kingTwo != null) { DatabaseWrite.DatabaseWrite_String(gameID, "kingTwo", Globals_Game.kingTwo.charID); } // Globals_Game.princeOne if (Globals_Game.princeOne != null) { DatabaseWrite.DatabaseWrite_String(gameID, "princeOne", Globals_Game.princeOne.charID); } // Globals_Game.princeTwo if (Globals_Game.princeTwo != null) { DatabaseWrite.DatabaseWrite_String(gameID, "princeTwo", Globals_Game.princeTwo.charID); } // Globals_Game.heraldOne if (Globals_Game.heraldOne != null) { DatabaseWrite.DatabaseWrite_String(gameID, "heraldOne", Globals_Game.heraldOne.charID); } // Globals_Game.heraldTwo if (Globals_Game.heraldTwo != null) { DatabaseWrite.DatabaseWrite_String(gameID, "heraldTwo", Globals_Game.heraldTwo.charID); } Console.WriteLine("Finished writing important people"); // ========= write GLOBALS_GAME/CLIENT/SERVER newID VARIABLES // newCharID DatabaseWrite.DatabaseWrite_newID(gameID, "newCharID", Globals_Game.newCharID); // newArmyID DatabaseWrite.DatabaseWrite_newID(gameID, "newArmyID", Globals_Game.newArmyID); // newDetachmentID DatabaseWrite.DatabaseWrite_newID(gameID, "newDetachmentID", Globals_Game.newDetachmentID); // newAilmentID DatabaseWrite.DatabaseWrite_newID(gameID, "newAilmentID", Globals_Game.newAilmentID); // newSiegeID DatabaseWrite.DatabaseWrite_newID(gameID, "newSiegeID", Globals_Game.newSiegeID); // newJournalEntryID DatabaseWrite.DatabaseWrite_newID(gameID, "newJournalEntryID", Globals_Game.newJournalEntryID); // gameType DatabaseWrite.DatabaseWrite_newID(gameID, "gameType", Globals_Game.gameType); // duration DatabaseWrite.DatabaseWrite_newID(gameID, "duration", Globals_Game.duration); // startYear DatabaseWrite.DatabaseWrite_newID(gameID, "startYear", Globals_Game.startYear); // newGameID DatabaseWrite.DatabaseWrite_newID(gameID, "newGameID", Globals_Server.newGameID); // newOwnChallengeID DatabaseWrite.DatabaseWrite_newID(gameID, "newOwnChallengeID", Globals_Game.newOwnChallengeID); Console.WriteLine("Finished writing new IDs"); // ========= write GLOBALS_GAME/CLIENT/SERVER BOOL VARIABLES // Globals_Game.loadFromDatabase DatabaseWrite.DatabaseWrite_Bool(gameID, "loadFromDatabase", Globals_Game.loadFromDatabase); // Globals_Game.loadFromCSV DatabaseWrite.DatabaseWrite_Bool(gameID, "loadFromCSV", Globals_Game.loadFromCSV); // Globals_Game.writeToDatabase DatabaseWrite.DatabaseWrite_Bool(gameID, "writeToDatabase", Globals_Game.writeToDatabase); // Globals_Game.statureCapInForce DatabaseWrite.DatabaseWrite_Bool(gameID, "statureCapInForce", Globals_Game.statureCapInForce); Console.WriteLine("Finished writing bools"); // ========= write TRAITS // clear existing key list if (Globals_Game.traitKeys.Count > 0) { Globals_Game.traitKeys.Clear(); } // write each object in traitMasterList, whilst also repopulating key list foreach (KeyValuePair <string, Trait> pair in Globals_Game.traitMasterList) { bool success = DatabaseWrite.DatabaseWrite_Trait(gameID, pair.Value); if (success) { Globals_Game.traitKeys.Add(pair.Key); } } // write key list to database DatabaseWrite.DatabaseWrite_KeyList(gameID, "traitKeys", Globals_Game.traitKeys); // ========= write BASELANGUAGES // clear existing key list if (Globals_Game.baseLangKeys.Count > 0) { Globals_Game.baseLangKeys.Clear(); } Console.WriteLine("Finished writing traits"); // write each object in baseLanguageMasterList, whilst also repopulating key list foreach (KeyValuePair <string, BaseLanguage> pair in Globals_Game.baseLanguageMasterList) { bool success = DatabaseWrite.DatabaseWrite_BaseLanguage(gameID, pair.Value); if (success) { Globals_Game.baseLangKeys.Add(pair.Key); } } // write key list to database DatabaseWrite.DatabaseWrite_KeyList(gameID, "baseLangKeys", Globals_Game.baseLangKeys); // ========= write LANGUAGES // clear existing key list if (Globals_Game.langKeys.Count > 0) { Globals_Game.langKeys.Clear(); } // write each object in languageMasterList, whilst also repopulating key list foreach (KeyValuePair <string, Language> pair in Globals_Game.languageMasterList) { bool success = DatabaseWrite.DatabaseWrite_Language(gameID, l: pair.Value); if (success) { Globals_Game.langKeys.Add(pair.Key); } } // write key list to database DatabaseWrite.DatabaseWrite_KeyList(gameID, "langKeys", Globals_Game.langKeys); // ========= write NATIONALITY OBJECTS // clear existing key list if (Globals_Game.nationalityKeys.Count > 0) { Globals_Game.nationalityKeys.Clear(); } Console.WriteLine("Finished writing languages"); // write each object in nationalityMasterList, whilst also repopulating key list foreach (KeyValuePair <string, Nationality> pair in Globals_Game.nationalityMasterList) { bool success = DatabaseWrite.DatabaseWrite_Nationality(gameID, pair.Value); if (success) { Globals_Game.nationalityKeys.Add(pair.Key); } } // write key list to database DatabaseWrite.DatabaseWrite_KeyList(gameID, "nationalityKeys", Globals_Game.nationalityKeys); Console.WriteLine("Finished writing nationalities"); // ========= write RANKS // clear existing key list if (Globals_Game.rankKeys.Count > 0) { Globals_Game.rankKeys.Clear(); } // write each object in rankMasterList, whilst also repopulating key list foreach (KeyValuePair <byte, Rank> pair in Globals_Game.rankMasterList) { bool success = DatabaseWrite.DatabaseWrite_Rank(gameID, pair.Value); if (success) { Globals_Game.rankKeys.Add(pair.Key); } } // write key list to database DatabaseWrite.DatabaseWrite_KeyList(gameID, "rankKeys", Globals_Game.rankKeys); Console.WriteLine("Finished writing ranks"); // ========= write POSITIONS // clear existing key list if (Globals_Game.positionKeys.Count > 0) { Globals_Game.positionKeys.Clear(); } // write each object in positionMasterList, whilst also repopulating key list foreach (KeyValuePair <byte, Position> pair in Globals_Game.positionMasterList) { bool success = DatabaseWrite.DatabaseWrite_Position(gameID, p: pair.Value); if (success) { Globals_Game.positionKeys.Add(pair.Key); } } // write key list to database DatabaseWrite.DatabaseWrite_KeyList(gameID, "positionKeys", Globals_Game.positionKeys); Console.WriteLine("Finished writing positions"); // ========= write NPCs // clear existing key list if (Globals_Game.npcKeys.Count > 0) { Globals_Game.npcKeys.Clear(); } // write each object in npcMasterList, whilst also repopulating key list foreach (KeyValuePair <string, NonPlayerCharacter> pair in Globals_Game.npcMasterList) { bool success = DatabaseWrite.DatabaseWrite_NPC(gameID, npc: pair.Value); if (success) { Globals_Game.npcKeys.Add(pair.Key); } } // write key list to database DatabaseWrite.DatabaseWrite_KeyList(gameID, "npcKeys", Globals_Game.npcKeys); Console.WriteLine("Finished writing npcs"); // ========= write PCs // clear existing key list if (Globals_Game.pcKeys.Count > 0) { Globals_Game.pcKeys.Clear(); } // write each object in pcMasterList, whilst also repopulating key list foreach (KeyValuePair <string, PlayerCharacter> pair in Globals_Game.pcMasterList) { bool success = DatabaseWrite.DatabaseWrite_PC(gameID, pc: pair.Value); if (success) { Globals_Game.pcKeys.Add(pair.Key); } } // write key list to database DatabaseWrite.DatabaseWrite_KeyList(gameID, "pcKeys", Globals_Game.pcKeys); Console.WriteLine("Finished writing PCs"); // ========= write KINGDOMS // clear existing key list if (Globals_Game.kingKeys.Count > 0) { Globals_Game.kingKeys.Clear(); } // write each object in kingdomMasterList, whilst also repopulating key list foreach (KeyValuePair <string, Kingdom> pair in Globals_Game.kingdomMasterList) { bool success = DatabaseWrite.DatabaseWrite_Kingdom(gameID, k: pair.Value); if (success) { Globals_Game.kingKeys.Add(pair.Key); } } // write key list to database DatabaseWrite.DatabaseWrite_KeyList(gameID, "kingKeys", Globals_Game.kingKeys); Console.WriteLine("Finished writing kingdoms"); // ========= write PROVINCES // clear existing key list if (Globals_Game.provKeys.Count > 0) { Globals_Game.provKeys.Clear(); } // write each object in provinceMasterList, whilst also repopulating key list foreach (KeyValuePair <string, Province> pair in Globals_Game.provinceMasterList) { bool success = DatabaseWrite.DatabaseWrite_Province(gameID, p: pair.Value); if (success) { Globals_Game.provKeys.Add(pair.Key); } } // write key list to database DatabaseWrite.DatabaseWrite_KeyList(gameID, "provKeys", Globals_Game.provKeys); Console.WriteLine("Finished writing provinces"); // ========= write TERRAINS // clear existing key list if (Globals_Game.terrKeys.Count > 0) { Globals_Game.terrKeys.Clear(); } // write each object in terrainMasterList, whilst also repopulating key list foreach (KeyValuePair <string, Terrain> pair in Globals_Game.terrainMasterList) { bool success = DatabaseWrite.DatabaseWrite_Terrain(gameID, pair.Value); if (success) { Globals_Game.terrKeys.Add(pair.Key); } } // write key list to database DatabaseWrite.DatabaseWrite_KeyList(gameID, "terrKeys", Globals_Game.terrKeys); Console.WriteLine("Finished writing terrains"); // ========= write VICTORYDATA OBJECTS // clear existing key list if (Globals_Game.victoryDataKeys.Count > 0) { Globals_Game.victoryDataKeys.Clear(); } // write each object in victoryData, whilst also repopulating key list foreach (KeyValuePair <string, VictoryData> pair in Globals_Game.victoryData) { bool success = DatabaseWrite.DatabaseWrite_VictoryData(gameID, pair.Value); if (success) { Globals_Game.victoryDataKeys.Add(pair.Key); } } // write key list to database DatabaseWrite.DatabaseWrite_KeyList(gameID, "victoryDataKeys", Globals_Game.victoryDataKeys); Console.WriteLine("Finished writing victory data"); // ========= write FIEFS // clear existing key list if (Globals_Game.fiefKeys.Count > 0) { Globals_Game.fiefKeys.Clear(); } // write each object in fiefMasterList, whilst also repopulating key list foreach (KeyValuePair <string, Fief> pair in Globals_Game.fiefMasterList) { bool success = DatabaseWrite.DatabaseWrite_Fief(gameID, f: pair.Value); if (success) { Globals_Game.fiefKeys.Add(pair.Key); } } // write key list to database DatabaseWrite.DatabaseWrite_KeyList(gameID, "fiefKeys", Globals_Game.fiefKeys); Console.WriteLine("Finished writing fiefs"); // ========= write ARMIES // clear existing key list if (Globals_Game.armyKeys.Count > 0) { Globals_Game.armyKeys.Clear(); } // write each object in armyMasterList, whilst also repopulating key list foreach (KeyValuePair <string, Army> pair in Globals_Game.armyMasterList) { bool success = DatabaseWrite.DatabaseWrite_Army(gameID, pair.Value); if (success) { Globals_Game.armyKeys.Add(pair.Key); } } // write key list to database DatabaseWrite.DatabaseWrite_KeyList(gameID, "armyKeys", Globals_Game.armyKeys); Console.WriteLine("Finished writing armies"); // ========= write SIEGES // clear existing key list if (Globals_Game.siegeKeys.Count > 0) { Globals_Game.siegeKeys.Clear(); } // write each object in siegeMasterList, whilst also repopulating key list foreach (KeyValuePair <string, Siege> pair in Globals_Game.siegeMasterList) { bool success = DatabaseWrite.DatabaseWrite_Siege(gameID, pair.Value); if (success) { Globals_Game.siegeKeys.Add(pair.Key); } } // write key list to database DatabaseWrite.DatabaseWrite_KeyList(gameID, "siegeKeys", Globals_Game.siegeKeys); Console.WriteLine("Finished writing sieges"); // write clients foreach (KeyValuePair <string, Client> pair in Globals_Server.Clients) { bool success = DatabaseWrite_Client(gameID, pair.Value); if (success) { Globals_Server.client_keys.Add(pair.Key); } } DatabaseWrite_KeyList(gameID, "clientKeys", Globals_Server.client_keys); Console.WriteLine("Finished writing clients"); // ========= write MAP (edges collection) DatabaseWrite.DatabaseWrite_MapEdges(gameID, map: Globals_Game.gameMap); foreach (KeyValuePair <string, Client> pair in Globals_Server.Clients) { DatabaseWrite.DatabaseWrite_Journal(gameID, pair.Value.username + "_journal", pair.Value.myPastEvents); // Globals_Client.myPlayerCharacter if (pair.Value.myPlayerCharacter != null) { DatabaseWrite.DatabaseWrite_String(gameID, pair.Value.username + "_playerChar", pair.Value.myPlayerCharacter.charID); } // Globals_Client.showMessages DatabaseWrite.DatabaseWrite_Bool(gameID, pair.Value.username + "_showMessages", pair.Value.showMessages); // Globals_Client.showDebugMessages DatabaseWrite.DatabaseWrite_Bool(gameID, pair.Value.username + "_showDebugMessages", pair.Value.showDebugMessages); } Console.WriteLine("Finished writing map"); }