Repositories / GSConfigTool / GsConfigTool / Services / PalworldConfigGeneratorService.cs
PalworldConfigGeneratorService.cs 4.1 KB
git clone https://rl-dev.de/git/gsconfigtool Raw Download
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<string>
        {
            $"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();
    }
}
24Fire Wuppertaler Tafel Romeo