1
0
Fork 0
mirror of https://github.com/atom0s/Steamless.git synced 2024-12-19 23:07:41 +01:00

Updated the project README.md

Updated the AboutView.
This commit is contained in:
atom0s 2022-03-27 00:19:57 -07:00
parent d97e1a4426
commit 6b7fa1d977
No known key found for this signature in database
GPG key ID: 37D5FD3494D79AF8
3 changed files with 318 additions and 252 deletions

View file

@ -1,63 +1,71 @@
# Steamless
[![Support via Github Sponsors](https://img.shields.io/badge/Github-Become%20a%20Sponsor-ff69b4.svg?style=flat&logo=GitHub)](https://github.com/users/atom0s/sponsorship) [![Support via PayPal](https://cdn.rawgit.com/twolfson/paypal-github-button/1.0.0/dist/button.svg)](https://www.paypal.me/atom0s)
Steamless is a DRM remover of the various SteamStub variants applied to applications and games released on Steam via the DRM tool in the Steamworks SDK.
Steamless is a DRM remover of the SteamStub variants.
Steamless aims to be a single solution for unpacking all variants of the SteamStub DRM, ranging from the very first version to the most recently released.
The goal of Steamless is to make a single solution for unpacking all Steam DRM packed files. Steamless aims to support as many games as possible.<br>
However, due to personal limited funds, I cannot test every game myself.
_However, due to personal limited funds, I cannot test every game myself._
# Donations
# What Steamless Wont Do For You
Want to say thanks for my work on Steamless? Feel free to donate or sponsor me:
Steamless removes the SteamStub DRM protection from games that have it, nothing more.<br>
If the game you are unpacking makes use of the Steamworks API, Steamless **WILL NOT** remove this layer of DRM.
* **GitHub:** https://github.com/users/atom0s/sponsorship
* **Paypal:** https://www.paypal.me/atom0s
* **Patreon:** https://www.patreon.com/atom0s
* Steamless will not remove the Steamworks API integrations in any game.
* Steamless will not handle CEG (Custom Executable Generation) DRM that is used by some games.
* Steamless is not made to assist with piracy.
* Steamless is not made to assist with bypassing anti-cheats or other protections.
This project makes static analysis on the games files that are protected with SteamStub possible.<br>
Will this allow some games to run without Steam? Yes. But I do not promote piracy and will not help with it at all.
# What Steamless Will Do
Do not contact me or any contributor to this project with assistance on how to make a game work without Steam.
Steamless will remove the SteamStub DRM protection layer that is applied via the DRM tool from the Steamworks SDK.
# What Steamless Wont Do
Steamless **WILL NEVER** do any of the following:
* Steamless will never remove the Steamworks API integration. (via steam_api.dll/steam_api64.dll)
* Steamless will never include or distribute any emulator for the Steamworks API integration.
* Steamless will never handle Valve's CEG (Custom Executable Generation) DRM that is used on some older games.
* Steamless will never promote, encourage, or assist with piracy.
* Steamless will never assist with bypassing anti-cheats or other protections in place by games.
Do not ask for help with running games without Steam. Your requests will be ignored/blocked.
That is not the scope or goal of this project.
# What is SteamStub DRM?
```
Steamworks Digital Rights Management wraps your game's compiled executable and checks to make sure that it is running under an authenticated instance of Steam. This DRM solution is the same as the one used to protect games like Half-Life 2 and Counter-Strike: Source. Steamworks DRM has been heavily road-tested and is customer-friendly.
In addition to DRM solutions, Steamworks also offers protection for game through day one release by shipping encrypted media to stores worldwide. There's no worry that your game will leak early from the manufacturing path, because your game stays encrypted until the moment you decide to release it. This protection can be added to your game simply by handing us finished bits or a gold master.
From the Steamworks documentation:
ref: hxxps://partner.steamgames.com/documentation/api
```
> Steamworks Digital Rights Management wraps your game's compiled executable and checks to make sure that it is running under an authenticated instance of Steam. This DRM solution is the same as the one used to protect games like Half-Life 2 and Counter-Strike: Source. Steamworks DRM has been heavily road-tested and is customer-friendly.
> In addition to DRM solutions, Steamworks also offers protection for game through day one release by shipping encrypted media to stores worldwide. There's no worry that your game will leak early from the manufacturing path, because your game stays encrypted until the moment you decide to release it. This protection can be added to your game simply by handing us finished bits or a gold master. <br><br>
> ref: hxxps://partner.steamgames.com/documentation/api
# Supported Versions
Steamless currently supports the following SteamStub DRM variants:
* **SteamStub Variant 1**
* There is currently no support for this version of the DRM.
* 32bit version is supported. _(Support for this is only tested with 1 file so far.)_
* **SteamStub Variant 2**
* **Variant 2.0.0**
* 32bit version of this variant is supported.
* **Variant 2.0.1**
* 32bit version of this variant is supported.
* **v2.0.0**
* 32bit version is supported.
* **v2.0.1**
* 32bit version is supported.
* **SteamStub Variant 3**
* **Variant 3.0.0**
* 32bit version of this variant is supported.
* 64bit version of this variant is supported.
* **Variant 3.0.1**
* 32bit version of this variant is supported.
* 64bit version of this variant is supported.
* **Variant 3.1.0**
* 32bit version of this variant is supported.
* 64bit version of this variant is supported.
* **Variant 3.1.2**
* 32bit version of this variant is supported.
* 64bit version of this variant is supported.
* **v3.0.0**
* 32bit version is supported.
* 64bit version is supported.
* **v3.0.1**
* 32bit version is supported.
* 64bit version is supported.
* **v3.1.0**
* 32bit version is supported.
* 64bit version is supported.
* **v3.1.2**
* 32bit version is supported.
* 64bit version is supported.
*Please note; these version numbers are superficial. They are an assumed version based on major changes to the DRM over its lifespan.*
_**Note:** Version numbers are not 'real'. They are superficial and are simply assumed versions based on major changes to the DRM and what has been observed in the various submitted file samples. A better versioning system may come at a later date._
# Legal
@ -90,7 +98,7 @@ You can find his information here: http://pcgamingwiki.com/wiki/User:Cyanic/Stea
# Compiling Steamless
Steamless is coded using Visual Studio 2015 (Update 3) at this time.<br>
Steamless is coded using Visual Studio 2022.<br>
To compile, you should only need to load the sln file and compile as-is.
No changes should be needed to the solution or source.

View file

@ -997,6 +997,12 @@ Special Thanks
<Canvas Width="48" Height="48" Clip="F1 M 0,0L 48,0L 48,48L 0,48L 0,0" UseLayoutRounding="False" x:Key="appbar_paypal">
<Path Width="28.5" Height="29" Canvas.Left="9.5" Canvas.Top="9" Stretch="Fill" Fill="#FFFFFFFF" Data="F1 M 38,18.5C 38,23.1944 33.9706,29 29,29L 21.4038,29L 19.5,38L 12.5,38L 12.8702,36.25L 18.25,36.25L 20.1538,27.25L 27.75,27.25C 32.7206,27.25 36.75,21.4444 36.75,16.75C 36.75,15.7661 36.573,14.909 36.2474,14.169C 37.3489,15.1928 38,16.613 38,18.5 Z M 15,9L 26,9L 27,9L 27,9.02539C 31.4999,9.25893 35,12 35,15.5C 35,21 30.9706,26 26,26L 18.6538,26L 16.75,35L 9.5,35L 15,9 Z M 28.25,17C 28.1335,15.6019 27.4084,14.8816 26.2616,14.5L 21.0865,14.5L 19.6058,21.5L 23.4968,21.5C 26.4615,20.5978 28.25,18.6388 28.25,17 Z " />
</Canvas>
<Canvas Width="48" Height="48" Clip="F1 M 0,0L 48,0L 48,48L 0,48L 0,0" UseLayoutRounding="False" x:Key="appbar_github">
<Path Width="30" Height="30" Canvas.Left="0" Canvas.Top="0" Stretch="Fill" Fill="#FFFFFFFF" Data="M15,3C8.373,3,3,8.373,3,15c0,5.623,3.872,10.328,9.092,11.63C12.036,26.468,12,26.28,12,26.047v-2.051 c-0.487,0-1.303,0-1.508,0c-0.821,0-1.551-0.353-1.905-1.009c-0.393-0.729-0.461-1.844-1.435-2.526 c-0.289-0.227-0.069-0.486,0.264-0.451c0.615,0.174,1.125,0.596,1.605,1.222c0.478,0.627,0.703,0.769,1.596,0.769 c0.433,0,1.081-0.025,1.691-0.121c0.328-0.833,0.895-1.6,1.588-1.962c-3.996-0.411-5.903-2.399-5.903-5.098 c0-1.162,0.495-2.286,1.336-3.233C9.053,10.647,8.706,8.73,9.435,8c1.798,0,2.885,1.166,3.146,1.481C13.477,9.174,14.461,9,15.495,9 c1.036,0,2.024,0.174,2.922,0.483C18.675,9.17,19.763,8,21.565,8c0.732,0.731,0.381,2.656,0.102,3.594 c0.836,0.945,1.328,2.066,1.328,3.226c0,2.697-1.904,4.684-5.894,5.097C18.199,20.49,19,22.1,19,23.313v2.734 c0,0.104-0.023,0.179-0.035,0.268C23.641,24.676,27,20.236,27,15C27,8.373,21.627,3,15,3z" />
</Canvas>
<Canvas Width="48" Height="48" Clip="F1 M 0,0L 48,0L 48,48L 0,48L 0,0" UseLayoutRounding="False" x:Key="appbar_patreon">
<Path Width="30" Height="30" Canvas.Left="0" Canvas.Top="0" Stretch="Fill" Fill="#FFFFFFFF" Data="M15.386.524c-4.764 0-8.64 3.876-8.64 8.64 0 4.75 3.876 8.613 8.64 8.613 4.75 0 8.614-3.864 8.614-8.613C24 4.4 20.136.524 15.386.524M.003 23.537h4.22V.524H.003" />
</Canvas>
<Canvas Width="48" Height="48" Clip="F1 M 0,0L 48,0L 48,48L 0,48L 0,0" x:Key="appbar_people_status">
<Path Width="22" Height="27" Canvas.Left="13" Canvas.Top="11" Stretch="Fill" Fill="#FFFFFFFF" Data="F1 M 34,37L 29,37C 28.4477,37 28,36.5523 28,36L 28,31C 28,30.4477 28.4477,30 29,30L 34,30C 34.5522,30 35,30.4477 35,31L 35,36C 35,36.5523 34.5522,37 34,37 Z M 24,11C 26.7614,11 29,13.2386 29,16C 29,18.7614 26.7614,21 24,21C 21.2386,21 19,18.7614 19,16C 19,13.2386 21.2386,11 24,11 Z M 19,28C 18.3333,28.3333 17,30.9999 17,30.9999C 17,30.9999 16.3333,32 16,36L 13,35L 14,30C 14,30 16,23 20,23.0001L 27.9999,23.0001C 30.5884,23 32.3393,25.9312 33.2528,28L 29,28L 27.9999,28C 26.8954,28 25.9999,28.8955 25.9999,30L 26,37.9176L 24.5,38C 22.3912,38 20.3954,37.5165 18.6173,36.6543L 19,28 Z " />
</Canvas>

View file

@ -28,12 +28,22 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="450" SnapsToDevicePixels="True">
mc:Ignorable="d" d:DesignHeight="600" d:DesignWidth="450"
SnapsToDevicePixels="True">
<!-- Main Content -->
<Grid x:Name="LayoutRoot" SnapsToDevicePixels="True">
<StackPanel VerticalAlignment="Top" HorizontalAlignment="Stretch" Margin="0,20,0,0" SnapsToDevicePixels="True">
<!-- Logo -->
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- Logo -->
<StackPanel Grid.Row="0" Margin="0">
<Image Source="../Assets/steam.png" Width="150" Margin="0" />
<Label Content="Steamless" FontSize="32" FontWeight="Bold" HorizontalAlignment="Center" Margin="0" Padding="0" SnapsToDevicePixels="True" RenderOptions.EdgeMode="Aliased">
<Label.Foreground>
@ -47,126 +57,221 @@
</Label.Effect>
</Label>
<TextBlock Foreground="#F7F7F7" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding MainWindow.SteamlessVersion, Source={StaticResource ViewModelLocator}, FallbackValue='0.0.0.0', StringFormat={}Version: {0}}" />
</StackPanel>
<!-- Project Links -->
<Border Margin="0,15,0,0" Background="#80000000" BorderBrush="#40595959" BorderThickness="0,1,0,1" ClipToBounds="True">
<Border Background="Transparent" BorderBrush="#40595959" BorderThickness="0,10,0,0" Margin="0,-11,0,2">
<Border.Effect>
<DropShadowEffect ShadowDepth="0" BlurRadius="10"/>
</Border.Effect>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Label Margin="2">
<Label.Style>
<Style TargetType="Label">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Background" Value="#0F000000" />
</Trigger>
</Style.Triggers>
</Style>
</Label.Style>
<Hyperlink NavigateUri="http://atom0s.com/" Foreground="#c0dd65">Homepage
<Hyperlink.TextDecorations>
<TextDecorationCollection>
<TextDecoration PenThicknessUnit="FontRecommended" PenOffset="3">
<TextDecoration.Pen>
<Pen Thickness="2" Brush="#88A825">
<Pen.DashStyle>
<DashStyle Dashes="2"/>
</Pen.DashStyle>
</Pen>
</TextDecoration.Pen>
</TextDecoration>
</TextDecorationCollection>
</Hyperlink.TextDecorations>
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
<BulletDecorator HorizontalAlignment="Center" VerticalAlignment="Center">
<BulletDecorator.Bullet>
<Ellipse Height="3" Width="3" Fill="White" Margin="2" />
</BulletDecorator.Bullet>
</BulletDecorator>
<Label Margin="2">
<Label.Style>
<Style TargetType="Label">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Background" Value="#0F000000" />
</Trigger>
</Style.Triggers>
</Style>
</Label.Style>
<Hyperlink NavigateUri="http://atom0s.com/forums/" Foreground="#c0dd65">Forums
<Hyperlink.TextDecorations>
<TextDecorationCollection>
<TextDecoration PenThicknessUnit="FontRecommended" PenOffset="3">
<TextDecoration.Pen>
<Pen Thickness="2" Brush="#88A825">
<Pen.DashStyle>
<DashStyle Dashes="2"/>
</Pen.DashStyle>
</Pen>
</TextDecoration.Pen>
</TextDecoration>
</TextDecorationCollection>
</Hyperlink.TextDecorations>
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
<BulletDecorator HorizontalAlignment="Center" VerticalAlignment="Center">
<BulletDecorator.Bullet>
<Ellipse Height="3" Width="3" Fill="White" Margin="2" />
</BulletDecorator.Bullet>
</BulletDecorator>
<Label Margin="2">
<Label.Style>
<Style TargetType="Label">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Background" Value="#0F000000" />
</Trigger>
</Style.Triggers>
</Style>
</Label.Style>
<Hyperlink NavigateUri="http://git.atom0s.com/" Foreground="#c0dd65">Repositories
<Hyperlink.TextDecorations>
<TextDecorationCollection>
<TextDecoration PenThicknessUnit="FontRecommended" PenOffset="3">
<TextDecoration.Pen>
<Pen Thickness="2" Brush="#88A825">
<Pen.DashStyle>
<DashStyle Dashes="2"/>
</Pen.DashStyle>
</Pen>
</TextDecoration.Pen>
</TextDecoration>
</TextDecorationCollection>
</Hyperlink.TextDecorations>
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
</StackPanel>
</Border>
<!-- Project Links -->
<Border Grid.Row="1" Margin="0,15,0,0" Background="#80000000" BorderBrush="#40595959" BorderThickness="0,1,0,1" ClipToBounds="True">
<Border Background="Transparent" BorderBrush="#40595959" BorderThickness="0,10,0,0" Margin="0,-11,0,2">
<Border.Effect>
<DropShadowEffect ShadowDepth="0" BlurRadius="10"/>
</Border.Effect>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Label Margin="2">
<Label.Style>
<Style TargetType="Label">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Background" Value="#0F000000" />
</Trigger>
</Style.Triggers>
</Style>
</Label.Style>
<Hyperlink NavigateUri="https://atom0s.com/" Foreground="#c0dd65">Homepage
<Hyperlink.TextDecorations>
<TextDecorationCollection>
<TextDecoration PenThicknessUnit="FontRecommended" PenOffset="3">
<TextDecoration.Pen>
<Pen Thickness="2" Brush="#88A825">
<Pen.DashStyle>
<DashStyle Dashes="2"/>
</Pen.DashStyle>
</Pen>
</TextDecoration.Pen>
</TextDecoration>
</TextDecorationCollection>
</Hyperlink.TextDecorations>
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
<BulletDecorator HorizontalAlignment="Center" VerticalAlignment="Center">
<BulletDecorator.Bullet>
<Ellipse Height="3" Width="3" Fill="White" Margin="2" />
</BulletDecorator.Bullet>
</BulletDecorator>
<Label Margin="2">
<Label.Style>
<Style TargetType="Label">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Background" Value="#0F000000" />
</Trigger>
</Style.Triggers>
</Style>
</Label.Style>
<Hyperlink NavigateUri="https://twitter.com/atom0s" Foreground="#c0dd65">Twitter
<Hyperlink.TextDecorations>
<TextDecorationCollection>
<TextDecoration PenThicknessUnit="FontRecommended" PenOffset="3">
<TextDecoration.Pen>
<Pen Thickness="2" Brush="#88A825">
<Pen.DashStyle>
<DashStyle Dashes="2"/>
</Pen.DashStyle>
</Pen>
</TextDecoration.Pen>
</TextDecoration>
</TextDecorationCollection>
</Hyperlink.TextDecorations>
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
<BulletDecorator HorizontalAlignment="Center" VerticalAlignment="Center">
<BulletDecorator.Bullet>
<Ellipse Height="3" Width="3" Fill="White" Margin="2" />
</BulletDecorator.Bullet>
</BulletDecorator>
<Label Margin="2">
<Label.Style>
<Style TargetType="Label">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Background" Value="#0F000000" />
</Trigger>
</Style.Triggers>
</Style>
</Label.Style>
<Hyperlink NavigateUri="https://github.com/atom0s/Steamless" Foreground="#c0dd65">GitHub Repository
<Hyperlink.TextDecorations>
<TextDecorationCollection>
<TextDecoration PenThicknessUnit="FontRecommended" PenOffset="3">
<TextDecoration.Pen>
<Pen Thickness="2" Brush="#88A825">
<Pen.DashStyle>
<DashStyle Dashes="2"/>
</Pen.DashStyle>
</Pen>
</TextDecoration.Pen>
</TextDecoration>
</TextDecorationCollection>
</Hyperlink.TextDecorations>
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
</StackPanel>
</Border>
</Border>
<!-- Credits -->
<StackPanel HorizontalAlignment="Center" Margin="0,10,0,0">
<!-- Donation Info -->
<StackPanel Grid.Row="2" HorizontalAlignment="Center" Margin="0,0,0,0">
<StackPanel.Resources>
<Style x:Key="StackPanelLabelCenter" TargetType="{x:Type Label}">
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="Padding" Value="1" />
</Style>
<Style BasedOn="{StaticResource StackPanelLabelCenter}" TargetType="{x:Type Label}" />
</StackPanel.Resources>
<Label Content="Donations" FontSize="18" FontWeight="Bold" Margin="0" Padding="0" />
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Label ToolTip="Donate via Paypal" Width="18" Height="18" Background="#0689c1" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<Label.OpacityMask>
<VisualBrush Visual="{StaticResource appbar_paypal}" />
</Label.OpacityMask>
<Hyperlink NavigateUri="https://www.paypal.me/atom0s" Foreground="Transparent" FontSize="24">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
<Label ToolTip="Donate via Paypal" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<Hyperlink NavigateUri="https://www.paypal.me/atom0s" Foreground="#c0dd65" >Donate via Paypal
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
</StackPanel>
<BulletDecorator HorizontalAlignment="Center" VerticalAlignment="Center">
<BulletDecorator.Bullet>
<Ellipse Height="3" Width="3" Fill="White" Margin="5" />
</BulletDecorator.Bullet>
</BulletDecorator>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Label ToolTip="Sponsor via GitHub" Width="18" Height="18" Background="#FFFFFF" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<Label.OpacityMask>
<VisualBrush Visual="{StaticResource appbar_github}" />
</Label.OpacityMask>
<Hyperlink NavigateUri="https://github.com/sponsors/atom0s" Foreground="Transparent" FontSize="24">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
<Label ToolTip="Sponsor via GitHub" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<Hyperlink NavigateUri="https://github.com/sponsors/atom0s" Foreground="#c0dd65" >Sponsor via GitHub
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
</StackPanel>
<BulletDecorator HorizontalAlignment="Center" VerticalAlignment="Center">
<BulletDecorator.Bullet>
<Ellipse Height="3" Width="3" Fill="White" Margin="5" />
</BulletDecorator.Bullet>
</BulletDecorator>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Label ToolTip="Sponsor via Patreon" Width="18" Height="18" Background="#FF424D" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<Label.OpacityMask>
<VisualBrush Visual="{StaticResource appbar_patreon}" />
</Label.OpacityMask>
<Hyperlink NavigateUri="https://www.patreon.com/atom0s" Foreground="Transparent" FontSize="24">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
<Label ToolTip="Sponsor via Patreon" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<Hyperlink NavigateUri="https://www.patreon.com/atom0s" Foreground="#c0dd65" >Sponsor via Patreon
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
</StackPanel>
</StackPanel>
</StackPanel>
<!-- Credits -->
<StackPanel Grid.Row="3" Margin="0">
<StackPanel HorizontalAlignment="Center" Margin="0,0,0,0">
<StackPanel.Resources>
<Style x:Key="StackPanelLabelCenter" TargetType="{x:Type Label}">
<Setter Property="HorizontalAlignment" Value="Center" />
@ -191,97 +296,45 @@
<Label Content="Mahapps.Metro &amp; Newtonsoft Json" />
<Label Content="Oren Nachman, Massimo Savazzi, Templarian - XAML Icons" />
</StackPanel>
</StackPanel>
<!-- Donation Info -->
<Border BorderThickness="0,0,0,1.5" Margin="5" Padding="0">
<Border.BorderBrush>
<LinearGradientBrush StartPoint="0,1" EndPoint="1,0" Opacity="0.7">
<GradientStop Offset="0.2" Color="#00000000"/>
<GradientStop Offset="0.5" Color="White"/>
<GradientStop Offset="0.8" Color="#00000000"/>
</LinearGradientBrush>
</Border.BorderBrush>
</Border>
<StackPanel HorizontalAlignment="Center" Margin="0,0,0,0">
<StackPanel.Resources>
<Style x:Key="StackPanelLabelCenter" TargetType="{x:Type Label}">
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="Padding" Value="1" />
</Style>
<Style BasedOn="{StaticResource StackPanelLabelCenter}" TargetType="{x:Type Label}" />
</StackPanel.Resources>
<Label Content="Donations" FontSize="18" FontWeight="Bold" Margin="0" Padding="0" />
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Label ToolTip="Donate via Paypal" Width="24" Height="24" Background="#0689c1" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<Label.OpacityMask>
<VisualBrush Visual="{StaticResource appbar_paypal}" />
</Label.OpacityMask>
<Hyperlink NavigateUri="https://www.paypal.me/atom0s" Foreground="Transparent" FontSize="24">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
<Label ToolTip="Donate via Paypal" Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<Hyperlink NavigateUri="https://www.paypal.me/atom0s" Foreground="#c0dd65" >Donate via Paypal
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<i:InvokeCommandAction Command="{Binding Path=MainWindow.OnOpenHyperlinkCommand, Source={StaticResource ViewModelLocator}}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Hyperlink}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</Label>
</StackPanel>
<Border BorderThickness="0,0,0,1.5" Margin="5" Padding="0">
<Border.BorderBrush>
<LinearGradientBrush StartPoint="0,1" EndPoint="1,0" Opacity="0.7">
<GradientStop Offset="0.2" Color="#00000000"/>
<GradientStop Offset="0.5" Color="White"/>
<GradientStop Offset="0.8" Color="#00000000"/>
</LinearGradientBrush>
</Border.BorderBrush>
</Border>
</StackPanel>
<!-- Important Information, Legal, Notes -->
<Border Grid.Row="4" BorderBrush="#595959" BorderThickness="1" Margin="5">
<Border.Background>
<LinearGradientBrush StartPoint=".5,0" EndPoint=".5,1" RenderOptions.EdgeMode="Aliased">
<GradientStop Color="#252525" Offset="0" RenderOptions.EdgeMode="Aliased" />
<GradientStop Color="#161616" Offset="0.9" RenderOptions.EdgeMode="Aliased" />
</LinearGradientBrush>
</Border.Background>
<ScrollViewer Margin="1" BorderBrush="Transparent" BorderThickness="1" VerticalAlignment="Stretch">
<StackPanel>
<StackPanel.Resources>
<Style x:Key="LegalInformationLabelHeader" TargetType="{x:Type Label}">
<Setter Property="FontSize" Value="18" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Foreground" Value="#FFA8A8A8" />
<Setter Property="HorizontalAlignment" Value="Left" />
</Style>
<Style x:Key="LegalInformationTextBlock" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="#E0FFFFFF" />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="Margin" Value="10,0,10,10" />
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
<Style BasedOn="{StaticResource LegalInformationTextBlock}" TargetType="{x:Type TextBlock}" />
</StackPanel.Resources>
<!-- Important Information, Legal, Notes -->
<Border BorderBrush="#595959" BorderThickness="1" Margin="5">
<Border.Background>
<LinearGradientBrush StartPoint=".5,0" EndPoint=".5,1" RenderOptions.EdgeMode="Aliased">
<GradientStop Color="#252525" Offset="0" RenderOptions.EdgeMode="Aliased" />
<GradientStop Color="#161616" Offset="0.9" RenderOptions.EdgeMode="Aliased" />
</LinearGradientBrush>
</Border.Background>
<ScrollViewer Margin="1" BorderBrush="Transparent" BorderThickness="1" Height="125">
<StackPanel>
<StackPanel.Resources>
<Style x:Key="LegalInformationLabelHeader" TargetType="{x:Type Label}">
<Setter Property="FontSize" Value="18" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Foreground" Value="#FFA8A8A8" />
<Setter Property="HorizontalAlignment" Value="Left" />
</Style>
<Style x:Key="LegalInformationTextBlock" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="#E0FFFFFF" />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="Margin" Value="10,0,10,10" />
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
<Style BasedOn="{StaticResource LegalInformationTextBlock}" TargetType="{x:Type TextBlock}" />
</StackPanel.Resources>
<!-- Donation Information -->
<Label Content="Donations" Style="{StaticResource LegalInformationLabelHeader}" />
<TextBlock>
<!-- Donation Information -->
<Label Content="Donations" Style="{StaticResource LegalInformationLabelHeader}" />
<TextBlock>
Steamless is provided, as-is, for free. Donations are a way for users to show their support for my work.
I do not accept donations in the attempt to assist with pirating games or other illegal activities. Do
not contact me attempting to get help with pirating a game or any other illegal activity, I will not respond.
</TextBlock>
</TextBlock>
<!-- Legal Information -->
<Label Content="Legal Information / Warranty" Style="{StaticResource LegalInformationLabelHeader}" />
<TextBlock>
<!-- Legal Information -->
<Label Content="Legal Information / Warranty" Style="{StaticResource LegalInformationLabelHeader}" />
<TextBlock>
Steamless is released under the following license:
<LineBreak />
Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International
@ -303,14 +356,13 @@
<LineBreak />
All work is original and done for educational purposes.
<LineBreak /><LineBreak />
Steam © 2003 - 2020 Valve Corporation. All rights reserved.
</TextBlock>
</StackPanel>
</ScrollViewer>
</Border>
Steam © 2003 - 2022 Valve Corporation. All rights reserved.
</TextBlock>
</StackPanel>
</ScrollViewer>
</Border>
<!-- Close Button -->
<Button Content="Close" Width="125" Margin="2,2,2,12" HorizontalAlignment="Center" VerticalAlignment="Center" Command="{Binding MainWindow.OnShowAboutViewCommand, Source={StaticResource ViewModelLocator}}" />
</StackPanel>
<!-- Close Button -->
<Button Grid.Row="5" Content="Close" Width="125" Margin="4" HorizontalAlignment="Center" VerticalAlignment="Center" Command="{Binding MainWindow.OnShowAboutViewCommand, Source={StaticResource ViewModelLocator}}" />
</Grid>
</UserControl>