Initial version
This commit is contained in:
502
007SaveTool/MainWindow.xaml
Normal file
502
007SaveTool/MainWindow.xaml
Normal file
@@ -0,0 +1,502 @@
|
||||
<Window x:Class="EonaCat.FirstLight.SaveTransfer.MainWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:EonaCat.FirstLight.SaveTransfer"
|
||||
Title="EonaCat FirstLight SaveTransfer"
|
||||
Height="760" Width="920"
|
||||
MinHeight="680" MinWidth="820"
|
||||
WindowStartupLocation="CenterScreen"
|
||||
Background="{StaticResource BgDarkBrush}"
|
||||
FontFamily="Segoe UI">
|
||||
|
||||
<Window.Resources>
|
||||
<BooleanToVisibilityConverter x:Key="BoolVis"/>
|
||||
</Window.Resources>
|
||||
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<!-- header -->
|
||||
<RowDefinition Height="Auto"/>
|
||||
<!-- tabs bar -->
|
||||
<RowDefinition Height="*"/>
|
||||
<!-- content -->
|
||||
<RowDefinition Height="Auto"/>
|
||||
<!-- status bar -->
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
|
||||
<Border Grid.Row="0" Background="{StaticResource BgMidBrush}"
|
||||
BorderBrush="{StaticResource BorderBrush}" BorderThickness="0,0,0,1">
|
||||
<Grid Margin="28,18,28,18">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Center">
|
||||
<!-- Bond logo / bullet icon -->
|
||||
<Border Width="36" Height="36" CornerRadius="18"
|
||||
Background="{StaticResource AccentGoldBrush}"
|
||||
Margin="0,0,14,0">
|
||||
<TextBlock Text="007" FontWeight="Bold" FontSize="11"
|
||||
Foreground="#1A1A2E"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Border>
|
||||
<StackPanel VerticalAlignment="Center">
|
||||
<TextBlock Text="EonaCat FirstLight SaveTransfer"
|
||||
Foreground="{StaticResource TextPrimaryBrush}"
|
||||
FontSize="18" FontWeight="Bold"/>
|
||||
<TextBlock Text="Resign · Decrypt · Inspect"
|
||||
Foreground="{StaticResource TextMutedBrush}"
|
||||
FontSize="11" Margin="0,2,0,0"/>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center">
|
||||
<Border Background="#0D2035" CornerRadius="6" Padding="10,5" Margin="0,0,10,0">
|
||||
<TextBlock x:Name="TxtStatus" Text="Ready"
|
||||
Foreground="{StaticResource TextSecondaryBrush}"
|
||||
FontSize="12" VerticalAlignment="Center"/>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Row="1" Background="{StaticResource BgMidBrush}"
|
||||
BorderBrush="{StaticResource BorderBrush}" BorderThickness="0,0,0,1">
|
||||
<TabControl x:Name="MainTabs" Style="{StaticResource DarkTabControl}"
|
||||
Background="Transparent" Margin="14,0,14,0">
|
||||
<TabControl.ContentTemplate>
|
||||
<DataTemplate><!-- tabs only used for header switching --></DataTemplate>
|
||||
</TabControl.ContentTemplate>
|
||||
|
||||
<TabItem Header="📖 Instructions - Steam" Style="{StaticResource DarkTabItem}"
|
||||
x:Name="TabInstructionsSteam"/>
|
||||
<TabItem Header="📖 Instructions - Cracked" Style="{StaticResource DarkTabItem}"
|
||||
x:Name="TabInstructionsCracked"/>
|
||||
<TabItem Header="⚙ Resign Save" Style="{StaticResource DarkTabItem}"
|
||||
x:Name="TabResign"/>
|
||||
<TabItem Header="🔓 Decrypt / Inspect" Style="{StaticResource DarkTabItem}"
|
||||
x:Name="TabDecrypt"/>
|
||||
<TabItem Header="📦 VDF Generator" Style="{StaticResource DarkTabItem}"
|
||||
x:Name="TabVdf"/>
|
||||
<TabItem Header="📋 Log" Style="{StaticResource DarkTabItem}"
|
||||
x:Name="TabLog"/>
|
||||
</TabControl>
|
||||
</Border>
|
||||
|
||||
<Grid Grid.Row="2">
|
||||
|
||||
<!-- INSTRUCTIONS - STEAM PANEL -->
|
||||
<ScrollViewer x:Name="PanelInstructionsSteam" VerticalScrollBarVisibility="Auto"
|
||||
HorizontalScrollBarVisibility="Disabled">
|
||||
<StackPanel Margin="32,28,32,28">
|
||||
<TextBlock Text="007: First Light - Save Game Transfer Instructions (Steam)"
|
||||
Foreground="{StaticResource TextPrimaryBrush}"
|
||||
FontSize="16" FontWeight="Bold" Margin="0,0,0,20"/>
|
||||
|
||||
<TextBlock Text="STEPS TO RESIGN YOUR SAVE FILES"
|
||||
Style="{StaticResource FieldLabel}"/>
|
||||
|
||||
<StackPanel Margin="0,0,0,20">
|
||||
<TextBlock Foreground="{StaticResource TextPrimaryBrush}" FontSize="13" Margin="0,0,0,8">
|
||||
<Run FontWeight="Bold">1.</Run> Select your folder using the 'Browse' button with your NEW savegame (folder which contains index.save and data.save)
|
||||
</TextBlock>
|
||||
<TextBlock Foreground="{StaticResource TextPrimaryBrush}" FontSize="13" Margin="0,0,0,8">
|
||||
<Run FontWeight="Bold">2.</Run> Insert your steam Id which you want to set.
|
||||
</TextBlock>
|
||||
<TextBlock Foreground="{StaticResource TextPrimaryBrush}" FontSize="13" Margin="0,0,0,8">
|
||||
<Run FontWeight="Bold">3.</Run> Click on 'Resign Save Files'
|
||||
</TextBlock>
|
||||
<TextBlock Foreground="{StaticResource TextPrimaryBrush}" FontSize="13" Margin="0,0,0,20">
|
||||
<Run FontWeight="Bold">4.</Run> Place the savegame files in your original save directory.
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
<TextBlock Text="STEAM SAVEGAME FILE LOCATION"
|
||||
Style="{StaticResource FieldLabel}"/>
|
||||
<Border Background="#0D1E30" CornerRadius="8" Padding="12" Margin="0,0,0,20"
|
||||
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1">
|
||||
<TextBlock Foreground="{StaticResource TextSecondaryBrush}" FontSize="12"
|
||||
FontFamily="Consolas" TextWrapping="Wrap"
|
||||
Text="C:\Program Files (x86)\Steam\userdata\<userID>\3768760\remote\KntSlotSaveFile-x"/>
|
||||
</Border>
|
||||
|
||||
<TextBlock Foreground="{StaticResource TextMutedBrush}" FontSize="11" Margin="0,0,0,20">
|
||||
(x is your save slot number)
|
||||
</TextBlock>
|
||||
|
||||
<TextBlock Text="YOUR STEAM ID"
|
||||
Style="{StaticResource FieldLabel}"/>
|
||||
<Border Background="#0D1E30" CornerRadius="8" Padding="12" Margin="0,0,0,20"
|
||||
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1">
|
||||
<TextBlock Foreground="{StaticResource TextSecondaryBrush}" FontSize="12"
|
||||
FontFamily="Consolas"
|
||||
Text="76561197960272671"/>
|
||||
</Border>
|
||||
|
||||
<TextBlock Text="EXTRA STEPS NEEDED FOR STEAM VERSION"
|
||||
Style="{StaticResource FieldLabel}"/>
|
||||
<TextBlock Foreground="{StaticResource TextPrimaryBrush}" FontSize="13" Margin="0,0,0,12">
|
||||
Please note if using the steam version, you also need to do these extra steps:
|
||||
</TextBlock>
|
||||
|
||||
<StackPanel Margin="0,0,0,20">
|
||||
<TextBlock Foreground="{StaticResource TextPrimaryBrush}" FontSize="13" Margin="0,0,0,8">
|
||||
<Run FontWeight="Bold">1.</Run> Click on the VDF Generator tab
|
||||
</TextBlock>
|
||||
<TextBlock Foreground="{StaticResource TextPrimaryBrush}" FontSize="13" Margin="0,0,0,8">
|
||||
<Run FontWeight="Bold">2.</Run> Browse to your remote folder
|
||||
</TextBlock>
|
||||
<TextBlock Foreground="{StaticResource TextPrimaryBrush}" FontSize="13" Margin="0,0,0,20">
|
||||
<Run FontWeight="Bold">3.</Run> Click on 'Generate VDF'
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
<Border Background="#1A3A52" CornerRadius="8" Padding="16,12"
|
||||
BorderBrush="{StaticResource AccentGoldBrush}" BorderThickness="1">
|
||||
<TextBlock Foreground="{StaticResource TextPrimaryBrush}" FontSize="13" TextWrapping="Wrap">
|
||||
<Run FontWeight="Bold">Now startup your game, the saves should show</Run>
|
||||
</TextBlock>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
|
||||
<!-- INSTRUCTIONS - CRACKED PANEL -->
|
||||
<ScrollViewer x:Name="PanelInstructionsCracked" Visibility="Collapsed"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
HorizontalScrollBarVisibility="Disabled">
|
||||
<StackPanel Margin="32,28,32,28">
|
||||
<TextBlock Text="007: First Light - Save Game Transfer Instructions (Cracked)"
|
||||
Foreground="{StaticResource TextPrimaryBrush}"
|
||||
FontSize="16" FontWeight="Bold" Margin="0,0,0,20"/>
|
||||
|
||||
<TextBlock Text="STEPS TO RESIGN YOUR SAVE FILES"
|
||||
Style="{StaticResource FieldLabel}"/>
|
||||
|
||||
<StackPanel Margin="0,0,0,20">
|
||||
<TextBlock Foreground="{StaticResource TextPrimaryBrush}" FontSize="13" Margin="0,0,0,8">
|
||||
<Run FontWeight="Bold">1.</Run> Select your folder using the 'Browse' button with your NEW savegame (folder which contains index.save and data.save)
|
||||
</TextBlock>
|
||||
<TextBlock Foreground="{StaticResource TextPrimaryBrush}" FontSize="13" Margin="0,0,0,8">
|
||||
<Run FontWeight="Bold">2.</Run> Insert your steam Id which you want to set.
|
||||
</TextBlock>
|
||||
<TextBlock Foreground="{StaticResource TextPrimaryBrush}" FontSize="13" Margin="0,0,0,8">
|
||||
<Run FontWeight="Bold">3.</Run> Click on 'Resign Save Files'
|
||||
</TextBlock>
|
||||
<TextBlock Foreground="{StaticResource TextPrimaryBrush}" FontSize="13" Margin="0,0,0,20">
|
||||
<Run FontWeight="Bold">4.</Run> Place the savegame files in your original save directory.
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
<TextBlock Text="CRACKED VERSION SAVE FILE LOCATION"
|
||||
Style="{StaticResource FieldLabel}"/>
|
||||
<Border Background="#0D1E30" CornerRadius="8" Padding="12" Margin="0,0,0,20"
|
||||
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1">
|
||||
<TextBlock Foreground="{StaticResource TextSecondaryBrush}" FontSize="12"
|
||||
FontFamily="Consolas" TextWrapping="Wrap"
|
||||
Text="C:\Users\[username]\AppData\Roaming\GSE Saves\3768760\remote\KntSlotSaveFile-0"/>
|
||||
</Border>
|
||||
|
||||
<TextBlock Text="YOUR STEAM ID"
|
||||
Style="{StaticResource FieldLabel}"/>
|
||||
<Border Background="#0D1E30" CornerRadius="8" Padding="12" Margin="0,0,0,20"
|
||||
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1">
|
||||
<TextBlock Foreground="{StaticResource TextSecondaryBrush}" FontSize="12"
|
||||
FontFamily="Consolas"
|
||||
Text="76561197960272671"/>
|
||||
</Border>
|
||||
|
||||
<TextBlock Text="EXTRA STEPS NEEDED FOR CRACKED VERSION"
|
||||
Style="{StaticResource FieldLabel}"/>
|
||||
<TextBlock Foreground="{StaticResource TextPrimaryBrush}" FontSize="13" Margin="0,0,0,12">
|
||||
Please note that if using the cracked version you would possibly also need the userdata.zip
|
||||
</TextBlock>
|
||||
|
||||
<StackPanel Margin="0,0,0,20">
|
||||
<TextBlock Foreground="{StaticResource TextPrimaryBrush}" FontSize="13" Margin="0,0,0,8" TextWrapping="Wrap">
|
||||
Extract the contents of the zip in <Run FontFamily="Consolas">[YOUR 007 FIRST LIGHT INSTALLATION FOLDER]\Retail</Run>
|
||||
</TextBlock>
|
||||
<TextBlock Foreground="{StaticResource TextPrimaryBrush}" FontSize="13" Margin="0,0,0,8">
|
||||
Overwrite the existing steam_settings and userdata.
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
<Border Background="#3A2A1A" CornerRadius="8" Padding="16,12"
|
||||
BorderBrush="#CC6600" BorderThickness="1" Margin="0,0,0,20">
|
||||
<StackPanel>
|
||||
<TextBlock Foreground="#FF9933" FontSize="13" FontWeight="Bold" Margin="0,0,0,6">
|
||||
⚠ IMPORTANT WARNING
|
||||
</TextBlock>
|
||||
<TextBlock Foreground="{StaticResource TextPrimaryBrush}" FontSize="12" TextWrapping="Wrap">
|
||||
CREATE A BACKUP FIRST OF THE FOLDERS YOU'RE OVERWRITING AS YOU COULD GET INVALID TOKEN ERRORS IF DONE INCORRECTLY!
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<TextBlock Foreground="{StaticResource TextMutedBrush}" FontSize="11" Margin="0,0,0,20">
|
||||
Please note that the steam_settings and the userdata folders are from the v1.0.1 version of the game.
|
||||
</TextBlock>
|
||||
|
||||
<TextBlock Foreground="{StaticResource TextPrimaryBrush}" FontSize="13" Margin="0,0,0,8">
|
||||
See
|
||||
<Hyperlink NavigateUri="https://www.nexusmods.com/007firstlight/mods/44"
|
||||
RequestNavigate="Hyperlink_RequestNavigate"
|
||||
Foreground="{StaticResource AccentGoldBrush}">
|
||||
nexusmods.com/007firstlight/mods/44
|
||||
</Hyperlink>
|
||||
for the userdata.zip
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
<ScrollViewer x:Name="PanelResign" VerticalScrollBarVisibility="Auto"
|
||||
HorizontalScrollBarVisibility="Disabled">
|
||||
<StackPanel Margin="32,28,32,28">
|
||||
|
||||
<!-- Save Folder -->
|
||||
<TextBlock Text="SAVE FOLDER" Style="{StaticResource FieldLabel}"/>
|
||||
<Grid Margin="0,0,0,18">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBox x:Name="TxtResignFolder" Style="{StaticResource DarkTextBox}"
|
||||
IsReadOnly="True" Grid.Column="0"
|
||||
Text="Click Browse to select your save folder…"
|
||||
Foreground="{StaticResource TextMutedBrush}"/>
|
||||
<Button Grid.Column="1" Content="Browse…"
|
||||
Style="{StaticResource OutlineButton}"
|
||||
Margin="10,0,0,0" Click="BrowseResignFolder_Click"/>
|
||||
</Grid>
|
||||
|
||||
<!-- Target SteamID64 -->
|
||||
<TextBlock Text="TARGET STEAMID64 (the account you want to resign TO)"
|
||||
Style="{StaticResource FieldLabel}"/>
|
||||
<TextBox x:Name="TxtTargetSID" Style="{StaticResource DarkTextBox}"
|
||||
Margin="0,0,0,6"
|
||||
ToolTip="Your SteamID64 - find it at steamid.io"
|
||||
PreviewTextInput="NumericOnly_PreviewInput"/>
|
||||
<TextBlock Foreground="{StaticResource TextMutedBrush}" FontSize="11"
|
||||
Margin="0,0,0,18">
|
||||
Find your SteamID64 at
|
||||
<Hyperlink NavigateUri="https://steamid.io"
|
||||
RequestNavigate="Hyperlink_RequestNavigate"
|
||||
Foreground="{StaticResource AccentGoldBrush}">
|
||||
steamid.io
|
||||
</Hyperlink>
|
||||
- it looks like 76561197960272671
|
||||
</TextBlock>
|
||||
|
||||
<!-- Source SteamID64 (optional) -->
|
||||
<TextBlock Text="SOURCE STEAMID64 (optional - leave blank to auto-detect)"
|
||||
Style="{StaticResource FieldLabel}"/>
|
||||
<TextBox x:Name="TxtSourceSID" Style="{StaticResource DarkTextBox}"
|
||||
Margin="0,0,0,6"
|
||||
ToolTip="Only needed if auto-detect fails. The original account's SteamID64."
|
||||
PreviewTextInput="NumericOnly_PreviewInput"/>
|
||||
<TextBlock Foreground="{StaticResource TextMutedBrush}" FontSize="11"
|
||||
Margin="0,0,0,24">
|
||||
When left blank the tool will auto-detect from <Run FontFamily="Consolas">index.save</Run>
|
||||
and bruteforce the <Run FontFamily="Consolas">data.save</Run> key.
|
||||
</TextBlock>
|
||||
|
||||
<!-- Mismatch option -->
|
||||
<Border Background="#0D1E30" CornerRadius="8" Padding="16,12"
|
||||
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1"
|
||||
Margin="0,0,0,24">
|
||||
<StackPanel>
|
||||
<CheckBox x:Name="ChkAutoConfirm"
|
||||
Foreground="{StaticResource TextPrimaryBrush}"
|
||||
FontSize="13" IsChecked="False">
|
||||
<TextBlock TextWrapping="Wrap">
|
||||
Auto-confirm SteamID mismatches between
|
||||
<Run FontFamily="Consolas">index.save</Run> and
|
||||
<Run FontFamily="Consolas">data.save</Run>
|
||||
</TextBlock>
|
||||
</CheckBox>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<!-- Action Button -->
|
||||
<Button x:Name="BtnResign" Content="🔑 Resign Save Files"
|
||||
Style="{StaticResource GoldButton}"
|
||||
HorizontalAlignment="Stretch" Height="48"
|
||||
Click="BtnResign_Click"/>
|
||||
|
||||
<!-- Progress -->
|
||||
<ProgressBar x:Name="ResignProgress" Height="4" Margin="0,14,0,0"
|
||||
Background="#0D1E30" Foreground="{StaticResource AccentGoldBrush}"
|
||||
BorderThickness="0" Visibility="Collapsed" IsIndeterminate="True"/>
|
||||
|
||||
<!-- Inline result banner -->
|
||||
<Border x:Name="ResignResultBanner" Visibility="Collapsed"
|
||||
CornerRadius="8" Padding="16,12" Margin="0,14,0,0">
|
||||
<StackPanel>
|
||||
<TextBlock x:Name="ResignResultText"
|
||||
Foreground="White" FontSize="13"
|
||||
TextWrapping="Wrap"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
|
||||
<!-- DECRYPT PANEL -->
|
||||
<ScrollViewer x:Name="PanelDecrypt" Visibility="Collapsed"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
HorizontalScrollBarVisibility="Disabled">
|
||||
<StackPanel Margin="32,28,32,28">
|
||||
|
||||
<!-- Save Folder -->
|
||||
<TextBlock Text="SAVE FOLDER" Style="{StaticResource FieldLabel}"/>
|
||||
<Grid Margin="0,0,0,18">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBox x:Name="TxtDecryptFolder" Style="{StaticResource DarkTextBox}"
|
||||
IsReadOnly="True" Grid.Column="0"
|
||||
Text="Click Browse to select your save folder…"
|
||||
Foreground="{StaticResource TextMutedBrush}"/>
|
||||
<Button Grid.Column="1" Content="Browse…"
|
||||
Style="{StaticResource OutlineButton}"
|
||||
Margin="10,0,0,0" Click="BrowseDecryptFolder_Click"/>
|
||||
</Grid>
|
||||
|
||||
<!-- SteamID64 -->
|
||||
<TextBlock Text="STEAMID64 (optional - leave blank to auto-detect)"
|
||||
Style="{StaticResource FieldLabel}"/>
|
||||
<TextBox x:Name="TxtDecryptSID" Style="{StaticResource DarkTextBox}"
|
||||
Margin="0,0,0,6"
|
||||
PreviewTextInput="NumericOnly_PreviewInput"/>
|
||||
<TextBlock Foreground="{StaticResource TextMutedBrush}" FontSize="11"
|
||||
Margin="0,0,0,24">
|
||||
Leave blank to auto-detect from <Run FontFamily="Consolas">index.save</Run>.
|
||||
Output files will be saved next to the originals with a <Run FontFamily="Consolas">.decrypted</Run> extension.
|
||||
</TextBlock>
|
||||
|
||||
<!-- Action Button -->
|
||||
<Button x:Name="BtnDecrypt" Content="🔓 Decrypt Save Files"
|
||||
Style="{StaticResource GoldButton}"
|
||||
HorizontalAlignment="Stretch" Height="48"
|
||||
Click="BtnDecrypt_Click"/>
|
||||
|
||||
<!-- Progress -->
|
||||
<ProgressBar x:Name="DecryptProgress" Height="4" Margin="0,14,0,0"
|
||||
Background="#0D1E30" Foreground="{StaticResource AccentGoldBrush}"
|
||||
BorderThickness="0" Visibility="Collapsed" IsIndeterminate="True"/>
|
||||
|
||||
<!-- Inline result -->
|
||||
<Border x:Name="DecryptResultBanner" Visibility="Collapsed"
|
||||
CornerRadius="8" Padding="16,12" Margin="0,14,0,0">
|
||||
<TextBlock x:Name="DecryptResultText" Foreground="White"
|
||||
FontSize="13" TextWrapping="Wrap"/>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
|
||||
<!-- LOG PANEL -->
|
||||
<Grid x:Name="PanelLog" Visibility="Collapsed" Margin="32,28,32,28">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock Grid.Row="0" Text="OPERATION LOG"
|
||||
Style="{StaticResource FieldLabel}" Margin="0,0,0,10"/>
|
||||
|
||||
<Border Grid.Row="1" Background="#080F18" CornerRadius="8"
|
||||
BorderBrush="{StaticResource BorderBrush}" BorderThickness="1">
|
||||
<ScrollViewer x:Name="LogScroll"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
HorizontalScrollBarVisibility="Auto"
|
||||
Padding="4">
|
||||
<TextBlock x:Name="TxtLog"
|
||||
FontFamily="Consolas" FontSize="12"
|
||||
Foreground="{StaticResource TextSecondaryBrush}"
|
||||
Padding="12" TextWrapping="Wrap"/>
|
||||
</ScrollViewer>
|
||||
</Border>
|
||||
|
||||
<Button Grid.Row="2" Content="🗑 Clear Log"
|
||||
Style="{StaticResource OutlineButton}"
|
||||
HorizontalAlignment="Right" Margin="0,10,0,0"
|
||||
Click="ClearLog_Click"/>
|
||||
</Grid>
|
||||
|
||||
<!-- VDF GENERATOR PANEL -->
|
||||
<ScrollViewer x:Name="PanelVdf" Visibility="Collapsed"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
HorizontalScrollBarVisibility="Disabled">
|
||||
<StackPanel Margin="32,28,32,28">
|
||||
|
||||
<!-- Remote Folder -->
|
||||
<TextBlock Text="REMOTE FOLDER" Style="{StaticResource FieldLabel}"/>
|
||||
<Grid Margin="0,0,0,18">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBox x:Name="TxtVdfRemoteFolder" Style="{StaticResource DarkTextBox}"
|
||||
IsReadOnly="True" Grid.Column="0"
|
||||
Text="Click Browse to select the 'remote' folder…"
|
||||
Foreground="{StaticResource TextMutedBrush}"/>
|
||||
<Button Grid.Column="1" Content="Browse…"
|
||||
Style="{StaticResource OutlineButton}"
|
||||
Margin="10,0,0,0" Click="BrowseVdfRemoteFolder_Click"/>
|
||||
</Grid>
|
||||
|
||||
<!-- Description -->
|
||||
<TextBlock Foreground="{StaticResource TextMutedBrush}" FontSize="11"
|
||||
Margin="0,0,0,24">
|
||||
Select the <Run FontFamily="Consolas">remote</Run> folder from your Steam save directory
|
||||
(e.g., <Run FontFamily="Consolas">…\userdata\<AccountId>\3768760\remote</Run>)
|
||||
to generate the <Run FontFamily="Consolas">remotecache.vdf</Run> file.
|
||||
</TextBlock>
|
||||
|
||||
<!-- Action Button -->
|
||||
<Button x:Name="BtnGenerateVdf" Content="📦 Generate VDF"
|
||||
Style="{StaticResource GoldButton}"
|
||||
HorizontalAlignment="Stretch" Height="48"
|
||||
Click="BtnGenerateVdf_Click"/>
|
||||
|
||||
<!-- Progress -->
|
||||
<ProgressBar x:Name="VdfProgress" Height="4" Margin="0,14,0,0"
|
||||
Background="#0D1E30" Foreground="{StaticResource AccentGoldBrush}"
|
||||
BorderThickness="0" Visibility="Collapsed" IsIndeterminate="True"/>
|
||||
|
||||
<!-- Inline result banner -->
|
||||
<Border x:Name="VdfResultBanner" Visibility="Collapsed"
|
||||
CornerRadius="8" Padding="16,12" Margin="0,14,0,0">
|
||||
<StackPanel>
|
||||
<TextBlock x:Name="VdfResultText"
|
||||
Foreground="White" FontSize="13"
|
||||
TextWrapping="Wrap"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
|
||||
<!-- STATUS BAR -->
|
||||
<Border Grid.Row="3" Background="{StaticResource BgMidBrush}"
|
||||
BorderBrush="{StaticResource BorderBrush}" BorderThickness="0,1,0,0"
|
||||
Padding="28,8">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock x:Name="TxtStatusBar"
|
||||
Text="Click the 'Resign Save' tab and select a folder and enter your Target SteamID64 to get started."
|
||||
Foreground="{StaticResource TextMutedBrush}" FontSize="11"
|
||||
VerticalAlignment="Center"/>
|
||||
<TextBlock Grid.Column="1"
|
||||
Text="EonaCat.FirstLight.SaveTransfer"
|
||||
Foreground="{StaticResource TextMutedBrush}" FontSize="11"
|
||||
VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Window>
|
||||
Reference in New Issue
Block a user