38 Commits

Author SHA1 Message Date
3b87644321 Merge branch 'gibbed:master' into master 2022-01-15 09:52:37 +07:00
Rick Gibbed
7b301fa56a Remove FUNDING.yml.
Remove FUNDING.yml so it defaults to my account's FUNDING.yml.
2021-09-16 13:07:22 -05:00
Lev
aad7809031 Update README.md 2020-03-04 16:23:39 +07:00
JDM170
ef90eb331f Revert "Merged 'Filter Games and Achievements' from lieberung"
This reverts commit d6015f1ed8.
2020-03-04 15:56:03 +07:00
JDM170
d6015f1ed8 Merged 'Filter Games and Achievements' from lieberung
https://github.com/gibbed/SteamAchievementManager/pull/133
2020-03-04 15:33:59 +07:00
JDM170
4fc57c7bcc Merged 'Error message (clarification)' from horgan
https://github.com/gibbed/SteamAchievementManager/pull/128
2020-03-04 15:27:58 +07:00
JDM170
bcdca48b3f Merged 'Initialize lists right away' from Kissaki
https://github.com/gibbed/SteamAchievementManager/pull/119
2020-03-04 15:26:27 +07:00
JDM170
2609091920 Merged 'Locally cache game logos' from Kissaki
https://github.com/gibbed/SteamAchievementManager/pull/118
2020-03-04 15:24:39 +07:00
Rick Gibbed
41cb108b1a Merge pull request #111 from xPaw/patch-2
Improve item selection and logo downloading when filtering.
2019-05-27 14:35:43 -05:00
Pavel Djundik
73339439bc Improve item selection and logo downloading when filtering
Fixes #107
2019-05-25 12:13:06 +03:00
gibbed
5953dd304f Add missing Version element in project files. 2019-05-24 16:39:56 -05:00
gibbed
2420c0cdfa Fix AppVeyor version patching. 2019-05-24 16:35:56 -05:00
gibbed
b68e02f061 Provide information about family share library locking when Steam client
initialization fails due to ConnectToGlobalUser.
2019-05-24 16:23:24 -05:00
gibbed
fe4526b346 Bump ISteamApps003 to ISteamApps008. 2019-05-24 14:49:13 -05:00
gibbed
130d13d256 Use Akamai URLs for media to avoid having to disable SSL certificate validation. 2019-05-24 14:42:44 -05:00
gibbed
c8e914d8a1 Throw exception for client initialization failure. 2019-05-24 14:40:21 -05:00
gibbed
fd0c328017 Bump ISteamClient009 to ISteamClient018. 2019-05-24 14:02:33 -05:00
gibbed
c8b6dbc3f4 Bump license. 2019-05-24 13:48:09 -05:00
gibbed
34816f490a Bump AppVeyor image to VS2019. 2019-05-24 13:44:08 -05:00
gibbed
0da8cf936d Migrate to VS2017 project format. 2019-05-24 13:43:27 -05:00
gibbed
eecb8df1d6 Remove DPI awareness manifest from SAM.API. 2019-05-24 13:43:27 -05:00
Rick Gibbed
2ab57b528a Merge pull request #108 from xPaw/patch-1
Release Steam pipes only if they exist.
2019-05-24 13:38:21 -05:00
Pavel Djundik
f186736ba3 Release steam pipes only if they exist 2019-05-24 21:35:41 +03:00
Rick Gibbed
9f3ab7c813 Update and rename appveyor.yml to .appveyor.yml. 2019-05-23 21:09:26 -05:00
Rick Gibbed
5d119be310 Add FUNDING.yml. 2019-05-23 21:08:19 -05:00
gibbed
407d35b8b5 Fix FxCop complaints. 2019-03-30 13:18:53 -05:00
gibbed
51ddcc0e37 - Use HTTPS URLs for game logos/achievement icons. Fixes #87.
- Fix DoDownloadLogo not catching exceptions for DownloadData.
2019-03-30 12:21:33 -05:00
gibbed
0958770784 Implement searching of the game list. Fixes #39. 2018-05-27 07:09:59 -05:00
Rick Gibbed
16c552e233 Merge pull request #73 from xPaw/patch-2.
Reduce UI freezes when opening the app
2018-05-27 06:11:56 -05:00
Pavel Djundik
3dac4e29b5 Reduce UI freezes when opening the app 2018-05-27 13:49:35 +03:00
gibbed
b4a0cc7317 Update .gitignore. 2018-05-25 15:19:12 -05:00
Rick Gibbed
a538d4fa33 Update appveyor.yml. 2018-05-25 15:17:57 -05:00
Rick Gibbed
23459b9e14 Merge pull request #71 from xPaw/patch-1. 2018-05-25 15:17:05 -05:00
Pavel Djundik
e7e76513ab Make _Games a Dictionary for some optimization 2018-05-25 23:01:37 +03:00
Rick Gibbed
9d4d6a136b Make GUI DPI-aware. 2017-12-28 05:10:44 -06:00
ElPumpo
4f63d664f8 Updated gitignore after request 2017-12-28 12:06:43 +01:00
ElPumpo
23baee2f6f Added gitattributes and updated gitignore 2017-12-28 11:37:02 +01:00
ElPumpo
2ec651108d DPI awareness enabled 2017-12-28 11:35:20 +01:00
79 changed files with 1162 additions and 878 deletions

View File

@@ -7,11 +7,12 @@ branches:
skip_tags: true
skip_commits:
files:
- .github/*
- README.md
max_jobs: 1
image: Visual Studio 2015
image: Visual Studio 2019
clone_folder: c:\projects\SAM
@@ -26,12 +27,13 @@ install:
configuration:
- Release
assembly_info:
dotnet_csproj:
patch: true
file: '**\AssemblyInfo.*'
file: '**\*.csproj'
version: '{version}'
assembly_version: '{version}'
assembly_file_version: '{version}'
assembly_informational_version: '{version}'
file_version: '{version}'
informational_version: '{version}'
build:
project: SAM.sln

63
.gitattributes vendored Normal file
View File

@@ -0,0 +1,63 @@
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto
###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs diff=csharp
###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln merge=binary
#*.csproj merge=binary
#*.vbproj merge=binary
#*.vcxproj merge=binary
#*.vcproj merge=binary
#*.dbproj merge=binary
#*.fsproj merge=binary
#*.lsproj merge=binary
#*.wixproj merge=binary
#*.modelproj merge=binary
#*.sqlproj merge=binary
#*.wwaproj merge=binary
###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg binary
#*.png binary
#*.gif binary
###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
#*.DOC diff=astextplain
#*.docx diff=astextplain
#*.DOCX diff=astextplain
#*.dot diff=astextplain
#*.DOT diff=astextplain
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain

16
.gitignore vendored
View File

@@ -7,6 +7,7 @@
*.userosscache
*.sln.docstates
private/
upload/
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
@@ -20,10 +21,8 @@ x64/
x86/
bld/
[Bb]in/
[Bb]in_*/
[Oo]bj/
[Ll]og/
[Uu]pload/
# Visual Studio 2015 cache/options directory
.vs/
@@ -45,6 +44,7 @@ dlldata.c
# DNX
project.lock.json
project.fragment.lock.json
artifacts/
*_i.c
@@ -145,7 +145,7 @@ publish/
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
#*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
@@ -191,6 +191,7 @@ ClientBin/
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
node_modules/
@@ -252,4 +253,11 @@ paket-files/
# JetBrains Rider
.idea/
*.sln.iml
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

View File

@@ -1,6 +1,6 @@
zlib License
Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -11,12 +11,12 @@ including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
distribution.

View File

@@ -9,10 +9,10 @@ There are some changes to the code since the last closed-source release:
- Icons have been replaced with ones from the Fugue Icons set.
- Version has been bumped to 7.0.x.x to indicate the open-source release.
[Download latest release](https://github.com/gibbed/SteamAchievementManager/releases/latest).
[Download latest release](https://github.com/JDM170/SteamAchievementManager/releases/latest).
[![Build status](https://ci.appveyor.com/api/projects/status/00vic6jliar6j0ol/branch/master?svg=true)](https://ci.appveyor.com/project/gibbed/steamachievementmanager/branch/master)
[![Build status](https://ci.appveyor.com/api/projects/status/iovgeotwg1xtf7ik?svg=true)](https://ci.appveyor.com/project/JDM170/steamachievementmanager)
## Attribution
Most (if not all) icons are from the [Fugue Icons](http://p.yusukekamiyamane.com/) set.
Most (if not all) icons are from the [Fugue Icons](http://p.yusukekamiyamane.com/) set.

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
@@ -27,77 +27,99 @@ using System.Linq;
namespace SAM.API
{
public class Client
public class Client : IDisposable
{
public Wrappers.SteamClient009 SteamClient;
public Wrappers.SteamClient018 SteamClient;
public Wrappers.SteamUser012 SteamUser;
public Wrappers.SteamUserStats007 SteamUserStats;
public Wrappers.SteamUtils005 SteamUtils;
public Wrappers.SteamApps001 SteamApps001;
public Wrappers.SteamApps003 SteamApps003;
public Wrappers.SteamApps008 SteamApps008;
private bool _IsDisposed = false;
private int _Pipe;
private int _User;
private readonly List<ICallback> _Callbacks = new List<ICallback>();
public bool Initialize(long appId)
public void Initialize(long appId)
{
if (string.IsNullOrEmpty(Steam.GetInstallPath()) == true)
{
throw new ClientInitializeException(ClientInitializeFailure.GetInstallPath, "failed to get Steam install path");
}
if (appId != 0)
{
Environment.SetEnvironmentVariable("SteamAppId", appId.ToString(CultureInfo.InvariantCulture));
}
if (Steam.GetInstallPath() == null)
{
return false;
}
if (Steam.Load() == false)
{
return false;
throw new ClientInitializeException(ClientInitializeFailure.Load, "failed to load SteamClient");
}
this.SteamClient = Steam.CreateInterface<Wrappers.SteamClient009>("SteamClient009");
this.SteamClient = Steam.CreateInterface<Wrappers.SteamClient018>("SteamClient018");
if (this.SteamClient == null)
{
return false;
throw new ClientInitializeException(ClientInitializeFailure.CreateSteamClient, "failed to create ISteamClient018");
}
this._Pipe = this.SteamClient.CreateSteamPipe();
if (this._Pipe == 0)
{
return false;
throw new ClientInitializeException(ClientInitializeFailure.CreateSteamPipe, "failed to create pipe");
}
this._User = this.SteamClient.ConnectToGlobalUser(this._Pipe);
if (this._User == 0)
{
return false;
throw new ClientInitializeException(ClientInitializeFailure.ConnectToGlobalUser, "failed to connect to global user");
}
this.SteamUtils = this.SteamClient.GetSteamUtils004(this._Pipe);
if (appId > 0 && this.SteamUtils.GetAppId() != (uint)appId)
{
return false;
throw new ClientInitializeException(ClientInitializeFailure.AppIdMismatch, "appID mismatch");
}
this.SteamUser = this.SteamClient.GetSteamUser012(this._User, this._Pipe);
this.SteamUserStats = this.SteamClient.GetSteamUserStats006(this._User, this._Pipe);
this.SteamApps001 = this.SteamClient.GetSteamApps001(this._User, this._Pipe);
this.SteamApps003 = this.SteamClient.GetSteamApps003(this._User, this._Pipe);
return true;
this.SteamApps008 = this.SteamClient.GetSteamApps008(this._User, this._Pipe);
}
~Client()
{
if (this.SteamClient != null)
this.Dispose(false);
}
protected virtual void Dispose(bool disposing)
{
if (this._IsDisposed == true)
{
this.SteamClient.ReleaseUser(this._Pipe, this._User);
this._User = 0;
return;
}
if (this.SteamClient != null && this._Pipe > 0)
{
if (this._User > 0)
{
this.SteamClient.ReleaseUser(this._Pipe, this._User);
this._User = 0;
}
this.SteamClient.ReleaseSteamPipe(this._Pipe);
this._Pipe = 0;
}
this._IsDisposed = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
public TCallback CreateAndRegisterCallback<TCallback>()

View File

@@ -0,0 +1,50 @@
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would
* be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not
* be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
*/
using System;
namespace SAM.API
{
public class ClientInitializeException : Exception
{
public readonly ClientInitializeFailure Failure;
public ClientInitializeException(ClientInitializeFailure failure)
{
this.Failure = failure;
}
public ClientInitializeException(ClientInitializeFailure failure, string message)
: base(message)
{
this.Failure = failure;
}
public ClientInitializeException(
ClientInitializeFailure failure,
string message,
Exception innerException)
: base(message, innerException)
{
this.Failure = failure;
}
}
}

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
@@ -19,22 +19,16 @@
* 3. This notice may not be removed or altered from any source
* distribution.
*/
using System;
using System.Runtime.InteropServices;
namespace SAM.API.Interfaces
namespace SAM.API
{
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct ISteamApps003
public enum ClientInitializeFailure : byte
{
public IntPtr IsSubscribed;
public IntPtr IsLowViolence;
public IntPtr IsCybercafe;
public IntPtr IsVACBanned;
public IntPtr GetCurrentGameLanguage;
public IntPtr GetAvailableGameLanguages;
public IntPtr IsSubscribedApp;
public IntPtr IsDlcInstalled;
Unknown = 0,
GetInstallPath,
Load,
CreateSteamClient,
CreateSteamPipe,
ConnectToGlobalUser,
AppIdMismatch,
}
}

View File

@@ -0,0 +1,295 @@
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Scope = "member", Target = "SAM.API.NativeWrapper`1.#Call`1(System.IntPtr,System.Object[])")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Scope = "member", Target = "SAM.API.NativeWrapper`1.#Call`2(System.IntPtr,System.Object[])")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter", Scope = "member", Target = "SAM.API.NativeWrapper`1.#GetDelegate`1(System.IntPtr)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1009:DeclareEventHandlersCorrectly", Scope = "member", Target = "SAM.API.Callback.#OnRun")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1009:DeclareEventHandlersCorrectly", Scope = "member", Target = "SAM.API.Callback`1.#OnRun")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "SAM.API.Callbacks")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", MessageId = "1#", Scope = "member", Target = "SAM.API.Steam.#GetCallback(System.Int32,SAM.API.Types.CallbackMessage&,System.Int32&)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", MessageId = "1#", Scope = "member", Target = "SAM.API.Wrappers.SteamUserStats007.#GetAchievementState(System.String,System.Boolean&)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", MessageId = "1#", Scope = "member", Target = "SAM.API.Wrappers.SteamUserStats007.#GetStatValue(System.String,System.Int32&)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", MessageId = "1#", Scope = "member", Target = "SAM.API.Wrappers.SteamUserStats007.#GetStatValue(System.String,System.Single&)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", MessageId = "1#", Scope = "member", Target = "SAM.API.Wrappers.SteamUtils005.#GetImageSize(System.Int32,System.Int32&,System.Int32&)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", MessageId = "2#", Scope = "member", Target = "SAM.API.Steam.#GetCallback(System.Int32,SAM.API.Types.CallbackMessage&,System.Int32&)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1021:AvoidOutParameters", MessageId = "2#", Scope = "member", Target = "SAM.API.Wrappers.SteamUtils005.#GetImageSize(System.Int32,System.Int32&,System.Int32&)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Scope = "member", Target = "SAM.API.Steam.#GetInstallPath()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Scope = "member", Target = "SAM.API.Wrappers.SteamApps003.#GetCurrentGameLanguage()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Scope = "member", Target = "SAM.API.Wrappers.SteamUser012.#GetSteamId()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Scope = "member", Target = "SAM.API.Wrappers.SteamUtils005.#GetAppId()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Scope = "member", Target = "SAM.API.Wrappers.SteamUtils005.#GetConnectedUniverse()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", Scope = "member", Target = "SAM.API.Wrappers.SteamUtils005.#GetIPCountry()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible", Scope = "type", Target = "SAM.API.Callback`1+CallbackFunction")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible", Scope = "type", Target = "SAM.API.Callback+CallbackFunction")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1045:DoNotPassTypesByReference", MessageId = "0#", Scope = "member", Target = "SAM.API.Wrappers.SteamClient009.#CreateLocalUser(System.Int32&,SAM.API.Types.AccountType)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Client.#SteamApps001")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Client.#SteamApps003")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Client.#SteamClient")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Client.#SteamUser")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Client.#SteamUserStats")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Client.#SteamUtils")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps001.#GetAppData")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps003.#GetAvailableGameLanguages")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps003.#GetCurrentGameLanguage")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps003.#IsCybercafe")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps003.#IsDlcInstalled")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps003.#IsLowViolence")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps003.#IsSubscribed")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps003.#IsSubscribedApp")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps003.#IsVACBanned")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#ConnectToGlobalUser")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#CreateLocalUser")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#CreateSteamPipe")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetIPCCallCount")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamApps")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamFriends")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamGameServer")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamGameServerStats")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamGenericInterface")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamMasterServerUpdater")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamMatchmaking")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamMatchmakingServers")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamNetworking")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamRemoteStorage")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamUser")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamUserStats")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamUtils")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#ReleaseSteamPipe")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#ReleaseUser")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#RunFrame")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#SetLocalIPBinding")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#SetWarningMessageHook")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#BeginAuthSession")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#CancelAuthTicket")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#DecompressVoice")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#EndAuthSession")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#GetAuthSessionTicket")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#GetCompressedVoice")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#GetHSteamUser")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#GetSteamID")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#GetUserDataFolder")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#InitiateGameConnection")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#LoggedOn")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#StartVoiceRecording")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#StopVoiceRecording")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#TerminateGameConnection")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#TrackAppUsageEvent")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#UserHasLicenseForApp")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#ClearAchievement")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#DownloadLeaderboardEntries")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#FindLeaderboard")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#FindOrCreateLeaderboard")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetAchievement")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetAchievementAndUnlockTime")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetAchievementDisplayAttribute")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetAchievementIcon")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetDownloadedLeaderboardEntry")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetLeaderboardDisplayType")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetLeaderboardEntryCount")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetLeaderboardName")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetLeaderboardSortMethod")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetNumberOfCurrentPlayers")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetStatFloat")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetStatInteger")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetUserAchievement")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetUserAchievementAndUnlockTime")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetUserStatFloat")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetUserStatInt")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#IndicateAchievementProgress")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#RequestCurrentStats")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#RequestUserStats")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#ResetAllStats")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#SetAchievement")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#SetStatFloat")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#SetStatInteger")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#StoreStats")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#UpdateAvgRateStat")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#UploadLeaderboardScore")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetAPICallFailureReason")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetAPICallResult")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetAppID")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetConnectedUniverse")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetCSERIPPort")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetCurrentBatteryPower")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetImageRGBA")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetImageSize")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetIPCCallCount")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetIPCountry")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetSecondsSinceAppActive")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetSecondsSinceComputerActive")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetServerRealTime")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#IsAPICallCompleted")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#IsOverlayEnabled")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#OverlayNeedsPresent")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#RunFrame")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#SetOverlayNotificationPosition")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#SetWarningMessageHook")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.NativeWrapper`1.#Functions")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.NativeWrapper`1.#ObjectAddress")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Types.AppDataChanged.#Id")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Types.AppDataChanged.#Result")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Types.CallbackMessage.#Id")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Types.CallbackMessage.#ParamPointer")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Types.CallbackMessage.#ParamSize")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Types.CallbackMessage.#User")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Types.UserItemsReceived.#GameId")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Types.UserItemsReceived.#ItemCount")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Types.UserItemsReceived.#Unknown")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Types.UserStatsReceived.#GameId")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Types.UserStatsReceived.#Result")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Types.UserStatsStored.#GameId")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1051:DoNotDeclareVisibleInstanceFields", Scope = "member", Target = "SAM.API.Types.UserStatsStored.#Result")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1060:MovePInvokesToNativeMethodsClass", Scope = "member", Target = "SAM.API.Steam+Native.#GetProcAddress(System.IntPtr,System.String)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1060:MovePInvokesToNativeMethodsClass", Scope = "member", Target = "SAM.API.Steam+Native.#LoadLibraryEx(System.String,System.IntPtr,System.UInt32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1060:MovePInvokesToNativeMethodsClass", Scope = "member", Target = "SAM.API.Steam+Native.#SetDllDirectory(System.String)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA2210:AssembliesShouldHaveValidStrongNames")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Auth", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#BeginAuthSession")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Auth", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#CancelAuthTicket")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Auth", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#EndAuthSession")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Auth", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#GetAuthSessionTicket")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Avg", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#UpdateAvgRateStat")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Cybercafe", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps003.#IsCybercafe")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Dlc", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps003.#IsDlcInstalled")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Multiset", Scope = "member", Target = "SAM.API.Types.AccountType.#Multiset")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "param", Scope = "member", Target = "SAM.API.ICallback.#Run(System.IntPtr)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Param", Scope = "member", Target = "SAM.API.Types.CallbackMessage.#ParamPointer")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Param", Scope = "member", Target = "SAM.API.Types.CallbackMessage.#ParamSize")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "param", Scope = "type", Target = "SAM.API.Callback+CallbackFunction")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Utils", Scope = "member", Target = "SAM.API.Client.#SteamUtils")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Utils", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamUtils")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Utils", Scope = "member", Target = "SAM.API.Wrappers.SteamClient009.#GetISteamUtils`1(System.Int32,System.String)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Utils", Scope = "member", Target = "SAM.API.Wrappers.SteamClient009.#GetSteamUtils004(System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Utils", Scope = "type", Target = "SAM.API.Interfaces.ISteamUtils005")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Utils", Scope = "type", Target = "SAM.API.Wrappers.SteamUtils005")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "API")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "API", Scope = "namespace", Target = "SAM.API")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "API", Scope = "namespace", Target = "SAM.API.Callbacks")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "API", Scope = "namespace", Target = "SAM.API.Interfaces")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "API", Scope = "namespace", Target = "SAM.API.Types")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "API", Scope = "namespace", Target = "SAM.API.Wrappers")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "OK", Scope = "member", Target = "SAM.API.Types.ItemRequestResult.#OK")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "RGBA", Scope = "member", Target = "SAM.API.Wrappers.SteamUtils005.#GetImageRGBA(System.Int32,System.Byte[])")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "SAM")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "SAM", Scope = "namespace", Target = "SAM.API")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "SAM", Scope = "namespace", Target = "SAM.API.Callbacks")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "SAM", Scope = "namespace", Target = "SAM.API.Interfaces")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "SAM", Scope = "namespace", Target = "SAM.API.Types")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "SAM", Scope = "namespace", Target = "SAM.API.Wrappers")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix", Scope = "member", Target = "SAM.API.Callback.#OnRun")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix", Scope = "member", Target = "SAM.API.Callback`1.#OnRun")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", MessageId = "int", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetUserStatInt")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", MessageId = "integer", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetStatInteger")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", MessageId = "integer", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#SetStatInteger")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", MessageId = "pointer", Scope = "member", Target = "SAM.API.NativeWrapper`1.#Call`1(System.IntPtr,System.Object[])")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", MessageId = "pointer", Scope = "member", Target = "SAM.API.NativeWrapper`1.#Call`2(System.IntPtr,System.Object[])")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", MessageId = "pointer", Scope = "member", Target = "SAM.API.NativeWrapper`1.#GetDelegate`1(System.IntPtr)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", MessageId = "pointer", Scope = "member", Target = "SAM.API.NativeWrapper`1.#GetFunction`1(System.IntPtr)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1725:ParameterNamesShouldMatchBaseDeclaration", MessageId = "0#", Scope = "member", Target = "SAM.API.Callback`1.#Run(System.IntPtr)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "SAM.API.NativeStrings.#PointerToString(System.Byte*)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "SAM.API.NativeStrings.#PointerToString(System.Byte*,System.Int32)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1815:OverrideEqualsAndOperatorEqualsOnValueTypes", Scope = "type", Target = "SAM.API.Interfaces.ISteamApps001")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1815:OverrideEqualsAndOperatorEqualsOnValueTypes", Scope = "type", Target = "SAM.API.Interfaces.ISteamApps003")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1815:OverrideEqualsAndOperatorEqualsOnValueTypes", Scope = "type", Target = "SAM.API.Interfaces.ISteamClient009")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1815:OverrideEqualsAndOperatorEqualsOnValueTypes", Scope = "type", Target = "SAM.API.Interfaces.ISteamUser012")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1815:OverrideEqualsAndOperatorEqualsOnValueTypes", Scope = "type", Target = "SAM.API.Interfaces.ISteamUtils005")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1815:OverrideEqualsAndOperatorEqualsOnValueTypes", Scope = "type", Target = "SAM.API.Types.AppDataChanged")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1815:OverrideEqualsAndOperatorEqualsOnValueTypes", Scope = "type", Target = "SAM.API.Types.CallbackMessage")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1815:OverrideEqualsAndOperatorEqualsOnValueTypes", Scope = "type", Target = "SAM.API.Types.UserItemsReceived")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1815:OverrideEqualsAndOperatorEqualsOnValueTypes", Scope = "type", Target = "SAM.API.Types.UserStatsReceived")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1815:OverrideEqualsAndOperatorEqualsOnValueTypes", Scope = "type", Target = "SAM.API.Types.UserStatsStored")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps001.#GetAppData")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps003.#GetAvailableGameLanguages")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps003.#GetCurrentGameLanguage")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps003.#IsCybercafe")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps003.#IsDlcInstalled")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps003.#IsLowViolence")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps003.#IsSubscribed")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps003.#IsSubscribedApp")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamApps003.#IsVACBanned")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#ConnectToGlobalUser")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#CreateLocalUser")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#CreateSteamPipe")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetIPCCallCount")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamApps")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamFriends")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamGameServer")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamGameServerStats")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamGenericInterface")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamMasterServerUpdater")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamMatchmaking")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamMatchmakingServers")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamNetworking")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamRemoteStorage")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamUser")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamUserStats")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#GetISteamUtils")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#ReleaseSteamPipe")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#ReleaseUser")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#RunFrame")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#SetLocalIPBinding")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamClient009.#SetWarningMessageHook")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#BeginAuthSession")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#CancelAuthTicket")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#DecompressVoice")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#EndAuthSession")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#GetAuthSessionTicket")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#GetCompressedVoice")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#GetHSteamUser")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#GetSteamID")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#GetUserDataFolder")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#InitiateGameConnection")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#LoggedOn")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#StartVoiceRecording")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#StopVoiceRecording")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#TerminateGameConnection")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#TrackAppUsageEvent")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUser012.#UserHasLicenseForApp")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#ClearAchievement")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#DownloadLeaderboardEntries")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#FindLeaderboard")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#FindOrCreateLeaderboard")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetAchievement")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetAchievementAndUnlockTime")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetAchievementDisplayAttribute")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetAchievementIcon")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetDownloadedLeaderboardEntry")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetLeaderboardDisplayType")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetLeaderboardEntryCount")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetLeaderboardName")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetLeaderboardSortMethod")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetNumberOfCurrentPlayers")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetStatFloat")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetStatInteger")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetUserAchievement")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetUserAchievementAndUnlockTime")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetUserStatFloat")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#GetUserStatInt")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#IndicateAchievementProgress")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#RequestCurrentStats")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#RequestUserStats")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#ResetAllStats")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#SetAchievement")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#SetStatFloat")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#SetStatInteger")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#StoreStats")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#UpdateAvgRateStat")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUserStats007.#UploadLeaderboardScore")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetAPICallFailureReason")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetAPICallResult")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetAppID")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetConnectedUniverse")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetCSERIPPort")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetCurrentBatteryPower")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetImageRGBA")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetImageSize")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetIPCCallCount")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetIPCountry")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetSecondsSinceAppActive")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetSecondsSinceComputerActive")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#GetServerRealTime")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#IsAPICallCompleted")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#IsOverlayEnabled")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#OverlayNeedsPresent")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#RunFrame")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#SetOverlayNotificationPosition")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Interfaces.ISteamUtils005.#SetWarningMessageHook")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.NativeWrapper`1.#ObjectAddress")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2111:PointersShouldNotBeVisible", Scope = "member", Target = "SAM.API.Types.CallbackMessage.#ParamPointer")]

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -0,0 +1,60 @@
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would
* be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not
* be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
*/
using System;
using System.Runtime.InteropServices;
namespace SAM.API.Interfaces
{
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct ISteamApps008
{
public IntPtr IsSubscribed;
public IntPtr IsLowViolence;
public IntPtr IsCybercafe;
public IntPtr IsVACBanned;
public IntPtr GetCurrentGameLanguage;
public IntPtr GetAvailableGameLanguages;
public IntPtr IsSubscribedApp;
public IntPtr IsDlcInstalled;
public IntPtr GetEarliestPurchaseUnixTime;
public IntPtr IsSubscribedFromFreeWeekend;
public IntPtr GetDLCCount;
public IntPtr GetDLCDataByIndex;
public IntPtr InstallDLC;
public IntPtr UninstallDLC;
public IntPtr RequestAppProofOfPurchaseKey;
public IntPtr GetCurrentBetaName;
public IntPtr MarkContentCorrupt;
public IntPtr GetInstalledDepots;
public IntPtr GetAppInstallDir;
public IntPtr IsAppInstalled;
public IntPtr GetAppOwner;
public IntPtr GetLaunchQueryParam;
public IntPtr GetDlcDownloadProgress;
public IntPtr GetAppBuildId;
public IntPtr RequestAllProofOfPurchaseKeys;
public IntPtr GetFileDetails;
public IntPtr GetLaunchCommandLine;
public IntPtr IsSubscribedFromFamilySharing;
}
}

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
@@ -26,7 +26,7 @@ using System.Runtime.InteropServices;
namespace SAM.API.Interfaces
{
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct ISteamClient009
public struct ISteamClient018
{
public IntPtr CreateSteamPipe;
public IntPtr ReleaseSteamPipe;
@@ -39,7 +39,6 @@ namespace SAM.API.Interfaces
public IntPtr GetISteamFriends;
public IntPtr GetISteamUtils;
public IntPtr GetISteamMatchmaking;
public IntPtr GetISteamMasterServerUpdater;
public IntPtr GetISteamMatchmakingServers;
public IntPtr GetISteamGenericInterface;
public IntPtr GetISteamUserStats;
@@ -47,8 +46,27 @@ namespace SAM.API.Interfaces
public IntPtr GetISteamApps;
public IntPtr GetISteamNetworking;
public IntPtr GetISteamRemoteStorage;
public IntPtr GetISteamScreenshots;
public IntPtr GetISteamGameSearch;
public IntPtr RunFrame;
public IntPtr GetIPCCallCount;
public IntPtr SetWarningMessageHook;
public IntPtr ShutdownIfAllPipesClosed;
public IntPtr GetISteamHTTP;
public IntPtr DEPRECATED_GetISteamUnifiedMessages;
public IntPtr GetISteamController;
public IntPtr GetISteamUGC;
public IntPtr GetISteamAppList;
public IntPtr GetISteamMusic;
public IntPtr GetISteamMusicRemote;
public IntPtr GetISteamHTMLSurface;
public IntPtr DEPRECATED_Set_SteamAPI_CPostAPIResultInProcess;
public IntPtr DEPRECATED_Remove_SteamAPI_CPostAPIResultInProcess;
public IntPtr Set_SteamAPI_CCheckCallbackRegisteredInProcess;
public IntPtr GetISteamInventory;
public IntPtr GetISteamVideo;
public IntPtr GetISteamParentalSettings;
public IntPtr GetISteamInput;
public IntPtr GetISteamParties;
}
}

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,6 +1,6 @@
zlib License
Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -11,12 +11,12 @@ including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
distribution.

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
@@ -34,6 +34,7 @@ namespace SAM.API
public override string ToString()
{
return string.Format(
System.Globalization.CultureInfo.CurrentCulture,
"Steam Interface<{0}> #{1:X8}",
typeof(TNativeFunctions),
this.ObjectAddress.ToInt32());

View File

@@ -1,61 +0,0 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would
* be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not
* be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
*/
using System.Reflection;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Steam Achievement Manager API")]
[assembly: AssemblyDescription("Easy to use classes for accessing the Steam API.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Gibbed")]
[assembly: AssemblyProduct("SAM.API")]
[assembly: AssemblyCopyright("Copyright © Gibbed 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("5a9771a4-ca63-42aa-bbf6-0b2a0147a8ea")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("7.0.0.0")]
[assembly: AssemblyFileVersion("7.0.0.0")]

View File

@@ -1,132 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{DF9102D5-048A-4D21-8CE3-3544CBDF0ED1}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SAM.API</RootNamespace>
<AssemblyName>SAM.API</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFramework>net40</TargetFramework>
<Company>Gibbed</Company>
<Authors>Gibbed</Authors>
<Description></Description>
<Copyright>Copyright © Gibbed 2019</Copyright>
<Version>7.0.0</Version>
<AssemblyVersion>7.0.0.0</AssemblyVersion>
<FileVersion>7.0.0.0</FileVersion>
<RepositoryUrl>https://github.com/gibbed/SteamAchievementManager/</RepositoryUrl>
<RepositoryType>Git</RepositoryType>
<ApplicationIcon>Pink.ico</ApplicationIcon>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<TargetFrameworkProfile />
<Platforms>x86</Platforms>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</PlatformTarget>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'">
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\upload\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x86'">
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data.DataSetExtensions">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Callbacks\AppDataChanged.cs" />
<Compile Include="Callbacks\UserStatsReceived.cs" />
<Compile Include="ICallback.cs" />
<Compile Include="NativeStrings.cs" />
<Compile Include="Types\CallbackMessage.cs" />
<Compile Include="Wrappers\SteamUserStats007.cs" />
<Compile Include="Types\AccountType.cs" />
<Compile Include="Wrappers\SteamUser012.cs" />
<Compile Include="INativeWrapper.cs" />
<Compile Include="Interfaces\ISteamApps001.cs" />
<Compile Include="Interfaces\ISteamApps003.cs" />
<Compile Include="Interfaces\ISteamClient009.cs" />
<Compile Include="Interfaces\ISteamUser012.cs" />
<Compile Include="Interfaces\ISteamUserStats007.cs" />
<Compile Include="Interfaces\ISteamUtils005.cs" />
<Compile Include="NativeClass.cs" />
<Compile Include="Types\ItemRequestResult.cs" />
<Compile Include="Types\AppDataChanged.cs" />
<Compile Include="Wrappers\SteamApps003.cs" />
<Compile Include="Wrappers\SteamApps001.cs" />
<Compile Include="Callback.cs" />
<Compile Include="Wrappers\SteamClient009.cs" />
<Compile Include="Client.cs" />
<Compile Include="NativeWrapper.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Steam.cs" />
<Compile Include="Types\UserItemsReceived.cs" />
<Compile Include="Types\UserStatsStored.cs" />
<Compile Include="Types\UserStatsReceived.cs" />
<Compile Include="Types\UserStatType.cs" />
<Compile Include="Wrappers\SteamUtils005.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="Pink.ico" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
<Visible>False</Visible>
<ProductName>Windows Installer 3.1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
@@ -31,14 +31,15 @@ namespace SAM.API
{
private struct Native
{
[DllImport("kernel32.dll", SetLastError = true)]
[DllImport("kernel32.dll", SetLastError = true, BestFitMapping = false, ThrowOnUnmappableChar = true)]
internal static extern IntPtr GetProcAddress(IntPtr module, string name);
[DllImport("kernel32.dll", SetLastError = true)]
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
internal static extern IntPtr LoadLibraryEx(string path, IntPtr file, uint flags);
[DllImport("kernel32.dll", SetLastError = true)]
internal static extern IntPtr SetDllDirectory(string path);
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool SetDllDirectory(string path);
internal const uint LoadWithAlteredSearchPath = 8;
}

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
@@ -26,7 +26,7 @@ using SAM.API.Interfaces;
namespace SAM.API.Wrappers
{
public class SteamApps003 : NativeWrapper<ISteamApps003>
public class SteamApps008 : NativeWrapper<ISteamApps008>
{
#region IsSubscribed
[UnmanagedFunctionPointer(CallingConvention.ThisCall)]

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
@@ -26,7 +26,7 @@ using SAM.API.Interfaces;
namespace SAM.API.Wrappers
{
public class SteamClient009 : NativeWrapper<ISteamClient009>
public class SteamClient018 : NativeWrapper<ISteamClient018>
{
#region CreateSteamPipe
[UnmanagedFunctionPointer(CallingConvention.ThisCall)]
@@ -206,10 +206,10 @@ namespace SAM.API.Wrappers
}
#endregion
#region GetSteamApps003
public SteamApps003 GetSteamApps003(int user, int pipe)
#region GetSteamApps008
public SteamApps008 GetSteamApps008(int user, int pipe)
{
return this.GetISteamApps<SteamApps003>(user, pipe, "STEAMAPPS_INTERFACE_VERSION003");
return this.GetISteamApps<SteamApps008>(user, pipe, "STEAMAPPS_INTERFACE_VERSION008");
}
#endregion
}

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
@@ -68,6 +68,10 @@ namespace SAM.API.Wrappers
public bool GetImageRGBA(int index, byte[] data)
{
if (data == null)
{
throw new ArgumentNullException("data");
}
var call = this.GetFunction<NativeGetImageRGBA>(this.Functions.GetImageRGBA);
return call(this.ObjectAddress, index, data, data.Length);
}

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -0,0 +1,47 @@
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "SAM.Game.KeyValue.#LoadAsBinary(System.String)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "SAM.Game.KeyValue.#ReadAsBinary(System.IO.Stream)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "SAM.Game.Manager.#LoadUserGameStatsSchema()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "SAM.Game.Manager.#OnIconDownload(System.Object,System.Net.DownloadDataCompletedEventArgs)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "SAM.Game.Manager.#OnUserStatsReceived(SAM.API.Types.UserStatsReceived)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1064:ExceptionsShouldBePublic", Scope = "type", Target = "SAM.Game.Stats.StatIsProtectedException")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA2210:AssembliesShouldHaveValidStrongNames")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.ColumnHeader.set_Text(System.String)", Scope = "member", Target = "SAM.Game.Manager.#InitializeComponent()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.Control.set_Text(System.String)", Scope = "member", Target = "SAM.Game.Manager.#InitializeComponent()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.Form.set_Text(System.String)", Scope = "member", Target = "SAM.Game.Manager.#.ctor(System.Int64,SAM.API.Client)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.MessageBox.Show(System.String,System.String,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon)", Scope = "member", Target = "SAM.Game.Manager.#OnResetAllStats(System.Object,System.EventArgs)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.MessageBox.Show(System.String,System.String,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon)", Scope = "member", Target = "SAM.Game.Manager.#OnUserStatsReceived(SAM.API.Types.UserStatsReceived)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.MessageBox.Show(System.String,System.String,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon)", Scope = "member", Target = "SAM.Game.Program.#Main(System.String[])")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.MessageBox.Show(System.Windows.Forms.IWin32Window,System.String,System.String,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon)", Scope = "member", Target = "SAM.Game.Manager.#OnCheckAchievement(System.Object,System.Windows.Forms.ItemCheckEventArgs)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.MessageBox.Show(System.Windows.Forms.IWin32Window,System.String,System.String,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon)", Scope = "member", Target = "SAM.Game.Manager.#OnResetAllStats(System.Object,System.EventArgs)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.MessageBox.Show(System.Windows.Forms.IWin32Window,System.String,System.String,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon)", Scope = "member", Target = "SAM.Game.Manager.#OnStore(System.Object,System.EventArgs)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.MessageBox.Show(System.Windows.Forms.IWin32Window,System.String,System.String,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon)", Scope = "member", Target = "SAM.Game.Manager.#RefreshStats()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.MessageBox.Show(System.Windows.Forms.IWin32Window,System.String,System.String,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon)", Scope = "member", Target = "SAM.Game.Manager.#Store()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.MessageBox.Show(System.Windows.Forms.IWin32Window,System.String,System.String,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon)", Scope = "member", Target = "SAM.Game.Manager.#StoreAchievements()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.MessageBox.Show(System.Windows.Forms.IWin32Window,System.String,System.String,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon)", Scope = "member", Target = "SAM.Game.Manager.#StoreStatistics()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.ToolStripItem.set_Text(System.String)", Scope = "member", Target = "SAM.Game.Manager.#DownloadNextIcon()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.ToolStripItem.set_Text(System.String)", Scope = "member", Target = "SAM.Game.Manager.#InitializeComponent()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.ToolStripItem.set_Text(System.String)", Scope = "member", Target = "SAM.Game.Manager.#OnUserStatsReceived(SAM.API.Types.UserStatsReceived)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.ToolStripItem.set_Text(System.String)", Scope = "member", Target = "SAM.Game.Manager.#RefreshStats()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.ToolStripItem.set_ToolTipText(System.String)", Scope = "member", Target = "SAM.Game.Manager.#InitializeComponent()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1309:UseOrdinalStringComparison", MessageId = "System.String.StartsWith(System.String,System.StringComparison)", Scope = "member", Target = "SAM.Game.Manager.#GetAchievements()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA2204:Literals should be spelled correctly", MessageId = "wstring", Scope = "member", Target = "SAM.Game.KeyValue.#ReadAsBinary(System.IO.Stream)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Scope = "member", Target = "SAM.Game.Manager.#GetStatistics()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily", Scope = "member", Target = "SAM.Game.Manager.#StoreStatistics()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "SAM.Game.Stats.AchievementInfo.#ImageIndex")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "SAM.Game.Stats.StatInfo.#DisplayName")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "SAM.Game.Stats.StatInfo.#Extra")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "SAM.Game.Stats.StatInfo.#IsIncrementOnly")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "SAM.Game.Stats.StatIsProtectedException.#.ctor(System.String)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "SAM.Game.Stats.StatIsProtectedException.#.ctor(System.String,System.Exception)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope = "member", Target = "SAM.Game.StreamHelpers.#ReadStringAscii(System.IO.Stream)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Scope = "member", Target = "SAM.Game.Stats.AchievementDefinition.#IsHidden")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Scope = "member", Target = "SAM.Game.Stats.FloatStatDefinition.#DefaultValue")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Scope = "member", Target = "SAM.Game.Stats.FloatStatDefinition.#MaxChange")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Scope = "member", Target = "SAM.Game.Stats.FloatStatDefinition.#MaxValue")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Scope = "member", Target = "SAM.Game.Stats.FloatStatDefinition.#MinValue")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Scope = "member", Target = "SAM.Game.Stats.IntegerStatDefinition.#DefaultValue")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Scope = "member", Target = "SAM.Game.Stats.IntegerStatDefinition.#MaxChange")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Scope = "member", Target = "SAM.Game.Stats.IntegerStatDefinition.#MaxValue")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields", Scope = "member", Target = "SAM.Game.Stats.IntegerStatDefinition.#MinValue")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "SAM.Game.Manager.#.ctor(System.Int64,SAM.API.Client)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "SAM.Game.Manager.#InitializeComponent()")]

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
@@ -47,7 +47,7 @@ namespace SAM.Game
}
var child = this.Children.SingleOrDefault(
c => c.Name.ToLowerInvariant() == key.ToLowerInvariant());
c => string.Compare(c.Name, key, StringComparison.InvariantCultureIgnoreCase) == 0);
if (child == null)
{
@@ -202,7 +202,11 @@ namespace SAM.Game
return this.Name;
}
return string.Format("{0} = {1}", this.Name, this.Value);
return string.Format(
System.Globalization.CultureInfo.CurrentCulture,
"{0} = {1}",
this.Name,
this.Value);
}
public static KeyValue LoadAsBinary(string path)
@@ -214,16 +218,15 @@ namespace SAM.Game
try
{
var input = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
var kv = new KeyValue();
if (kv.ReadAsBinary(input) == false)
using (var input = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
return null;
var kv = new KeyValue();
if (kv.ReadAsBinary(input) == false)
{
return null;
}
return kv;
}
input.Close();
return kv;
}
catch (Exception)
{

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,6 +1,6 @@
zlib License
Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -11,12 +11,12 @@ including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
distribution.

View File

@@ -84,7 +84,7 @@
//
this._StoreButton.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
this._StoreButton.Enabled = false;
this._StoreButton.Image = global::SAM.Game.Properties.Resources.Save;
this._StoreButton.Image = global::SAM.Game.Resources.Save;
this._StoreButton.ImageTransparentColor = System.Drawing.Color.Magenta;
this._StoreButton.Name = "_StoreButton";
this._StoreButton.Size = new System.Drawing.Size(120, 22);
@@ -95,7 +95,7 @@
// _ReloadButton
//
this._ReloadButton.Enabled = false;
this._ReloadButton.Image = global::SAM.Game.Properties.Resources.Refresh;
this._ReloadButton.Image = global::SAM.Game.Resources.Refresh;
this._ReloadButton.ImageTransparentColor = System.Drawing.Color.Magenta;
this._ReloadButton.Name = "_ReloadButton";
this._ReloadButton.Size = new System.Drawing.Size(66, 22);
@@ -105,7 +105,7 @@
//
// _ResetButton
//
this._ResetButton.Image = global::SAM.Game.Properties.Resources.Reset;
this._ResetButton.Image = global::SAM.Game.Resources.Reset;
this._ResetButton.ImageTransparentColor = System.Drawing.Color.Magenta;
this._ResetButton.Name = "_ResetButton";
this._ResetButton.Size = new System.Drawing.Size(55, 22);
@@ -145,7 +145,7 @@
//
// _DownloadStatusLabel
//
this._DownloadStatusLabel.Image = global::SAM.Game.Properties.Resources.Download;
this._DownloadStatusLabel.Image = global::SAM.Game.Resources.Download;
this._DownloadStatusLabel.Name = "_DownloadStatusLabel";
this._DownloadStatusLabel.Size = new System.Drawing.Size(111, 17);
this._DownloadStatusLabel.Text = "Download status";
@@ -230,7 +230,7 @@
// _LockAllButton
//
this._LockAllButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this._LockAllButton.Image = global::SAM.Game.Properties.Resources.Lock;
this._LockAllButton.Image = global::SAM.Game.Resources.Lock;
this._LockAllButton.ImageTransparentColor = System.Drawing.Color.Magenta;
this._LockAllButton.Name = "_LockAllButton";
this._LockAllButton.Size = new System.Drawing.Size(23, 22);
@@ -241,7 +241,7 @@
// _InvertAllButton
//
this._InvertAllButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this._InvertAllButton.Image = global::SAM.Game.Properties.Resources.Invert;
this._InvertAllButton.Image = global::SAM.Game.Resources.Invert;
this._InvertAllButton.ImageTransparentColor = System.Drawing.Color.Magenta;
this._InvertAllButton.Name = "_InvertAllButton";
this._InvertAllButton.Size = new System.Drawing.Size(23, 22);
@@ -252,7 +252,7 @@
// _UnlockAllButton
//
this._UnlockAllButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this._UnlockAllButton.Image = global::SAM.Game.Properties.Resources.Unlock;
this._UnlockAllButton.Image = global::SAM.Game.Resources.Unlock;
this._UnlockAllButton.ImageTransparentColor = System.Drawing.Color.Magenta;
this._UnlockAllButton.Name = "_UnlockAllButton";
this._UnlockAllButton.Size = new System.Drawing.Size(23, 22);

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
@@ -156,12 +156,15 @@ namespace SAM.Game
return;
}
if (this._IconDownloader.IsBusy)
if (this._IconDownloader.IsBusy == true)
{
return;
}
this._DownloadStatusLabel.Text = string.Format("Downloading {0} icons...", this._IconQueue.Count);
this._DownloadStatusLabel.Text = string.Format(
CultureInfo.CurrentCulture,
"Downloading {0} icons...",
this._IconQueue.Count);
this._DownloadStatusLabel.Visible = true;
var info = this._IconQueue[0];
@@ -169,13 +172,15 @@ namespace SAM.Game
this._IconDownloader.DownloadDataAsync(
new Uri(string.Format("http://media.steamcommunity.com/steamcommunity/public/images/apps/{0}/{1}",
this._GameId,
info.IsAchieved == true ? info.IconNormal : info.IconLocked)),
new Uri(string.Format(
CultureInfo.InvariantCulture,
"http://steamcdn-a.akamaihd.net/steamcommunity/public/images/apps/{0}/{1}",
this._GameId,
info.IsAchieved == true ? info.IconNormal : info.IconLocked)),
info);
}
private string TranslateError(int id)
private static string TranslateError(int id)
{
switch (id)
{
@@ -188,7 +193,7 @@ namespace SAM.Game
return id.ToString(CultureInfo.InvariantCulture);
}
private string GetLocalizedString(KeyValue kv, string language, string defaultValue)
private static string GetLocalizedString(KeyValue kv, string language, string defaultValue)
{
var name = kv[language].AsString("");
if (string.IsNullOrEmpty(name) == false)
@@ -223,7 +228,10 @@ namespace SAM.Game
path = API.Steam.GetInstallPath();
path = Path.Combine(path, "appcache");
path = Path.Combine(path, "stats");
path = Path.Combine(path, string.Format("UserGameStatsSchema_{0}.bin", this._GameId));
path = Path.Combine(path, string.Format(
CultureInfo.InvariantCulture,
"UserGameStatsSchema_{0}.bin",
this._GameId));
if (File.Exists(path) == false)
{
@@ -242,7 +250,7 @@ namespace SAM.Game
return false;
}
var currentLanguage = this._SteamClient.SteamApps003.GetCurrentGameLanguage();
var currentLanguage = this._SteamClient.SteamApps008.GetCurrentGameLanguage();
//var currentLanguage = "german";
this._AchievementDefinitions.Clear();
@@ -268,7 +276,7 @@ namespace SAM.Game
var type = (APITypes.UserStatType)rawType;
switch (type)
{
case API.Types.UserStatType.Invalid:
case APITypes.UserStatType.Invalid:
{
break;
}
@@ -318,7 +326,7 @@ namespace SAM.Game
if (stat.Children != null)
{
foreach (var bits in stat.Children.Where(
b => b.Name.ToLowerInvariant() == "bits"))
b => string.Compare(b.Name, "bits", StringComparison.InvariantCultureIgnoreCase) == 0))
{
if (bits.Valid == false ||
bits.Children == null)
@@ -364,6 +372,7 @@ namespace SAM.Game
if (param.Result != 1)
{
this._GameStatusLabel.Text = string.Format(
CultureInfo.CurrentCulture,
"Error while retrieving stats: {0}",
TranslateError(param.Result));
this.EnableInput();
@@ -395,6 +404,7 @@ namespace SAM.Game
}
this._GameStatusLabel.Text = string.Format(
CultureInfo.CurrentCulture,
"Retrieved {0} achievements and {1} statistics.",
this._AchievementListView.Items.Count,
this._StatisticsDataGridView.Rows.Count);
@@ -428,7 +438,7 @@ namespace SAM.Game
foreach (var def in this._AchievementDefinitions)
{
if (def.Id == string.Empty)
if (string.IsNullOrEmpty(def.Id) == true)
{
continue;
}
@@ -460,7 +470,7 @@ namespace SAM.Game
info.Item = item;
if (item.Text.StartsWith("#") == true)
if (item.Text.StartsWith("#", StringComparison.InvariantCulture) == true)
{
item.Text = info.Id;
}
@@ -580,7 +590,10 @@ namespace SAM.Game
{
MessageBox.Show(
this,
string.Format("An error occured while setting the state for {0}, aborting store.", info.Id),
string.Format(
CultureInfo.CurrentCulture,
"An error occurred while setting the state for {0}, aborting store.",
info.Id),
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
@@ -615,7 +628,10 @@ namespace SAM.Game
{
MessageBox.Show(
this,
string.Format("An error occured while setting the value for {0}, aborting store.", stat.Id),
string.Format(
CultureInfo.CurrentCulture,
"An error occurred while setting the value for {0}, aborting store.",
stat.Id),
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
@@ -631,7 +647,10 @@ namespace SAM.Game
{
MessageBox.Show(
this,
string.Format("An error occured while setting the value for {0}, aborting store.", stat.Id),
string.Format(
CultureInfo.CurrentCulture,
"An error occurred while setting the value for {0}, aborting store.",
stat.Id),
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
@@ -640,7 +659,7 @@ namespace SAM.Game
}
else
{
throw new Exception();
throw new InvalidOperationException("unsupported stat type");
}
}
@@ -701,7 +720,7 @@ namespace SAM.Game
{
MessageBox.Show(
this,
"An error occured while storing, aborting.",
"An error occurred while storing, aborting.",
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
@@ -735,7 +754,11 @@ namespace SAM.Game
MessageBox.Show(
this,
string.Format("Stored {0} achievements and {1} statistics.", achievements, stats),
string.Format(
CultureInfo.CurrentCulture,
"Stored {0} achievements and {1} statistics.",
achievements,
stats),
"Information",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
@@ -746,18 +769,17 @@ namespace SAM.Game
{
if (e.Context == DataGridViewDataErrorContexts.Commit)
{
var view = (DataGridView)sender;
if (e.Exception is Stats.StatIsProtectedException)
{
e.ThrowException = false;
e.Cancel = true;
var view = (DataGridView)sender;
view.Rows[e.RowIndex].ErrorText = "Stat is protected! -- you can't modify it";
}
else
{
e.ThrowException = false;
e.Cancel = true;
var view = (DataGridView)sender;
view.Rows[e.RowIndex].ErrorText = "Invalid value";
}
}

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
@@ -22,6 +22,7 @@
using System;
using System.Diagnostics;
using System.Net;
using System.Windows.Forms;
namespace SAM.Game
@@ -42,7 +43,7 @@ namespace SAM.Game
if (long.TryParse(args[0], out appId) == false)
{
MessageBox.Show(
"Could not parse application ID from commandline argument.",
"Could not parse application ID from command line argument.",
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
@@ -59,34 +60,58 @@ namespace SAM.Game
return;
}
API.Client client;
try
using (var client = new API.Client())
{
client = new API.Client();
if (client.Initialize(appId) == false)
try
{
client.Initialize(appId);
}
catch (API.ClientInitializeException e)
{
if (e.Failure == API.ClientInitializeFailure.ConnectToGlobalUser)
{
MessageBox.Show(
"Steam is not running. Please start Steam then run this tool again.\n\n" +
"If you have the game through Family Share, the game may be locked due to\n\n" +
"the Family Share account actively playing a game.\n\n" +
"(" + e.Message + ")",
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
else if (string.IsNullOrEmpty(e.Message) == false)
{
MessageBox.Show(
"Steam is not running. Please start Steam then run this tool again.\n\n" +
"(" + e.Message + ")",
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
else
{
MessageBox.Show(
"Steam is not running. Please start Steam then run this tool again.",
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
return;
}
catch (DllNotFoundException)
{
MessageBox.Show(
"Steam is not running. Please start Steam then run this tool again.",
"You've caused an exceptional error!",
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
}
}
catch (DllNotFoundException)
{
MessageBox.Show(
"You've caused an exceptional error!",
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Manager(appId, client));
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Manager(appId, client));
}
}
}
}

View File

@@ -1,61 +0,0 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would
* be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not
* be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
*/
using System.Reflection;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Steam Achievement Manager")]
[assembly: AssemblyDescription("A manager for game achievements in Steam.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Gibbed")]
[assembly: AssemblyProduct("SAM.Game")]
[assembly: AssemblyCopyright("Copyright © Gibbed 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("0e6ba693-1ffa-44a0-a3eb-556272789273")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("7.0.0.0")]
[assembly: AssemblyFileVersion("7.0.0.0")]

View File

@@ -8,7 +8,7 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace SAM.Game.Properties {
namespace SAM.Game {
using System;
@@ -19,7 +19,7 @@ namespace SAM.Game.Properties {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
@@ -39,7 +39,7 @@ namespace SAM.Game.Properties {
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SAM.Game.Properties.Resources", typeof(Resources).Assembly);
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SAM.Game.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;

View File

@@ -119,27 +119,27 @@
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="Lock" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\lock.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<value>Resources\lock.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Refresh" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrow-circle-double.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<value>Resources\arrow-circle-double.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Unlock" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\lock-unlock.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<value>Resources\lock-unlock.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Reset" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\bomb.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<value>Resources\bomb.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Invert" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\lock--pencil.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<value>Resources\lock--pencil.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Save" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\transmitter.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<value>Resources\transmitter.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Sad" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\poop-smiley-sad-enlarged.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<value>Resources\poop-smiley-sad-enlarged.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Download" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\download-cloud.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<value>Resources\download-cloud.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@@ -1,158 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{7640DE31-E54E-45F9-9CF0-8DF3A3EA30FC}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SAM.Game</RootNamespace>
<AssemblyName>SAM.Game</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFramework>net40</TargetFramework>
<AssemblyTitle>Steam Achievement Manager</AssemblyTitle>
<Company>Gibbed</Company>
<Authors>Gibbed</Authors>
<Description>A manager for game achievements in Steam.</Description>
<Copyright>Copyright © Gibbed 2019</Copyright>
<Version>7.0.0</Version>
<AssemblyVersion>7.0.0.0</AssemblyVersion>
<FileVersion>7.0.0.0</FileVersion>
<RepositoryUrl>https://github.com/gibbed/SteamAchievementManager/</RepositoryUrl>
<RepositoryType>Git</RepositoryType>
<ApplicationIcon>Blank.ico</ApplicationIcon>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<TargetFrameworkProfile />
<ApplicationManifest>app.manifest</ApplicationManifest>
<Platforms>x86</Platforms>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<OutputPath>..\bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</PlatformTarget>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>..\upload\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<UseVSHostingProcess>false</UseVSHostingProcess>
<PlatformTarget>x86</PlatformTarget>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data.DataSetExtensions">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Stats\AchievementInfo.cs" />
<Compile Include="DoubleBufferedListView.cs">
<Compile Update="DoubleBufferedListView.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="KeyValue.cs" />
<Compile Include="KeyValueType.cs" />
<Compile Include="Manager.cs">
<Compile Update="Manager.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Manager.Designer.cs">
<DependentUpon>Manager.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Manager.resx">
<DependentUpon>Manager.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<Compile Update="Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="Stats\FloatStatInfo.cs" />
<Compile Include="Stats\IntStatInfo.cs" />
<Compile Include="Stats\StatFlags.cs" />
<Compile Include="Stats\StatInfo.cs" />
<Compile Include="Stats\AchievementDefinition.cs" />
<Compile Include="Stats\FloatStatDefinition.cs" />
<Compile Include="Stats\IntegerStatDefinition.cs" />
<Compile Include="Stats\StatDefinition.cs" />
<Compile Include="Stats\StatIsProtectedException.cs" />
<Compile Include="StreamHelpers.cs" />
<EmbeddedResource Update="Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Content Include="Blank.ico" />
<Content Include="Resources\arrow-circle-double.png" />
<Content Include="Resources\bomb.png" />
<Content Include="Resources\download-cloud.png" />
<Content Include="Resources\lock--pencil.png" />
<Content Include="Resources\lock-unlock.png" />
<Content Include="Resources\lock.png" />
<Content Include="Resources\poop-smiley-sad-enlarged.png" />
<Content Include="Resources\poop-smiley-sad.png" />
<Content Include="Resources\transmitter.png" />
<ProjectReference Include="..\SAM.API\SAM.API.csproj" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SAM.API\SAM.API.csproj">
<Project>{DF9102D5-048A-4D21-8CE3-3544CBDF0ED1}</Project>
<Name>SAM.API</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
<Visible>False</Visible>
<ProductName>Windows Installer 3.1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
@@ -34,7 +34,11 @@ namespace SAM.Game.Stats
public override string ToString()
{
return string.Format("{0}: {1}", this.Name ?? this.Id ?? base.ToString(), this.Permission);
return string.Format(
System.Globalization.CultureInfo.CurrentCulture,
"{0}: {1}",
this.Name ?? this.Id ?? base.ToString(),
this.Permission);
}
}
}

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
@@ -32,7 +32,7 @@ namespace SAM.Game.Stats
get { return this.FloatValue; }
set
{
var f = float.Parse((string)value);
var f = float.Parse((string)value, System.Globalization.CultureInfo.CurrentCulture);
if ((this.Permission & 2) != 0 &&
this.FloatValue.Equals(f) == false)

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
@@ -32,7 +32,7 @@ namespace SAM.Game.Stats
get { return this.IntValue; }
set
{
var i = int.Parse((string)value);
var i = int.Parse((string)value, System.Globalization.CultureInfo.CurrentCulture);
if ((this.Permission & 2) != 0 &&
this.IntValue != i)

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
@@ -21,10 +21,30 @@
*/
using System;
using System.Runtime.Serialization;
namespace SAM.Game.Stats
{
[Serializable]
internal class StatIsProtectedException : Exception
{
public StatIsProtectedException()
{
}
public StatIsProtectedException(string message)
: base(message)
{
}
public StatIsProtectedException(string message, Exception innerException)
: base(message, innerException)
{
}
protected StatIsProtectedException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
}
}

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

32
SAM.Game/app.manifest Normal file
View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
</assembly>

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -93,7 +93,7 @@
//
// _RefreshGamesButton
//
this._RefreshGamesButton.Image = global::SAM.Picker.Properties.Resources.Refresh;
this._RefreshGamesButton.Image = global::SAM.Picker.Resources.Refresh;
this._RefreshGamesButton.ImageTransparentColor = System.Drawing.Color.Magenta;
this._RefreshGamesButton.Name = "_RefreshGamesButton";
this._RefreshGamesButton.Size = new System.Drawing.Size(105, 22);
@@ -107,7 +107,7 @@
//
// _AddGameButton
//
this._AddGameButton.Image = global::SAM.Picker.Properties.Resources.Search;
this._AddGameButton.Image = global::SAM.Picker.Resources.Search;
this._AddGameButton.ImageTransparentColor = System.Drawing.Color.Magenta;
this._AddGameButton.Name = "_AddGameButton";
this._AddGameButton.Size = new System.Drawing.Size(83, 22);
@@ -122,7 +122,7 @@
this._FilterDemosMenuItem,
this._FilterModsMenuItem,
this._FilterJunkMenuItem});
this._FilterDropDownButton.Image = global::SAM.Picker.Properties.Resources.Filter;
this._FilterDropDownButton.Image = global::SAM.Picker.Resources.Filter;
this._FilterDropDownButton.ImageTransparentColor = System.Drawing.Color.Magenta;
this._FilterDropDownButton.Name = "_FilterDropDownButton";
this._FilterDropDownButton.Size = new System.Drawing.Size(29, 22);
@@ -181,6 +181,7 @@
this._GameListView.ItemActivate += new System.EventHandler(this.OnActivateGame);
this._GameListView.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(this.OnSelectGame);
this._GameListView.RetrieveVirtualItem += new System.Windows.Forms.RetrieveVirtualItemEventHandler(this.OnGameListViewRetrieveVirtualItem);
this._GameListView.SearchForVirtualItem += new System.Windows.Forms.SearchForVirtualItemEventHandler(this.OnGameListViewSearchForVirtualItem);
//
// _PickerStatusStrip
//
@@ -202,7 +203,7 @@
//
// _DownloadStatusLabel
//
this._DownloadStatusLabel.Image = global::SAM.Picker.Properties.Resources.Download;
this._DownloadStatusLabel.Image = global::SAM.Picker.Resources.Download;
this._DownloadStatusLabel.Name = "_DownloadStatusLabel";
this._DownloadStatusLabel.Size = new System.Drawing.Size(111, 17);
this._DownloadStatusLabel.Text = "Download status";

View File

@@ -1,4 +1,5 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
* Copyright (c) 2018-2019 Jan Klass (kissaki@posteo.de)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
@@ -38,19 +39,17 @@ namespace SAM.Picker
{
internal partial class GamePicker : Form
{
private static string VersionAgnosticLocalAppdata = Directory.GetParent(Application.LocalUserAppDataPath).ToString();
private static string CacheDir = Path.Combine(VersionAgnosticLocalAppdata, "cache");
private readonly API.Client _SteamClient;
private readonly List<GameInfo> _Games;
private readonly List<GameInfo> _FilteredGames;
private int _SelectedGameIndex;
private readonly Dictionary<uint, GameInfo> _Games = new Dictionary<uint, GameInfo>();
private readonly List<GameInfo> _FilteredGames = new List<GameInfo>();
private int _SelectedGameIndex = -1;
public List<GameInfo> Games
{
get { return _Games; }
}
private readonly List<string> _LogosAttempted;
private readonly ConcurrentQueue<GameInfo> _LogoQueue;
private readonly List<string> _LogosAttempted = new List<string>();
private readonly ConcurrentQueue<GameInfo> _LogoQueue = new ConcurrentQueue<GameInfo>();
// ReSharper disable PrivateFieldCanBeConvertedToLocalVariable
private readonly API.Callbacks.AppDataChanged _AppDataChangedCallback;
@@ -58,12 +57,6 @@ namespace SAM.Picker
public GamePicker(API.Client client)
{
this._Games = new List<GameInfo>();
this._FilteredGames = new List<GameInfo>();
this._SelectedGameIndex = -1;
this._LogosAttempted = new List<string>();
this._LogoQueue = new ConcurrentQueue<GameInfo>();
this.InitializeComponent();
var blank = new Bitmap(this._LogoImageList.ImageSize.Width, this._LogoImageList.ImageSize.Height);
@@ -84,17 +77,13 @@ namespace SAM.Picker
private void OnAppDataChanged(APITypes.AppDataChanged param)
{
if (param.Result == true)
if (param.Result == true && this._Games.ContainsKey(param.Id))
{
foreach (GameInfo info in this._Games)
{
if (info.Id == param.Id)
{
info.Name = this._SteamClient.SteamApps001.GetAppData(info.Id, "name");
this.AddGameToLogoQueue(info);
break;
}
}
var game = this._Games[param.Id];
game.Name = this._SteamClient.SteamApps001.GetAppData(game.Id, "name");
this.AddGameToLogoQueue(game);
this.DownloadNextLogo();
}
}
@@ -104,7 +93,7 @@ namespace SAM.Picker
byte[] bytes;
using (var downloader = new WebClient())
{
bytes = downloader.DownloadData(new Uri(string.Format("http://gib.me/sam/games.xml")));
bytes = downloader.DownloadData(new Uri("http://gib.me/sam/games.xml"));
}
using (var stream = new MemoryStream(bytes, false))
{
@@ -114,27 +103,23 @@ namespace SAM.Picker
while (nodes.MoveNext())
{
string type = nodes.Current.GetAttribute("type", "");
if (type == string.Empty)
if (string.IsNullOrEmpty(type) == true)
{
type = "normal";
}
pairs.Add(new KeyValuePair<uint, string>((uint)nodes.Current.ValueAsLong, type));
}
}
e.Result = pairs;
foreach (var kv in pairs)
{
this.AddGame(kv.Key, kv.Value);
}
}
private void OnDownloadList(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error == null && e.Cancelled == false)
{
var pairs = (List<KeyValuePair<uint, string>>)e.Result;
foreach (var kv in pairs)
{
this.AddGame(kv.Key, kv.Value);
}
}
else
if (e.Error != null || e.Cancelled)
{
this.AddDefaultGames();
//MessageBox.Show(e.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
@@ -147,8 +132,9 @@ namespace SAM.Picker
private void RefreshGames()
{
this._SelectedGameIndex = -1;
this._FilteredGames.Clear();
foreach (var info in this._Games.OrderBy(gi => gi.Name))
foreach (var info in this._Games.Values.OrderBy(gi => gi.Name))
{
if (info.Type == "normal" && _FilterGamesMenuItem.Checked == false)
{
@@ -167,19 +153,21 @@ namespace SAM.Picker
continue;
}
this._FilteredGames.Add(info);
this.AddGameToLogoQueue(info);
}
this._GameListView.BeginUpdate();
this._GameListView.VirtualListSize = this._FilteredGames.Count;
if (this._FilteredGames.Count > 0)
{
this._GameListView.RedrawItems(0, this._FilteredGames.Count - 1, true);
}
this._GameListView.EndUpdate();
this._PickerStatusLabel.Text = string.Format(
CultureInfo.CurrentCulture,
"Displaying {0} games. Total {1} games.",
this._GameListView.Items.Count,
this._Games.Count);
if (this._GameListView.Items.Count > 0)
{
this._GameListView.Items[0].Selected = true;
this._GameListView.Select();
}
}
private void OnGameListViewRetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
@@ -192,22 +180,84 @@ namespace SAM.Picker
};
}
private void OnGameListViewSearchForVirtualItem(object sender, SearchForVirtualItemEventArgs e)
{
if (e.Direction != SearchDirectionHint.Down || e.IsTextSearch == false)
{
return;
}
var count = this._FilteredGames.Count;
if (count < 2)
{
return;
}
var text = e.Text;
int startIndex = e.StartIndex;
Predicate<GameInfo> predicate;
/*if (e.IsPrefixSearch == true)*/
{
predicate = gi => gi.Name != null && gi.Name.StartsWith(text, StringComparison.CurrentCultureIgnoreCase);
}
/*else
{
predicate = gi => gi.Name != null && string.Compare(gi.Name, text, StringComparison.CurrentCultureIgnoreCase) == 0;
}*/
int index;
if (e.StartIndex >= count)
{
// starting from the last item in the list
index = this._FilteredGames.FindIndex(0, startIndex - 1, predicate);
}
else if (startIndex <= 0)
{
// starting from the first item in the list
index = this._FilteredGames.FindIndex(0, count, predicate);
}
else
{
index = this._FilteredGames.FindIndex(startIndex, count - startIndex, predicate);
if (index < 0)
{
index = this._FilteredGames.FindIndex(0, startIndex - 1, predicate);
}
}
e.Index = index < 0 ? -1 : index;
}
private void DoDownloadLogo(object sender, DoWorkEventArgs e)
{
var info = (GameInfo)e.Argument;
Directory.CreateDirectory(CacheDir);
var appDir = Path.Combine(CacheDir, info.Id.ToString("D"));
var imgPath = Path.Combine(appDir, info.Logo + ".jpg");
if (File.Exists(imgPath))
{
e.Result = new LogoInfo(info.Id, new Bitmap(File.OpenRead(imgPath)));
return;
}
var logoPath = string.Format(
"http://media.steamcommunity.com/steamcommunity/public/images/apps/{0}/{1}.jpg",
CultureInfo.InvariantCulture,
"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/apps/{0}/{1}.jpg",
info.Id,
info.Logo);
using (var downloader = new WebClient())
{
var data = downloader.DownloadData(new Uri(logoPath));
try
{
var data = downloader.DownloadData(new Uri(logoPath));
using (var stream = new MemoryStream(data, false))
{
var bitmap = new Bitmap(stream);
Directory.CreateDirectory(appDir);
bitmap.Save(imgPath);
e.Result = new LogoInfo(info.Id, bitmap);
}
}
@@ -226,8 +276,7 @@ namespace SAM.Picker
}
var logoInfo = (LogoInfo)e.Result;
var gameInfo = this._Games.FirstOrDefault(gi => gi.Id == logoInfo.Id);
if (gameInfo != null && logoInfo.Bitmap != null)
if (logoInfo.Bitmap != null && this._Games.TryGetValue(logoInfo.Id, out var gameInfo))
{
this._GameListView.BeginUpdate();
var imageIndex = this._LogoImageList.Images.Count;
@@ -254,6 +303,7 @@ namespace SAM.Picker
}
this._DownloadStatusLabel.Text = string.Format(
CultureInfo.CurrentCulture,
"Downloading {0} game icons...",
this._LogoQueue.Count);
this._DownloadStatusLabel.Visible = true;
@@ -281,18 +331,17 @@ namespace SAM.Picker
{
this._LogosAttempted.Add(logo);
this._LogoQueue.Enqueue(info);
this.DownloadNextLogo();
}
}
private bool OwnsGame(uint id)
{
return this._SteamClient.SteamApps003.IsSubscribedApp(id);
return this._SteamClient.SteamApps008.IsSubscribedApp(id);
}
private void AddGame(uint id, string type)
{
if (this._Games.Any(i => i.Id == id) == true)
if (this._Games.ContainsKey(id))
{
return;
}
@@ -305,8 +354,7 @@ namespace SAM.Picker
var info = new GameInfo(id, type);
info.Name = this._SteamClient.SteamApps001.GetAppData(info.Id, "name");
this._Games.Add(info);
this.AddGameToLogoQueue(info);
this._Games.Add(id, info);
}
private void AddGames()
@@ -330,23 +378,11 @@ namespace SAM.Picker
private void OnSelectGame(object sender, ListViewItemSelectionChangedEventArgs e)
{
if (e.IsSelected == true && e.ItemIndex != this._SelectedGameIndex)
{
this._SelectedGameIndex = e.ItemIndex;
}
else if (e.IsSelected == true && e.ItemIndex == this._SelectedGameIndex)
{
this._SelectedGameIndex = -1;
}
this._SelectedGameIndex = e.ItemIndex;
}
private void OnActivateGame(object sender, EventArgs e)
{
if (this._SelectedGameIndex < 0)
{
return;
}
var index = this._SelectedGameIndex;
if (index < 0 || index >= this._FilteredGames.Count)
{
@@ -401,6 +437,13 @@ namespace SAM.Picker
return;
}
while (this._LogoQueue.TryDequeue(out var logo))
{
// clear the download queue because we will be showing only one app
// TODO: https://github.com/gibbed/SteamAchievementManager/issues/106
this._LogosAttempted.Remove(logo.Logo);
}
this._AddGameTextBox.Text = "";
this._Games.Clear();
this.AddGame(id, "normal");

View File

@@ -0,0 +1,12 @@
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Scope = "member", Target = "SAM.Picker.GamePicker.#DoDownloadLogo(System.Object,System.ComponentModel.DoWorkEventArgs)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA2210:AssembliesShouldHaveValidStrongNames")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.Control.set_Text(System.String)", Scope = "member", Target = "SAM.Picker.GamePicker.#InitializeComponent()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.MessageBox.Show(System.String,System.String,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon)", Scope = "member", Target = "SAM.Picker.Program.#Main()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.MessageBox.Show(System.Windows.Forms.IWin32Window,System.String,System.String,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon)", Scope = "member", Target = "SAM.Picker.GamePicker.#OnActivateGame(System.Object,System.EventArgs)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.MessageBox.Show(System.Windows.Forms.IWin32Window,System.String,System.String,System.Windows.Forms.MessageBoxButtons,System.Windows.Forms.MessageBoxIcon)", Scope = "member", Target = "SAM.Picker.GamePicker.#OnAddGame(System.Object,System.EventArgs)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.ToolStripItem.set_Text(System.String)", Scope = "member", Target = "SAM.Picker.GamePicker.#DownloadNextLogo()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.ToolStripItem.set_Text(System.String)", Scope = "member", Target = "SAM.Picker.GamePicker.#InitializeComponent()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Forms.ToolStripItem.set_Text(System.String)", Scope = "member", Target = "SAM.Picker.GamePicker.#RefreshGames()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA2204:Literals should be spelled correctly", MessageId = "statusStrip", Scope = "member", Target = "SAM.Picker.GamePicker.#InitializeComponent()")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "SAM.Picker.GamePicker.#.ctor(SAM.API.Client)")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope", Scope = "member", Target = "SAM.Picker.GamePicker.#InitializeComponent()")]

View File

@@ -1,6 +1,7 @@
zlib License
Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
Copyright (c) 2018-2019 Jan Klass (kissaki@posteo.de)
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -11,12 +12,12 @@ including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
distribution.

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages

View File

@@ -1,4 +1,4 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
/* Copyright (c) 2019 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
@@ -33,40 +33,54 @@ namespace SAM.Picker
if (API.Steam.GetInstallPath() == Application.StartupPath)
{
MessageBox.Show(
"This tool declines to being run from the Steam directory.",
"This tool cannot be run from inside the Steam directory.",
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
}
API.Client client;
try
using (var client = new API.Client())
{
client = new API.Client();
if (client.Initialize(0) == false)
try
{
client.Initialize(0);
}
catch (API.ClientInitializeException e)
{
if (string.IsNullOrEmpty(e.Message) == false)
{
MessageBox.Show(
"Steam is not running. Please start Steam then run this tool again.\n\n" +
"(" + e.Message + ")",
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
else
{
MessageBox.Show(
"Steam is not running. Please start Steam then run this tool again.",
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
return;
}
catch (DllNotFoundException)
{
MessageBox.Show(
"Steam is not running. Please start Steam then run this tool again.",
"You've caused an exceptional error!",
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
}
}
catch (DllNotFoundException)
{
MessageBox.Show(
"You've caused an exceptional error!",
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new GamePicker(client));
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new GamePicker(client));
}
}
}
}

View File

@@ -1,61 +0,0 @@
/* Copyright (c) 2017 Rick (rick 'at' gibbed 'dot' us)
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would
* be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not
* be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
*/
using System.Reflection;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Steam Achievement Manager Picker")]
[assembly: AssemblyDescription("A game picker for the Steam Achievement Manager.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Gibbed")]
[assembly: AssemblyProduct("SAM.Picker")]
[assembly: AssemblyCopyright("Copyright © Gibbed 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("e133af48-a6c2-4890-8237-9552e0d325ac")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("7.0.0.0")]
[assembly: AssemblyFileVersion("7.0.0.0")]

View File

@@ -8,7 +8,7 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace SAM.Picker.Properties {
namespace SAM.Picker {
using System;
@@ -19,7 +19,7 @@ namespace SAM.Picker.Properties {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
@@ -39,7 +39,7 @@ namespace SAM.Picker.Properties {
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SAM.Picker.Properties.Resources", typeof(Resources).Assembly);
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SAM.Picker.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;

View File

@@ -119,15 +119,15 @@
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="Refresh" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\arrow-circle-double.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<value>Resources\arrow-circle-double.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Filter" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\television-test.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<value>Resources\television-test.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Search" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\magnifier.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<value>Resources\magnifier.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Download" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\download-cloud.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<value>Resources\download-cloud.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@@ -1,144 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{E89E57BB-0F09-47F3-98A0-2026E2E65FBA}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SAM.Picker</RootNamespace>
<AssemblyName>SAM.Picker</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFramework>net40</TargetFramework>
<AssemblyTitle>Steam Achievement Manager Picker</AssemblyTitle>
<Company>Gibbed</Company>
<Authors>Gibbed</Authors>
<Description>A game picker for the Steam Achievement Manager.</Description>
<Copyright>Copyright © Gibbed 2019</Copyright>
<Version>7.0.0</Version>
<AssemblyVersion>7.0.0.0</AssemblyVersion>
<FileVersion>7.0.0.0</FileVersion>
<RepositoryUrl>https://github.com/gibbed/SteamAchievementManager/</RepositoryUrl>
<RepositoryType>it</RepositoryType>
<ApplicationIcon>SAM.ico</ApplicationIcon>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>3.5</OldToolsVersion>
<UpgradeBackupLocation />
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<TargetFrameworkProfile />
<ApplicationManifest>app.manifest</ApplicationManifest>
<Platforms>x86</Platforms>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<OutputPath>..\bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x86</PlatformTarget>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>..\upload\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<UseVSHostingProcess>false</UseVSHostingProcess>
<PlatformTarget>x86</PlatformTarget>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data.DataSetExtensions">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="DoubleBufferedListView.cs">
<Compile Update="DoubleBufferedListView.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="GameInfo.cs" />
<Compile Include="GamePicker.cs">
<Compile Update="GamePicker.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="GamePicker.Designer.cs">
<DependentUpon>GamePicker.cs</DependentUpon>
</Compile>
<Compile Include="LogoInfo.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="GamePicker.resx">
<DependentUpon>GamePicker.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<EmbeddedResource Update="Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<Compile Update="Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SAM.API\SAM.API.csproj">
<Project>{DF9102D5-048A-4D21-8CE3-3544CBDF0ED1}</Project>
<Name>SAM.API</Name>
</ProjectReference>
<ProjectReference Include="..\SAM.API\SAM.API.csproj" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="Resources\arrow-circle-double.png" />
<None Include="Resources\magnifier.png" />
<None Include="Resources\television-test.png" />
<None Include="Resources\download-cloud.png" />
<Content Include="SAM.ico" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
<Visible>False</Visible>
<ProductName>Windows Installer 3.1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

32
SAM.Picker/app.manifest Normal file
View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
</assembly>

43
SAM.sln
View File

@@ -1,32 +1,37 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SAM.Picker", "SAM.Picker\SAM.Picker.csproj", "{E89E57BB-0F09-47F3-98A0-2026E2E65FBA}"
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28803.156
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SAM.Picker", "SAM.Picker\SAM.Picker.csproj", "{E89E57BB-0F09-47F3-98A0-2026E2E65FBA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SAM.API", "SAM.API\SAM.API.csproj", "{DF9102D5-048A-4D21-8CE3-3544CBDF0ED1}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SAM.API", "SAM.API\SAM.API.csproj", "{DF9102D5-048A-4D21-8CE3-3544CBDF0ED1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SAM.Game", "SAM.Game\SAM.Game.csproj", "{7640DE31-E54E-45F9-9CF0-8DF3A3EA30FC}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SAM.Game", "SAM.Game\SAM.Game.csproj", "{7640DE31-E54E-45F9-9CF0-8DF3A3EA30FC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
Debug|x86 = Debug|x86
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{E89E57BB-0F09-47F3-98A0-2026E2E65FBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E89E57BB-0F09-47F3-98A0-2026E2E65FBA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E89E57BB-0F09-47F3-98A0-2026E2E65FBA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E89E57BB-0F09-47F3-98A0-2026E2E65FBA}.Release|Any CPU.Build.0 = Release|Any CPU
{DF9102D5-048A-4D21-8CE3-3544CBDF0ED1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DF9102D5-048A-4D21-8CE3-3544CBDF0ED1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DF9102D5-048A-4D21-8CE3-3544CBDF0ED1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DF9102D5-048A-4D21-8CE3-3544CBDF0ED1}.Release|Any CPU.Build.0 = Release|Any CPU
{7640DE31-E54E-45F9-9CF0-8DF3A3EA30FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7640DE31-E54E-45F9-9CF0-8DF3A3EA30FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7640DE31-E54E-45F9-9CF0-8DF3A3EA30FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7640DE31-E54E-45F9-9CF0-8DF3A3EA30FC}.Release|Any CPU.Build.0 = Release|Any CPU
{E89E57BB-0F09-47F3-98A0-2026E2E65FBA}.Debug|x86.ActiveCfg = Debug|x86
{E89E57BB-0F09-47F3-98A0-2026E2E65FBA}.Debug|x86.Build.0 = Debug|x86
{E89E57BB-0F09-47F3-98A0-2026E2E65FBA}.Release|x86.ActiveCfg = Release|x86
{E89E57BB-0F09-47F3-98A0-2026E2E65FBA}.Release|x86.Build.0 = Release|x86
{DF9102D5-048A-4D21-8CE3-3544CBDF0ED1}.Debug|x86.ActiveCfg = Debug|x86
{DF9102D5-048A-4D21-8CE3-3544CBDF0ED1}.Debug|x86.Build.0 = Debug|x86
{DF9102D5-048A-4D21-8CE3-3544CBDF0ED1}.Release|x86.ActiveCfg = Release|x86
{DF9102D5-048A-4D21-8CE3-3544CBDF0ED1}.Release|x86.Build.0 = Release|x86
{7640DE31-E54E-45F9-9CF0-8DF3A3EA30FC}.Debug|x86.ActiveCfg = Debug|x86
{7640DE31-E54E-45F9-9CF0-8DF3A3EA30FC}.Debug|x86.Build.0 = Debug|x86
{7640DE31-E54E-45F9-9CF0-8DF3A3EA30FC}.Release|x86.ActiveCfg = Release|x86
{7640DE31-E54E-45F9-9CF0-8DF3A3EA30FC}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {FB343317-9FA7-49C3-A55C-D95A69E836EC}
EndGlobalSection
EndGlobal