1.0.0.3
This commit is contained in:
STAM 2022-04-13 18:40:50 +03:00 committed by GitHub
commit bb2b5442a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
54 changed files with 23615 additions and 12209 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "src/Facepunch.Steamworks"]
path = src/Facepunch.Steamworks
url = https://github.com/Facepunch/Facepunch.Steamworks.git

View File

@ -1,7 +1,18 @@
# UniversalValveToolbox # Universal Valve Toolbox
# [![AppVeyor](https://img.shields.io/appveyor/ci/stamepicmorg/universalvalvetoolbox?style=flat-square)](https://ci.appveyor.com/project/stamepicmorg/universalvalvetoolbox) [![Translation status](https://translate.epicm.org/widgets/universalvalvetoolbox/-/svg-badge.svg)](https://translate.epicm.org/engage/universalvalvetoolbox/?utm_source=widget) [![Size](https://img.shields.io/github/repo-size/EpicMorg/UniversalValveToolbox?label=size&style=flat-square)](https://github.com/EpicMorg/UniversalValveToolbox/archive/master.zip) [![Release](https://img.shields.io/github/v/release/EpicMorg/UniversalValveToolbox?style=flat-square)](https://github.com/EpicMorg/UniversalValveToolbox/releases) [![GitHub license](https://img.shields.io/github/license/EpicMorg/UniversalValveToolbox.svg?style=popout-square)](LICENSE.md) [![Changelog](https://img.shields.io/badge/Changelog-yellow.svg?style=popout-square)](CHANGELOG.md) [![Activity](https://img.shields.io/github/commit-activity/w/EpicMorg/UniversalValveToolbox?&style=flat-square)](https://github.com/EpicMorg/UniversalValveToolbox/commits) [![GitHub issues](https://img.shields.io/github/issues/EpicMorg/UniversalValveToolbox.svg?style=popout-square)](https://github.com/EpicMorg/UniversalValveToolbox/issues) [![GitHub forks](https://img.shields.io/github/forks/EpicMorg/UniversalValveToolbox.svg?style=popout-square)](https://github.com/EpicMorg/UniversalValveToolbox/network) [![GitHub stars](https://img.shields.io/github/stars/EpicMorg/UniversalValveToolbox.svg?style=popout-square)](https://github.com/EpicMorg/UniversalValveToolbox/stargazers) [![GitHub uses](https://img.shields.io/sourcegraph/rrc/github.com/EpicMorg/UniversalValveToolbox?style=flat-square)](https://github.com/EpicMorg/UniversalValveToolbox/pulse) [![CodeScene Code Health](https://codescene.io/projects/6852/status-badges/code-health)](https://codescene.io/projects/6852) [![CodeScene System Mastery](https://codescene.io/projects/6852/status-badges/system-mastery)](https://codescene.io/projects/6852) # [![AppVeyor](https://img.shields.io/appveyor/ci/stamepicmorg/universalvalvetoolbox?style=flat-square)](https://ci.appveyor.com/project/stamepicmorg/universalvalvetoolbox) [![Translation status](https://translate.epicm.org/widgets/universalvalvetoolbox/-/svg-badge.svg)](https://translate.epicm.org/engage/universalvalvetoolbox/?utm_source=widget) [![Size](https://img.shields.io/github/repo-size/EpicMorg/UniversalValveToolbox?label=size&style=flat-square)](https://github.com/EpicMorg/UniversalValveToolbox/archive/master.zip) [![Release](https://img.shields.io/github/v/release/EpicMorg/UniversalValveToolbox?style=flat-square)](https://github.com/EpicMorg/UniversalValveToolbox/releases) [![GitHub license](https://img.shields.io/github/license/EpicMorg/UniversalValveToolbox.svg?style=popout-square)](LICENSE.md) [![Changelog](https://img.shields.io/badge/Changelog-yellow.svg?style=popout-square)](CHANGELOG.md) [![Activity](https://img.shields.io/github/commit-activity/w/EpicMorg/UniversalValveToolbox?&style=flat-square)](https://github.com/EpicMorg/UniversalValveToolbox/commits) [![GitHub issues](https://img.shields.io/github/issues/EpicMorg/UniversalValveToolbox.svg?style=popout-square)](https://github.com/EpicMorg/UniversalValveToolbox/issues) [![GitHub forks](https://img.shields.io/github/forks/EpicMorg/UniversalValveToolbox.svg?style=popout-square)](https://github.com/EpicMorg/UniversalValveToolbox/network) [![GitHub stars](https://img.shields.io/github/stars/EpicMorg/UniversalValveToolbox.svg?style=popout-square)](https://github.com/EpicMorg/UniversalValveToolbox/stargazers) [![GitHub uses](https://img.shields.io/sourcegraph/rrc/github.com/EpicMorg/UniversalValveToolbox?style=flat-square)](https://github.com/EpicMorg/UniversalValveToolbox/pulse) [![CodeScene Code Health](https://codescene.io/projects/6852/status-badges/code-health)](https://codescene.io/projects/6852) [![CodeScene System Mastery](https://codescene.io/projects/6852/status-badges/system-mastery)](https://codescene.io/projects/6852)
[![](https://codescene.io/projects/6852/status.svg)](https://codescene.io/projects/6852/jobs/latest-successful/results) # Description
Toolbox for easy launching some officials Valve's SDK such as Source SDK 2013 SP or MP. Toolbox for easy launching some officials Valve's SDK such as Source SDK 2013 SP or MP.
# Settings
Mod could be changed at `settings.json` with `ToolboxMod` section. Supported mods: `retail`, `bundle`, `dev`.
## Retail
This is default mode. Shows all avalible users games at account. Tool launched with default steam app id `480` for requesting steam api and getting info.
## Bundle mode
If you want to distribute this tollbox with your game - edit `settings.json` and switch `ToolboxMod` to `bundle` value. And change `ToolsAppId` and `BundleAppID` for your's `SteamApp` of you game and sdk tools.
## Dev mode
Dev mode is the same mode as `bundle` but local path of root of your game folder and angine name will be get from `DevEnginePath` and `DevEngineName` values. Also You should set `ToolsAppId` and `BundleAppID` for your's `SteamApp` of you game and sdk tools.
[![](https://codescene.io/projects/6852/status.svg)](https://codescene.io/projects/6852/jobs/latest-successful/results)

@ -0,0 +1 @@
Subproject commit 1bae58560200c74fe53beeddb382aea4d83615f1

View File

@ -5,16 +5,32 @@ VisualStudioVersion = 16.0.29521.150
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalValveToolbox", "UniversalValveToolbox\UniversalValveToolbox.csproj", "{DE66895F-7317-45D3-B5CA-292253CE086A}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalValveToolbox", "UniversalValveToolbox\UniversalValveToolbox.csproj", "{DE66895F-7317-45D3-B5CA-292253CE086A}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Facepunch.Steamworks.Win32", "Facepunch.Steamworks\Facepunch.Steamworks\Facepunch.Steamworks.Win32.csproj", "{ED9B29E8-0F90-4F9E-BD87-F5014F5FCF85}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU Release|Any CPU = Release|Any CPU
Release|x86 = Release|x86
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DE66895F-7317-45D3-B5CA-292253CE086A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DE66895F-7317-45D3-B5CA-292253CE086A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DE66895F-7317-45D3-B5CA-292253CE086A}.Debug|Any CPU.Build.0 = Debug|Any CPU {DE66895F-7317-45D3-B5CA-292253CE086A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DE66895F-7317-45D3-B5CA-292253CE086A}.Debug|x86.ActiveCfg = Debug|x86
{DE66895F-7317-45D3-B5CA-292253CE086A}.Debug|x86.Build.0 = Debug|x86
{DE66895F-7317-45D3-B5CA-292253CE086A}.Release|Any CPU.ActiveCfg = Release|Any CPU {DE66895F-7317-45D3-B5CA-292253CE086A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DE66895F-7317-45D3-B5CA-292253CE086A}.Release|Any CPU.Build.0 = Release|Any CPU {DE66895F-7317-45D3-B5CA-292253CE086A}.Release|Any CPU.Build.0 = Release|Any CPU
{DE66895F-7317-45D3-B5CA-292253CE086A}.Release|x86.ActiveCfg = Release|x86
{DE66895F-7317-45D3-B5CA-292253CE086A}.Release|x86.Build.0 = Release|x86
{ED9B29E8-0F90-4F9E-BD87-F5014F5FCF85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ED9B29E8-0F90-4F9E-BD87-F5014F5FCF85}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ED9B29E8-0F90-4F9E-BD87-F5014F5FCF85}.Debug|x86.ActiveCfg = Debug|Any CPU
{ED9B29E8-0F90-4F9E-BD87-F5014F5FCF85}.Debug|x86.Build.0 = Debug|Any CPU
{ED9B29E8-0F90-4F9E-BD87-F5014F5FCF85}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ED9B29E8-0F90-4F9E-BD87-F5014F5FCF85}.Release|Any CPU.Build.0 = Release|Any CPU
{ED9B29E8-0F90-4F9E-BD87-F5014F5FCF85}.Release|x86.ActiveCfg = Release|Any CPU
{ED9B29E8-0F90-4F9E-BD87-F5014F5FCF85}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View File

@ -1,10 +1,18 @@
using UniversalValveToolbox.Base; using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using UniversalValveToolbox.Base;
namespace UniversalValveToolbox.Model.Dto { namespace UniversalValveToolbox.Model.Dto {
public class SettingsDtoModel : DtoModel { public class SettingsDtoModel : DtoModel {
private string lastSelectedProject; private string lastSelectedProject;
private string[] availableLanguages; private string[] availableLanguages;
private string language; private string language;
private string devenginepath = "C://";
private string devenginename = "My Future Game (engine)";
private ToolboxMod toolboxmod = ToolboxMod.retail;
private uint toolsappid = 480;
private uint bundleappsid = 480;
public string LastSelectedProject { public string LastSelectedProject {
get => lastSelectedProject; get => lastSelectedProject;
@ -20,5 +28,35 @@ namespace UniversalValveToolbox.Model.Dto {
get => language; get => language;
set => UpdateField(value, ref language); set => UpdateField(value, ref language);
} }
[JsonConverter(typeof(StringEnumConverter))]
public ToolboxMod ToolboxMod
{
get => toolboxmod;
set => UpdateField(value, ref toolboxmod);
}
public uint ToolsAppId
{
get => toolsappid;
set => UpdateField(value, ref toolsappid);
}
public uint BundleAppID
{
get => bundleappsid;
set => UpdateField(value, ref bundleappsid);
}
public string DevEnginePath
{
get => devenginepath;
set => UpdateField(value, ref devenginepath);
}
public string DevEngineName
{
get => devenginename;
set => UpdateField(value, ref devenginename);
}
}
public enum ToolboxMod {
retail, bundle, dev
} }
} }

View File

@ -1,4 +1,5 @@
using System; using Steamworks;
using System;
using System.Windows.Forms; using System.Windows.Forms;
using UniversalValveToolbox.Model.Provider; using UniversalValveToolbox.Model.Provider;
using UniversalValveToolbox.Utils; using UniversalValveToolbox.Utils;
@ -15,6 +16,8 @@ namespace UniversalValveToolbox {
LanguageManager.UpdateLanguage(currSettings.Language); LanguageManager.UpdateLanguage(currSettings.Language);
SteamClient.Init(currSettings.ToolsAppId);
Application.EnableVisualStyles(); Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FormMain()); Application.Run(new FormMain());

View File

@ -33,5 +33,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.2")] [assembly: AssemblyVersion("1.0.0.3")]
[assembly: AssemblyFileVersion("1.0.0.2")] [assembly: AssemblyFileVersion("1.0.0.3")]

View File

@ -130,6 +130,16 @@ namespace UniversalValveToolbox.Properties {
} }
} }
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap toolbox64 {
get {
object obj = ResourceManager.GetObject("toolbox64", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary> /// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap. /// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary> /// </summary>

View File

@ -118,23 +118,14 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="checked_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\checked_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="valve_64" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="valve_64" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\valve_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\valve_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="cancel_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\cancel_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="refresh_16" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="refresh_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\refresh_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\refresh_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="human_16" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="checked_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\human_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\checked_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="info_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\info_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="plug-silhouette_16" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="plug-silhouette_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\plug-silhouette_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\plug-silhouette_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -142,4 +133,16 @@
<data name="run_16" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="run_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\run_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\run_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="cancel_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\cancel_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="human_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\human_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="info_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\info_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="toolbox64" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\toolbox64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root> </root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -30,17 +30,24 @@
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAbout)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAbout));
this.labelVersion = new System.Windows.Forms.Label(); this.labelVersion = new System.Windows.Forms.Label();
this.pictureBoxLogo = new System.Windows.Forms.PictureBox();
this.labelTitle = new System.Windows.Forms.Label(); this.labelTitle = new System.Windows.Forms.Label();
this.labelCopy = new System.Windows.Forms.Label(); this.labelCopy = new System.Windows.Forms.Label();
this.labelDivider = new System.Windows.Forms.Label(); this.labelDivider = new System.Windows.Forms.Label();
this.buttonOK = new System.Windows.Forms.Button(); this.buttonOK = new System.Windows.Forms.Button();
this.linkLabelIconSite = new System.Windows.Forms.LinkLabel();
this.groupBox = new System.Windows.Forms.GroupBox();
this.linkLabelTI = new System.Windows.Forms.LinkLabel();
this.linkLabelFP = new System.Windows.Forms.LinkLabel(); this.linkLabelFP = new System.Windows.Forms.LinkLabel();
this.pictureBoxLogo = new System.Windows.Forms.PictureBox();
this.labelCaution = new System.Windows.Forms.Label();
this.labelIconsBy = new System.Windows.Forms.Label();
this.linkLabelthoseicons = new System.Windows.Forms.LinkLabel();
this.linkLabelsmashicons = new System.Windows.Forms.LinkLabel();
this.labelEpicMorgSteamPathsLibdll = new System.Windows.Forms.Label();
this.labelFacepunchSteamworksWin32dll = new System.Windows.Forms.Label();
this.labelkasthackbindingwfdll = new System.Windows.Forms.Label();
this.labelNewtonsoftJsondll = new System.Windows.Forms.Label();
this.labelGameloopVdf = new System.Windows.Forms.Label();
this.groupBox1 = new System.Windows.Forms.GroupBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxLogo)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxLogo)).BeginInit();
this.groupBox.SuspendLayout(); this.groupBox1.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// labelVersion // labelVersion
@ -48,14 +55,6 @@
resources.ApplyResources(this.labelVersion, "labelVersion"); resources.ApplyResources(this.labelVersion, "labelVersion");
this.labelVersion.Name = "labelVersion"; this.labelVersion.Name = "labelVersion";
// //
// pictureBoxLogo
//
this.pictureBoxLogo.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.pictureBoxLogo.Image = global::UniversalValveToolbox.Properties.Resources.valve_64;
resources.ApplyResources(this.pictureBoxLogo, "pictureBoxLogo");
this.pictureBoxLogo.Name = "pictureBoxLogo";
this.pictureBoxLogo.TabStop = false;
//
// labelTitle // labelTitle
// //
resources.ApplyResources(this.labelTitle, "labelTitle"); resources.ApplyResources(this.labelTitle, "labelTitle");
@ -79,29 +78,6 @@
this.buttonOK.UseVisualStyleBackColor = true; this.buttonOK.UseVisualStyleBackColor = true;
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
// //
// linkLabelIconSite
//
resources.ApplyResources(this.linkLabelIconSite, "linkLabelIconSite");
this.linkLabelIconSite.Name = "linkLabelIconSite";
this.linkLabelIconSite.TabStop = true;
this.linkLabelIconSite.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabelIconSite_LinkClicked);
//
// groupBox
//
resources.ApplyResources(this.groupBox, "groupBox");
this.groupBox.Controls.Add(this.linkLabelTI);
this.groupBox.Controls.Add(this.linkLabelFP);
this.groupBox.Controls.Add(this.linkLabelIconSite);
this.groupBox.Name = "groupBox";
this.groupBox.TabStop = false;
//
// linkLabelTI
//
resources.ApplyResources(this.linkLabelTI, "linkLabelTI");
this.linkLabelTI.Name = "linkLabelTI";
this.linkLabelTI.TabStop = true;
this.linkLabelTI.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabelTI_LinkClicked);
//
// linkLabelFP // linkLabelFP
// //
resources.ApplyResources(this.linkLabelFP, "linkLabelFP"); resources.ApplyResources(this.linkLabelFP, "linkLabelFP");
@ -109,11 +85,89 @@
this.linkLabelFP.TabStop = true; this.linkLabelFP.TabStop = true;
this.linkLabelFP.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabelFP_LinkClicked); this.linkLabelFP.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabelFP_LinkClicked);
// //
// pictureBoxLogo
//
resources.ApplyResources(this.pictureBoxLogo, "pictureBoxLogo");
this.pictureBoxLogo.Image = global::UniversalValveToolbox.Properties.Resources.toolbox64;
this.pictureBoxLogo.Name = "pictureBoxLogo";
this.pictureBoxLogo.TabStop = false;
//
// labelCaution
//
resources.ApplyResources(this.labelCaution, "labelCaution");
this.labelCaution.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.labelCaution.Name = "labelCaution";
//
// labelIconsBy
//
resources.ApplyResources(this.labelIconsBy, "labelIconsBy");
this.labelIconsBy.Name = "labelIconsBy";
//
// linkLabelthoseicons
//
resources.ApplyResources(this.linkLabelthoseicons, "linkLabelthoseicons");
this.linkLabelthoseicons.Name = "linkLabelthoseicons";
this.linkLabelthoseicons.TabStop = true;
this.linkLabelthoseicons.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabelTI_LinkClicked);
//
// linkLabelsmashicons
//
resources.ApplyResources(this.linkLabelsmashicons, "linkLabelsmashicons");
this.linkLabelsmashicons.Name = "linkLabelsmashicons";
this.linkLabelsmashicons.TabStop = true;
this.linkLabelsmashicons.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabelSI_LinkClicked);
//
// labelEpicMorgSteamPathsLibdll
//
resources.ApplyResources(this.labelEpicMorgSteamPathsLibdll, "labelEpicMorgSteamPathsLibdll");
this.labelEpicMorgSteamPathsLibdll.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.labelEpicMorgSteamPathsLibdll.Name = "labelEpicMorgSteamPathsLibdll";
//
// labelFacepunchSteamworksWin32dll
//
resources.ApplyResources(this.labelFacepunchSteamworksWin32dll, "labelFacepunchSteamworksWin32dll");
this.labelFacepunchSteamworksWin32dll.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.labelFacepunchSteamworksWin32dll.Name = "labelFacepunchSteamworksWin32dll";
//
// labelkasthackbindingwfdll
//
resources.ApplyResources(this.labelkasthackbindingwfdll, "labelkasthackbindingwfdll");
this.labelkasthackbindingwfdll.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.labelkasthackbindingwfdll.Name = "labelkasthackbindingwfdll";
//
// labelNewtonsoftJsondll
//
resources.ApplyResources(this.labelNewtonsoftJsondll, "labelNewtonsoftJsondll");
this.labelNewtonsoftJsondll.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.labelNewtonsoftJsondll.Name = "labelNewtonsoftJsondll";
//
// labelGameloopVdf
//
resources.ApplyResources(this.labelGameloopVdf, "labelGameloopVdf");
this.labelGameloopVdf.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.labelGameloopVdf.Name = "labelGameloopVdf";
//
// groupBox1
//
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Controls.Add(this.labelEpicMorgSteamPathsLibdll);
this.groupBox1.Controls.Add(this.labelkasthackbindingwfdll);
this.groupBox1.Controls.Add(this.labelGameloopVdf);
this.groupBox1.Controls.Add(this.labelNewtonsoftJsondll);
this.groupBox1.Controls.Add(this.labelFacepunchSteamworksWin32dll);
this.groupBox1.Name = "groupBox1";
this.groupBox1.TabStop = false;
//
// FormAbout // FormAbout
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.groupBox); this.Controls.Add(this.groupBox1);
this.Controls.Add(this.linkLabelsmashicons);
this.Controls.Add(this.linkLabelthoseicons);
this.Controls.Add(this.linkLabelFP);
this.Controls.Add(this.labelIconsBy);
this.Controls.Add(this.labelCaution);
this.Controls.Add(this.buttonOK); this.Controls.Add(this.buttonOK);
this.Controls.Add(this.labelDivider); this.Controls.Add(this.labelDivider);
this.Controls.Add(this.labelTitle); this.Controls.Add(this.labelTitle);
@ -127,8 +181,7 @@
this.ShowInTaskbar = false; this.ShowInTaskbar = false;
this.Load += new System.EventHandler(this.FormAbout_Load); this.Load += new System.EventHandler(this.FormAbout_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBoxLogo)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxLogo)).EndInit();
this.groupBox.ResumeLayout(false); this.groupBox1.ResumeLayout(false);
this.groupBox.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
@ -142,9 +195,16 @@
private System.Windows.Forms.Label labelCopy; private System.Windows.Forms.Label labelCopy;
private System.Windows.Forms.Label labelDivider; private System.Windows.Forms.Label labelDivider;
private System.Windows.Forms.Button buttonOK; private System.Windows.Forms.Button buttonOK;
private System.Windows.Forms.LinkLabel linkLabelIconSite;
private System.Windows.Forms.GroupBox groupBox;
private System.Windows.Forms.LinkLabel linkLabelTI;
private System.Windows.Forms.LinkLabel linkLabelFP; private System.Windows.Forms.LinkLabel linkLabelFP;
private System.Windows.Forms.Label labelCaution;
private System.Windows.Forms.Label labelIconsBy;
private System.Windows.Forms.LinkLabel linkLabelthoseicons;
private System.Windows.Forms.LinkLabel linkLabelsmashicons;
private System.Windows.Forms.Label labelEpicMorgSteamPathsLibdll;
private System.Windows.Forms.Label labelFacepunchSteamworksWin32dll;
private System.Windows.Forms.Label labelkasthackbindingwfdll;
private System.Windows.Forms.Label labelNewtonsoftJsondll;
private System.Windows.Forms.Label labelGameloopVdf;
private System.Windows.Forms.GroupBox groupBox1;
} }
} }

View File

@ -6,9 +6,32 @@ namespace UniversalValveToolbox {
public partial class FormAbout : Form { public partial class FormAbout : Form {
public FormAbout() { public FormAbout() {
InitializeComponent(); InitializeComponent();
#region move to helper
System.Reflection.Assembly assemblyEpicMorgSteamPathsLib = System.Reflection.Assembly.LoadFrom("EpicMorg.SteamPathsLib.dll");
System.Reflection.Assembly assemblyFacepunchSteamworksWin32 = System.Reflection.Assembly.LoadFrom("Facepunch.Steamworks.Win32.dll");
System.Reflection.Assembly assemblykasthackbindingwf = System.Reflection.Assembly.LoadFrom("kasthack.binding.wf.dll");
System.Reflection.Assembly assemblyGameloopVdf = System.Reflection.Assembly.LoadFrom("Gameloop.Vdf.dll");
System.Reflection.Assembly assemblyNewtonsoftJson = System.Reflection.Assembly.LoadFrom("Newtonsoft.Json.dll");
Version verEpicMorgSteamPathsLib = assemblyEpicMorgSteamPathsLib.GetName().Version;
Version verFacepunchSteamworksWin32 = assemblyFacepunchSteamworksWin32.GetName().Version;
Version verkasthackbindingwf = assemblykasthackbindingwf.GetName().Version;
Version verGameloopVdf = assemblyGameloopVdf.GetName().Version;
Version verNewtonsoftJson = assemblyNewtonsoftJson.GetName().Version;
#endregion
labelVersion.Text = Utils.VersionHelper.AssemblyVersion; labelVersion.Text = Utils.VersionHelper.AssemblyVersion;
labelTitle.Text = Utils.VersionHelper.AssemblyTitle; labelTitle.Text = Utils.VersionHelper.AssemblyTitle;
labelCopy.Text = Utils.VersionHelper.AssemblyCopyright; labelCopy.Text = Utils.VersionHelper.AssemblyCopyright;
labelCaution.Text = labelTitle.Text + " " + labelCaution.Text;
labelEpicMorgSteamPathsLibdll.Text = "EpicMorg.SteamPathsLib.dll " + verEpicMorgSteamPathsLib.ToString();
labelFacepunchSteamworksWin32dll.Text = "Facepunch.Steamworks.Win32.dll " + verFacepunchSteamworksWin32.ToString();
labelkasthackbindingwfdll.Text = "kasthack.binding.wf.dll " + verkasthackbindingwf.ToString();
labelGameloopVdf.Text = "Gameloop.Vdf.dll " + verGameloopVdf.ToString();
labelNewtonsoftJsondll.Text = "Newtonsoft.Json.dll " + verNewtonsoftJson.ToString();
} }
private void FormAbout_Load(object sender, EventArgs e) { private void FormAbout_Load(object sender, EventArgs e) {
@ -30,5 +53,10 @@ namespace UniversalValveToolbox {
private void linkLabelTI_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { private void linkLabelTI_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {
Process.Start("https://www.flaticon.com/authors/those-icons"); Process.Start("https://www.flaticon.com/authors/those-icons");
} }
private void linkLabelSI_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Process.Start("https://www.flaticon.com/authors/smashicons");
}
} }
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,7 @@ using System.Collections.Generic;
using UniversalValveToolbox.Utils; using UniversalValveToolbox.Utils;
using System.Globalization; using System.Globalization;
using System.Collections; using System.Collections;
using EpicMorg.SteamPathsLib; using Steamworks;
namespace UniversalValveToolbox { namespace UniversalValveToolbox {
public partial class FormAddons : Form { public partial class FormAddons : Form {
@ -30,7 +30,7 @@ namespace UniversalValveToolbox {
.Cast<DictionaryEntry>() .Cast<DictionaryEntry>()
.ToArray(); .ToArray();
model = new FormAddonViewModel(dataProvider.Addons, dataProvider.Engines.Where(engine => SteamPathsUtil.GetSteamAppDataById(engine.Appid) != null).ToArray(), categories); model = new FormAddonViewModel(dataProvider.Addons, dataProvider.Engines.Where(engine => isSteamAppInstall(engine.Appid)).ToArray(), categories);
UpdateAddonsComboBox(); UpdateAddonsComboBox();
UpdateAddonCategoryComboBox(); UpdateAddonCategoryComboBox();
@ -106,6 +106,11 @@ namespace UniversalValveToolbox {
} }
} }
private bool isSteamAppInstall(int appId) {
var isInstall = SteamApps.IsAppInstalled(appId);
return isInstall;
}
private void UpdateAddonCategoryComboBox() { private void UpdateAddonCategoryComboBox() {
comboBoxCategory.Items.Clear(); comboBoxCategory.Items.Clear();
comboBoxCategory.Items.AddRange(model.Categories.Select(c => c.Value).ToArray()); comboBoxCategory.Items.AddRange(model.Categories.Select(c => c.Value).ToArray());

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
using EpicMorg.SteamPathsLib; using Steamworks;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
@ -12,8 +12,10 @@ using UniversalValveToolbox.Model.Provider;
using UniversalValveToolbox.Model.ViewModel; using UniversalValveToolbox.Model.ViewModel;
using UniversalValveToolbox.Utils; using UniversalValveToolbox.Utils;
namespace UniversalValveToolbox { namespace UniversalValveToolbox
public partial class FormMain : Form { {
public partial class FormMain : Form
{
private readonly string RUN_PROJECT_ID = "RUN_PROJECT_ID"; private readonly string RUN_PROJECT_ID = "RUN_PROJECT_ID";
private EngineDtoModel[] Engines; private EngineDtoModel[] Engines;
@ -25,21 +27,25 @@ namespace UniversalValveToolbox {
private ListViewGroup listViewGroupAddons; private ListViewGroup listViewGroupAddons;
private ListViewGroup listViewGroupTools; private ListViewGroup listViewGroupTools;
private EngineDtoModel SelectedEngine { private EngineDtoModel SelectedEngine
get { {
get
{
if (Engines.Length == 0) if (Engines.Length == 0)
return null; return null;
return Engines[comboBoxEngine.SelectedIndex]; return Engines[comboBoxEngine.SelectedIndex];
} }
} }
private ProjectDtoModel SelectedProject { private ProjectDtoModel SelectedProject
{
get => (ProjectDtoModel)((comboBoxProjects.Enabled) get => (ProjectDtoModel)((comboBoxProjects.Enabled)
? Projects.First(project => project.Name.Equals(comboBoxProjects.SelectedItem)) ? Projects.First(project => project.Name.Equals(comboBoxProjects.SelectedItem))
: null); : null);
} }
public FormMain() { public FormMain()
{
InitializeComponent(); InitializeComponent();
FillBaseMenuItems(); FillBaseMenuItems();
@ -47,21 +53,25 @@ namespace UniversalValveToolbox {
Text = VersionHelper.AssemblyTitle + VersionHelper.AssemblyVersion; Text = VersionHelper.AssemblyTitle + VersionHelper.AssemblyVersion;
comboBoxEngine.SelectedIndexChanged += (s, e) => { comboBoxEngine.SelectedIndexChanged += (s, e) =>
{
UpdateProjectList(); UpdateProjectList();
UpdateToolsList(); UpdateToolsList();
UpdateAddonsList(); UpdateAddonsList();
}; };
} }
private void FormMain_Load(object sender, EventArgs e) { private void FormMain_Load(object sender, EventArgs e)
{
} }
private void UpdateLastSelectedProject() { private void UpdateLastSelectedProject()
{
var lastSelectedProject = dataProvider.Projects.FirstOrDefault(project => project.Name.Equals(dataProvider.Settings.LastSelectedProject)); var lastSelectedProject = dataProvider.Projects.FirstOrDefault(project => project.Name.Equals(dataProvider.Settings.LastSelectedProject));
if (lastSelectedProject != null && Engines.Length != 0) { if (lastSelectedProject != null && Engines.Length != 0)
{
var indexEngine = comboBoxEngine.Items.IndexOf(Engines.First(engine => engine.Appid.Equals(lastSelectedProject.Engine)).Name); var indexEngine = comboBoxEngine.Items.IndexOf(Engines.First(engine => engine.Appid.Equals(lastSelectedProject.Engine)).Name);
comboBoxEngine.SelectedIndex = indexEngine; comboBoxEngine.SelectedIndex = indexEngine;
@ -75,14 +85,16 @@ namespace UniversalValveToolbox {
EnvUtils.PrepareSFMData($"{SelectedProject?.Path ?? string.Empty}"); EnvUtils.PrepareSFMData($"{SelectedProject?.Path ?? string.Empty}");
} }
} }
private void SaveLastSelectedProject() { private void SaveLastSelectedProject()
{
var settings = dataProvider.Settings; var settings = dataProvider.Settings;
settings.LastSelectedProject = SelectedProject?.Name; settings.LastSelectedProject = SelectedProject?.Name;
dataProvider.Settings = settings; dataProvider.Settings = settings;
} }
private void UpdateFormData() { private void UpdateFormData()
{
UpdateEngineList(); UpdateEngineList();
UpdateProjectList(); UpdateProjectList();
UpdateToolsList(); UpdateToolsList();
@ -92,16 +104,19 @@ namespace UniversalValveToolbox {
UpdateLastSelectedProject(); UpdateLastSelectedProject();
} }
private void UpdateNavigationBar() { private void UpdateNavigationBar()
{
UpdateLogInStatus(); UpdateLogInStatus();
UpdateInfoNavigationBar(); UpdateInfoNavigationBar();
} }
private void toolStripStatusLabelRefresh_Click(object sender, EventArgs e) { private void toolStripStatusLabelRefresh_Click(object sender, EventArgs e)
{
UpdateFormData(); UpdateFormData();
} }
public void FillBaseMenuItems() { public void FillBaseMenuItems()
{
#region static content, do not edit #region static content, do not edit
//creating groups (categores) //creating groups (categores)
listViewGroupAddons = new ListViewGroup(Properties.translations.MenuCategories.catAddons); listViewGroupAddons = new ListViewGroup(Properties.translations.MenuCategories.catAddons);
@ -164,15 +179,15 @@ namespace UniversalValveToolbox {
}); });
} }
private void UpdateEngineList() { private void UpdateEngineList()
var dataProvider = new DataProvider(); {
Engines = dataProvider.Engines.Where(engine => {
var engineAppData = SteamPathsUtil.GetSteamAppDataById(engine.Appid);
return engineAppData != null && engineAppData.Installed;
}).ToArray();
if (Engines != null && Engines.Length != 0) {
GetAvailableEngines();
if (Engines != null && Engines.Length != 0)
{
comboBoxEngine.Enabled = true; comboBoxEngine.Enabled = true;
comboBoxEngine.Items.Clear(); comboBoxEngine.Items.Clear();
comboBoxEngine.Items.AddRange(Engines.Select(engine => engine.Name).ToArray()); comboBoxEngine.Items.AddRange(Engines.Select(engine => engine.Name).ToArray());
@ -181,8 +196,35 @@ namespace UniversalValveToolbox {
} }
} }
private void UpdateProjectList() { private void GetAvailableEngines()
if (Engines.Length == 0) { {
var dataProvider = new DataProvider();
if (dataProvider.Settings.ToolboxMod == ToolboxMod.dev)
{
EngineDtoModel engineValues = dataProvider.Engines.Single(engine => engine.Appid == dataProvider.Settings.BundleAppID);
Engines = new[] {
new EngineDtoModel {
Appid = (int)dataProvider.Settings.BundleAppID,
Name = dataProvider.Settings.DevEngineName,
Bin = engineValues.Bin,
Tools = engineValues.Tools
}
};
}
else {
Engines = dataProvider.Engines.Where(engine => dataProvider.Settings.ToolboxMod switch
{
ToolboxMod.retail => SteamApps.IsAppInstalled(engine.Appid),
ToolboxMod.bundle => engine.Appid == dataProvider.Settings.BundleAppID,
_ => throw new Exception($"Unrecognised toolbox mode: {dataProvider.Settings.ToolboxMod}")
}).ToArray();
}
}
private void UpdateProjectList()
{
if (Engines.Length == 0)
{
comboBoxProjects.Enabled = false; comboBoxProjects.Enabled = false;
comboBoxProjects.Items.Clear(); comboBoxProjects.Items.Clear();
@ -195,7 +237,8 @@ namespace UniversalValveToolbox {
var selectEngine = Engines[comboBoxEngine.SelectedIndex]; var selectEngine = Engines[comboBoxEngine.SelectedIndex];
AvailableProjects = Projects.Where(project => project.Engine == selectEngine.Appid).ToArray(); AvailableProjects = Projects.Where(project => project.Engine == selectEngine.Appid).ToArray();
if (AvailableProjects != null && AvailableProjects.Length != 0) { if (AvailableProjects != null && AvailableProjects.Length != 0)
{
comboBoxProjects.Enabled = true; comboBoxProjects.Enabled = true;
comboBoxProjects.Items.Clear(); comboBoxProjects.Items.Clear();
@ -203,17 +246,20 @@ namespace UniversalValveToolbox {
comboBoxProjects.SelectedIndex = 0; comboBoxProjects.SelectedIndex = 0;
} }
else { else
{
comboBoxProjects.Enabled = false; comboBoxProjects.Enabled = false;
comboBoxProjects.Items.Clear(); comboBoxProjects.Items.Clear();
} }
} }
private void UpdateToolsList() { private void UpdateToolsList()
{
var removeItem = new List<ListViewItem>(); var removeItem = new List<ListViewItem>();
foreach (ListViewItem item in listViewGroupTools.Items) { foreach (ListViewItem item in listViewGroupTools.Items)
{
removeItem.Add(item); removeItem.Add(item);
} }
@ -222,19 +268,30 @@ namespace UniversalValveToolbox {
if (SelectedEngine == null) if (SelectedEngine == null)
return; return;
var pathSelectedEngine = SteamPathsUtil.GetSteamAppManifestDataById(SelectedEngine.Appid)?.Path; var dataProvider = new DataProvider();
if (pathSelectedEngine != null) { var pathSelectedEngine = dataProvider.Settings.ToolboxMod switch
{
ToolboxMod.retail => SteamApps.AppInstallDir(SelectedEngine.Appid),
ToolboxMod.bundle => SteamApps.AppInstallDir(dataProvider.Settings.BundleAppID),
ToolboxMod.dev => dataProvider.Settings.DevEnginePath,
_ => throw new Exception($"Unrecognised engine type: {dataProvider.Settings.ToolboxMod}")
};
if (pathSelectedEngine != null)
{
var pairPathIconTools = SelectedEngine.Tools var pairPathIconTools = SelectedEngine.Tools
.Where(tool => File.Exists(Path.Combine(pathSelectedEngine, tool.Bin))) .Where(tool => File.Exists(Path.Combine(pathSelectedEngine, tool.Bin)))
.Select(tool => { .Select(tool =>
{
var keyByPath = Path.Combine(pathSelectedEngine, tool.Bin); var keyByPath = Path.Combine(pathSelectedEngine, tool.Bin);
var icon = Icon.ExtractAssociatedIcon(Path.Combine(pathSelectedEngine, tool.Bin)); var icon = Icon.ExtractAssociatedIcon(Path.Combine(pathSelectedEngine, tool.Bin));
return new Pair(keyByPath, icon); return new Pair(keyByPath, icon);
}); });
foreach (var pair in pairPathIconTools) { foreach (var pair in pairPathIconTools)
{
listView.SmallImageList.Images.Add((string)pair.First, (Icon)pair.Second); listView.SmallImageList.Images.Add((string)pair.First, (Icon)pair.Second);
listView.LargeImageList.Images.Add((string)pair.First, (Icon)pair.Second); listView.LargeImageList.Images.Add((string)pair.First, (Icon)pair.Second);
} }
@ -243,16 +300,19 @@ namespace UniversalValveToolbox {
var itemsTools = SelectedEngine.Tools var itemsTools = SelectedEngine.Tools
.Where(tool => File.Exists(Path.Combine(pathSelectedEngine, tool.Bin))) .Where(tool => File.Exists(Path.Combine(pathSelectedEngine, tool.Bin)))
.Select(tool => { .Select(tool =>
{
string keyByPath = null; string keyByPath = null;
if (pathSelectedEngine != null) if (pathSelectedEngine != null)
keyByPath = Path.Combine(pathSelectedEngine, tool.Bin); keyByPath = Path.Combine(pathSelectedEngine, tool.Bin);
if (keyByPath == null) { if (keyByPath == null)
{
return new ListViewItem(tool.Name, listViewGroupTools); return new ListViewItem(tool.Name, listViewGroupTools);
} }
else { else
{
return new ListViewItem(tool.Name, keyByPath, listViewGroupTools); return new ListViewItem(tool.Name, keyByPath, listViewGroupTools);
} }
@ -260,27 +320,33 @@ namespace UniversalValveToolbox {
listView.Items.AddRange(itemsTools); listView.Items.AddRange(itemsTools);
var engineData = SteamPathsUtil.GetSteamAppManifestDataById(SelectedEngine.Appid); var enginePath = dataProvider.Settings.ToolboxMod switch
{
ToolboxMod.retail => SteamApps.AppInstallDir(SelectedEngine.Appid),
ToolboxMod.bundle => SteamApps.AppInstallDir(dataProvider.Settings.BundleAppID),
ToolboxMod.dev => dataProvider.Settings.DevEnginePath,
_ => throw new Exception($"Unrecognised engine type: {dataProvider.Settings.ToolboxMod}")
};
var isAvailableProjectBySelectEngine = Projects.Any(project => project.Engine == SelectedEngine.Appid); var isAvailableProjectBySelectEngine = Projects.Any(project => project.Engine == SelectedEngine.Appid);
if (engineData != null && isAvailableProjectBySelectEngine) { if (enginePath != null && isAvailableProjectBySelectEngine)
var enginePath = engineData.Path; {
var iconPathEngine = Path.Combine(enginePath, SelectedEngine.Bin);
if (enginePath != null) { var runProjectListViewItem = new ListViewItem(Properties.translations.MenuItems.itmRunProject, iconPathEngine, listViewGroupTools);
var iconPathEngine = Path.Combine(enginePath, SelectedEngine.Bin); runProjectListViewItem.Tag = RUN_PROJECT_ID;
var runProjectListViewItem = new ListViewItem(Properties.translations.MenuItems.itmRunProject, iconPathEngine, listViewGroupTools); listView.Items.Add(runProjectListViewItem);
runProjectListViewItem.Tag = RUN_PROJECT_ID;
listView.Items.Add(runProjectListViewItem);
}
} }
} }
private void UpdateAddonsList() { private void UpdateAddonsList()
{
var removeItem = new List<ListViewItem>(); var removeItem = new List<ListViewItem>();
foreach (ListViewItem item in listViewGroupAddons.Items) { foreach (ListViewItem item in listViewGroupAddons.Items)
{
removeItem.Add(item); removeItem.Add(item);
} }
@ -289,39 +355,45 @@ namespace UniversalValveToolbox {
if (SelectedEngine == null) if (SelectedEngine == null)
return; return;
var pathSelectedEngine = SteamPathsUtil.GetSteamAppManifestDataById(SelectedEngine.Appid)?.Path; var pathSelectedEngine = SteamApps.AppInstallDir(SelectedEngine.Appid);
var addonsSelectedEngine = dataProvider.Addons.Where(a => a.Engines.Contains(SelectedEngine.Appid)); var addonsSelectedEngine = dataProvider.Addons.Where(a => a.Engines.Contains(SelectedEngine.Appid));
var pairPathIconTools = addonsSelectedEngine var pairPathIconTools = addonsSelectedEngine
.Where(addon => { .Where(addon =>
{
var path = addon.Bin; var path = addon.Bin;
return File.Exists(path); return File.Exists(path);
}) })
.Select(addons => { .Select(addons =>
{
var keyByPath = addons.Bin; var keyByPath = addons.Bin;
var icon = Icon.ExtractAssociatedIcon(keyByPath); var icon = Icon.ExtractAssociatedIcon(keyByPath);
return new Pair(keyByPath, icon); return new Pair(keyByPath, icon);
}); });
foreach (var pair in pairPathIconTools) { foreach (var pair in pairPathIconTools)
{
listView.SmallImageList.Images.Add((string)pair.First, (Icon)pair.Second); listView.SmallImageList.Images.Add((string)pair.First, (Icon)pair.Second);
listView.LargeImageList.Images.Add((string)pair.First, (Icon)pair.Second); listView.LargeImageList.Images.Add((string)pair.First, (Icon)pair.Second);
} }
var itemsAddons = addonsSelectedEngine.Select(addons => { var itemsAddons = addonsSelectedEngine.Select(addons =>
{
string keyByPath = null; string keyByPath = null;
if (pathSelectedEngine != null) if (pathSelectedEngine != null)
keyByPath = Path.Combine(pathSelectedEngine, addons.Bin); keyByPath = Path.Combine(pathSelectedEngine, addons.Bin);
if (keyByPath == null) { if (keyByPath == null)
{
return new ListViewItem(addons.Name, listViewGroupAddons); return new ListViewItem(addons.Name, listViewGroupAddons);
} }
else { else
{
return new ListViewItem(addons.Name, keyByPath, listViewGroupAddons); return new ListViewItem(addons.Name, keyByPath, listViewGroupAddons);
} }
@ -330,7 +402,8 @@ namespace UniversalValveToolbox {
listView.Items.AddRange(itemsAddons); listView.Items.AddRange(itemsAddons);
} }
private void UpdateInfoNavigationBar() { private void UpdateInfoNavigationBar()
{
var countAvailableEngines = Engines.Length; var countAvailableEngines = Engines.Length;
var countAvailableProjects = dataProvider.Projects.Length; var countAvailableProjects = dataProvider.Projects.Length;
var countAvailableAddons = dataProvider.Addons.Length; var countAvailableAddons = dataProvider.Addons.Length;
@ -339,81 +412,108 @@ namespace UniversalValveToolbox {
toolStripStatusLabelAddons.Text = Properties.translations.MenuNavbar.menuStrAddons + $"{countAvailableAddons}"; toolStripStatusLabelAddons.Text = Properties.translations.MenuNavbar.menuStrAddons + $"{countAvailableAddons}";
} }
private void UpdateLogInStatus() { private void UpdateLogInStatus()
{
var steamData = SteamManager.SteamData; var steamData = SteamManager.SteamData;
if (steamData.SteamPid != 0) { if (steamData.SteamPid != 0)
{
toolStripStatusLabelSteam.Image = Properties.Resources.checked_16; toolStripStatusLabelSteam.Image = Properties.Resources.checked_16;
toolStripStatusLabelSteam.Text = Properties.translations.MenuNavbar.menuStrSteam + Properties.translations.MenuNavbar.menuStrOnline; toolStripStatusLabelSteam.Text = Properties.translations.MenuNavbar.menuStrSteam + Properties.translations.MenuNavbar.menuStrOnline;
toolStripStatusLabelSteam.ToolTipText = Properties.translations.MenuNavbar.menuStrSteam + $"PID: {steamData.SteamPid.ToString()}"; toolStripStatusLabelSteam.ToolTipText = Properties.translations.MenuNavbar.menuStrSteam + $"PID: {steamData.SteamPid.ToString()}";
} }
else { else
{
toolStripStatusLabelSteam.Image = Properties.Resources.cancel_16; toolStripStatusLabelSteam.Image = Properties.Resources.cancel_16;
toolStripStatusLabelSteam.ToolTipText = string.Empty; toolStripStatusLabelSteam.ToolTipText = string.Empty;
toolStripStatusLabelSteam.Text = Properties.translations.MenuNavbar.menuStrSteam + Properties.translations.MenuNavbar.menuStrOffline; toolStripStatusLabelSteam.Text = Properties.translations.MenuNavbar.menuStrSteam + Properties.translations.MenuNavbar.menuStrOffline;
} }
if (steamData.UserNameSteam != null) { if (steamData.UserNameSteam != null)
{
toolStripStatusLabelLogin.Text = Properties.translations.MenuNavbar.menuStrLogin + $"{steamData.UserNameSteam}"; toolStripStatusLabelLogin.Text = Properties.translations.MenuNavbar.menuStrLogin + $"{steamData.UserNameSteam}";
} }
else { else
{
toolStripStatusLabelLogin.Text = Properties.translations.MenuNavbar.menuStrLogin + Properties.translations.MenuNavbar.menuStrNone; toolStripStatusLabelLogin.Text = Properties.translations.MenuNavbar.menuStrLogin + Properties.translations.MenuNavbar.menuStrNone;
} }
} }
private void button_Launch_Click(object sender, EventArgs e) { private void button_Launch_Click(object sender, EventArgs e)
{
this.OpenSettings(); this.OpenSettings();
} }
private void listView_MouseDoubleClick(object sender, MouseEventArgs e) { private void listView_MouseDoubleClick(object sender, MouseEventArgs e)
{
var selectItem = listView.SelectedItems[0]; var selectItem = listView.SelectedItems[0];
var selectItemText = selectItem.Text; var selectItemText = selectItem.Text;
EnvUtils.PrepareVProject($"{SelectedProject?.Path ?? string.Empty}"); EnvUtils.PrepareVProject($"{SelectedProject?.Path ?? string.Empty}");
EnvUtils.PrepareSFMData($"{SelectedProject?.Path ?? string.Empty}"); EnvUtils.PrepareSFMData($"{SelectedProject?.Path ?? string.Empty}");
if (selectItem.Group == listViewGroupTools) { if (selectItem.Group == listViewGroupTools)
if (RUN_PROJECT_ID.Equals(selectItem.Tag) && SelectedProject != null) { {
var pathEngineBin = Path.Combine(SteamPathsUtil.GetSteamAppManifestDataById(SelectedEngine.Appid).Path, SelectedEngine.Bin); if (RUN_PROJECT_ID.Equals(selectItem.Tag) && SelectedProject != null)
{
var pathEngineBin = Path.Combine(SteamApps.AppInstallDir(SelectedEngine.Appid), SelectedEngine.Bin);
Process.Start(pathEngineBin, $"-steam -game \"{SelectedProject?.Path ?? string.Empty}\" {SelectedProject.Args}"); Process.Start(pathEngineBin, $"-steam -game \"{SelectedProject?.Path ?? string.Empty}\" {SelectedProject.Args}");
} }
var selectedTool = SelectedEngine.Tools.FirstOrDefault(tool => tool.Name == selectItemText); var selectedTool = SelectedEngine.Tools.FirstOrDefault(tool => tool.Name == selectItemText);
if (selectedTool != null) { if (selectedTool != null)
var selectedEnginePath = SteamPathsUtil.GetSteamAppManifestDataById(SelectedEngine.Appid)?.Path; {
// var selectedEnginePath = SteamApps.AppInstallDir(SelectedEngine.Appid);
if (selectedEnginePath != null) { var selectedEnginePath = dataProvider.Settings.ToolboxMod switch
{
ToolboxMod.retail => SteamApps.AppInstallDir(SelectedEngine.Appid),
ToolboxMod.bundle => SteamApps.AppInstallDir(dataProvider.Settings.BundleAppID),
ToolboxMod.dev => dataProvider.Settings.DevEnginePath,
_ => throw new Exception($"Unrecognised engine type: {dataProvider.Settings.ToolboxMod}")
};
if (selectedEnginePath != null)
{
var toolPath = Path.Combine(selectedEnginePath, selectedTool.Bin); var toolPath = Path.Combine(selectedEnginePath, selectedTool.Bin);
if (File.Exists(toolPath)) { if (File.Exists(toolPath))
{
string finalArg = $"-steam {selectedTool.Args}"; string finalArg = $"-steam {selectedTool.Args}";
if (!finalArg.Contains("-game")) { if (!finalArg.Contains("-game"))
finalArg += $"-game \"{SelectedProject?.Path ?? string.Empty}\""; {
finalArg += $" -game \"{SelectedProject?.Path ?? string.Empty}\" ";
} }
Process.Start(toolPath, finalArg); Process.Start(toolPath, finalArg);
} }
else else
MessageBox.Show($"\"{selectedTool.Name}\" {Properties.translations.MessageBoxes.msgTextNotFound}\n{toolPath}", Properties.translations.MessageBoxes.msgWarning, MessageBoxButtons.OK, MessageBoxIcon.Warning); MessageBox.Show($"\"{selectedTool.Name}\" {Properties.translations.MessageBoxes.msgTextNotFound}\n{toolPath}", Properties.translations.MessageBoxes.msgWarning, MessageBoxButtons.OK, MessageBoxIcon.Warning);
} }
else { else
{
DialogResult dialogResult = MessageBox.Show($"\"{SelectedEngine.Name}\" {Properties.translations.MessageBoxes.msgTextWithAppID} \"{SelectedEngine.Appid}\" {Properties.translations.MessageBoxes.msgTextNotInstalledInstall}", Properties.translations.MessageBoxes.msgWarning, MessageBoxButtons.YesNo, MessageBoxIcon.Warning); DialogResult dialogResult = MessageBox.Show($"\"{SelectedEngine.Name}\" {Properties.translations.MessageBoxes.msgTextWithAppID} \"{SelectedEngine.Appid}\" {Properties.translations.MessageBoxes.msgTextNotInstalledInstall}", Properties.translations.MessageBoxes.msgWarning, MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (dialogResult == DialogResult.Yes) { if (dialogResult == DialogResult.Yes)
{
Process.Start($"steam://install/{SelectedEngine.Appid}"); Process.Start($"steam://install/{SelectedEngine.Appid}");
} }
else if (dialogResult == DialogResult.No) { else if (dialogResult == DialogResult.No)
{
MessageBox.Show($"{Properties.translations.MessageBoxes.msgTextInstallationOf} \"{SelectedEngine.Name}\" {Properties.translations.MessageBoxes.msgTextWithAppID} \"{SelectedEngine.Appid}\" {Properties.translations.MessageBoxes.msgTextCancelled}", Properties.translations.MessageBoxes.msgInfo, MessageBoxButtons.OK, MessageBoxIcon.Asterisk); MessageBox.Show($"{Properties.translations.MessageBoxes.msgTextInstallationOf} \"{SelectedEngine.Name}\" {Properties.translations.MessageBoxes.msgTextWithAppID} \"{SelectedEngine.Appid}\" {Properties.translations.MessageBoxes.msgTextCancelled}", Properties.translations.MessageBoxes.msgInfo, MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
} }
} }
} }
} }
else if (selectItem.Group == listViewGroupAddons) { else if (selectItem.Group == listViewGroupAddons)
{
var selectedAddons = dataProvider.Addons.FirstOrDefault(addon => addon.Name == selectItemText); var selectedAddons = dataProvider.Addons.FirstOrDefault(addon => addon.Name == selectItemText);
if (selectedAddons != null) { if (selectedAddons != null)
{
var addonPath = Path.Combine(selectedAddons.Bin); var addonPath = Path.Combine(selectedAddons.Bin);
if (File.Exists(addonPath)) if (File.Exists(addonPath))
@ -424,34 +524,43 @@ namespace UniversalValveToolbox {
} }
} }
else if (selectItemText == Properties.translations.MenuItems.itmOpenSettings) { else if (selectItemText == Properties.translations.MenuItems.itmOpenSettings)
{
this.OpenSettings(); this.OpenSettings();
} }
else if (selectItemText == Properties.translations.MenuItems.itmEditConfigurations) { else if (selectItemText == Properties.translations.MenuItems.itmEditConfigurations)
{
var frmProfiles = new FormProjects(); var frmProfiles = new FormProjects();
if (frmProfiles.ShowDialog() == DialogResult.OK) { if (frmProfiles.ShowDialog() == DialogResult.OK)
{
UpdateFormData(); UpdateFormData();
} }
} }
else if (selectItemText == Properties.translations.MenuItems.itmEditPlugins) { else if (selectItemText == Properties.translations.MenuItems.itmEditPlugins)
{
var frmPlugins = new FormAddons(); var frmPlugins = new FormAddons();
if (frmPlugins.ShowDialog() == DialogResult.OK) { if (frmPlugins.ShowDialog() == DialogResult.OK)
{
UpdateFormData(); UpdateFormData();
} }
} }
else if (selectItemText == Properties.translations.MenuItems.itmAbout) { else if (selectItemText == Properties.translations.MenuItems.itmAbout)
{
var frmAbout = new FormAbout(); var frmAbout = new FormAbout();
frmAbout.ShowDialog(); frmAbout.ShowDialog();
} }
else if (selectItemText == Properties.translations.MenuItems.itmGitHubLink) { else if (selectItemText == Properties.translations.MenuItems.itmGitHubLink)
{
Process.Start("https://github.com/EpicMorg/UniversalValveToolbox"); Process.Start("https://github.com/EpicMorg/UniversalValveToolbox");
} }
else if (selectItemText == Properties.translations.MenuItems.itmGitHubReport) { else if (selectItemText == Properties.translations.MenuItems.itmGitHubReport)
{
Process.Start("https://github.com/EpicMorg/UniversalValveToolbox/issues/new/choose"); Process.Start("https://github.com/EpicMorg/UniversalValveToolbox/issues/new/choose");
} }
} }
private void OpenSettings() { private void OpenSettings()
{
var dataManager = new DataProvider(); var dataManager = new DataProvider();
var settingsDto = dataManager.Settings; var settingsDto = dataManager.Settings;
var languageProvider = new LanguageProvider(); var languageProvider = new LanguageProvider();
@ -460,14 +569,17 @@ namespace UniversalValveToolbox {
var frmSettings = new FormSettings(settingsModel); var frmSettings = new FormSettings(settingsModel);
if (frmSettings.ShowDialog() == DialogResult.OK) { if (frmSettings.ShowDialog() == DialogResult.OK)
{
dataManager.Settings = settingsDto; dataManager.Settings = settingsDto;
Application.Restart(); Application.Restart();
} }
} }
private void FormMain_FormClosing(object sender, FormClosingEventArgs e) { private void FormMain_FormClosing(object sender, FormClosingEventArgs e)
{
SaveLastSelectedProject(); SaveLastSelectedProject();
SteamClient.Shutdown();
} }
} }
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,6 @@
using EpicMorg.SteamPathsLib; 
using kasthack.binding.wf; using kasthack.binding.wf;
using Steamworks;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -21,7 +22,7 @@ namespace UniversalValveToolbox {
public FormProjects() { public FormProjects() {
InitializeComponent(); InitializeComponent();
model = new FormProjectViewModel(dataProvider.Projects, dataProvider.Engines.Where(engine => SteamPathsUtil.GetSteamAppDataById(engine.Appid) != null).ToArray()); model = new FormProjectViewModel(dataProvider.Projects, dataProvider.Engines.Where(engine => isAppInstalled(engine.Appid)).ToArray());
UpdateComboBoxProject(); UpdateComboBoxProject();
UpdateComboBoxEngine(); UpdateComboBoxEngine();
@ -34,6 +35,11 @@ namespace UniversalValveToolbox {
comboBoxEngine.Bind(a => a.SelectedIndex, model, a => a.SelectEngineIndex); comboBoxEngine.Bind(a => a.SelectedIndex, model, a => a.SelectEngineIndex);
} }
private bool isAppInstalled(int appId) {
var isInstall = SteamApps.IsAppInstalled(appId);
return isInstall;
}
private void Model_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { private void Model_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) {
UpdateComboBoxEngine(); UpdateComboBoxEngine();
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -74,8 +74,8 @@
// //
// labelTranslationAthor // labelTranslationAthor
// //
this.labelTranslationAthor.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
resources.ApplyResources(this.labelTranslationAthor, "labelTranslationAthor"); resources.ApplyResources(this.labelTranslationAthor, "labelTranslationAthor");
this.labelTranslationAthor.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.labelTranslationAthor.Name = "labelTranslationAthor"; this.labelTranslationAthor.Name = "labelTranslationAthor";
// //
// FormSettings // FormSettings

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -13,6 +13,9 @@
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
</PropertyGroup> </PropertyGroup>
<PropertyGroup>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@ -33,7 +36,27 @@
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<ApplicationIcon>valve.ico</ApplicationIcon> <ApplicationIcon>toolbox.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="PresentationCore" /> <Reference Include="PresentationCore" />
@ -51,7 +74,7 @@
<Reference Include="System.Net.Http" /> <Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<PackageReference Include="EpicMorg.SteamPathsLib" Version="1.1.0.6" /> <!--<PackageReference Include="EpicMorg.SteamPathsLib" Version="1.1.0.6" />-->
<PackageReference Include="kasthack.binding.wf"> <PackageReference Include="kasthack.binding.wf">
<Version>1.2.26</Version> <Version>1.2.26</Version>
</PackageReference> </PackageReference>
@ -184,15 +207,24 @@
<EmbeddedResource Include="UI\FormAbout.resx"> <EmbeddedResource Include="UI\FormAbout.resx">
<DependentUpon>FormAbout.cs</DependentUpon> <DependentUpon>FormAbout.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="UI\FormAbout.ru-RU.resx">
<DependentUpon>FormAbout.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FormAbout.ru.resx"> <EmbeddedResource Include="UI\FormAbout.ru.resx">
<DependentUpon>FormAbout.cs</DependentUpon> <DependentUpon>FormAbout.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="UI\FormAddons.resx"> <EmbeddedResource Include="UI\FormAddons.resx">
<DependentUpon>FormAddons.cs</DependentUpon> <DependentUpon>FormAddons.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="UI\FormAddons.ru-RU.resx">
<DependentUpon>FormAddons.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FormAddons.ru.resx"> <EmbeddedResource Include="UI\FormAddons.ru.resx">
<DependentUpon>FormAddons.cs</DependentUpon> <DependentUpon>FormAddons.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="UI\FormMain.ru-RU.resx">
<DependentUpon>FormMain.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FormMain.ru.resx"> <EmbeddedResource Include="UI\FormMain.ru.resx">
<DependentUpon>FormMain.cs</DependentUpon> <DependentUpon>FormMain.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
@ -202,6 +234,9 @@
<EmbeddedResource Include="UI\FormMain.resx"> <EmbeddedResource Include="UI\FormMain.resx">
<DependentUpon>FormMain.cs</DependentUpon> <DependentUpon>FormMain.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="UI\FormProjects.ru-RU.resx">
<DependentUpon>FormProjects.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FormProjects.ru.resx"> <EmbeddedResource Include="UI\FormProjects.ru.resx">
<DependentUpon>FormProjects.cs</DependentUpon> <DependentUpon>FormProjects.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
@ -239,6 +274,9 @@
<Generator>ResXFileCodeGenerator</Generator> <Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>MessageBoxes.Designer.cs</LastGenOutput> <LastGenOutput>MessageBoxes.Designer.cs</LastGenOutput>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="UI\FormSettings.ru-RU.resx">
<DependentUpon>FormSettings.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FormSettings.ru.resx"> <EmbeddedResource Include="UI\FormSettings.ru.resx">
<DependentUpon>FormSettings.cs</DependentUpon> <DependentUpon>FormSettings.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
@ -247,6 +285,12 @@
<None Include="json\engines\1840_sfm.json"> <None Include="json\engines\1840_sfm.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None> </None>
<None Include="json\engines\1950750_kl.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\1966980_bst.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\440_tf2.sdk.json"> <None Include="json\engines\440_tf2.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None> </None>
@ -341,6 +385,7 @@
</Compile> </Compile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="toolbox.ico" />
<None Include="Resources\cancel_16.png" /> <None Include="Resources\cancel_16.png" />
<None Include="Resources\checked_16.png" /> <None Include="Resources\checked_16.png" />
<None Include="Resources\human_16.png" /> <None Include="Resources\human_16.png" />
@ -349,7 +394,18 @@
<None Include="Resources\info_16.png" /> <None Include="Resources\info_16.png" />
<None Include="Resources\plug-silhouette_16.png" /> <None Include="Resources\plug-silhouette_16.png" />
<None Include="Resources\run_16.png" /> <None Include="Resources\run_16.png" />
<Content Include="valve.ico" /> <None Include="Resources\toolbox64.png" />
<Content Include="steam_api.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="steam_api64.dll" />
</ItemGroup>
<ItemGroup />
<ItemGroup>
<ProjectReference Include="..\Facepunch.Steamworks\Facepunch.Steamworks\Facepunch.Steamworks.Win32.csproj">
<Project>{ed9b29e8-0f90-4f9e-bd87-f5014f5fcf85}</Project>
<Name>Facepunch.Steamworks.Win32</Name>
</ProjectReference>
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project> </Project>

View File

@ -1,4 +1,4 @@
using EpicMorg.SteamPathsLib; using Steamworks;
using System; using System;
using System.IO; using System.IO;
@ -28,7 +28,7 @@ namespace UniversalValveToolbox.Utils {
if (pathProject == null || pathProject.Length == 0) if (pathProject == null || pathProject.Length == 0)
return; return;
var SFMpath = SteamPathsUtil.GetSteamAppManifestDataById(1840)?.Path; var SFMpath = SteamApps.AppInstallDir(1840);
if (SFMpath == null) if (SFMpath == null)
return; return;

View File

@ -1,4 +1,5 @@
using EpicMorg.SteamPathsLib; using Steamworks;
using System.Diagnostics;
using UniversalValveToolbox.Model.ViewModel; using UniversalValveToolbox.Model.ViewModel;
namespace UniversalValveToolbox.Utils { namespace UniversalValveToolbox.Utils {
@ -6,8 +7,9 @@ namespace UniversalValveToolbox.Utils {
public static SteamDataViewModel SteamData { public static SteamDataViewModel SteamData {
get { get {
var result = new SteamDataViewModel(); var result = new SteamDataViewModel();
result.SteamPid = SteamPathsUtil.GetActiveProcessSteamData()?.PID ?? 0;
result.UserNameSteam = SteamPathsUtil.GetSteamData()?.LastGameNameUsed ?? null; result.SteamPid = Process.GetProcessesByName("steam")[0]?.Id ?? 0;
result.UserNameSteam = SteamClient.Name ?? null;
return result; return result;
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

View File

@ -0,0 +1,37 @@
{
"appid": 1950750,
"name": "Kayf-Life: Complete Edition",
"bin": "kl.exe",
"tools": [
{
"args": "",
"bin": "bin//hammerplusplus.exe",
"name": "Valve Hammer Editor ++"
},
{
"args": "",
"bin": "bin//hammer.exe",
"name": "Valve Hammer Editor (Slamin Tools)"
},
{
"args": "",
"bin": "bin//hlmv.exe",
"name": "Half-Life Model Viewer"
},
{
"args": "",
"bin": "bin//hlfaceposer.exe",
"name": "Half-Life FacePoser"
},
{
"args": "",
"bin": "bin//qc_eyes.exe",
"name": "QC Eyes"
},
{
"args": "-tools",
"bin": "kl.exe",
"name": "Engine Tools"
}
]
}

View File

@ -0,0 +1,37 @@
{
"appid": 1966980,
"name": "Bestiarium Project",
"bin": "bst.exe",
"tools": [
{
"args": "",
"bin": "bin//hammerplusplus.exe",
"name": "Valve Hammer Editor ++"
},
{
"args": "",
"bin": "bin//hammer.exe",
"name": "Valve Hammer Editor (Slamin Tools)"
},
{
"args": "",
"bin": "bin//hlmv.exe",
"name": "Half-Life Model Viewer"
},
{
"args": "",
"bin": "bin//hlfaceposer.exe",
"name": "Half-Life FacePoser"
},
{
"args": "",
"bin": "bin//qc_eyes.exe",
"name": "QC Eyes"
},
{
"args": "-tools",
"bin": "bst.exe",
"name": "Engine Tools"
}
]
}

View File

@ -8,6 +8,11 @@
"bin": "bin//hammer.exe", "bin": "bin//hammer.exe",
"name": "Valve Hammer Editor" "name": "Valve Hammer Editor"
}, },
{
"args": "",
"bin": "bin//hammerplusplus.exe",
"name": "Valve Hammer Editor ++"
},
{ {
"args": "", "args": "",
"bin": "bin//hlmv.exe", "bin": "bin//hlmv.exe",

View File

@ -8,6 +8,11 @@
"bin": "bin//hammer.exe", "bin": "bin//hammer.exe",
"name": "Valve Hammer Editor" "name": "Valve Hammer Editor"
}, },
{
"args": "",
"bin": "bin//hammerplusplus.exe",
"name": "Valve Hammer Editor ++"
},
{ {
"args": "", "args": "",
"bin": "bin//hlmv.exe", "bin": "bin//hlmv.exe",

View File

@ -8,6 +8,11 @@
"bin": "bin//hammer.exe", "bin": "bin//hammer.exe",
"name": "Valve Hammer Editor" "name": "Valve Hammer Editor"
}, },
{
"args": "",
"bin": "bin//hammerplusplus.exe",
"name": "Valve Hammer Editor ++"
},
{ {
"args": "", "args": "",
"bin": "bin//hlmv.exe", "bin": "bin//hlmv.exe",

View File

@ -8,6 +8,11 @@
"bin": "bin//hammer.exe", "bin": "bin//hammer.exe",
"name": "Valve Hammer Editor" "name": "Valve Hammer Editor"
}, },
{
"args": "",
"bin": "bin//hammerplusplus.exe",
"name": "Valve Hammer Editor ++"
},
{ {
"args": "", "args": "",
"bin": "bin//hlmv.exe", "bin": "bin//hlmv.exe",

View File

@ -8,6 +8,11 @@
"bin": "bin//hammer.exe", "bin": "bin//hammer.exe",
"name": "Valve Hammer Editor" "name": "Valve Hammer Editor"
}, },
{
"args": "",
"bin": "bin//hammerplusplus.exe",
"name": "Valve Hammer Editor ++"
},
{ {
"args": "", "args": "",
"bin": "bin//hlmv.exe", "bin": "bin//hlmv.exe",

View File

@ -8,6 +8,11 @@
"bin": "bin//hammer.exe", "bin": "bin//hammer.exe",
"name": "Valve Hammer Editor" "name": "Valve Hammer Editor"
}, },
{
"args": "",
"bin": "bin//hammerplusplus.exe",
"name": "Valve Hammer Editor ++"
},
{ {
"args": "", "args": "",
"bin": "bin//hlmv.exe", "bin": "bin//hlmv.exe",

View File

@ -8,6 +8,11 @@
"bin": "bin//hammer.exe", "bin": "bin//hammer.exe",
"name": "Valve Hammer Editor" "name": "Valve Hammer Editor"
}, },
{
"args": "",
"bin": "bin//hammerplusplus.exe",
"name": "Valve Hammer Editor ++"
},
{ {
"args": "", "args": "",
"bin": "bin//hlmv.exe", "bin": "bin//hlmv.exe",

View File

@ -8,6 +8,11 @@
"bin": "bin//hammer.exe", "bin": "bin//hammer.exe",
"name": "Valve Hammer Editor" "name": "Valve Hammer Editor"
}, },
{
"args": "",
"bin": "bin//hammerplusplus.exe",
"name": "Valve Hammer Editor ++"
},
{ {
"args": "", "args": "",
"bin": "bin//hlmv.exe", "bin": "bin//hlmv.exe",

View File

@ -8,6 +8,11 @@
"bin": "bin//hammer.exe", "bin": "bin//hammer.exe",
"name": "Valve Hammer Editor" "name": "Valve Hammer Editor"
}, },
{
"args": "",
"bin": "bin//hammerplusplus.exe",
"name": "Valve Hammer Editor ++"
},
{ {
"args": "", "args": "",
"bin": "bin//hlmv.exe", "bin": "bin//hlmv.exe",

View File

@ -8,6 +8,11 @@
"bin": "bin//hammer.exe", "bin": "bin//hammer.exe",
"name": "Valve Hammer Editor" "name": "Valve Hammer Editor"
}, },
{
"args": "",
"bin": "bin//hammerplusplus.exe",
"name": "Valve Hammer Editor ++"
},
{ {
"args": "", "args": "",
"bin": "bin//hlmv.exe", "bin": "bin//hlmv.exe",

View File

@ -18,6 +18,11 @@
"bin": "bin//hammer.exe", "bin": "bin//hammer.exe",
"name": "Valve Hammer Editor" "name": "Valve Hammer Editor"
}, },
{
"args": "",
"bin": "bin//hammerplusplus.exe",
"name": "Valve Hammer Editor ++"
},
{ {
"args": "", "args": "",
"bin": "bin//hlmv.exe", "bin": "bin//hlmv.exe",

View File

@ -18,6 +18,11 @@
"bin": "bin//hammer.exe", "bin": "bin//hammer.exe",
"name": "Valve Hammer Editor" "name": "Valve Hammer Editor"
}, },
{
"args": "",
"bin": "bin//hammerplusplus.exe",
"name": "Valve Hammer Editor ++"
},
{ {
"args": "", "args": "",
"bin": "bin//hlmv.exe", "bin": "bin//hlmv.exe",

View File

@ -2,5 +2,10 @@
"LastSelectedProject": null, "LastSelectedProject": null,
"Language": "en-US", "Language": "en-US",
"AvailableLanguages": [ "en-US", "ru-RU" ], "AvailableLanguages": [ "en-US", "ru-RU" ],
"Theme": null "Theme": null,
"ToolboxMod": "bundle", //retail, bundle, dev
"ToolsAppId": 1966980, //set your game real steam sdk id for init SteamApi or use 480 stub
"BundleAppID": 1950750, //set your gane steam id for get fs path
"DevEnginePath": "C://", //set you game root folder if you run dev-mod
"DevEngineName": "My Future Game (engine)" //set you game root folder if you run dev-mod
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 KiB