using GsConfigTool.Models; using System.Globalization; using System.Text; namespace GsConfigTool.Services; public static class PalworldConfigGeneratorService { private static string F(float val) => val.ToString("0.000000", CultureInfo.InvariantCulture); private static string B(bool val) => val ? "True" : "False"; public static string Generate(PalworldServerSettings s) { var sb = new StringBuilder(); sb.AppendLine("[/Script/Pal.PalGameWorldSettings]"); sb.Append("OptionSettings=("); var pairs = new List { $"Difficulty={s.Difficulty}", $"DayTimeSpeedRate={F(s.DayTimeSpeedRate)}", $"NightTimeSpeedRate={F(s.NightTimeSpeedRate)}", $"ExpRate={F(s.ExpRate)}", $"PalCaptureRate={F(s.PalCaptureRate)}", $"PalSpawnNumRate={F(s.PalSpawnNumRate)}", $"PalDamageRateAttack={F(s.PalDamageRateAttack)}", $"PalDamageRateDefense={F(s.PalDamageRateDefense)}", $"PlayerDamageRateAttack={F(s.PlayerDamageRateAttack)}", $"PlayerDamageRateDefense={F(s.PlayerDamageRateDefense)}", $"PlayerStomachDecreaseRate={F(s.PlayerStomachDecreaseRate)}", $"PlayerStaminaDecreaseRate={F(s.PlayerStaminaDecreaseRate)}", $"PlayerAutoHPRegeneRate={F(s.PlayerAutoHPRegeneRate)}", $"PlayerAutoHpRegeneRateInSleep={F(s.PlayerAutoHpRegeneRateInSleep)}", $"PalStomachDecreaseRate={F(s.PalStomachDecreaseRate)}", $"PalStaminaDecreaseRate={F(s.PalStaminaDecreaseRate)}", $"PalAutoHPRegeneRate={F(s.PalAutoHPRegeneRate)}", $"PalAutoHpRegeneRateInSleep={F(s.PalAutoHpRegeneRateInSleep)}", $"BuildObjectDamageRate={F(s.BuildObjectDamageRate)}", $"BuildObjectDeteriorationDamageRate={F(s.BuildObjectDeteriorationDamageRate)}", $"CollectionDropRate={F(s.CollectionDropRate)}", $"CollectionObjectHpRate={F(s.CollectionObjectHpRate)}", $"CollectionObjectRespawnSpeedRate={F(s.CollectionObjectRespawnSpeedRate)}", $"EnemyDropItemRate={F(s.EnemyDropItemRate)}", $"DeathPenalty={s.DeathPenalty}", $"bEnablePlayerToPlayerDamage={B(s.bEnablePlayerToPlayerDamage)}", $"bEnableFriendlyFire={B(s.bEnableFriendlyFire)}", $"bEnableInvaderEnemy={B(s.bEnableInvaderEnemy)}", $"bActiveUNKO={B(s.bActiveUNKO)}", $"bEnableAimAssistPad={B(s.bEnableAimAssistPad)}", $"bEnableAimAssistKeyboard={B(s.bEnableAimAssistKeyboard)}", $"DropItemMaxNum={s.DropItemMaxNum}", $"DropItemMaxNum_UNKO=100", $"BaseCampMaxNum={s.BaseCampMaxNum}", $"BaseCampWorkerMaxNum={s.BaseCampWorkerMaxNum}", $"DropItemAliveForPlayerTime={F(s.DropItemAliveForPlayerTime)}", $"bIsMultiplay={B(s.ServerPlayerMaxNum > 1)}", $"bIsPvP={B(s.bIsPvP)}", $"bCanPickupOtherGuildDeathPenaltyDrop={B(s.bCanPickupOtherGuildDeathPenaltyDrop)}", $"bEnableNonLoginPenalty={B(s.bEnableNonLoginPenalty)}", $"bEnableFastTravel={B(s.bEnableFastTravel)}", $"bIsStartLocationSelectByMap={B(s.bIsStartLocationSelectByMap)}", $"bExistPlayerAfterLogout={B(s.bExistPlayerAfterLogout)}", $"bEnableDefenseOtherGuildPlayer={B(s.bEnableDefenseOtherGuildPlayer)}", $"CoopPlayerMaxNum={s.CoopPlayerMaxNum}", $"ServerPlayerMaxNum={s.ServerPlayerMaxNum}", $"ServerName=\"{s.ServerName}\"", $"ServerDescription=\"{s.ServerDescription}\"", $"AdminPassword=\"{s.AdminPassword}\"", $"ServerPassword=\"{s.ServerPassword}\"", $"PublicPort={s.PublicPort}", $"PublicIP=\"{s.PublicIP}\"", $"RCONEnabled={B(s.RCONEnabled)}", $"RCONPort={s.RCONPort}", $"Region=\"{s.Region}\"", $"bUseAuth={B(s.bUseAuth)}", $"BanListURL=\"{s.BanListURL}\"" }; sb.Append(string.Join(",", pairs)); sb.AppendLine(")"); return sb.ToString(); } }