<UserControl x:Class="GsConfigTool.Views.PalworldConfigPage"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:vm="clr-namespace:GsConfigTool.ViewModels"
             Background="{StaticResource BgBrush}">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!-- ══ Top Bar ═══════════════════════════════════════════════════ -->
        <Border Grid.Row="0" Background="{StaticResource SurfaceBrush}"
                BorderBrush="{StaticResource BorderBrush}" BorderThickness="0,0,0,1"
                Padding="24,14">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="Auto"/>
                </Grid.ColumnDefinitions>

                <StackPanel Grid.Column="0">
                    <StackPanel Orientation="Horizontal">
                        <Button Style="{StaticResource NavButton}" Content="← Zurück"
                                Command="{Binding GoBackCommand}" Padding="0,4" Margin="0,0,16,0"
                                Foreground="{StaticResource TextMutedBrush}"/>
                        <TextBlock Text="🐾 Palworld" FontSize="18" FontWeight="Bold"
                                   Foreground="{StaticResource PalworldBrush}" VerticalAlignment="Center"/>
                        <Border CornerRadius="4" Padding="8,3" Margin="12,0,0,0" VerticalAlignment="Center"
                                Background="#0A2010">
                            <TextBlock Text="Server Config" FontSize="10" FontWeight="SemiBold"
                                       Foreground="{StaticResource PalworldBrush}"/>
                        </Border>
                    </StackPanel>

                    <StackPanel Orientation="Horizontal" Margin="0,6,0,0">
                        <TextBox Text="{Binding ProjectName, UpdateSourceTrigger=PropertyChanged}"
                                 Width="280" Padding="6,4" FontSize="13" FontWeight="SemiBold"/>
                        <TextBox Text="{Binding ProjectDescription, UpdateSourceTrigger=PropertyChanged}"
                                 Width="400" Padding="6,4" FontSize="12" Margin="8,0,0,0"
                                 Foreground="{StaticResource TextMutedBrush}"/>
                    </StackPanel>
                </StackPanel>

                <StackPanel Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center">
                    <Button Style="{StaticResource SecondaryButton}"
                            Content="📋 Config kopieren"
                            Command="{Binding CopyConfigCommand}" Margin="0,0,8,0"/>
                    <Button Style="{StaticResource SecondaryButton}"
                            Content="💾 Als Datei speichern"
                            Command="{Binding SaveAsFileCommand}" Margin="0,0,8,0"/>
                    <Button Style="{StaticResource PrimaryButton}"
                            Content="💾 Projekt speichern"
                            Background="{StaticResource PalworldBrush}" Foreground="White"
                            Command="{Binding SaveCommand}"/>
                </StackPanel>
            </Grid>
        </Border>

        <!-- ══ Content ═══════════════════════════════════════════════════ -->
        <Grid Grid.Row="1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="420"/>
            </Grid.ColumnDefinitions>

            <!-- Settings -->
            <ScrollViewer Grid.Column="0" VerticalScrollBarVisibility="Auto">
                <StackPanel Margin="28,20">
                    <TextBlock Text="Palworld Server Konfiguration" Style="{StaticResource PageTitle}" Margin="0,0,0,4"/>
                    <TextBlock Text="PalWorldSettings.ini – alle verfügbaren Optionen"
                               Foreground="{StaticResource TextMutedBrush}" Margin="0,0,0,20"/>

                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="20"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>

                        <!-- Left Column -->
                        <StackPanel Grid.Column="0">
                            <GroupBox Header="SERVER INFO">
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="170"/>
                                        <ColumnDefinition Width="*"/>
                                    </Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                    </Grid.RowDefinitions>

                                    <TextBlock Grid.Row="0" Grid.Column="0" Text="Server Name" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding ServerName, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="1" Grid.Column="0" Text="Beschreibung" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding ServerDescription, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="2" Grid.Column="0" Text="Admin Passwort" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="2" Grid.Column="1" Text="{Binding AdminPassword, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="3" Grid.Column="0" Text="Server Passwort" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="3" Grid.Column="1" Text="{Binding ServerPassword, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="4" Grid.Column="0" Text="Öffentliche IP" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="4" Grid.Column="1" Text="{Binding PublicIP, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="5" Grid.Column="0" Text="Port" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="5" Grid.Column="1" Text="{Binding PublicPort, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="6" Grid.Column="0" Text="Max. Spieler" VerticalAlignment="Center"/>
                                    <TextBox Grid.Row="6" Grid.Column="1" Text="{Binding ServerPlayerMaxNum, UpdateSourceTrigger=PropertyChanged}"/>
                                </Grid>
                            </GroupBox>

                            <GroupBox Header="GAMEPLAY RATEN">
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="170"/>
                                        <ColumnDefinition Width="*"/>
                                    </Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                    </Grid.RowDefinitions>

                                    <TextBlock Grid.Row="0" Grid.Column="0" Text="Schwierigkeit" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <ComboBox Grid.Row="0" Grid.Column="1" ItemsSource="{Binding DifficultyOptions}"
                                              SelectedItem="{Binding Difficulty}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="1" Grid.Column="0" Text="Tageszeit-Geschwindigkeit" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding DayTimeSpeedRate, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="2" Grid.Column="0" Text="Nachtzeit-Geschwindigkeit" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="2" Grid.Column="1" Text="{Binding NightTimeSpeedRate, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="3" Grid.Column="0" Text="XP-Rate" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="3" Grid.Column="1" Text="{Binding ExpRate, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="4" Grid.Column="0" Text="Pal Fang-Rate" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="4" Grid.Column="1" Text="{Binding PalCaptureRate, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="5" Grid.Column="0" Text="Pal Spawn-Rate" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="5" Grid.Column="1" Text="{Binding PalSpawnNumRate, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="6" Grid.Column="0" Text="Gegner Item-Drop-Rate" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="6" Grid.Column="1" Text="{Binding EnemyDropItemRate, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="7" Grid.Column="0" Text="Tod-Strafe" VerticalAlignment="Center"/>
                                    <ComboBox Grid.Row="7" Grid.Column="1" ItemsSource="{Binding DeathPenaltyOptions}"
                                              SelectedItem="{Binding DeathPenalty}"/>
                                </Grid>
                            </GroupBox>

                            <GroupBox Header="SAMMEL &amp; RESSOURCEN">
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="170"/>
                                        <ColumnDefinition Width="*"/>
                                    </Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                    </Grid.RowDefinitions>

                                    <TextBlock Grid.Row="0" Grid.Column="0" Text="Item-Drop-Rate" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding CollectionDropRate, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="1" Grid.Column="0" Text="Objekt HP-Rate" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding CollectionObjectHpRate, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="2" Grid.Column="0" Text="Respawn-Geschwindigkeit" VerticalAlignment="Center"/>
                                    <TextBox Grid.Row="2" Grid.Column="1" Text="{Binding CollectionObjectRespawnSpeedRate, UpdateSourceTrigger=PropertyChanged}"/>
                                </Grid>
                            </GroupBox>
                        </StackPanel>

                        <!-- Right Column -->
                        <StackPanel Grid.Column="2">
                            <GroupBox Header="PAL STATS">
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="170"/>
                                        <ColumnDefinition Width="*"/>
                                    </Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                    </Grid.RowDefinitions>

                                    <TextBlock Grid.Row="0" Grid.Column="0" Text="Angriffs-Rate" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding PalDamageRateAttack, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="1" Grid.Column="0" Text="Verteidigungs-Rate" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding PalDamageRateDefense, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="2" Grid.Column="0" Text="Hunger-Verbrauch" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="2" Grid.Column="1" Text="{Binding PalStomachDecreaseRate, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="3" Grid.Column="0" Text="Ausdauer-Verbrauch" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="3" Grid.Column="1" Text="{Binding PalStaminaDecreaseRate, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="4" Grid.Column="0" Text="HP-Regen" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="4" Grid.Column="1" Text="{Binding PalAutoHPRegeneRate, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="5" Grid.Column="0" Text="HP-Regen (Schlaf)" VerticalAlignment="Center"/>
                                    <TextBox Grid.Row="5" Grid.Column="1" Text="{Binding PalAutoHpRegeneRateInSleep, UpdateSourceTrigger=PropertyChanged}"/>
                                </Grid>
                            </GroupBox>

                            <GroupBox Header="SPIELER STATS">
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="170"/>
                                        <ColumnDefinition Width="*"/>
                                    </Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                    </Grid.RowDefinitions>

                                    <TextBlock Grid.Row="0" Grid.Column="0" Text="Angriffs-Rate" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding PlayerDamageRateAttack, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="1" Grid.Column="0" Text="Verteidigungs-Rate" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding PlayerDamageRateDefense, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="2" Grid.Column="0" Text="Hunger-Verbrauch" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="2" Grid.Column="1" Text="{Binding PlayerStomachDecreaseRate, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="3" Grid.Column="0" Text="Ausdauer-Verbrauch" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="3" Grid.Column="1" Text="{Binding PlayerStaminaDecreaseRate, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="4" Grid.Column="0" Text="HP-Regen" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="4" Grid.Column="1" Text="{Binding PlayerAutoHPRegeneRate, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="5" Grid.Column="0" Text="HP-Regen (Schlaf)" VerticalAlignment="Center"/>
                                    <TextBox Grid.Row="5" Grid.Column="1" Text="{Binding PlayerAutoHpRegeneRateInSleep, UpdateSourceTrigger=PropertyChanged}"/>
                                </Grid>
                            </GroupBox>

                            <GroupBox Header="PVP &amp; MULTIPLAYER">
                                <StackPanel>
                                    <CheckBox Content="PvP aktivieren" IsChecked="{Binding bIsPvP}" Margin="0,0,0,8"/>
                                    <CheckBox Content="Spieler-zu-Spieler Schaden" IsChecked="{Binding bEnablePlayerToPlayerDamage}" Margin="0,0,0,8"/>
                                    <CheckBox Content="Friendly Fire" IsChecked="{Binding bEnableFriendlyFire}" Margin="0,0,0,8"/>
                                    <CheckBox Content="Feinde/Invasoren aktivieren" IsChecked="{Binding bEnableInvaderEnemy}" Margin="0,0,0,8"/>
                                    <CheckBox Content="Gildenspieler schützen können" IsChecked="{Binding bEnableDefenseOtherGuildPlayer}"/>
                                </StackPanel>
                            </GroupBox>

                            <GroupBox Header="WELT &amp; MISC">
                                <StackPanel>
                                    <CheckBox Content="Schnellreise aktiviert" IsChecked="{Binding bEnableFastTravel}" Margin="0,0,0,8"/>
                                    <CheckBox Content="Startposition auf Karte wählen" IsChecked="{Binding bIsStartLocationSelectByMap}" Margin="0,0,0,8"/>
                                    <CheckBox Content="Spieler nach Logout bleiben" IsChecked="{Binding bExistPlayerAfterLogout}" Margin="0,0,0,8"/>
                                    <CheckBox Content="Login-Abwesenheits-Strafe" IsChecked="{Binding bEnableNonLoginPenalty}" Margin="0,0,0,8"/>
                                    <CheckBox Content="Zielt-Hilfe (Gamepad)" IsChecked="{Binding bEnableAimAssistPad}" Margin="0,0,0,8"/>
                                    <CheckBox Content="Zielt-Hilfe (Tastatur)" IsChecked="{Binding bEnableAimAssistKeyboard}" Margin="0,0,0,8"/>
                                    <Separator/>
                                    <CheckBox Content="RCON aktivieren" IsChecked="{Binding RCONEnabled}" Margin="0,4,0,8"/>
                                    <CheckBox Content="Auth aktivieren" IsChecked="{Binding bUseAuth}"/>
                                </StackPanel>
                            </GroupBox>

                            <GroupBox Header="GEBÄUDE">
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="170"/>
                                        <ColumnDefinition Width="*"/>
                                    </Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                    </Grid.RowDefinitions>

                                    <TextBlock Grid.Row="0" Grid.Column="0" Text="Gebäude-Schaden" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding BuildObjectDamageRate, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="1" Grid.Column="0" Text="Verfall-Schaden" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding BuildObjectDeteriorationDamageRate, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="2" Grid.Column="0" Text="Max. Basislager" VerticalAlignment="Center" Margin="0,0,0,8"/>
                                    <TextBox Grid.Row="2" Grid.Column="1" Text="{Binding BaseCampMaxNum, UpdateSourceTrigger=PropertyChanged}" Margin="0,0,0,8"/>

                                    <TextBlock Grid.Row="3" Grid.Column="0" Text="Max. Arbeiter pro Lager" VerticalAlignment="Center"/>
                                    <TextBox Grid.Row="3" Grid.Column="1" Text="{Binding BaseCampWorkerMaxNum, UpdateSourceTrigger=PropertyChanged}"/>
                                </Grid>
                            </GroupBox>
                        </StackPanel>
                    </Grid>
                </StackPanel>
            </ScrollViewer>

            <!-- Preview -->
            <DockPanel Grid.Column="1" Background="{StaticResource SurfaceBrush}">
                <Border DockPanel.Dock="Top" Padding="16,10"
                        BorderBrush="{StaticResource BorderBrush}" BorderThickness="1,0,0,1">
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="PalWorldSettings.ini" FontWeight="SemiBold" VerticalAlignment="Center" Margin="0,0,16,0"/>
                        <Button Style="{StaticResource SecondaryButton}" Content="📋 Kopieren"
                                Command="{Binding CopyConfigCommand}" Padding="10,5"/>
                    </StackPanel>
                </Border>
                <TextBox DockPanel.Dock="Top" Text="{Binding GeneratedConfig, Mode=OneWay}"
                         IsReadOnly="True" TextWrapping="Wrap" AcceptsReturn="True"
                         Background="#0A0F14" Foreground="#E0E0E0"
                         FontFamily="Consolas" FontSize="11"
                         VerticalScrollBarVisibility="Auto"
                         BorderThickness="1,0,0,0" BorderBrush="{StaticResource BorderBrush}"
                         Padding="12"/>
            </DockPanel>
        </Grid>
    </Grid>
</UserControl>
