1
0
Fork 0
mirror of https://github.com/atom0s/Steamless.git synced 2024-12-19 23:07:41 +01:00
This commit is contained in:
atom0s 2019-05-28 19:11:43 -07:00
commit e90195a0ec
75 changed files with 245 additions and 158 deletions

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -31,7 +31,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCompany("atom0s")]
[assembly: AssemblyProduct("ExamplePlugin")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2018")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -36,6 +36,7 @@ namespace Steamless.API.Model
this.KeepBindSection = false;
this.DumpPayloadToDisk = false;
this.DumpSteamDrmpToDisk = false;
this.UseExperimentalFeatures = false;
}
/// <summary>
@ -43,8 +44,8 @@ namespace Steamless.API.Model
/// </summary>
public bool VerboseOutput
{
get { return this.Get<bool>("VerboseOutput"); }
set { this.Set("VerboseOutput", value); }
get => this.Get<bool>("VerboseOutput");
set => this.Set("VerboseOutput", value);
}
/// <summary>
@ -52,8 +53,8 @@ namespace Steamless.API.Model
/// </summary>
public bool KeepBindSection
{
get { return this.Get<bool>("KeepBindSection"); }
set { this.Set("KeepBindSection", value); }
get => this.Get<bool>("KeepBindSection");
set => this.Set("KeepBindSection", value);
}
/// <summary>
@ -61,8 +62,8 @@ namespace Steamless.API.Model
/// </summary>
public bool DumpPayloadToDisk
{
get { return this.Get<bool>("DumpPayloadToDisk"); }
set { this.Set("DumpPayloadToDisk", value); }
get => this.Get<bool>("DumpPayloadToDisk");
set => this.Set("DumpPayloadToDisk", value);
}
/// <summary>
@ -70,8 +71,17 @@ namespace Steamless.API.Model
/// </summary>
public bool DumpSteamDrmpToDisk
{
get { return this.Get<bool>("DumpSteamDrmpToDisk"); }
set { this.Set("DumpSteamDrmpToDisk", value); }
get => this.Get<bool>("DumpSteamDrmpToDisk");
set => this.Set("DumpSteamDrmpToDisk", value);
}
/// <summary>
/// Gets or sets the use experimental features option value.
/// </summary>
public bool UseExperimentalFeatures
{
get => this.Get<bool>("UseExperimentalFeatures");
set => this.Set("UseExperimentalFeatures", value);
}
}
}

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -70,8 +70,8 @@ namespace Steamless.API.Model
/// </summary>
private EventHandlerList Events
{
get { return this.Get<EventHandlerList>("Events"); }
set { this.Set("Events", value); }
get => this.Get<EventHandlerList>("Events");
set => this.Set("Events", value);
}
/// <summary>
@ -79,8 +79,8 @@ namespace Steamless.API.Model
/// </summary>
public event EventHandler<NavigatedEventArgs> NavigatedFrom
{
add { this.Events.AddHandler("NavigatedFromEvent", value); }
remove { this.Events.RemoveHandler("NavigatedFromEvent", value); }
add => this.Events.AddHandler("NavigatedFromEvent", value);
remove => this.Events.RemoveHandler("NavigatedFromEvent", value);
}
/// <summary>
@ -88,8 +88,8 @@ namespace Steamless.API.Model
/// </summary>
public event EventHandler<NavigatedEventArgs> NavigatedTo
{
add { this.Events.AddHandler("NavigatedToEvent", value); }
remove { this.Events.RemoveHandler("NavigatedToEvent", value); }
add => this.Events.AddHandler("NavigatedToEvent", value);
remove => this.Events.RemoveHandler("NavigatedToEvent", value);
}
/// <summary>

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -31,7 +31,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCompany("atom0s")]
[assembly: AssemblyProduct("Steamless.API")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2018")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -187,20 +187,16 @@ namespace Steamless.Unpacker.Variant20.x86
if (BitConverter.ToUInt32(this.File.FileData, (int)fileOffset - 4) != 0xC0DEC0DE)
return false;
uint structOffset;
uint structSize;
uint structXorKey;
// Disassemble the file to locate the needed DRM information..
if (!this.DisassembleFile(out structOffset, out structSize, out structXorKey))
if (!this.DisassembleFile(out var structOffset, out var structSize, out var structXorKey))
return false;
// Obtain the DRM header data..
var headerData = new byte[structSize];
Array.Copy(this.File.FileData, this.File.GetFileOffsetFromRva((uint)structOffset), headerData, 0, structSize);
Array.Copy(this.File.FileData, this.File.GetFileOffsetFromRva(structOffset), headerData, 0, structSize);
// Xor decode the header data..
this.XorKey = SteamStubHelpers.SteamXor(ref headerData, (uint)headerData.Length, (uint)structXorKey);
this.XorKey = SteamStubHelpers.SteamXor(ref headerData, (uint)headerData.Length, structXorKey);
// Determine how to handle the header based on the size..
if ((structSize / 4) == 0xD0)
@ -325,7 +321,7 @@ namespace Steamless.Unpacker.Variant20.x86
Array.Copy(this.SteamDrmpData, drmpOffset, drmpOffsetData, 0, 1024);
// Obtain the offsets from the file data..
var drmpOffsets = this.GetSteamDrmpOffsets(drmpOffsetData);
var drmpOffsets = (this.Options.UseExperimentalFeatures) ? this.GetSteamDrmpOffsetsDynamic(drmpOffsetData) : this.GetSteamDrmpOffsets(drmpOffsetData);
if (drmpOffsets.Count != 8)
return false;
@ -557,14 +553,14 @@ namespace Steamless.Unpacker.Variant20.x86
if (inst.Mnemonic == ud_mnemonic_code.UD_Imov && inst.Operands[0].Type == ud_type.UD_OP_MEM && inst.Operands[1].Type == ud_type.UD_OP_IMM)
{
if (structOffset == 0)
structOffset = (uint)(inst.Operands[1].LvalUDWord - this.File.NtHeaders.OptionalHeader.ImageBase);
structOffset = inst.Operands[1].LvalUDWord - this.File.NtHeaders.OptionalHeader.ImageBase;
else
structXorKey = (uint)inst.Operands[1].LvalUDWord;
structXorKey = inst.Operands[1].LvalUDWord;
}
// Looks for: mov reg, immediate
if (inst.Mnemonic == ud_mnemonic_code.UD_Imov && inst.Operands[0].Type == ud_type.UD_OP_REG && inst.Operands[1].Type == ud_type.UD_OP_IMM)
structSize = (uint)inst.Operands[1].LvalUDWord * 4;
structSize = inst.Operands[1].LvalUDWord * 4;
}
offset = size = xorKey = 0;
@ -615,6 +611,97 @@ namespace Steamless.Unpacker.Variant20.x86
return offsets;
}
/// <summary>
/// Obtains the needed DRM offsets from the SteamDRMP.dll file. (Dynamically via disassembling.)
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
private List<int> GetSteamDrmpOffsetsDynamic(byte[] data)
{
Disassembler disasm = null;
var offsets = new List<int>();
var count = 0;
/**
* Assumed order of the offset values:
* - Flags (mov)
* - SteamAppId (mov)
* - OEP (mov)
* - Code Section VA (mov)
* - Code Section Size (mov)
* - Code Section AES Key (lea)
* - Code Section AES IV (offset from above lea)
* - Stolen Bytes (add)
*/
try
{
var skipMov = false;
// Disassemble the incoming block of data to look for the needed offsets dynamically..
disasm = new Disassembler(data, ArchitectureMode.x86_32);
foreach (var inst in disasm.Disassemble().Where(inst => !inst.Error))
{
if (count >= 8)
break;
// ex: mov eax, [eax+1234]
if (!skipMov && inst.Mnemonic == ud_mnemonic_code.UD_Imov)
{
if (inst.Operands.Length >= 2
&& inst.Operands[0].Type == ud_type.UD_OP_REG
&& inst.Operands[1].Type == ud_type.UD_OP_MEM)
{
count++;
offsets.Add(inst.Operands[1].LvalSDWord);
}
}
// ex: lea eax, [eax+1234]
if (inst.Mnemonic == ud_mnemonic_code.UD_Ilea)
{
if (inst.Operands.Length >= 2
&& inst.Operands[0].Type == ud_type.UD_OP_REG
&& inst.Operands[1].Type == ud_type.UD_OP_MEM)
{
count += 2;
offsets.Add(inst.Operands[1].LvalSDWord);
offsets.Add(inst.Operands[1].LvalSDWord + 16);
/**
* Some v2 compiled files have the order of the last offset (add inst) after a mov which loads
* GetModuleHandleA's address into a register. In order to skip that from being read as an offset
* we need this small workaround..
*/
skipMov = true;
}
}
// ex: add eax, 1234
if (inst.Mnemonic == ud_mnemonic_code.UD_Iadd)
{
if (inst.Operands.Length >= 2
&& inst.Operands[0].Type == ud_type.UD_OP_REG
&& inst.Operands[1].Type == ud_type.UD_OP_IMM)
{
count++;
offsets.Add(inst.Operands[1].LvalSDWord);
}
}
}
return offsets;
}
catch
{
return new List<int>();
}
finally
{
disasm?.Dispose();
}
}
/// <summary>
/// Gets or sets the Steamless options this file was requested to process with.
/// </summary>

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -31,10 +31,10 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCompany("atom0s")]
[assembly: AssemblyProduct("Steamless.Unpacker.Variant20.x86")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2018")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("a40154cd-a0fd-4371-8099-ce277e0989af")]
[assembly: AssemblyVersion("1.0.0.5")]
[assembly: AssemblyFileVersion("1.0.0.5")]
[assembly: AssemblyVersion("1.0.0.6")]
[assembly: AssemblyFileVersion("1.0.0.6")]

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -31,7 +31,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCompany("atom0s")]
[assembly: AssemblyProduct("Steamless.Unpacker.Variant30.x64")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2018")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -31,7 +31,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCompany("atom0s")]
[assembly: AssemblyProduct("Steamless.Unpacker.Variant30.x86")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2018")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -31,7 +31,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCompany("atom0s")]
[assembly: AssemblyProduct("Steamless.Unpacker.Variant31.x64")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2018")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -31,7 +31,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCompany("atom0s")]
[assembly: AssemblyProduct("Steamless.Unpacker.Variant31.x86")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2018")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -51,8 +51,7 @@ namespace Steamless.Classes
private static void OnGridViewColumnWidthFromItemsPropertyChanged(DependencyObject dpo, DependencyPropertyChangedEventArgs e)
{
var lv = dpo as ListView;
if (lv != null)
if (dpo is ListView lv)
{
if ((bool)e.NewValue)
lv.Loaded += OnListViewLoaded;

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -53,8 +53,8 @@ namespace Steamless.Model.Tasks
/// </summary>
public bool Completed
{
get { return this.Get<bool>("Completed"); }
set { this.Set("Completed", value); }
get => this.Get<bool>("Completed");
set => this.Set("Completed", value);
}
/// <summary>
@ -62,8 +62,8 @@ namespace Steamless.Model.Tasks
/// </summary>
public double Progress
{
get { return this.Get<double>("Progress"); }
set { this.Set("Progress", value); }
get => this.Get<double>("Progress");
set => this.Set("Progress", value);
}
/// <summary>
@ -71,8 +71,8 @@ namespace Steamless.Model.Tasks
/// </summary>
public double ProgressTotal
{
get { return this.Get<double>("ProgressTotal"); }
set { this.Set("ProgressTotal", value); }
get => this.Get<double>("ProgressTotal");
set => this.Set("ProgressTotal", value);
}
/// <summary>
@ -80,8 +80,8 @@ namespace Steamless.Model.Tasks
/// </summary>
public string Text
{
get { return this.Get<string>("Text"); }
set { this.Set("Text", value); }
get => this.Get<string>("Text");
set => this.Set("Text", value);
}
}
}

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -32,7 +32,7 @@ using System.Windows;
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCompany("atom0s")]
[assembly: AssemblyProduct("Steamless")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2018")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -83,11 +83,13 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<CheckBox Grid.Row="0" Content="Verbose Output" Margin="2" ToolTip="If enabled, Steamless will allow logging of debug messages." IsChecked="{Binding Options.VerboseOutput}" />
<CheckBox Grid.Row="1" Content="Keep Bind Section" Margin="2" ToolTip="The bind section should be kept within the file after unpacking." IsChecked="{Binding Options.KeepBindSection}" />
<CheckBox Grid.Row="2" Content="Dump Payload To Disk" Margin="2" ToolTip="Dumps the payload to disk where the target file is located. (File will be saved with the .payload extension.)" IsChecked="{Binding Options.DumpPayloadToDisk}" />
<CheckBox Grid.Row="3" Content="Dump SteamDRMP.dll To Disk" Margin="2" ToolTip="Dumps the SteamDRMP.dll to disk where the target file is located." IsChecked="{Binding Options.DumpSteamDrmpToDisk}" />
<CheckBox Grid.Row="4" Content="Use Experimental Features" Margin="2" ToolTip="Enables the use of experimental features." IsChecked="{Binding Options.UseExperimentalFeatures}" />
</Grid>
</GroupBox>

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -80,8 +80,7 @@ namespace Steamless.ViewModel
this.OnShowAboutViewCommand = new RelayCommand(() => this.ShowAboutView = !this.ShowAboutView);
this.OnOpenHyperlinkCommand = new RelayCommand<object>(o =>
{
var link = o as Hyperlink;
if (link != null)
if (o is Hyperlink link)
Process.Start(link.NavigateUri.AbsoluteUri);
});
this.OnDragDropCommand = new RelayCommand<DragEventArgs>(this.InputFileDragDrop);
@ -94,7 +93,7 @@ namespace Steamless.ViewModel
logService.AddLogMessage += this.AddLogMessage;
logService.ClearLogMessages += this.ClearLogMessages;
this.AddLogMessage(this, new LogMessageEventArgs("Steamless (c) 2015 - 2018 atom0s [atom0s@live.com]", LogMessageType.Debug));
this.AddLogMessage(this, new LogMessageEventArgs("Steamless (c) 2015 - 2019 atom0s [atom0s@live.com]", LogMessageType.Debug));
this.AddLogMessage(this, new LogMessageEventArgs("Website: http://atom0s.com/", LogMessageType.Debug));
// Initialize this model..
@ -123,17 +122,6 @@ namespace Steamless.ViewModel
this.m_TaskThread.Start();
}
/// <summary>
/// Sets the applications current status.
/// </summary>
/// <param name="state"></param>
/// <param name="msg"></param>
public void SetApplicationStatus(ApplicationState state, string msg)
{
this.State = state;
this.CurrentTask = new StatusTask(msg);
}
/// <summary>
/// Thread callback to process application tasks.
/// </summary>
@ -142,8 +130,7 @@ namespace Steamless.ViewModel
while (Interlocked.CompareExchange(ref this.m_TaskThread, null, null) != null && this.State != ApplicationState.Closing)
{
// Obtain a task from the task list..
BaseTask task;
if (this.Tasks.TryTake(out task))
if (this.Tasks.TryTake(out var task))
{
this.CurrentTask = task;
await this.CurrentTask.StartTask();
@ -232,7 +219,8 @@ namespace Steamless.ViewModel
private static void WindowMinimize()
{
// Minimize the window..
Application.Current.MainWindow.WindowState = WindowState.Minimized;
if (Application.Current.MainWindow != null)
Application.Current.MainWindow.WindowState = WindowState.Minimized;
}
/// <summary>
@ -241,7 +229,8 @@ namespace Steamless.ViewModel
/// <param name="args"></param>
private static void WindowMouseDown(MouseButtonEventArgs args)
{
Application.Current.MainWindow.DragMove();
if (Application.Current.MainWindow != null)
Application.Current.MainWindow.DragMove();
}
/// <summary>
@ -401,8 +390,8 @@ namespace Steamless.ViewModel
/// </summary>
public ApplicationState State
{
get { return this.Get<ApplicationState>("State"); }
set { this.Set("State", value); }
get => this.Get<ApplicationState>("State");
set => this.Set("State", value);
}
/// <summary>
@ -410,8 +399,8 @@ namespace Steamless.ViewModel
/// </summary>
public Version SteamlessVersion
{
get { return this.Get<Version>("SteamlessVersion"); }
set { this.Set("SteamlessVersion", value); }
get => this.Get<Version>("SteamlessVersion");
set => this.Set("SteamlessVersion", value);
}
/// <summary>
@ -419,8 +408,8 @@ namespace Steamless.ViewModel
/// </summary>
public BaseTask CurrentTask
{
get { return this.Get<BaseTask>("CurrentTask"); }
set { this.Set("CurrentTask", value); }
get => this.Get<BaseTask>("CurrentTask");
set => this.Set("CurrentTask", value);
}
/// <summary>
@ -428,8 +417,8 @@ namespace Steamless.ViewModel
/// </summary>
public ConcurrentBag<BaseTask> Tasks
{
get { return this.Get<ConcurrentBag<BaseTask>>("Tasks"); }
set { this.Set("Tasks", value); }
get => this.Get<ConcurrentBag<BaseTask>>("Tasks");
set => this.Set("Tasks", value);
}
/// <summary>
@ -437,8 +426,8 @@ namespace Steamless.ViewModel
/// </summary>
public bool ShowAboutView
{
get { return this.Get<bool>("ShowAboutView"); }
set { this.Set("ShowAboutView", value); }
get => this.Get<bool>("ShowAboutView");
set => this.Set("ShowAboutView", value);
}
#endregion
@ -448,8 +437,8 @@ namespace Steamless.ViewModel
/// </summary>
public ObservableCollection<SteamlessPlugin> Plugins
{
get { return this.Get<ObservableCollection<SteamlessPlugin>>("Plugins"); }
set { this.Set("Plugins", value); }
get => this.Get<ObservableCollection<SteamlessPlugin>>("Plugins");
set => this.Set("Plugins", value);
}
/// <summary>
@ -457,8 +446,8 @@ namespace Steamless.ViewModel
/// </summary>
public int SelectedPluginIndex
{
get { return this.Get<int>("SelectedPluginIndex"); }
set { this.Set("SelectedPluginIndex", value); }
get => this.Get<int>("SelectedPluginIndex");
set => this.Set("SelectedPluginIndex", value);
}
/// <summary>
@ -466,8 +455,8 @@ namespace Steamless.ViewModel
/// </summary>
public string InputFilePath
{
get { return this.Get<string>("InputFilePath"); }
set { this.Set("InputFilePath", value); }
get => this.Get<string>("InputFilePath");
set => this.Set("InputFilePath", value);
}
/// <summary>
@ -475,8 +464,8 @@ namespace Steamless.ViewModel
/// </summary>
public SteamlessOptions Options
{
get { return this.Get<SteamlessOptions>("Options"); }
set { this.Set("Options", value); }
get => this.Get<SteamlessOptions>("Options");
set => this.Set("Options", value);
}
/// <summary>
@ -484,8 +473,8 @@ namespace Steamless.ViewModel
/// </summary>
public ObservableCollection<LogMessageEventArgs> Log
{
get { return this.Get<ObservableCollection<LogMessageEventArgs>>("Log"); }
set { this.Set("Log", value); }
get => this.Get<ObservableCollection<LogMessageEventArgs>>("Log");
set => this.Set("Log", value);
}
#endregion
}

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to