private void CreateProjectForm_Load(object sender, EventArgs e) { TribeLogConfig = new TribeLogConfigInfo(); TravelDataConfig = new BackupConfigInfo(); SharedLogConfig = new SharedLogConfigInfo(); //Load edit data if (editedProject != null) { if (editedProject.TribeLogConfig != null) { TribeLogConfig.CopyFrom(editedProject.TribeLogConfig); } if (editedProject.TravelDataConfig != null) { TravelDataConfig.CopyFrom(editedProject.TravelDataConfig); } if (editedProject.SharedLogConfig != null) { SharedLogConfig.CopyFrom(editedProject.SharedLogConfig); } worldFriendlyNameTxtBox.Text = editedProject.WorldFriendlyName; worldAtlasPasswordTxtBox.Text = editedProject.WorldAtlasPassword; worldAtlasIdTxtBox.Text = editedProject.WorldAtlasId; mapImageURLTxtBox.Text = editedProject.MapImageURL; metaWorldURLTxtBox.Text = editedProject.MetaWorldURL; authListURLTxtBox.Text = editedProject.AuthListURL; baseServerArgsTxtBox.Text = editedProject.BaseServerArgs; if (worldAtlasIdTxtBox.Text.Length == 0) { Random rand = new Random(); worldAtlasIdTxtBox.Text = rand.Next().ToString(); } gridSizeTxtBox.Text = "" + editedProject.cellSize; columnUTCOffsetTxtBox.Text = "" + editedProject.columnUTCOffset.ToString("0.0#######"); sizeXTxtBox.Text = "" + editedProject.numOfCellsX; sizeYTxtBox.Text = "" + editedProject.numOfCellsY; modIdTxtBox.Text = editedProject.ModIDs; S3localURLTxtBx.Text = editedProject.LocalS3URL; S3localAccesKeyIdTxtBx.Text = editedProject.LocalS3AccessKeyId; S3localSecretKeyTxtBx.Text = editedProject.LocalS3SecretKey; S3localBucketNameTxtBx.Text = editedProject.LocalS3BucketName; S3localRegionTxtBx.Text = editedProject.LocalS3Region; globalGameplaySetupTxtBox.Text = editedProject.globalGameplaySetup; useUTCTimeCheckbox.Checked = editedProject.bUseUTCTime; globalTransitionZTxtBox.Text = editedProject.globalTransitionMinZ.ToString(); additionalCmdLineParamsTxtBox.Text = editedProject.AdditionalCmdLineParams; BindingList <ConfigKeyValueEntry> pairs = new BindingList <ConfigKeyValueEntry>(); pairs.AddingNew += (s, a) => { a.NewObject = new ConfigKeyValueEntry("", ""); }; if (editedProject.OverrideShooterGameModeDefaultGameIni != null) { foreach (KeyValuePair <string, string> DicPair in editedProject.OverrideShooterGameModeDefaultGameIni) { pairs.Add(new ConfigKeyValueEntry(DicPair.Key, DicPair.Value)); } } overrideShooterGameModeDefaultGameIniDataGridView.DataSource = pairs; DateTime Day0; if (DateTime.TryParse(editedProject.Day0, out Day0)) { day0DateTimePicker.Value = Day0; } else { day0DateTimePicker.Value = DateTime.UtcNow; } if (editedProject.DatabaseConnections != null) { if (editedProject.DatabaseConnections.Count > 0) { DBEntry1_NameTxtBx.Text = editedProject.DatabaseConnections[0].Name; DBEntry1_URLTxtBx.Text = editedProject.DatabaseConnections[0].URL; DBEntry1_PortTxtBx.Text = editedProject.DatabaseConnections[0].Port.ToString(); DBEntry1_PasswordTxtBx.Text = editedProject.DatabaseConnections[0].Password; } if (editedProject.DatabaseConnections.Count > 1) { DBEntry2_NameTxtBx.Text = editedProject.DatabaseConnections[1].Name; DBEntry2_URLTxtBx.Text = editedProject.DatabaseConnections[1].URL; DBEntry2_PortTxtBx.Text = editedProject.DatabaseConnections[1].Port.ToString(); DBEntry2_PasswordTxtBx.Text = editedProject.DatabaseConnections[1].Password; } if (editedProject.DatabaseConnections.Count > 2) { DBEntry3_NameTxtBx.Text = editedProject.DatabaseConnections[2].Name; DBEntry3_URLTxtBx.Text = editedProject.DatabaseConnections[2].URL; DBEntry3_PortTxtBx.Text = editedProject.DatabaseConnections[2].Port.ToString(); DBEntry3_PasswordTxtBx.Text = editedProject.DatabaseConnections[2].Password; } if (editedProject.DatabaseConnections.Count > 3) { DBEntry4_NameTxtBx.Text = editedProject.DatabaseConnections[3].Name; DBEntry4_URLTxtBx.Text = editedProject.DatabaseConnections[3].URL; DBEntry4_PortTxtBx.Text = editedProject.DatabaseConnections[3].Port.ToString(); DBEntry4_PasswordTxtBx.Text = editedProject.DatabaseConnections[3].Password; } if (editedProject.DatabaseConnections.Count > 4) { DBEntry5_NameTxtBx.Text = editedProject.DatabaseConnections[4].Name; DBEntry5_URLTxtBx.Text = editedProject.DatabaseConnections[4].URL; DBEntry5_PortTxtBx.Text = editedProject.DatabaseConnections[4].Port.ToString(); DBEntry5_PasswordTxtBx.Text = editedProject.DatabaseConnections[4].Password; } } this.Text = "Edit project"; createBtn.Text = "Edit"; } else { Random rand = new Random(); worldAtlasIdTxtBox.Text = rand.Next().ToString(); } }
public void Deserialize(string json, MainForm mainForm) { try { AtlasGridData deserializedProject = JsonConvert.DeserializeObject <AtlasGridData>(json, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Populate, NullValueHandling = NullValueHandling.Ignore }); if (deserializedProject.TribeLogConfig == null) { deserializedProject.TribeLogConfig = new TribeLogConfigInfo(); } if (deserializedProject.SharedLogConfig == null) { deserializedProject.SharedLogConfig = new SharedLogConfigInfo(); } if (deserializedProject.TravelDataConfig == null) { deserializedProject.TravelDataConfig = new BackupConfigInfo(); } this.cellSize = deserializedProject.gridSize; idGenerator = deserializedProject.idGenerator; regionsIdGenerator = deserializedProject.regionsIdGenerator; int maxX = 0, maxY = 0; List <ServerData> targetServerList = /*deserializedProject.originalServers != null ? deserializedProject.originalServers : */ deserializedProject.servers; foreach (ServerData deserializedServer in targetServerList) { if (deserializedServer.gridX > maxX) { maxX = deserializedServer.gridX; } if (deserializedServer.gridY > maxY) { maxY = deserializedServer.gridY; } Server s = new Server(deserializedServer.gridX, deserializedServer.gridY); s.MachineIdTag = deserializedServer.MachineIdTag; s.ip = deserializedServer.ip; s.port = deserializedServer.port; s.gamePort = deserializedServer.gamePort; s.seamlessDataPort = deserializedServer.seamlessDataPort; s.isHomeServer = deserializedServer.isHomeServer; s.AdditionalCmdLineParams = deserializedServer.AdditionalCmdLineParams; s.OverrideShooterGameModeDefaultGameIni = deserializedServer.OverrideShooterGameModeDefaultGameIni; s.name = deserializedServer.name; s.floorZDist = deserializedServer.floorZDist; s.transitionMinZ = deserializedServer.transitionMinZ; s.utcOffset = deserializedServer.utcOffset; s.GlobalBiomeSeamlessServerGridPreOffsetValues = deserializedServer.GlobalBiomeSeamlessServerGridPreOffsetValues; s.GlobalBiomeSeamlessServerGridPreOffsetValuesOceanWater = deserializedServer.GlobalBiomeSeamlessServerGridPreOffsetValuesOceanWater; s.OceanDinoDepthEntriesOverride = deserializedServer.OceanDinoDepthEntriesOverride; s.OceanEpicSpawnEntriesOverrideValues = deserializedServer.OceanEpicSpawnEntriesOverrideValues; s.oceanEpicSpawnEntriesOverrideTemplateName = deserializedServer.oceanEpicSpawnEntriesOverrideTemplateName; s.NPCShipSpawnEntriesOverrideTemplateName = deserializedServer.NPCShipSpawnEntriesOverrideTemplateName; s.regionOverrides = deserializedServer.regionOverrides; s.waterColorR = deserializedServer.waterColorR; s.waterColorG = deserializedServer.waterColorG; s.waterColorB = deserializedServer.waterColorB; s.skyStyleIndex = deserializedServer.skyStyleIndex; s.serverIslandPointsMultiplier = deserializedServer.serverIslandPointsMultiplier; s.ServerCustomDatas1 = deserializedServer.ServerCustomDatas1; s.ServerCustomDatas2 = deserializedServer.ServerCustomDatas2; s.ClientCustomDatas1 = deserializedServer.ClientCustomDatas1; s.ClientCustomDatas2 = deserializedServer.ClientCustomDatas2; s.oceanFloatsamCratesOverride = deserializedServer.oceanFloatsamCratesOverride; s.treasureMapLootTablesOverride = deserializedServer.treasureMapLootTablesOverride; s.lastModifiedUTC = deserializedServer.lastModified; s.lastImageOverrideUTC = deserializedServer.lastImageOverride; s.serverTemplateName = deserializedServer.serverTemplateName; if (s.serverTemplateName == null) { s.serverTemplateName = ""; } if (s.floorZDist <= 0) { s.floorZDist = 0; } s.islandLocked = deserializedServer.islandLocked; s.discoLocked = deserializedServer.discoLocked; s.pathsLocked = deserializedServer.pathsLocked; s.extraSublevels = deserializedServer.extraSublevels; servers.Add(s); foreach (IslandInstanceData deserializedIslandInstance in deserializedServer.islandInstances) { if (!mainForm.islands.ContainsKey(deserializedIslandInstance.name)) { continue; } //PointF worldPoint = s.RelativeToWorldPoint(cellSize, new PointF(deserializedIsland.additionalTranslationX, deserializedIsland.additionalTranslationY)); //islandInstances.Add(new IslandInstance(deserializedIsland.name, worldPoint.X, worldPoint.Y, deserializedIsland.additionalRotationYaw)); bool bRepeatedId = false; foreach (IslandInstanceData prevIslands in islandInstances) { if (prevIslands.id == deserializedIslandInstance.id) { bRepeatedId = true; break; } } if (deserializedIslandInstance.id == 0 || bRepeatedId) { deserializedIslandInstance.id = GenerateNewId(); } deserializedIslandInstance.SyncOverridesWithTemplates(mainForm); deserializedIslandInstance.maxTreasureQuality = deserializedIslandInstance.minTreasureQuality = -1; deserializedIslandInstance.useNpcVolumesForTreasures = false; deserializedIslandInstance.islandTreasureBottleSupplyCrateOverrides = ""; deserializedIslandInstance.islandPoints = 1; //deserializedIslandInstance.spawnPointRegionOverride = -1; islandInstances.Add(deserializedIslandInstance); } foreach (DiscoveryZoneData deserializedDiscoZone in deserializedServer.discoZones) { bool bRepeatedId = false; foreach (DiscoveryZoneData prevDiscoZones in discoZones) { if (prevDiscoZones.id == deserializedDiscoZone.id) { bRepeatedId = true; break; } } if (deserializedDiscoZone.id == 0 || bRepeatedId) { deserializedDiscoZone.id = GenerateUniqueDiscoZoneId(); } discoZones.Add(deserializedDiscoZone); } foreach (SpawnRegionData spawnRegion in deserializedServer.spawnRegions) { spawnRegion.X = deserializedServer.gridX; spawnRegion.Y = deserializedServer.gridY; spawnRegions.Add(spawnRegion); } } numOfCellsX = maxX + 1; numOfCellsY = maxY + 1; WorldFriendlyName = deserializedProject.WorldFriendlyName; WorldAtlasId = deserializedProject.WorldAtlasId; AuthListURL = deserializedProject.AuthListURL; MetaWorldURL = deserializedProject.MetaWorldURL; coordsScaling = deserializedProject.coordsScaling; showServerInfo = deserializedProject.showServerInfo; showDiscoZoneInfo = deserializedProject.showDiscoZoneInfo; showIslandNames = deserializedProject.showIslandNames; showShipPathsInfo = deserializedProject.showShipPathsInfo; showLines = deserializedProject.showLines; alphaBackground = deserializedProject.alphaBackground; showBackground = deserializedProject.showBackground; showForeground = deserializedProject.showForeground; backgroundImgPath = deserializedProject.backgroundImgPath; foregroundImgPath = deserializedProject.foregroundImgPath; discoZonesImagePath = deserializedProject.discoZonesImagePath; ModIDs = deserializedProject.ModIDs; MapImageURL = deserializedProject.MapImageURL; BaseServerArgs = deserializedProject.BaseServerArgs; LocalS3URL = deserializedProject.LocalS3URL; LocalS3AccessKeyId = deserializedProject.LocalS3AccessKeyId; LocalS3SecretKey = deserializedProject.LocalS3SecretKey; LocalS3BucketName = deserializedProject.LocalS3BucketName; LocalS3Region = deserializedProject.LocalS3Region; globalGameplaySetup = deserializedProject.globalGameplaySetup; TribeLogConfig = deserializedProject.TribeLogConfig; TravelDataConfig = deserializedProject.TravelDataConfig; SharedLogConfig = deserializedProject.SharedLogConfig; DatabaseConnections = deserializedProject.DatabaseConnections; bUseUTCTime = deserializedProject.bUseUTCTime; columnUTCOffset = deserializedProject.columnUTCOffset; globalTransitionMinZ = deserializedProject.globalTransitionMinZ; AdditionalCmdLineParams = deserializedProject.AdditionalCmdLineParams; OverrideShooterGameModeDefaultGameIni = deserializedProject.OverrideShooterGameModeDefaultGameIni; Day0 = deserializedProject.Day0; LastImageOverrideUTC = deserializedProject.lastImageOverride; WorldAtlasPassword = deserializedProject.WorldAtlasPassword; if (deserializedProject.shipPaths != null) { shipPaths = deserializedProject.shipPaths; foreach (ShipPathData shipPath in shipPaths) { foreach (BezierNodeData bezierNode in shipPath.Nodes) { bezierNode.shipPath = shipPath; } } } shipPathsIdGenerator = deserializedProject.shipPathsIdGenerator; serverTemplates = deserializedProject.serverTemplates; if (serverTemplates == null) { serverTemplates = new List <ServerTemplateData>(); } successfullyLoaded = true; } catch (Exception e) { MessageBox.Show("Failed to parse project json, Message: " + e.Message, "Error"); } }