272 if (m_worldSettings.GameMode != 0
273 && ((TerrainGenerationMode)e == TerrainGenerationMode.FlatContinent
274 || (TerrainGenerationMode)e == TerrainGenerationMode.FlatIsland)) {
275 DialogsManager.ShowDialog(
277 new MessageDialog(LanguageControl.Get(fName, 4), LanguageControl.Get(fName, 5), LanguageControl.Ok, null, null)
281 m_worldSettings.TerrainGenerationMode = (TerrainGenerationMode)e;
282 m_descriptionLabel.Text = StringsManager.GetString(
283 $
"TerrainGenerationMode.{m_worldSettings.TerrainGenerationMode}.Description"
285 if (m_worldSettings.TerrainGenerationMode == TerrainGenerationMode.Continent
286 || m_worldSettings.TerrainGenerationMode == TerrainGenerationMode.Island) {
287 m_seaLevelOffsetSlider.MinValue = -64f;
288 m_seaLevelOffsetSlider.MaxValue = 191f;
289 m_worldSettings.SeaLevelOffset = Math.Clamp(m_worldSettings.SeaLevelOffset, -64, 191);
290 m_seaLevelOffsetSlider.Value = m_worldSettings.SeaLevelOffset;
293 m_seaLevelOffsetSlider.MinValue = -m_worldSettings.TerrainLevel;
294 m_seaLevelOffsetSlider.MaxValue = 255 - m_worldSettings.TerrainLevel;
295 m_worldSettings.SeaLevelOffset = Math.Clamp(
296 m_worldSettings.SeaLevelOffset,
297 -m_worldSettings.TerrainLevel,
298 255 - m_worldSettings.TerrainLevel
300 m_seaLevelOffsetSlider.Value = m_worldSettings.SeaLevelOffset;
307 if (m_islandSizeEW.IsSliding
308 && !m_isExistingWorld) {
309 m_worldSettings.IslandSize.X = m_islandSizes[Math.Clamp((
int)m_islandSizeEW.Value, 0, m_islandSizes.Length - 1)];
311 if (m_islandSizeNS.IsSliding
312 && !m_isExistingWorld) {
313 m_worldSettings.IslandSize.Y = m_islandSizes[Math.Clamp((
int)m_islandSizeNS.Value, 0, m_islandSizes.Length - 1)];
315 if (m_flatTerrainLevelSlider.IsSliding
316 && !m_isExistingWorld) {
317 m_worldSettings.TerrainLevel = Math.Clamp(
318 (
int)m_flatTerrainLevelSlider.Value / (
int)m_flatTerrainLevelSlider.Granularity * (
int)m_flatTerrainLevelSlider.Granularity,
322 m_seaLevelOffsetSlider.MinValue = -m_worldSettings.TerrainLevel;
323 m_seaLevelOffsetSlider.MaxValue = 255 - m_worldSettings.TerrainLevel;
324 m_worldSettings.SeaLevelOffset = Math.Clamp(
325 m_worldSettings.SeaLevelOffset,
326 -m_worldSettings.TerrainLevel,
327 255 - m_worldSettings.TerrainLevel
329 m_seaLevelOffsetSlider.Value = m_worldSettings.SeaLevelOffset;
332 if (m_flatTerrainShoreRoughnessSlider.IsSliding
333 && !m_isExistingWorld) {
334 m_worldSettings.ShoreRoughness = m_flatTerrainShoreRoughnessSlider.Value;
337 if (m_flatTerrainBlockButton.IsClicked
338 && !m_isExistingWorld) {
343 m_flatTerrainBlockList,
346 if ((int)index == -1) {
347 return new StackPanelWidget {
348 VerticalAlignment = WidgetAlignment.Center,
350 new CanvasWidget { Size = new Vector2(94f, 0f) },
351 new LabelWidget { Text = LanguageControl.Get(fName,
"9"), Color = Color.White }
363 if ((
int)index == -1) {
368 m_worldSettings.TerrainBlockIndex.ToString(),
372 if (int.TryParse(str, out int num)) {
373 int contents = Terrain.ExtractContents(num);
375 || BlocksManager.Blocks[contents] is not AirBlock) {
377 m_worldSettings.TerrainBlockIndex = num;
397 m_worldSettings.TerrainBlockIndex = (int)index;
403 if (m_flatTerrainMagmaOceanCheckbox.IsClicked) {
404 m_worldSettings.TerrainOceanBlockIndex = m_worldSettings.TerrainOceanBlockIndex == 18 ? 92 : 18;
405 m_descriptionLabel.Text = StringsManager.GetString(
"FlatTerrainMagmaOcean.Description");
407 if (m_seaLevelOffsetSlider.IsSliding
408 && !m_isExistingWorld) {
409 m_worldSettings.SeaLevelOffset = (int)m_seaLevelOffsetSlider.Value;
410 m_descriptionLabel.Text = StringsManager.GetString(
"SeaLevelOffset.Description");
412 if (m_temperatureOffsetSlider.IsSliding
413 && !m_isExistingWorld) {
414 m_worldSettings.TemperatureOffset = m_temperatureOffsetSlider.Value;
415 m_descriptionLabel.Text = StringsManager.GetString(
"TemperatureOffset.Description");
417 if (m_humidityOffsetSlider.IsSliding
418 && !m_isExistingWorld) {
419 m_worldSettings.HumidityOffset = m_humidityOffsetSlider.Value;
420 m_descriptionLabel.Text = StringsManager.GetString(
"HumidityOffset.Description");
422 if (m_biomeSizeSlider.IsSliding
423 && !m_isExistingWorld) {
424 m_worldSettings.BiomeSize = m_biomeSizes[Math.Clamp((
int)m_biomeSizeSlider.Value, 0, m_biomeSizes.Length - 1)];
425 m_descriptionLabel.Text = StringsManager.GetString(
"BiomeSize.Description");
427 if (m_terrainGeneratorVersionButton.IsClicked) {
428 DialogsManager.ShowDialog(
430 new ListSelectionDialog(
431 LanguageControl.Get(fName,
"11"),
432 new[] {
"2.1",
"2.2",
"2.3",
"2.4", VersionsManager.SerializationVersion }.Distinct(),
435 e => m_worldSettings.OriginalSerializationVersion = e as
string
439 if (m_blocksTextureButton.IsClicked) {
440 BlocksTexturesManager.UpdateBlocksTexturesList();
441 ListSelectionDialog dialog =
new(
442 LanguageControl.Get(fName, 3),
443 BlocksTexturesManager.BlockTexturesNames,
446 XElement node = ContentManager.Get<XElement>(
"Widgets/BlocksTextureItem");
447 ContainerWidget obj = (ContainerWidget)LoadWidget(this, node, null);
448 Texture2D texture2 = m_blockTexturesCache.GetTexture((string)item);
449 obj.Children.Find<LabelWidget>(
"BlocksTextureItem.Text").Text = BlocksTexturesManager.GetDisplayName((string)item);
450 obj.Children.Find<LabelWidget>(
"BlocksTextureItem.Details").Text = $
"{texture2.Width}x{texture2.Height}";
451 obj.Children.Find<RectangleWidget>(
"BlocksTextureItem.Icon").Subtexture = new Subtexture(texture2, Vector2.Zero, Vector2.One);
454 item => m_worldSettings.BlocksTextureName = (
string)item
456 DialogsManager.ShowDialog(
null, dialog);
457 m_descriptionLabel.Text = StringsManager.GetString(
"BlocksTexture.Description");
459 if (m_paletteButton.IsClicked) {
460 DialogsManager.ShowDialog(
null,
new EditPaletteDialog(m_worldSettings.Palette));
462 if (m_supernaturalCreaturesButton.IsClicked) {
463 m_worldSettings.AreSupernaturalCreaturesEnabled = !m_worldSettings.AreSupernaturalCreaturesEnabled;
464 m_descriptionLabel.Text = StringsManager.GetString($
"SupernaturalCreatures.{m_worldSettings.AreSupernaturalCreaturesEnabled}");
466 if (m_friendlyFireButton.IsClicked) {
467 m_worldSettings.IsFriendlyFireEnabled = !m_worldSettings.IsFriendlyFireEnabled;
468 m_descriptionLabel.Text = StringsManager.GetString($
"FriendlyFire.{m_worldSettings.IsFriendlyFireEnabled}");
470 if (m_environmentBehaviorButton.IsClicked) {
472 m_worldSettings.EnvironmentBehaviorMode =
473 (
EnvironmentBehaviorMode)((enumValues2.IndexOf((
int)m_worldSettings.EnvironmentBehaviorMode) + 1) % enumValues2.Count);
474 m_descriptionLabel.Text = StringsManager.GetString($
"EnvironmentBehaviorMode.{m_worldSettings.EnvironmentBehaviorMode}.Description");
476 if (m_timeOfDayButton.IsClicked) {
477 DialogsManager.ShowDialog(
479 new ListSelectionDialog(
480 LanguageControl.Get(fName,
"7"),
481 EnumUtils.GetEnumValues<TimeOfDayMode>(),
483 e => LanguageControl.Get(
"TimeOfDayMode", ((TimeOfDayMode)e).ToString()),
485 m_worldSettings.TimeOfDayMode = (TimeOfDayMode)e;
486 m_descriptionLabel.Text = StringsManager.GetString($
"TimeOfDayMode.{(TimeOfDayMode)e}.Description");
491 if (m_areSeasonsChangingCheckBox.IsClicked) {
492 m_worldSettings.AreSeasonsChanging = !m_worldSettings.AreSeasonsChanging;
493 m_descriptionLabel.Text = StringsManager.GetString($
"AreSeasonsChanging.{m_worldSettings.AreSeasonsChanging}");
495 if (m_yearDaysSlider.IsSliding) {
496 m_worldSettings.YearDays = m_yearDays[Math.Clamp((
int)m_yearDaysSlider.Value, 0, m_yearDays.Length - 1)];
497 m_descriptionLabel.Text = StringsManager.GetString(
"YearDays.Description");
499 if (m_timeOfYearSlider.IsSliding) {
500 m_worldSettings.TimeOfYear = Math.Clamp(m_timeOfYearSlider.Value, 0f, 0.999f);
501 m_descriptionLabel.Text = StringsManager.GetString(
"TimeOfYear.Description");
503 if (m_weatherEffectsButton.IsClicked) {
504 m_worldSettings.AreWeatherEffectsEnabled = !m_worldSettings.AreWeatherEffectsEnabled;
505 m_descriptionLabel.Text = StringsManager.GetString($
"WeatherMode.{m_worldSettings.AreWeatherEffectsEnabled}");
507 if (m_adventureRespawnButton.IsClicked) {
508 m_worldSettings.IsAdventureRespawnAllowed = !m_worldSettings.IsAdventureRespawnAllowed;
509 m_descriptionLabel.Text = StringsManager.GetString($
"AdventureRespawnMode.{m_worldSettings.IsAdventureRespawnAllowed}");
511 if (m_adventureSurvivalMechanicsButton.IsClicked) {
512 m_worldSettings.AreAdventureSurvivalMechanicsEnabled = !m_worldSettings.AreAdventureSurvivalMechanicsEnabled;
513 m_descriptionLabel.Text = StringsManager.GetString(
514 $
"AdventureSurvivalMechanics.{m_worldSettings.AreAdventureSurvivalMechanicsEnabled}"
517 m_creativeModePanel.IsVisible = m_worldSettings.GameMode ==
GameMode.Creative;
518 m_newWorldOnlyPanel.IsVisible = !m_isExistingWorld;
519 m_seasonsPanel.IsVisible = m_worldSettings.GameMode == GameMode.Creative || !m_isExistingWorld;
520 m_continentTerrainPanel.IsVisible = m_worldSettings.TerrainGenerationMode == TerrainGenerationMode.Continent
522 m_islandTerrainPanel.IsVisible = m_worldSettings.TerrainGenerationMode == TerrainGenerationMode.Island
524 m_flatTerrainPanel.IsVisible = m_worldSettings.TerrainGenerationMode == TerrainGenerationMode.FlatContinent
526 m_yearDaysPanel.IsVisible = m_worldSettings.AreSeasonsChanging;
527 m_terrainGenerationButton.Text = StringsManager.GetString($
"TerrainGenerationMode.{m_worldSettings.TerrainGenerationMode}.Name");
528 m_islandSizeEW.Value = FindNearestIndex(m_islandSizes, m_worldSettings.IslandSize.X);
529 m_islandSizeEW.Text = m_worldSettings.IslandSize.X.ToString(CultureInfo.InvariantCulture);
530 m_islandSizeNS.Value = FindNearestIndex(m_islandSizes, m_worldSettings.IslandSize.Y);
531 m_islandSizeNS.Text = m_worldSettings.IslandSize.Y.ToString(CultureInfo.InvariantCulture);
532 m_flatTerrainLevelSlider.Value = m_worldSettings.TerrainLevel;
533 m_flatTerrainLevelSlider.Text = m_worldSettings.TerrainLevel.ToString();
534 m_flatTerrainShoreRoughnessSlider.Value = m_worldSettings.ShoreRoughness;
535 m_flatTerrainShoreRoughnessSlider.Text = $
"{m_worldSettings.ShoreRoughness * 100f:0}%";
536 m_flatTerrainBlock.Contents = m_worldSettings.TerrainBlockIndex;
537 m_flatTerrainMagmaOceanCheckbox.IsChecked = m_worldSettings.TerrainOceanBlockIndex == 92;
538 string text = BlocksManager.Blocks[
Terrain.ExtractContents(m_worldSettings.TerrainBlockIndex)]
539 ?.GetDisplayName(
null, m_worldSettings.TerrainBlockIndex)
541 m_flatTerrainBlockLabel.Text = text.Length > 10 ? $
"{text.Substring(0, 10)}..." : text;
542 Texture2D texture = m_blockTexturesCache.GetTexture(m_worldSettings.BlocksTextureName);
544 m_blocksTextureLabel.Text = BlocksTexturesManager.GetDisplayName(m_worldSettings.BlocksTextureName);
545 m_blocksTextureDetails.Text = $
"{texture.Width}x{texture.Height}";
546 m_seaLevelOffsetSlider.Value = m_worldSettings.SeaLevelOffset;
547 m_seaLevelOffsetSlider.Text = FormatOffset(m_worldSettings.SeaLevelOffset);
548 m_temperatureOffsetSlider.Value = m_worldSettings.TemperatureOffset;
549 m_temperatureOffsetSlider.Text = FormatOffset(m_worldSettings.TemperatureOffset);
550 m_humidityOffsetSlider.Value = m_worldSettings.HumidityOffset;
551 m_humidityOffsetSlider.Text = FormatOffset(m_worldSettings.HumidityOffset);
552 m_biomeSizeSlider.Value = FindNearestIndex(m_biomeSizes, m_worldSettings.BiomeSize);
553 m_biomeSizeSlider.Text = $
"{m_worldSettings.BiomeSize}x";
554 m_terrainGeneratorVersionButtonPanel.IsVisible = !m_flatTerrainPanel.IsVisible;
555 if (m_flatTerrainPanel.IsVisible) {
556 m_worldSettings.OriginalSerializationVersion = VersionsManager.SerializationVersion;
558 m_terrainGeneratorVersionButton.Text = m_worldSettings.OriginalSerializationVersion;
559 m_environmentBehaviorButton.Text = LanguageControl.Get(
"EnvironmentBehaviorMode", m_worldSettings.EnvironmentBehaviorMode.ToString());
560 m_timeOfDayButton.Text = LanguageControl.Get(
"TimeOfDayMode", m_worldSettings.TimeOfDayMode.ToString());
561 m_areSeasonsChangingCheckBox.IsChecked = m_worldSettings.AreSeasonsChanging;
562 m_yearDaysSlider.Value = FindNearestIndex(m_yearDays, m_worldSettings.YearDays);
563 m_yearDaysSlider.Text = $
"{m_worldSettings.YearDays}{LanguageControl.Get(fName, "8
")}";
564 m_timeOfYearSlider.Value = m_worldSettings.TimeOfYear;
565 m_timeOfYearSlider.Text = $
"{SubsystemSeasons.GetTimeOfYearName(m_worldSettings.TimeOfYear)}";
566 m_timeOfYearSlider.TextColor = SubsystemSeasons.GetTimeOfYearColor(m_worldSettings.TimeOfYear);
567 m_weatherEffectsButton.Text = m_worldSettings.AreWeatherEffectsEnabled ? LanguageControl.Enable : LanguageControl.Disable;
568 m_adventureRespawnButton.Text = m_worldSettings.IsAdventureRespawnAllowed ? LanguageControl.Allowed : LanguageControl.NAllowed;
569 m_adventureSurvivalMechanicsButton.Text = m_worldSettings.AreAdventureSurvivalMechanicsEnabled
570 ? LanguageControl.Enable
571 : LanguageControl.Disable;
572 m_supernaturalCreaturesButton.Text = m_worldSettings.AreSupernaturalCreaturesEnabled ? LanguageControl.Enable : LanguageControl.Disable;
573 m_friendlyFireButton.Text = m_worldSettings.IsFriendlyFireEnabled ? LanguageControl.Allowed : LanguageControl.NAllowed;
576 || Children.Find<ButtonWidget>(
"TopBar.Back").IsClicked) {
577 ScreensManager.SwitchScreen(ScreensManager.PreviousScreen);