├── setup.exe
├── Steamworks.NET.dll
├── Source
├── IdleMaster
│ ├── logo1.ico
│ ├── Resources
│ │ ├── ban-2x.png
│ │ ├── cog-2x.png
│ │ ├── eye-2x.png
│ │ ├── x-2x.png
│ │ ├── check-2x.png
│ │ ├── globe-2x.png
│ │ ├── info-2x.png
│ │ ├── trash-2x.png
│ │ ├── CSteamworks.dll
│ │ ├── document-2x.png
│ │ ├── media-pause.png
│ │ ├── media-play.png
│ │ ├── steam-idle.exe
│ │ ├── steam_api.dll
│ │ ├── bar-chart-2x.png
│ │ ├── media-play-2x.png
│ │ ├── lock-locked-2x.png
│ │ ├── media-pause-2x.png
│ │ ├── power-standby-2x.png
│ │ ├── select2-spinner.gif
│ │ ├── media-step-forward.png
│ │ └── media-step-forward-2x.png
│ ├── packages.config
│ ├── AvgValues.cs
│ ├── frmChangelog.cs
│ ├── frmAbout.cs
│ ├── Program.cs
│ ├── SteamProfile.cs
│ ├── Properties
│ │ ├── AssemblyInfo.cs
│ │ ├── Settings.settings
│ │ ├── Settings.Designer.cs
│ │ ├── Resources.resx
│ │ └── Resources.Designer.cs
│ ├── frmBlacklist.cs
│ ├── Statistics.cs
│ ├── frmChangelog.Designer.cs
│ ├── frmStatistics.cs
│ ├── Logger.cs
│ ├── app.config
│ ├── Badge.cs
│ ├── frmSettingsAdvanced.cs
│ ├── frmBrowser.Designer.cs
│ ├── frmAbout.Designer.cs
│ ├── CookieClient.cs
│ ├── frmSettings.cs
│ ├── frmBlacklist.Designer.cs
│ ├── frmStatistics.Designer.cs
│ ├── frmSettingsAdvanced.Designer.cs
│ ├── frmBrowser.cs
│ ├── localization
│ │ ├── strings.zh.resx
│ │ ├── strings.zh-TW.resx
│ │ ├── strings.ja.resx
│ │ └── strings.ko.resx
│ └── IdleMaster.csproj
└── IdleMaster.sln
├── steam-idle Source
├── steam-idle
│ ├── icon.ico
│ ├── Properties
│ │ ├── Settings.settings
│ │ ├── Settings.Designer.cs
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ └── Resources.resx
│ ├── frmMain.cs
│ ├── Program.cs
│ ├── frmMain.Designer.cs
│ └── steam-idle.csproj
└── steam-idle.sln
├── .gitignore
└── README.md
/setup.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/setup.exe
--------------------------------------------------------------------------------
/Steamworks.NET.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Steamworks.NET.dll
--------------------------------------------------------------------------------
/Source/IdleMaster/logo1.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/logo1.ico
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/ban-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/ban-2x.png
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/cog-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/cog-2x.png
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/eye-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/eye-2x.png
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/x-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/x-2x.png
--------------------------------------------------------------------------------
/steam-idle Source/steam-idle/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/steam-idle Source/steam-idle/icon.ico
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/check-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/check-2x.png
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/globe-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/globe-2x.png
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/info-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/info-2x.png
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/trash-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/trash-2x.png
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/CSteamworks.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/CSteamworks.dll
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/document-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/document-2x.png
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/media-pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/media-pause.png
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/media-play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/media-play.png
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/steam-idle.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/steam-idle.exe
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/steam_api.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/steam_api.dll
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/bar-chart-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/bar-chart-2x.png
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/media-play-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/media-play-2x.png
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/lock-locked-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/lock-locked-2x.png
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/media-pause-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/media-pause-2x.png
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/power-standby-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/power-standby-2x.png
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/select2-spinner.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/select2-spinner.gif
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/media-step-forward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/media-step-forward.png
--------------------------------------------------------------------------------
/Source/IdleMaster/Resources/media-step-forward-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jshackles/idle_master/HEAD/Source/IdleMaster/Resources/media-step-forward-2x.png
--------------------------------------------------------------------------------
/Source/IdleMaster/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/steam-idle Source/steam-idle/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Source/IdleMaster/AvgValues.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace IdleMaster
4 | {
5 | public class EnhancedsteamHelper
6 | {
7 | // ReSharper disable once InconsistentNaming
8 | public List Avg_Values { get; set; }
9 | }
10 |
11 | public class Avg
12 | {
13 | public int AppId { get; set; }
14 |
15 | // ReSharper disable once InconsistentNaming
16 | public double Avg_Price { get; set; }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Source/IdleMaster/frmChangelog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 | using IdleMaster.Properties;
4 |
5 | namespace IdleMaster
6 | {
7 | public partial class frmChangelog : Form
8 | {
9 | public frmChangelog()
10 | {
11 | InitializeComponent();
12 | }
13 |
14 | private void frmChangelog_Load(object sender, EventArgs e)
15 | {
16 | // Localize Form
17 | this.Text = localization.strings.release_notes_title;
18 |
19 | rtbChangelog.Rtf = Resources.Changelog;
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/steam-idle Source/steam-idle/frmMain.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 | using System.Windows.Forms;
10 |
11 | namespace steam_idle
12 | {
13 | public partial class frmMain : Form
14 | {
15 | public frmMain(long appid)
16 | {
17 | InitializeComponent();
18 | picApp.Load("http://cdn.akamai.steamstatic.com/steam/apps/" + appid.ToString() + "/header_292x136.jpg");
19 | }
20 |
21 | private void frmMain_Load(object sender, EventArgs e)
22 | {
23 |
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/steam-idle Source/steam-idle/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using System.Windows.Forms;
6 | using Steamworks;
7 |
8 | namespace steam_idle
9 | {
10 | static class Program
11 | {
12 | [STAThread]
13 | static void Main(string[] args)
14 | {
15 | long appId = long.Parse(args[0]);
16 | Environment.SetEnvironmentVariable("SteamAppId", appId.ToString());
17 |
18 | if (!SteamAPI.Init())
19 | {
20 | return;
21 | }
22 |
23 | Application.EnableVisualStyles();
24 | Application.SetCompatibleTextRenderingDefault(false);
25 | Application.Run(new frmMain(appId));
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/Source/IdleMaster/frmAbout.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Deployment.Application;
3 | using System.Reflection;
4 | using System.Windows.Forms;
5 |
6 | namespace IdleMaster
7 | {
8 | public partial class frmAbout : Form
9 | {
10 | public frmAbout()
11 | {
12 | InitializeComponent();
13 | }
14 |
15 | private void btnOK_Click(object sender, EventArgs e)
16 | {
17 | Close();
18 | }
19 |
20 | private void frmAbout_Load(object sender, EventArgs e)
21 | {
22 | // Localize the form
23 | btnOK.Text = localization.strings.ok;
24 |
25 | if (ApplicationDeployment.IsNetworkDeployed)
26 | {
27 | var version = ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();
28 | lblVersion.Text = "Idle Master v" + version;
29 | }
30 | else
31 | {
32 | var version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
33 | lblVersion.Text = "Idle Master v" + version;
34 | }
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/Source/IdleMaster.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 2013
4 | VisualStudioVersion = 12.0.21005.1
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IdleMaster", "IdleMaster\IdleMaster.csproj", "{D26CAFBB-F684-4E53-BE38-60AAD2531893}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {D26CAFBB-F684-4E53-BE38-60AAD2531893}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {D26CAFBB-F684-4E53-BE38-60AAD2531893}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {D26CAFBB-F684-4E53-BE38-60AAD2531893}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {D26CAFBB-F684-4E53-BE38-60AAD2531893}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | EndGlobal
23 |
--------------------------------------------------------------------------------
/steam-idle Source/steam-idle.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 2013
4 | VisualStudioVersion = 12.0.31101.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "steam-idle", "steam-idle\steam-idle.csproj", "{E0E49AFD-1101-4815-A1F1-01F65D4D3306}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {E0E49AFD-1101-4815-A1F1-01F65D4D3306}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {E0E49AFD-1101-4815-A1F1-01F65D4D3306}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {E0E49AFD-1101-4815-A1F1-01F65D4D3306}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {E0E49AFD-1101-4815-A1F1-01F65D4D3306}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | EndGlobal
23 |
--------------------------------------------------------------------------------
/steam-idle Source/steam-idle/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.18444
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace steam_idle.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Source/IdleMaster/Program.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Win32;
2 | using System;
3 | using System.IO;
4 | using System.Windows.Forms;
5 |
6 | namespace IdleMaster
7 | {
8 | static class Program
9 | {
10 | ///
11 | /// The main entry point for the application.
12 | ///
13 | [STAThread]
14 | static void Main()
15 | {
16 | // Set the Browser emulation version for embedded browser control
17 | try
18 | {
19 | RegistryKey ie_root = Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION");
20 | RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", true);
21 | String programName = Path.GetFileName(Environment.GetCommandLineArgs()[0]);
22 | key.SetValue(programName, (int)10001, RegistryValueKind.DWord);
23 | }
24 | catch (Exception)
25 | {
26 |
27 | }
28 |
29 | Application.ThreadException += (o, a) => Logger.Exception(a.Exception);
30 | Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
31 | Application.EnableVisualStyles();
32 | Application.SetCompatibleTextRenderingDefault(false);
33 | Application.Run(new frmMain());
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | #################
2 | ## Visual Studio
3 | #################
4 |
5 | ## Ignore Visual Studio temporary files, build results, and
6 | ## files generated by popular Visual Studio add-ons.
7 |
8 | # User-specific files
9 | *.suo
10 | *.user
11 | *.sln.docstates
12 |
13 | # Build results
14 | [Dd]ebug/
15 | [Rr]elease/
16 | *_i.c
17 | *_p.c
18 | *.ilk
19 | *.meta
20 | *.obj
21 | *.pch
22 | *.pdb
23 | *.pgc
24 | *.pgd
25 | *.rsp
26 | *.sbr
27 | *.tlb
28 | *.tli
29 | *.tlh
30 | *.tmp
31 | *.vspscc
32 | .builds
33 | *.dotCover
34 | packages/
35 |
36 | # Visual C++ cache files
37 | ipch/
38 | *.aps
39 | *.ncb
40 | *.opensdf
41 | *.sdf
42 |
43 | # Visual Studio profiler
44 | *.psess
45 | *.vsp
46 |
47 | # Installshield output folder
48 | [Ee]xpress
49 |
50 | # Click-Once directory
51 | publish
52 |
53 | # Others
54 | [Bb]in
55 | [Oo]bj
56 | sql
57 | TestResults
58 | *.Cache
59 | ClientBin
60 | stylecop.*
61 | ~$*
62 | *.dbmdl
63 | Generated_Code #added for RIA/Silverlight projects
64 |
65 | # Backup & report files from converting an old project file to a newer
66 | # Visual Studio version. Backup files are not needed, because we have git ;-)
67 | _UpgradeReport_Files/
68 | Backup*/
69 | UpgradeLog*.XML
70 |
71 |
72 |
73 | ############
74 | ## Windows
75 | ############
76 |
77 | # Windows image file caches
78 | Thumbs.db
79 |
80 | # Folder config file
81 | Desktop.ini
82 |
83 | ############
84 | ## Security
85 | ############
86 |
87 | # Certificate file extensions
88 | *.pfx
--------------------------------------------------------------------------------
/Source/IdleMaster/SteamProfile.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Net;
3 | using System.Text;
4 | using System.Xml;
5 | using IdleMaster.Properties;
6 |
7 | namespace IdleMaster
8 | {
9 | internal class SteamProfile
10 | {
11 | internal static string GetSteamId()
12 | {
13 | var steamid = WebUtility.UrlDecode(Settings.Default.steamLogin);
14 | var index = steamid.IndexOfAny(new[] { '|' }, 0);
15 | return index != -1 ? steamid.Remove(index) : steamid;
16 | }
17 |
18 | internal static string GetSteamUrl()
19 | {
20 | return "http://steamcommunity.com/profiles/" + GetSteamId();
21 | }
22 |
23 | internal static string GetSignedAs()
24 | {
25 | var steamUrl = GetSteamUrl();
26 | var userName = "User " + GetSteamId();
27 | try
28 | {
29 | var xmlRaw = new WebClient() { Encoding = Encoding.UTF8 }.DownloadString(string.Format("{0}/?xml=1", steamUrl));
30 | var xml = new XmlDocument();
31 | xml.LoadXml(xmlRaw);
32 | var nameNode = xml.SelectSingleNode("//steamID");
33 | if (nameNode != null)
34 | userName = WebUtility.HtmlDecode(nameNode.InnerText);
35 | }
36 | catch (Exception ex)
37 | {
38 | Console.WriteLine(ex.Message);
39 | Logger.Exception(ex, "frmMain -> GetSignedAs, for steamUrl = " + steamUrl);
40 | }
41 | return localization.strings.signed_in_as + " " + userName;
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Source/IdleMaster/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // General Information about an assembly is controlled through the following
5 | // set of attributes. Change these attribute values to modify the information
6 | // associated with an assembly.
7 | [assembly: AssemblyTitle("IdleMaster")]
8 | [assembly: AssemblyDescription("")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("")]
11 | [assembly: AssemblyProduct("IdleMaster")]
12 | [assembly: AssemblyCopyright("Copyright © 2014")]
13 | [assembly: AssemblyTrademark("")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // Setting ComVisible to false makes the types in this assembly not visible
17 | // to COM components. If you need to access a type in this assembly from
18 | // COM, set the ComVisible attribute to true on that type.
19 | [assembly: ComVisible(false)]
20 |
21 | // The following GUID is for the ID of the typelib if this project is exposed to COM
22 | [assembly: Guid("351d8228-4284-4c00-9526-7039b81b771b")]
23 |
24 | // Version information for an assembly consists of the following four values:
25 | //
26 | // Major Version
27 | // Minor Version
28 | // Build Number
29 | // Revision
30 | //
31 | // You can specify all the values or you can default the Build and Revision Numbers
32 | // by using the '*' as shown below:
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.4.1.0")]
35 | [assembly: AssemblyFileVersion("1.4.1.0")]
36 |
--------------------------------------------------------------------------------
/steam-idle Source/steam-idle/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("steam-idle")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("steam-idle")]
13 | [assembly: AssemblyCopyright("Copyright © 2015")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("95f5c803-be44-47da-9eea-46e6b2fd8ef3")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Source/IdleMaster/frmBlacklist.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Linq;
3 | using System.Windows.Forms;
4 | using IdleMaster.Properties;
5 |
6 | namespace IdleMaster
7 | {
8 | public partial class frmBlacklist : Form
9 | {
10 | public frmBlacklist()
11 | {
12 | InitializeComponent();
13 | }
14 |
15 | public void SaveBlacklist()
16 | {
17 | Settings.Default.blacklist.Clear();
18 | Settings.Default.blacklist.AddRange(lstBlacklist.Items.Cast().ToArray());
19 | Settings.Default.Save();
20 | }
21 |
22 | private void frmBlacklist_Load(object sender, EventArgs e)
23 | {
24 | // Localize form
25 | btnAdd.Text = localization.strings.add;
26 | btnSave.Text = localization.strings.save;
27 | this.Text = localization.strings.manage_blacklist;
28 | grpAdd.Text = localization.strings.add_game_blacklist;
29 |
30 | lstBlacklist.Items.AddRange(Settings.Default.blacklist.Cast().ToArray());
31 | }
32 |
33 | private void btnSave_Click(object sender, EventArgs e)
34 | {
35 | SaveBlacklist();
36 | Close();
37 | }
38 |
39 | private void btnAdd_Click(object sender, EventArgs e)
40 | {
41 | int result;
42 | if (int.TryParse(txtAppid.Text, out result))
43 | {
44 | if (lstBlacklist.Items.Cast().All(blApp => blApp != txtAppid.Text))
45 | lstBlacklist.Items.Add(txtAppid.Text);
46 | }
47 | txtAppid.Text = string.Empty;
48 | txtAppid.Focus();
49 | }
50 |
51 | private void btnRemove_Click(object sender, EventArgs e)
52 | {
53 | lstBlacklist.Items.Remove(lstBlacklist.SelectedItem);
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/Source/IdleMaster/Statistics.cs:
--------------------------------------------------------------------------------
1 | namespace IdleMaster
2 | {
3 | public class Statistics
4 | {
5 | private uint sessionMinutesIdled = 0;
6 | private uint sessionCardIdled = 0;
7 | private uint remainingCards = 0;
8 |
9 | public uint getSessionMinutesIdled()
10 | {
11 | return sessionMinutesIdled;
12 | }
13 |
14 | public uint getSessionCardIdled()
15 | {
16 | return sessionCardIdled;
17 | }
18 |
19 | public uint getRemainingCards()
20 | {
21 | return remainingCards;
22 | }
23 |
24 | public void setRemainingCards(uint remainingCards)
25 | {
26 | this.remainingCards = remainingCards;
27 | }
28 |
29 | public void checkCardRemaining(uint actualCardRemaining)
30 | {
31 | if (actualCardRemaining < remainingCards)
32 | {
33 | increaseCardIdled(remainingCards - actualCardRemaining);
34 | remainingCards = actualCardRemaining;
35 | }
36 | else if (actualCardRemaining > remainingCards)
37 | {
38 | remainingCards = actualCardRemaining;
39 | }
40 |
41 | }
42 |
43 | public void increaseCardIdled(uint number)
44 | {
45 | Properties.Settings.Default.totalCardIdled+=number;
46 | Properties.Settings.Default.Save();
47 | sessionCardIdled+=number;
48 | }
49 |
50 | public void increaseMinutesIdled()
51 | {
52 | Properties.Settings.Default.totalMinutesIdled++;
53 | Properties.Settings.Default.Save();
54 | sessionMinutesIdled++;
55 | }
56 |
57 |
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Idle Master
2 | ===========
3 |
4 | This program will determine which of your Steam games still have Steam Trading Card drops remaining, and will go through each application to simulate you being “in-game” so that cards will drop. It will check periodically to see if the game you’re idling has card drops remaining. When only one drop remains, it will start checking more frequently. When the game you’re idling has no more cards, it’ll move on to the next game. When no more cards are available, the program will terminate.
5 |
6 | **This project has been discontinued**, no further bug fixes or changes will be made. Issues and pull requests will be ignored. The program should still work (as of Jan 3, 2018) but Valve may make a change that causes the program to become non-functioning at any time. There are a multitude of forks of this project that are being currently maintained.
7 |
8 | Requirements
9 | -------
10 |
11 | This application requires Steam to be open and for you to be logged in. This program is now being developed exclusively for Microsoft Windows.
12 |
13 | Non-Windows versions are available in the [Python repository](https://github.com/jshackles/idle_master_py) but may be deprecated or feature incomplete.
14 |
15 | Setup
16 | -------
17 |
18 | If you are an end user you can download an install Idle Master directly from http://www.steamidlemaster.com or by launching setup.exe included in the root of this repository. You can also download the source repository above and compile the application using Microsoft Visual Studio.
19 |
20 | Translation
21 | -------
22 |
23 | You can contribute your translation suggestions and vote on existing translations using our new [Translation Page](http://translate.steamidlemaster.com).
24 |
25 | Credits
26 | -------
27 |
28 | Idle Master was created by jshackles, based on the original code created by Stumpokapow.
29 |
30 | Idle Master was writen in C# using Steamworks.NET and CSteamworks by Riley Labrecque (https://github.com/rlabrecque/CSteamworks), and using open source icons from Open Iconic (https://github.com/iconic/open-iconic).
31 |
32 | License
33 | -------
34 |
35 | This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. A copy of the GNU General Public License can be found at http://www.gnu.org/licenses/. For your convenience, a copy of this license is included.
36 |
--------------------------------------------------------------------------------
/Source/IdleMaster/frmChangelog.Designer.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Windows.Forms;
3 |
4 | namespace IdleMaster
5 | {
6 | partial class frmChangelog
7 | {
8 | ///
9 | /// Required designer variable.
10 | ///
11 | private IContainer components = null;
12 |
13 | ///
14 | /// Clean up any resources being used.
15 | ///
16 | /// true if managed resources should be disposed; otherwise, false.
17 | protected override void Dispose(bool disposing)
18 | {
19 | if (disposing && (components != null))
20 | {
21 | components.Dispose();
22 | }
23 | base.Dispose(disposing);
24 | }
25 |
26 | #region Windows Form Designer generated code
27 |
28 | ///
29 | /// Required method for Designer support - do not modify
30 | /// the contents of this method with the code editor.
31 | ///
32 | private void InitializeComponent()
33 | {
34 | var resources = new System.ComponentModel.ComponentResourceManager(typeof(frmChangelog));
35 | this.rtbChangelog = new System.Windows.Forms.RichTextBox();
36 | this.SuspendLayout();
37 | //
38 | // rtbChangelog
39 | //
40 | this.rtbChangelog.BackColor = System.Drawing.Color.White;
41 | this.rtbChangelog.Dock = System.Windows.Forms.DockStyle.Fill;
42 | this.rtbChangelog.Location = new System.Drawing.Point(0, 0);
43 | this.rtbChangelog.Name = "rtbChangelog";
44 | this.rtbChangelog.ReadOnly = true;
45 | this.rtbChangelog.Size = new System.Drawing.Size(564, 578);
46 | this.rtbChangelog.TabIndex = 0;
47 | this.rtbChangelog.Text = "";
48 | //
49 | // frmChangelog
50 | //
51 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
52 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
53 | this.ClientSize = new System.Drawing.Size(564, 578);
54 | this.Controls.Add(this.rtbChangelog);
55 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
56 | this.Name = "frmChangelog";
57 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
58 | this.Text = "Idle Master Release Notes";
59 | this.Load += new System.EventHandler(this.frmChangelog_Load);
60 | this.ResumeLayout(false);
61 |
62 | }
63 |
64 | #endregion
65 |
66 | private RichTextBox rtbChangelog;
67 | }
68 | }
--------------------------------------------------------------------------------
/Source/IdleMaster/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | False
22 |
23 |
24 | True
25 |
26 |
27 | False
28 |
29 |
30 | False
31 |
32 |
33 | <?xml version="1.0" encoding="utf-16"?>
34 | <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
35 | <string />
36 | </ArrayOfString>
37 |
38 |
39 | False
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 | 0
49 |
50 |
51 | 0
52 |
53 |
54 |
55 |
56 |
57 | True
58 |
59 |
60 |
--------------------------------------------------------------------------------
/Source/IdleMaster/frmStatistics.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace IdleMaster
5 | {
6 | public partial class frmStatistics : Form
7 | {
8 | private Statistics statistics;
9 | public frmStatistics(Statistics statistics)
10 | {
11 | InitializeComponent();
12 | this.statistics = statistics;
13 | }
14 |
15 | private void frmStatistics_Load(object sender, EventArgs e)
16 | {
17 | // Localize Form
18 | this.Text = localization.strings.statistics.Replace("&", "");
19 | btnOK.Text = localization.strings.accept;
20 | lblSessionHeader.Text = localization.strings.this_session + ":";
21 | lblTotalHeader.Text = localization.strings.total + ":";
22 |
23 | TimeSpan sessionMinutesIdled = TimeSpan.FromMinutes(statistics.getSessionMinutesIdled());
24 | TimeSpan totalMinutesIdled = TimeSpan.FromMinutes(Properties.Settings.Default.totalMinutesIdled);
25 |
26 | int sessionHoursIdled = (sessionMinutesIdled.Days * 24) + sessionMinutesIdled.Hours;
27 | int totalHoursIdled = (totalMinutesIdled.Days * 24) + totalMinutesIdled.Hours;
28 |
29 | //Session
30 | if (sessionHoursIdled > 0)
31 | {
32 | lblSessionTime.Text = String.Format("{0} hour{1}, {2} minute{3} idled",
33 | sessionHoursIdled,
34 | sessionHoursIdled == 1 ? "" : "s",
35 | sessionMinutesIdled.Minutes,
36 | sessionMinutesIdled.Minutes == 1 ? "" : "s");
37 | }
38 | else
39 | {
40 | lblSessionTime.Text = String.Format("{0} minute{1} idled",
41 | sessionMinutesIdled.Minutes,
42 | sessionMinutesIdled.Minutes == 1 ? "" : "s");
43 | }
44 | lblSessionCards.Text = statistics.getSessionCardIdled().ToString() + " cards idled";
45 |
46 | //Total
47 | if (totalHoursIdled > 0)
48 | {
49 | lblTotalTime.Text = String.Format("{0} hour{1}, {2} minute{3} idled",
50 | totalHoursIdled,
51 | totalHoursIdled == 1 ? "" : "s",
52 | totalMinutesIdled.Minutes,
53 | totalMinutesIdled.Minutes == 1 ? "" : "s");
54 | }
55 | else
56 | {
57 | lblTotalTime.Text = String.Format("{0} minute{1} idled",
58 | totalMinutesIdled.Minutes,
59 | totalMinutesIdled.Minutes == 1 ? "" : "s");
60 | }
61 | lblTotalCards.Text = Properties.Settings.Default.totalCardIdled.ToString() + " cards idled";
62 | }
63 |
64 | private void btnOK_Click(object sender, EventArgs e)
65 | {
66 | Close();
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/steam-idle Source/steam-idle/frmMain.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace steam_idle
2 | {
3 | partial class frmMain
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmMain));
32 | this.picApp = new System.Windows.Forms.PictureBox();
33 | ((System.ComponentModel.ISupportInitialize)(this.picApp)).BeginInit();
34 | this.SuspendLayout();
35 | //
36 | // picApp
37 | //
38 | this.picApp.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
39 | | System.Windows.Forms.AnchorStyles.Left)
40 | | System.Windows.Forms.AnchorStyles.Right)));
41 | this.picApp.Location = new System.Drawing.Point(-1, 0);
42 | this.picApp.Name = "picApp";
43 | this.picApp.Size = new System.Drawing.Size(292, 136);
44 | this.picApp.TabIndex = 0;
45 | this.picApp.TabStop = false;
46 | //
47 | // frmMain
48 | //
49 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
50 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
51 | this.ClientSize = new System.Drawing.Size(291, 136);
52 | this.Controls.Add(this.picApp);
53 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
54 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
55 | this.MaximizeBox = false;
56 | this.Name = "frmMain";
57 | this.Text = "You\'re Now In-Game";
58 | this.Load += new System.EventHandler(this.frmMain_Load);
59 | ((System.ComponentModel.ISupportInitialize)(this.picApp)).EndInit();
60 | this.ResumeLayout(false);
61 |
62 | }
63 |
64 | #endregion
65 |
66 | private System.Windows.Forms.PictureBox picApp;
67 | }
68 | }
69 |
70 |
--------------------------------------------------------------------------------
/steam-idle Source/steam-idle/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.18444
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace steam_idle.Properties
12 | {
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources
26 | {
27 |
28 | private static global::System.Resources.ResourceManager resourceMan;
29 |
30 | private static global::System.Globalization.CultureInfo resourceCulture;
31 |
32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
33 | internal Resources()
34 | {
35 | }
36 |
37 | ///
38 | /// Returns the cached ResourceManager instance used by this class.
39 | ///
40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
41 | internal static global::System.Resources.ResourceManager ResourceManager
42 | {
43 | get
44 | {
45 | if ((resourceMan == null))
46 | {
47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("steam_idle.Properties.Resources", typeof(Resources).Assembly);
48 | resourceMan = temp;
49 | }
50 | return resourceMan;
51 | }
52 | }
53 |
54 | ///
55 | /// Overrides the current thread's CurrentUICulture property for all
56 | /// resource lookups using this strongly typed resource class.
57 | ///
58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
59 | internal static global::System.Globalization.CultureInfo Culture
60 | {
61 | get
62 | {
63 | return resourceCulture;
64 | }
65 | set
66 | {
67 | resourceCulture = value;
68 | }
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/Source/IdleMaster/Logger.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using System.IO;
4 | using System.Reflection;
5 | using System.Text;
6 | using System.Threading;
7 |
8 | namespace IdleMaster
9 | {
10 | public static class Logger
11 | {
12 | private static readonly object LogLock = new object();
13 |
14 | private static readonly string ExceptionPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @".\error.log";
15 |
16 | public static void Exception(Exception ex, params string[] messages)
17 | {
18 | var contents = string.Concat(DateTime.Now, " ", string.Join(Environment.NewLine, messages),
19 | Environment.NewLine, ex.ToString(), Environment.NewLine);
20 | Write(contents, ExceptionPath);
21 | }
22 |
23 | private static void Write(string contents, string path)
24 | {
25 | Console.WriteLine(contents);
26 | using (TimedLock.Lock(LogLock))
27 | {
28 | File.AppendAllText(path, contents, Encoding.UTF8);
29 | }
30 | }
31 | }
32 |
33 |
34 | // Thanks to Eric Gunnerson for recommending this be a struct rather
35 | // than a class - avoids a heap allocation.
36 | // Thanks to Change Gillespie and Jocelyn Coulmance for pointing out
37 | // the bugs that then crept in when I changed it to use struct...
38 | // Thanks to John Sands for providing the necessary incentive to make
39 | // me invent a way of using a struct in both release and debug builds
40 | // without losing the debug leak tracking.
41 |
42 | public struct TimedLock : IDisposable
43 | {
44 | public static TimedLock Lock(object o)
45 | {
46 | return Lock(o, TimeSpan.FromSeconds(10));
47 | }
48 |
49 | public static TimedLock Lock(object o, TimeSpan timeout)
50 | {
51 | var tl = new TimedLock(o);
52 | if (!Monitor.TryEnter(o, timeout))
53 | {
54 | #if DEBUG
55 | GC.SuppressFinalize(tl.leakDetector);
56 | #endif
57 | throw new LockTimeoutException();
58 | }
59 |
60 | return tl;
61 | }
62 |
63 | private TimedLock(object o)
64 | {
65 | target = o;
66 | #if DEBUG
67 | leakDetector = new Sentinel();
68 | #endif
69 | }
70 | private object target;
71 |
72 | public void Dispose()
73 | {
74 | Monitor.Exit(target);
75 |
76 | // It's a bad error if someone forgets to call Dispose,
77 | // so in Debug builds, we put a finalizer in to detect
78 | // the error. If Dispose is called, we suppress the
79 | // finalizer.
80 | #if DEBUG
81 | GC.SuppressFinalize(leakDetector);
82 | #endif
83 | }
84 |
85 | #if DEBUG
86 | // (In Debug mode, we make it a class so that we can add a finalizer
87 | // in order to detect when the object is not freed.)
88 | private class Sentinel
89 | {
90 | ~Sentinel()
91 | {
92 | // If this finalizer runs, someone somewhere failed to
93 | // call Dispose, which means we've failed to leave
94 | // a monitor!
95 | Debug.Fail("Undisposed lock");
96 | }
97 | }
98 | private Sentinel leakDetector;
99 | #endif
100 |
101 | }
102 | public class LockTimeoutException : ApplicationException
103 | {
104 | public LockTimeoutException()
105 | : base("Timeout waiting for lock")
106 | {
107 | }
108 | }
109 | }
--------------------------------------------------------------------------------
/Source/IdleMaster/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | False
27 |
28 |
29 | True
30 |
31 |
32 | False
33 |
34 |
35 | False
36 |
37 |
38 |
39 |
41 |
42 |
43 |
44 |
45 |
46 | False
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | 0
56 |
57 |
58 | 0
59 |
60 |
61 |
62 |
63 |
64 | True
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/Source/IdleMaster/Badge.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using System.Globalization;
4 | using System.Text.RegularExpressions;
5 | using System.Threading.Tasks;
6 | using HtmlAgilityPack;
7 | using IdleMaster.Properties;
8 |
9 | namespace IdleMaster
10 | {
11 | public class Badge
12 | {
13 | public double AveragePrice { get; set; }
14 |
15 | public int AppId { get; set; }
16 |
17 | public string Name { get; set; }
18 |
19 | public string StringId
20 | {
21 | get { return AppId.ToString(); }
22 | set { AppId = string.IsNullOrWhiteSpace(value) ? 0 : int.Parse(value); }
23 | }
24 |
25 | public int RemainingCard { get; set; }
26 |
27 | public double HoursPlayed { get; set; }
28 |
29 |
30 | private Process idleProcess;
31 |
32 | public bool InIdle { get { return idleProcess != null && !idleProcess.HasExited; } }
33 |
34 | public Process Idle()
35 | {
36 | if (InIdle)
37 | return idleProcess;
38 |
39 | idleProcess = Process.Start(new ProcessStartInfo("steam-idle.exe", AppId.ToString()) { WindowStyle = ProcessWindowStyle.Hidden });
40 | return idleProcess;
41 | }
42 |
43 | public void StopIdle()
44 | {
45 | if (InIdle)
46 | idleProcess.Kill();
47 | }
48 |
49 | public async Task CanCardDrops()
50 | {
51 | try
52 | {
53 | var document = new HtmlDocument();
54 | var response = await CookieClient.GetHttpAsync(Settings.Default.myProfileURL + "/gamecards/" + StringId);
55 | // Response should be empty. User should be unauthorised.
56 | if (string.IsNullOrEmpty(response))
57 | {
58 | return false;
59 | }
60 | document.LoadHtml(response);
61 |
62 | var hoursNode = document.DocumentNode.SelectSingleNode("//div[@class=\"badge_title_stats_playtime\"]");
63 | var hours = Regex.Match(hoursNode.InnerText, @"[0-9\.,]+").Value;
64 |
65 | var cardNode = hoursNode.ParentNode.SelectSingleNode(".//span[@class=\"progress_info_bold\"]");
66 | var cards = cardNode == null ? string.Empty : Regex.Match(cardNode.InnerText, @"[0-9]+").Value;
67 |
68 | UpdateStats(cards, hours);
69 | return RemainingCard != 0;
70 | }
71 | catch (Exception ex)
72 | {
73 | Logger.Exception(ex, "Badge -> CanCardDrops, for id = " + AppId);
74 | }
75 | return false;
76 | }
77 |
78 | public void UpdateStats(string remaining, string hours)
79 | {
80 | RemainingCard = string.IsNullOrWhiteSpace(remaining) ? 0 : int.Parse(remaining);
81 | HoursPlayed = string.IsNullOrWhiteSpace(hours) ? 0 : double.Parse(hours, new NumberFormatInfo());
82 | }
83 |
84 | public override bool Equals(object obj)
85 | {
86 | var badge = obj as Badge;
87 | return badge != null && Equals(AppId, badge.AppId);
88 | }
89 |
90 | public override int GetHashCode()
91 | {
92 | return AppId.GetHashCode();
93 | }
94 |
95 | public override string ToString()
96 | {
97 | return string.IsNullOrWhiteSpace(Name) ? StringId : Name;
98 | }
99 |
100 | public Badge(string id, string name, string remaining, string hours)
101 | : this()
102 | {
103 | StringId = id;
104 | Name = name;
105 | UpdateStats(remaining, hours);
106 | }
107 |
108 | public Badge()
109 | { }
110 | }
111 | }
112 |
--------------------------------------------------------------------------------
/steam-idle Source/steam-idle/steam-idle.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {E0E49AFD-1101-4815-A1F1-01F65D4D3306}
8 | WinExe
9 | Properties
10 | steam_idle
11 | steam-idle
12 | v4.0
13 | 512
14 |
15 |
16 | x86
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | AnyCPU
27 | pdbonly
28 | true
29 | bin\Release\
30 | TRACE
31 | prompt
32 | 4
33 |
34 |
35 | icon.ico
36 |
37 |
38 |
39 | ..\packages\Steamworks.NET.dll
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | Form
55 |
56 |
57 | frmMain.cs
58 |
59 |
60 |
61 |
62 | frmMain.cs
63 |
64 |
65 | ResXFileCodeGenerator
66 | Resources.Designer.cs
67 | Designer
68 |
69 |
70 | True
71 | Resources.resx
72 |
73 |
74 | SettingsSingleFileGenerator
75 | Settings.Designer.cs
76 |
77 |
78 | True
79 | Settings.settings
80 | True
81 |
82 |
83 |
84 |
85 |
86 |
87 |
94 |
--------------------------------------------------------------------------------
/Source/IdleMaster/frmSettingsAdvanced.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading.Tasks;
3 | using System.Windows.Forms;
4 | using IdleMaster.Properties;
5 |
6 | namespace IdleMaster
7 | {
8 | public partial class frmSettingsAdvanced : Form
9 | {
10 | public frmSettingsAdvanced()
11 | {
12 | InitializeComponent();
13 | }
14 |
15 | private void btnView_Click(object sender, EventArgs e)
16 | {
17 | txtSessionID.PasswordChar = '\0';
18 | txtSteamLogin.PasswordChar = '\0';
19 | txtSteamParental.PasswordChar = '\0';
20 |
21 | txtSessionID.Enabled = true;
22 | txtSteamLogin.Enabled = true;
23 | txtSteamParental.Enabled = true;
24 |
25 | btnView.Visible = false;
26 | }
27 |
28 | private void frmSettingsAdvanced_Load(object sender, EventArgs e)
29 | {
30 | // Localize Form
31 | btnUpdate.Text = localization.strings.update;
32 | this.Text = localization.strings.auth_data;
33 | ttHelp.SetToolTip(btnView, localization.strings.cookie_warning);
34 |
35 |
36 | if (!string.IsNullOrWhiteSpace(Settings.Default.sessionid))
37 | {
38 | txtSessionID.Text = Settings.Default.sessionid;
39 | txtSessionID.Enabled = false;
40 | }
41 | else
42 | {
43 | txtSessionID.PasswordChar = '\0';
44 | }
45 |
46 | if (!string.IsNullOrWhiteSpace(Settings.Default.steamLogin))
47 | {
48 | txtSteamLogin.Text = Settings.Default.steamLogin;
49 | txtSteamLogin.Enabled = false;
50 | }
51 | else
52 | {
53 | txtSteamLogin.PasswordChar = '\0';
54 | }
55 |
56 | if (!string.IsNullOrWhiteSpace(Settings.Default.steamparental))
57 | {
58 | txtSteamParental.Text = Settings.Default.steamparental;
59 | txtSteamParental.Enabled = false;
60 | }
61 | else
62 | {
63 | txtSteamParental.PasswordChar = '\0';
64 | }
65 |
66 | if (txtSessionID.Enabled && txtSteamLogin.Enabled && txtSteamParental.Enabled)
67 | {
68 | btnView.Visible = false;
69 | }
70 |
71 | btnUpdate.Enabled = false;
72 | }
73 |
74 | private void txtSessionID_TextChanged(object sender, EventArgs e)
75 | {
76 | btnUpdate.Enabled = true;
77 | }
78 |
79 | private void txtSteamLogin_TextChanged(object sender, EventArgs e)
80 | {
81 | btnUpdate.Enabled = true;
82 | }
83 |
84 | private void txtSteamParental_TextChanged(object sender, EventArgs e)
85 | {
86 | btnUpdate.Enabled = true;
87 | }
88 |
89 | private async Task CheckAndSave()
90 | {
91 | try
92 | {
93 | Settings.Default.sessionid = txtSessionID.Text.Trim();
94 | Settings.Default.steamLogin = txtSteamLogin.Text.Trim();
95 | Settings.Default.myProfileURL = SteamProfile.GetSteamUrl();
96 | Settings.Default.steamparental = txtSteamParental.Text.Trim();
97 |
98 | if (await CookieClient.IsLogined())
99 | {
100 | Settings.Default.Save();
101 | Close();
102 | return;
103 | }
104 | }
105 | catch (Exception ex)
106 | {
107 | Logger.Exception(ex, "frmSettingsAdvanced -> CheckAndSave");
108 | }
109 |
110 | // Invalid cookie data, reset the form
111 | btnUpdate.Text = localization.strings.update;
112 | txtSessionID.Text = "";
113 | txtSteamLogin.Text = "";
114 | txtSteamParental.Text = "";
115 | txtSessionID.PasswordChar = '\0';
116 | txtSteamLogin.PasswordChar = '\0';
117 | txtSteamParental.PasswordChar = '\0';
118 | txtSessionID.Enabled = true;
119 | txtSteamLogin.Enabled = true;
120 | txtSteamParental.Enabled = true;
121 | txtSessionID.Focus();
122 | MessageBox.Show(localization.strings.validate_failed);
123 | btnUpdate.Enabled = true;
124 | }
125 |
126 | private async void btnUpdate_Click(object sender, EventArgs e)
127 | {
128 | btnUpdate.Enabled = false;
129 | txtSessionID.Enabled = false;
130 | txtSteamLogin.Enabled = false;
131 | txtSteamParental.Enabled = false;
132 | btnUpdate.Text = localization.strings.validating;
133 | await CheckAndSave();
134 | }
135 | }
136 | }
137 |
--------------------------------------------------------------------------------
/Source/IdleMaster/frmBrowser.Designer.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Windows.Forms;
3 |
4 | namespace IdleMaster
5 | {
6 | partial class frmBrowser
7 | {
8 | ///
9 | /// Required designer variable.
10 | ///
11 | private IContainer components = null;
12 |
13 | ///
14 | /// Clean up any resources being used.
15 | ///
16 | /// true if managed resources should be disposed; otherwise, false.
17 | protected override void Dispose(bool disposing)
18 | {
19 | if (disposing && (components != null))
20 | {
21 | components.Dispose();
22 | }
23 | base.Dispose(disposing);
24 | }
25 |
26 | #region Windows Form Designer generated code
27 |
28 | ///
29 | /// Required method for Designer support - do not modify
30 | /// the contents of this method with the code editor.
31 | ///
32 | private void InitializeComponent()
33 | {
34 | this.components = new System.ComponentModel.Container();
35 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmBrowser));
36 | this.wbAuth = new System.Windows.Forms.WebBrowser();
37 | this.lblSaving = new System.Windows.Forms.Label();
38 | this.pictureBox1 = new System.Windows.Forms.PictureBox();
39 | this.tmrCheck = new System.Windows.Forms.Timer(this.components);
40 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
41 | this.SuspendLayout();
42 | //
43 | // wbAuth
44 | //
45 | this.wbAuth.AllowWebBrowserDrop = false;
46 | this.wbAuth.Dock = System.Windows.Forms.DockStyle.Fill;
47 | this.wbAuth.Location = new System.Drawing.Point(0, 0);
48 | this.wbAuth.MinimumSize = new System.Drawing.Size(20, 20);
49 | this.wbAuth.Name = "wbAuth";
50 | this.wbAuth.ScriptErrorsSuppressed = true;
51 | this.wbAuth.ScrollBarsEnabled = false;
52 | this.wbAuth.Size = new System.Drawing.Size(976, 798);
53 | this.wbAuth.TabIndex = 0;
54 | this.wbAuth.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.wbAuth_DocumentCompleted);
55 | this.wbAuth.Navigating += new System.Windows.Forms.WebBrowserNavigatingEventHandler(this.wbAuth_Navigating);
56 | //
57 | // lblSaving
58 | //
59 | this.lblSaving.AutoSize = true;
60 | this.lblSaving.Location = new System.Drawing.Point(34, 11);
61 | this.lblSaving.Name = "lblSaving";
62 | this.lblSaving.Size = new System.Drawing.Size(180, 13);
63 | this.lblSaving.TabIndex = 1;
64 | this.lblSaving.Text = "Idle Master is saving your information";
65 | //
66 | // pictureBox1
67 | //
68 | this.pictureBox1.Image = global::IdleMaster.Properties.Resources.imgSpin;
69 | this.pictureBox1.Location = new System.Drawing.Point(13, 9);
70 | this.pictureBox1.Name = "pictureBox1";
71 | this.pictureBox1.Size = new System.Drawing.Size(16, 16);
72 | this.pictureBox1.TabIndex = 2;
73 | this.pictureBox1.TabStop = false;
74 | //
75 | // tmrCheck
76 | //
77 | this.tmrCheck.Interval = 1000;
78 | this.tmrCheck.Tick += new System.EventHandler(this.tmrCheck_Tick);
79 | //
80 | // frmBrowser
81 | //
82 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
83 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
84 | this.ClientSize = new System.Drawing.Size(976, 798);
85 | this.Controls.Add(this.wbAuth);
86 | this.Controls.Add(this.pictureBox1);
87 | this.Controls.Add(this.lblSaving);
88 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
89 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
90 | this.MaximizeBox = false;
91 | this.Name = "frmBrowser";
92 | this.Text = "Please Login to Steam";
93 | this.Load += new System.EventHandler(this.frmBrowser_Load);
94 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
95 | this.ResumeLayout(false);
96 | this.PerformLayout();
97 |
98 | }
99 |
100 | #endregion
101 |
102 | private WebBrowser wbAuth;
103 | private Label lblSaving;
104 | private PictureBox pictureBox1;
105 | private Timer tmrCheck;
106 | }
107 | }
--------------------------------------------------------------------------------
/Source/IdleMaster/frmAbout.Designer.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Windows.Forms;
3 |
4 | namespace IdleMaster
5 | {
6 | partial class frmAbout
7 | {
8 | ///
9 | /// Required designer variable.
10 | ///
11 | private IContainer components = null;
12 |
13 | ///
14 | /// Clean up any resources being used.
15 | ///
16 | /// true if managed resources should be disposed; otherwise, false.
17 | protected override void Dispose(bool disposing)
18 | {
19 | if (disposing && (components != null))
20 | {
21 | components.Dispose();
22 | }
23 | base.Dispose(disposing);
24 | }
25 |
26 | #region Windows Form Designer generated code
27 |
28 | ///
29 | /// Required method for Designer support - do not modify
30 | /// the contents of this method with the code editor.
31 | ///
32 | private void InitializeComponent()
33 | {
34 | var resources = new System.ComponentModel.ComponentResourceManager(typeof(frmAbout));
35 | this.btnOK = new System.Windows.Forms.Button();
36 | this.pictureBox1 = new System.Windows.Forms.PictureBox();
37 | this.lblVersion = new System.Windows.Forms.Label();
38 | this.label2 = new System.Windows.Forms.Label();
39 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
40 | this.SuspendLayout();
41 | //
42 | // btnOK
43 | //
44 | this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
45 | this.btnOK.Location = new System.Drawing.Point(192, 129);
46 | this.btnOK.Name = "btnOK";
47 | this.btnOK.Size = new System.Drawing.Size(75, 23);
48 | this.btnOK.TabIndex = 0;
49 | this.btnOK.Text = "&OK";
50 | this.btnOK.UseVisualStyleBackColor = true;
51 | this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
52 | //
53 | // pictureBox1
54 | //
55 | this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
56 | this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
57 | this.pictureBox1.Location = new System.Drawing.Point(12, 12);
58 | this.pictureBox1.Name = "pictureBox1";
59 | this.pictureBox1.Size = new System.Drawing.Size(255, 111);
60 | this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
61 | this.pictureBox1.TabIndex = 1;
62 | this.pictureBox1.TabStop = false;
63 | //
64 | // lblVersion
65 | //
66 | this.lblVersion.AutoSize = true;
67 | this.lblVersion.Location = new System.Drawing.Point(13, 125);
68 | this.lblVersion.Name = "lblVersion";
69 | this.lblVersion.Size = new System.Drawing.Size(59, 13);
70 | this.lblVersion.TabIndex = 2;
71 | this.lblVersion.Text = "Idle Master";
72 | //
73 | // label2
74 | //
75 | this.label2.AutoSize = true;
76 | this.label2.Location = new System.Drawing.Point(13, 139);
77 | this.label2.Name = "label2";
78 | this.label2.Size = new System.Drawing.Size(65, 13);
79 | this.label2.TabIndex = 3;
80 | this.label2.Text = "by jshackles";
81 | //
82 | // frmAbout
83 | //
84 | this.AcceptButton = this.btnOK;
85 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
86 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
87 | this.ClientSize = new System.Drawing.Size(272, 159);
88 | this.Controls.Add(this.label2);
89 | this.Controls.Add(this.lblVersion);
90 | this.Controls.Add(this.pictureBox1);
91 | this.Controls.Add(this.btnOK);
92 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
93 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
94 | this.MaximizeBox = false;
95 | this.Name = "frmAbout";
96 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
97 | this.Text = "About Idle Master";
98 | this.Load += new System.EventHandler(this.frmAbout_Load);
99 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
100 | this.ResumeLayout(false);
101 | this.PerformLayout();
102 |
103 | }
104 |
105 | #endregion
106 |
107 | private Button btnOK;
108 | private PictureBox pictureBox1;
109 | private Label lblVersion;
110 | private Label label2;
111 | }
112 | }
--------------------------------------------------------------------------------
/Source/IdleMaster/CookieClient.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Net;
3 | using System.Text;
4 | using System.Threading.Tasks;
5 | using HtmlAgilityPack;
6 | using IdleMaster.Properties;
7 |
8 | namespace IdleMaster
9 | {
10 | public class CookieClient : WebClient
11 | {
12 | internal CookieContainer Cookie = new CookieContainer();
13 |
14 | internal Uri ResponseUri;
15 |
16 | protected override WebRequest GetWebRequest(Uri address)
17 | {
18 | var request = base.GetWebRequest(address);
19 | if (request is HttpWebRequest)
20 | (request as HttpWebRequest).CookieContainer = Cookie;
21 | return request;
22 | }
23 |
24 | protected override WebResponse GetWebResponse(WebRequest request, System.IAsyncResult result)
25 | {
26 | try
27 | {
28 | var baseResponse = base.GetWebResponse(request);
29 |
30 | var cookies = (baseResponse as HttpWebResponse).Cookies;
31 |
32 | // Check, if cookie should be deleted. This means that sessionID is now invalid and user has to log in again.
33 | // Maybe this shoud be done other way (authenticate exception), but because of shared settings and timers in frmMain...
34 | if (cookies.Count > 0)
35 | {
36 | if (cookies["steamLogin"] != null && cookies["steamLogin"].Value == "deleted")
37 | {
38 | Settings.Default.sessionid = string.Empty;
39 | Settings.Default.steamLogin = string.Empty;
40 | Settings.Default.steamparental = string.Empty;
41 | Settings.Default.steamMachineAuth = string.Empty;
42 | Settings.Default.steamRememberLogin = string.Empty;
43 | Settings.Default.Save();
44 | }
45 | }
46 |
47 | this.ResponseUri = baseResponse.ResponseUri;
48 | return baseResponse;
49 | }
50 | catch (Exception)
51 | {
52 |
53 | }
54 | return null;
55 | }
56 |
57 | public static CookieContainer GenerateCookies()
58 | {
59 | var cookies = new CookieContainer();
60 | var target = new Uri("http://steamcommunity.com");
61 | cookies.Add(new Cookie("sessionid", Settings.Default.sessionid) { Domain = target.Host });
62 | cookies.Add(new Cookie("steamLogin", Settings.Default.steamLogin) { Domain = target.Host });
63 | cookies.Add(new Cookie("steamparental", Settings.Default.steamparental) { Domain = target.Host });
64 | cookies.Add(new Cookie("steamRememberLogin", Settings.Default.steamRememberLogin) { Domain = target.Host });
65 | cookies.Add(new Cookie(GetSteamMachineAuthCookieName(), Settings.Default.steamMachineAuth) { Domain = target.Host });
66 | return cookies;
67 | }
68 |
69 | public static string GetSteamMachineAuthCookieName()
70 | {
71 | if (Settings.Default.steamLogin != null && Settings.Default.steamLogin.Length > 17)
72 | return string.Format("steamMachineAuth{0}", Settings.Default.steamLogin.Substring(0, 17));
73 | return "steamMachineAuth";
74 | }
75 |
76 | public static async Task GetHttpAsync(string url, int count = 3)
77 | {
78 | while (true)
79 | {
80 | var client = new CookieClient();
81 | var content = string.Empty;
82 | try
83 | {
84 | // If user is NOT authenticated (cookie got deleted in GetWebResponse()), return empty result
85 | if (String.IsNullOrEmpty(Settings.Default.sessionid))
86 | {
87 | return string.Empty;
88 | }
89 |
90 | content = await client.DownloadStringTaskAsync(url);
91 | }
92 | catch (Exception ex)
93 | {
94 | Logger.Exception(ex, "CookieClient -> GetHttpAsync, for url = " + url);
95 | }
96 |
97 | if (!string.IsNullOrWhiteSpace(content) || count == 0)
98 | return content;
99 |
100 | count = count - 1;
101 | }
102 | }
103 |
104 | public static async Task IsLogined()
105 | {
106 | var response = await GetHttpAsync(Settings.Default.myProfileURL);
107 | var document = new HtmlDocument();
108 | document.LoadHtml(response);
109 | return document.DocumentNode.SelectSingleNode("//a[@class=\"global_action_link\"]") == null;
110 | }
111 |
112 | public CookieClient()
113 | {
114 | Cookie = GenerateCookies();
115 | Encoding = Encoding.UTF8;
116 | }
117 | }
118 | }
119 |
--------------------------------------------------------------------------------
/steam-idle Source/steam-idle/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | text/microsoft-resx
107 |
108 |
109 | 2.0
110 |
111 |
112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
113 |
114 |
115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
--------------------------------------------------------------------------------
/Source/IdleMaster/frmSettings.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 | using IdleMaster.Properties;
4 | using System.Threading;
5 | using System.Text.RegularExpressions;
6 |
7 | namespace IdleMaster
8 | {
9 | public partial class frmSettings : Form
10 | {
11 | public frmSettings()
12 | {
13 | InitializeComponent();
14 | }
15 |
16 | private void btnCancel_Click(object sender, EventArgs e)
17 | {
18 | Close();
19 | }
20 |
21 | private void btnOK_Click(object sender, EventArgs e)
22 | {
23 | if (radIdleDefault.Checked)
24 | {
25 | Settings.Default.sort = "default";
26 | }
27 | if (radIdleLeastDrops.Checked)
28 | {
29 | Settings.Default.sort = "leastcards";
30 | }
31 | if (radIdleMostDrops.Checked)
32 | {
33 | Settings.Default.sort = "mostcards";
34 | }
35 | if (radIdleMostValue.Checked)
36 | {
37 | Settings.Default.sort = "mostvalue";
38 | }
39 |
40 | if (cboLanguage.Text != "")
41 | {
42 | if (cboLanguage.Text != Settings.Default.language)
43 | {
44 | MessageBox.Show(localization.strings.please_restart);
45 | }
46 | Settings.Default.language = cboLanguage.Text;
47 | }
48 |
49 | if (radOneThenMany.Checked)
50 | {
51 | Settings.Default.OnlyOneGameIdle = false;
52 | Settings.Default.OneThenMany = true;
53 | }
54 | else
55 | {
56 | Settings.Default.OnlyOneGameIdle = radOneGameOnly.Checked && !radManyThenOne.Checked;
57 | Settings.Default.OneThenMany = false;
58 | }
59 | Settings.Default.minToTray = chkMinToTray.Checked;
60 | Settings.Default.ignoreclient = chkIgnoreClientStatus.Checked;
61 | Settings.Default.showUsername = chkShowUsername.Checked;
62 | Settings.Default.Save();
63 | Close();
64 | }
65 |
66 | private void frmSettings_Load(object sender, EventArgs e)
67 | {
68 | if (Settings.Default.language != "")
69 | {
70 | cboLanguage.SelectedItem = Settings.Default.language;
71 | }
72 | else
73 | {
74 | switch (Thread.CurrentThread.CurrentUICulture.EnglishName)
75 | {
76 | case "Chinese (Simplified, China)":
77 | case "Chinese (Traditional, China)":
78 | case "Portuguese (Brazil)":
79 | cboLanguage.SelectedItem = Thread.CurrentThread.CurrentUICulture.EnglishName;
80 | break;
81 | default:
82 | cboLanguage.SelectedItem = Regex.Replace(Thread.CurrentThread.CurrentUICulture.EnglishName, @"\(.+\)", "").Trim();
83 | break;
84 | }
85 | }
86 |
87 | switch (Settings.Default.sort)
88 | {
89 | case "leastcards":
90 | radIdleLeastDrops.Checked = true;
91 | break;
92 | case "mostcards":
93 | radIdleMostDrops.Checked = true;
94 | break;
95 | case "mostvalue":
96 | radIdleMostValue.Checked = true;
97 | break;
98 | default:
99 | break;
100 | }
101 |
102 | // Load translation
103 | this.Text = localization.strings.idle_master_settings;
104 | grpGeneral.Text = localization.strings.general;
105 | grpIdlingQuantity.Text = localization.strings.idling_behavior;
106 | grpPriority.Text = localization.strings.idling_order;
107 | btnOK.Text = localization.strings.accept;
108 | btnCancel.Text = localization.strings.cancel;
109 | ttHints.SetToolTip(btnAdvanced, localization.strings.advanced_auth);
110 | chkMinToTray.Text = localization.strings.minimize_to_tray;
111 | ttHints.SetToolTip(chkMinToTray, localization.strings.minimize_to_tray);
112 | chkIgnoreClientStatus.Text = localization.strings.ignore_client_status;
113 | ttHints.SetToolTip(chkIgnoreClientStatus, localization.strings.ignore_client_status);
114 | chkShowUsername.Text = localization.strings.show_username;
115 | ttHints.SetToolTip(chkShowUsername, localization.strings.show_username);
116 | radOneGameOnly.Text = localization.strings.idle_individual;
117 | ttHints.SetToolTip(radOneGameOnly, localization.strings.idle_individual);
118 | radManyThenOne.Text = localization.strings.idle_simultaneous;
119 | ttHints.SetToolTip(radManyThenOne, localization.strings.idle_simultaneous);
120 | radOneThenMany.Text = localization.strings.idle_onethenmany;
121 | ttHints.SetToolTip(radOneThenMany, localization.strings.idle_onethenmany);
122 | radIdleDefault.Text = localization.strings.order_default;
123 | ttHints.SetToolTip(radIdleDefault, localization.strings.order_default);
124 | radIdleMostValue.Text = localization.strings.order_value;
125 | ttHints.SetToolTip(radIdleMostValue, localization.strings.order_value);
126 | radIdleMostDrops.Text = localization.strings.order_most;
127 | ttHints.SetToolTip(radIdleMostDrops, localization.strings.order_most);
128 | radIdleLeastDrops.Text = localization.strings.order_least;
129 | ttHints.SetToolTip(radIdleLeastDrops, localization.strings.order_least);
130 | lblLanguage.Text = localization.strings.interface_language;
131 |
132 | if (Settings.Default.OneThenMany)
133 | {
134 | radOneThenMany.Checked = true;
135 | }
136 | else
137 | {
138 | radOneGameOnly.Checked = Settings.Default.OnlyOneGameIdle;
139 | radManyThenOne.Checked = !Settings.Default.OnlyOneGameIdle;
140 | }
141 |
142 | if (Settings.Default.minToTray)
143 | {
144 | chkMinToTray.Checked = true;
145 | }
146 |
147 | if (Settings.Default.ignoreclient)
148 | {
149 | chkIgnoreClientStatus.Checked = true;
150 | }
151 |
152 | if (Settings.Default.showUsername)
153 | {
154 | chkShowUsername.Checked = true;
155 | }
156 | }
157 |
158 | private void btnAdvanced_Click(object sender, EventArgs e)
159 | {
160 | var frm = new frmSettingsAdvanced();
161 | frm.ShowDialog();
162 | }
163 | }
164 | }
165 |
--------------------------------------------------------------------------------
/Source/IdleMaster/frmBlacklist.Designer.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Windows.Forms;
3 |
4 | namespace IdleMaster
5 | {
6 | partial class frmBlacklist
7 | {
8 | ///
9 | /// Required designer variable.
10 | ///
11 | private IContainer components = null;
12 |
13 | ///
14 | /// Clean up any resources being used.
15 | ///
16 | /// true if managed resources should be disposed; otherwise, false.
17 | protected override void Dispose(bool disposing)
18 | {
19 | if (disposing && (components != null))
20 | {
21 | components.Dispose();
22 | }
23 | base.Dispose(disposing);
24 | }
25 |
26 | #region Windows Form Designer generated code
27 |
28 | ///
29 | /// Required method for Designer support - do not modify
30 | /// the contents of this method with the code editor.
31 | ///
32 | private void InitializeComponent()
33 | {
34 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmBlacklist));
35 | this.lstBlacklist = new System.Windows.Forms.ListBox();
36 | this.grpAdd = new System.Windows.Forms.GroupBox();
37 | this.btnAdd = new System.Windows.Forms.Button();
38 | this.txtAppid = new System.Windows.Forms.TextBox();
39 | this.label1 = new System.Windows.Forms.Label();
40 | this.btnSave = new System.Windows.Forms.Button();
41 | this.btnRemove = new System.Windows.Forms.Button();
42 | this.grpAdd.SuspendLayout();
43 | this.SuspendLayout();
44 | //
45 | // lstBlacklist
46 | //
47 | this.lstBlacklist.FormattingEnabled = true;
48 | this.lstBlacklist.Location = new System.Drawing.Point(13, 13);
49 | this.lstBlacklist.Name = "lstBlacklist";
50 | this.lstBlacklist.Size = new System.Drawing.Size(270, 316);
51 | this.lstBlacklist.Sorted = true;
52 | this.lstBlacklist.TabIndex = 0;
53 | //
54 | // grpAdd
55 | //
56 | this.grpAdd.Controls.Add(this.btnAdd);
57 | this.grpAdd.Controls.Add(this.txtAppid);
58 | this.grpAdd.Controls.Add(this.label1);
59 | this.grpAdd.Location = new System.Drawing.Point(13, 336);
60 | this.grpAdd.Name = "grpAdd";
61 | this.grpAdd.Size = new System.Drawing.Size(181, 76);
62 | this.grpAdd.TabIndex = 1;
63 | this.grpAdd.TabStop = false;
64 | this.grpAdd.Text = "Add Game to Blacklist";
65 | //
66 | // btnAdd
67 | //
68 | this.btnAdd.Location = new System.Drawing.Point(100, 43);
69 | this.btnAdd.Name = "btnAdd";
70 | this.btnAdd.Size = new System.Drawing.Size(75, 23);
71 | this.btnAdd.TabIndex = 3;
72 | this.btnAdd.Text = "&Add";
73 | this.btnAdd.UseVisualStyleBackColor = true;
74 | this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
75 | //
76 | // txtAppid
77 | //
78 | this.txtAppid.Location = new System.Drawing.Point(56, 17);
79 | this.txtAppid.Name = "txtAppid";
80 | this.txtAppid.Size = new System.Drawing.Size(119, 20);
81 | this.txtAppid.TabIndex = 0;
82 | //
83 | // label1
84 | //
85 | this.label1.AutoSize = true;
86 | this.label1.Location = new System.Drawing.Point(7, 20);
87 | this.label1.Name = "label1";
88 | this.label1.Size = new System.Drawing.Size(43, 13);
89 | this.label1.TabIndex = 0;
90 | this.label1.Text = "App ID:";
91 | //
92 | // btnSave
93 | //
94 | this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
95 | this.btnSave.Location = new System.Drawing.Point(237, 383);
96 | this.btnSave.Name = "btnSave";
97 | this.btnSave.Size = new System.Drawing.Size(75, 23);
98 | this.btnSave.TabIndex = 3;
99 | this.btnSave.Text = "&Save";
100 | this.btnSave.UseVisualStyleBackColor = true;
101 | this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
102 | //
103 | // btnRemove
104 | //
105 | this.btnRemove.Image = global::IdleMaster.Properties.Resources.imgTrash;
106 | this.btnRemove.Location = new System.Drawing.Point(289, 13);
107 | this.btnRemove.Name = "btnRemove";
108 | this.btnRemove.Size = new System.Drawing.Size(28, 28);
109 | this.btnRemove.TabIndex = 2;
110 | this.btnRemove.UseVisualStyleBackColor = true;
111 | this.btnRemove.Click += new System.EventHandler(this.btnRemove_Click);
112 | //
113 | // frmBlacklist
114 | //
115 | this.AcceptButton = this.btnAdd;
116 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
117 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
118 | this.ClientSize = new System.Drawing.Size(324, 418);
119 | this.Controls.Add(this.btnSave);
120 | this.Controls.Add(this.btnRemove);
121 | this.Controls.Add(this.grpAdd);
122 | this.Controls.Add(this.lstBlacklist);
123 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
124 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
125 | this.MaximizeBox = false;
126 | this.MinimizeBox = false;
127 | this.Name = "frmBlacklist";
128 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
129 | this.Text = "Manage Idle Master Blacklist";
130 | this.Load += new System.EventHandler(this.frmBlacklist_Load);
131 | this.grpAdd.ResumeLayout(false);
132 | this.grpAdd.PerformLayout();
133 | this.ResumeLayout(false);
134 |
135 | }
136 |
137 | #endregion
138 |
139 | private ListBox lstBlacklist;
140 | private GroupBox grpAdd;
141 | private Button btnRemove;
142 | private Button btnSave;
143 | private Button btnAdd;
144 | private TextBox txtAppid;
145 | private Label label1;
146 | }
147 | }
--------------------------------------------------------------------------------
/Source/IdleMaster/frmStatistics.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace IdleMaster
2 | {
3 | partial class frmStatistics
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmStatistics));
32 | this.btnOK = new System.Windows.Forms.Button();
33 | this.lblSessionTime = new System.Windows.Forms.Label();
34 | this.lblSessionCards = new System.Windows.Forms.Label();
35 | this.lblTotalCards = new System.Windows.Forms.Label();
36 | this.lblTotalTime = new System.Windows.Forms.Label();
37 | this.lblSessionHeader = new System.Windows.Forms.Label();
38 | this.lblTotalHeader = new System.Windows.Forms.Label();
39 | this.SuspendLayout();
40 | //
41 | // btnOK
42 | //
43 | this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
44 | this.btnOK.Location = new System.Drawing.Point(175, 129);
45 | this.btnOK.Name = "btnOK";
46 | this.btnOK.Size = new System.Drawing.Size(75, 23);
47 | this.btnOK.TabIndex = 0;
48 | this.btnOK.Text = "&OK";
49 | this.btnOK.UseVisualStyleBackColor = true;
50 | this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
51 | //
52 | // lblSessionTime
53 | //
54 | this.lblSessionTime.AutoSize = true;
55 | this.lblSessionTime.Location = new System.Drawing.Point(12, 29);
56 | this.lblSessionTime.Name = "lblSessionTime";
57 | this.lblSessionTime.Size = new System.Drawing.Size(65, 13);
58 | this.lblSessionTime.TabIndex = 1;
59 | this.lblSessionTime.Text = "sessionTime";
60 | //
61 | // lblSessionCards
62 | //
63 | this.lblSessionCards.AutoSize = true;
64 | this.lblSessionCards.Location = new System.Drawing.Point(12, 44);
65 | this.lblSessionCards.Name = "lblSessionCards";
66 | this.lblSessionCards.Size = new System.Drawing.Size(69, 13);
67 | this.lblSessionCards.TabIndex = 2;
68 | this.lblSessionCards.Text = "sessionCards";
69 | //
70 | // lblTotalCards
71 | //
72 | this.lblTotalCards.AutoSize = true;
73 | this.lblTotalCards.Location = new System.Drawing.Point(12, 104);
74 | this.lblTotalCards.Name = "lblTotalCards";
75 | this.lblTotalCards.Size = new System.Drawing.Size(54, 13);
76 | this.lblTotalCards.TabIndex = 3;
77 | this.lblTotalCards.Text = "totalCards";
78 | //
79 | // lblTotalTime
80 | //
81 | this.lblTotalTime.AutoSize = true;
82 | this.lblTotalTime.Location = new System.Drawing.Point(12, 89);
83 | this.lblTotalTime.Name = "lblTotalTime";
84 | this.lblTotalTime.Size = new System.Drawing.Size(50, 13);
85 | this.lblTotalTime.TabIndex = 4;
86 | this.lblTotalTime.Text = "totalTime";
87 | //
88 | // lblSessionHeader
89 | //
90 | this.lblSessionHeader.AutoSize = true;
91 | this.lblSessionHeader.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
92 | this.lblSessionHeader.Location = new System.Drawing.Point(10, 9);
93 | this.lblSessionHeader.Name = "lblSessionHeader";
94 | this.lblSessionHeader.Size = new System.Drawing.Size(81, 13);
95 | this.lblSessionHeader.TabIndex = 5;
96 | this.lblSessionHeader.Text = "This session:";
97 | //
98 | // lblTotalHeader
99 | //
100 | this.lblTotalHeader.AutoSize = true;
101 | this.lblTotalHeader.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
102 | this.lblTotalHeader.Location = new System.Drawing.Point(10, 69);
103 | this.lblTotalHeader.Name = "lblTotalHeader";
104 | this.lblTotalHeader.Size = new System.Drawing.Size(40, 13);
105 | this.lblTotalHeader.TabIndex = 6;
106 | this.lblTotalHeader.Text = "Total:";
107 | //
108 | // frmStatistics
109 | //
110 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
111 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
112 | this.ClientSize = new System.Drawing.Size(253, 157);
113 | this.Controls.Add(this.lblTotalHeader);
114 | this.Controls.Add(this.lblSessionHeader);
115 | this.Controls.Add(this.lblTotalTime);
116 | this.Controls.Add(this.lblTotalCards);
117 | this.Controls.Add(this.lblSessionCards);
118 | this.Controls.Add(this.lblSessionTime);
119 | this.Controls.Add(this.btnOK);
120 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
121 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
122 | this.MaximizeBox = false;
123 | this.Name = "frmStatistics";
124 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
125 | this.Text = "Statistics";
126 | this.Load += new System.EventHandler(this.frmStatistics_Load);
127 | this.ResumeLayout(false);
128 | this.PerformLayout();
129 |
130 | }
131 |
132 | #endregion
133 |
134 | private System.Windows.Forms.Button btnOK;
135 | private System.Windows.Forms.Label lblSessionTime;
136 | private System.Windows.Forms.Label lblSessionCards;
137 | private System.Windows.Forms.Label lblTotalCards;
138 | private System.Windows.Forms.Label lblTotalTime;
139 | private System.Windows.Forms.Label lblSessionHeader;
140 | private System.Windows.Forms.Label lblTotalHeader;
141 | }
142 | }
--------------------------------------------------------------------------------
/Source/IdleMaster/frmSettingsAdvanced.Designer.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Windows.Forms;
3 |
4 | namespace IdleMaster
5 | {
6 | partial class frmSettingsAdvanced
7 | {
8 | ///
9 | /// Required designer variable.
10 | ///
11 | private IContainer components = null;
12 |
13 | ///
14 | /// Clean up any resources being used.
15 | ///
16 | /// true if managed resources should be disposed; otherwise, false.
17 | protected override void Dispose(bool disposing)
18 | {
19 | if (disposing && (components != null))
20 | {
21 | components.Dispose();
22 | }
23 | base.Dispose(disposing);
24 | }
25 |
26 | #region Windows Form Designer generated code
27 |
28 | ///
29 | /// Required method for Designer support - do not modify
30 | /// the contents of this method with the code editor.
31 | ///
32 | private void InitializeComponent()
33 | {
34 | this.components = new System.ComponentModel.Container();
35 | var resources = new System.ComponentModel.ComponentResourceManager(typeof(frmSettingsAdvanced));
36 | this.label1 = new System.Windows.Forms.Label();
37 | this.label2 = new System.Windows.Forms.Label();
38 | this.label3 = new System.Windows.Forms.Label();
39 | this.txtSessionID = new System.Windows.Forms.TextBox();
40 | this.txtSteamLogin = new System.Windows.Forms.TextBox();
41 | this.txtSteamParental = new System.Windows.Forms.TextBox();
42 | this.btnUpdate = new System.Windows.Forms.Button();
43 | this.btnView = new System.Windows.Forms.Button();
44 | this.ttHelp = new System.Windows.Forms.ToolTip(this.components);
45 | this.SuspendLayout();
46 | //
47 | // label1
48 | //
49 | this.label1.Location = new System.Drawing.Point(13, 13);
50 | this.label1.Name = "label1";
51 | this.label1.Size = new System.Drawing.Size(85, 23);
52 | this.label1.TabIndex = 0;
53 | this.label1.Text = "sessionid:";
54 | this.label1.TextAlign = System.Drawing.ContentAlignment.TopRight;
55 | //
56 | // label2
57 | //
58 | this.label2.Location = new System.Drawing.Point(13, 36);
59 | this.label2.Name = "label2";
60 | this.label2.Size = new System.Drawing.Size(85, 23);
61 | this.label2.TabIndex = 1;
62 | this.label2.Text = "steamLogin:";
63 | this.label2.TextAlign = System.Drawing.ContentAlignment.TopRight;
64 | //
65 | // label3
66 | //
67 | this.label3.Location = new System.Drawing.Point(12, 60);
68 | this.label3.Name = "label3";
69 | this.label3.Size = new System.Drawing.Size(86, 23);
70 | this.label3.TabIndex = 2;
71 | this.label3.Text = "steamparental:";
72 | this.label3.TextAlign = System.Drawing.ContentAlignment.TopRight;
73 | //
74 | // txtSessionID
75 | //
76 | this.txtSessionID.Location = new System.Drawing.Point(104, 10);
77 | this.txtSessionID.Name = "txtSessionID";
78 | this.txtSessionID.PasswordChar = '*';
79 | this.txtSessionID.Size = new System.Drawing.Size(299, 20);
80 | this.txtSessionID.TabIndex = 3;
81 | this.txtSessionID.TextChanged += new System.EventHandler(this.txtSessionID_TextChanged);
82 | //
83 | // txtSteamLogin
84 | //
85 | this.txtSteamLogin.Location = new System.Drawing.Point(104, 33);
86 | this.txtSteamLogin.Name = "txtSteamLogin";
87 | this.txtSteamLogin.PasswordChar = '*';
88 | this.txtSteamLogin.Size = new System.Drawing.Size(299, 20);
89 | this.txtSteamLogin.TabIndex = 4;
90 | this.txtSteamLogin.TextChanged += new System.EventHandler(this.txtSteamLogin_TextChanged);
91 | //
92 | // txtSteamParental
93 | //
94 | this.txtSteamParental.Location = new System.Drawing.Point(104, 57);
95 | this.txtSteamParental.Name = "txtSteamParental";
96 | this.txtSteamParental.PasswordChar = '*';
97 | this.txtSteamParental.Size = new System.Drawing.Size(299, 20);
98 | this.txtSteamParental.TabIndex = 5;
99 | this.txtSteamParental.TextChanged += new System.EventHandler(this.txtSteamParental_TextChanged);
100 | //
101 | // btnUpdate
102 | //
103 | this.btnUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
104 | this.btnUpdate.Location = new System.Drawing.Point(327, 83);
105 | this.btnUpdate.Name = "btnUpdate";
106 | this.btnUpdate.Size = new System.Drawing.Size(75, 23);
107 | this.btnUpdate.TabIndex = 7;
108 | this.btnUpdate.Text = "&Update";
109 | this.btnUpdate.UseVisualStyleBackColor = true;
110 | this.btnUpdate.Click += new System.EventHandler(this.btnUpdate_Click);
111 | //
112 | // btnView
113 | //
114 | this.btnView.Image = global::IdleMaster.Properties.Resources.imgView;
115 | this.btnView.Location = new System.Drawing.Point(104, 83);
116 | this.btnView.Name = "btnView";
117 | this.btnView.Size = new System.Drawing.Size(27, 23);
118 | this.btnView.TabIndex = 6;
119 | this.ttHelp.SetToolTip(this.btnView, "Display information above\r\n\r\n[WARNING] \r\nDo not share this information with anyon" +
120 | "e, \r\nas it could potentially be used by an attacker to log into \r\nyour Steam acc" +
121 | "ount.");
122 | this.btnView.UseVisualStyleBackColor = true;
123 | this.btnView.Click += new System.EventHandler(this.btnView_Click);
124 | //
125 | // ttHelp
126 | //
127 | this.ttHelp.AutoPopDelay = 9000;
128 | this.ttHelp.InitialDelay = 500;
129 | this.ttHelp.ReshowDelay = 100;
130 | //
131 | // frmSettingsAdvanced
132 | //
133 | this.AcceptButton = this.btnUpdate;
134 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
135 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
136 | this.ClientSize = new System.Drawing.Size(415, 116);
137 | this.Controls.Add(this.btnUpdate);
138 | this.Controls.Add(this.btnView);
139 | this.Controls.Add(this.txtSteamParental);
140 | this.Controls.Add(this.txtSteamLogin);
141 | this.Controls.Add(this.txtSessionID);
142 | this.Controls.Add(this.label3);
143 | this.Controls.Add(this.label2);
144 | this.Controls.Add(this.label1);
145 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
146 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
147 | this.MaximizeBox = false;
148 | this.Name = "frmSettingsAdvanced";
149 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
150 | this.Text = "Idle Master Authentication Data";
151 | this.Load += new System.EventHandler(this.frmSettingsAdvanced_Load);
152 | this.ResumeLayout(false);
153 | this.PerformLayout();
154 |
155 | }
156 |
157 | #endregion
158 |
159 | private Label label1;
160 | private Label label2;
161 | private Label label3;
162 | private TextBox txtSessionID;
163 | private TextBox txtSteamLogin;
164 | private TextBox txtSteamParental;
165 | private Button btnView;
166 | private Button btnUpdate;
167 | private ToolTip ttHelp;
168 | }
169 | }
--------------------------------------------------------------------------------
/Source/IdleMaster/frmBrowser.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Net;
3 | using System.Runtime.InteropServices;
4 | using System.Text;
5 | using System.Windows.Forms;
6 | using IdleMaster.Properties;
7 |
8 | namespace IdleMaster
9 | {
10 | public partial class frmBrowser : Form
11 | {
12 |
13 | public int SecondsWaiting = 30;
14 |
15 | [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
16 | private static extern bool InternetSetOption(int hInternet, int dwOption, string lpBuffer, int dwBufferLength);
17 |
18 | [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
19 | private static extern bool InternetSetCookie(string lpszUrlName, string lpszCookieName, string lpszCookieData);
20 |
21 | public frmBrowser()
22 | {
23 | // This initializes the components on the form
24 | InitializeComponent();
25 | }
26 |
27 | private void frmBrowser_Load(object sender, EventArgs e)
28 | {
29 | // Remove any existing session state data
30 | InternetSetOption(0, 42, null, 0);
31 |
32 | // Localize form
33 | this.Text = localization.strings.please_login;
34 | lblSaving.Text = localization.strings.saving_info;
35 |
36 | // Delete Steam cookie data from the browser control
37 | InternetSetCookie("http://steamcommunity.com", "sessionid", ";expires=Mon, 01 Jan 0001 00:00:00 GMT");
38 | InternetSetCookie("http://steamcommunity.com", "steamLogin", ";expires=Mon, 01 Jan 0001 00:00:00 GMT");
39 | InternetSetCookie("http://steamcommunity.com", "steamRememberLogin", ";expires=Mon, 01 Jan 0001 00:00:00 GMT");
40 |
41 | // When the form is loaded, navigate to the Steam login page using the web browser control
42 | wbAuth.Navigate("https://steamcommunity.com/login/home/?goto=my/profile", "_self", null, "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko");
43 | }
44 |
45 | // This code block executes each time a new document is loaded into the web browser control
46 | private void wbAuth_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
47 | {
48 | // Find the page header, and remove it. This gives the login form a more streamlined look.
49 | dynamic htmldoc = wbAuth.Document.DomDocument;
50 | dynamic globalHeader = htmldoc.GetElementById("global_header");
51 | if (globalHeader != null)
52 | {
53 | try
54 | {
55 | globalHeader.parentNode.removeChild(globalHeader);
56 | }
57 | catch (Exception)
58 | {
59 |
60 | }
61 |
62 | }
63 |
64 | // Get the URL of the page that just finished loading
65 | var url = wbAuth.Url.AbsoluteUri;
66 |
67 | // If the page it just finished loading is the login page
68 | if (url == "https://steamcommunity.com/login/home/?goto=my/profile" ||
69 | url == "https://store.steampowered.com/login/transfer" ||
70 | url == "https://store.steampowered.com//login/transfer")
71 | {
72 | // Get a list of cookies from the current page
73 | CookieContainer container = GetUriCookieContainer(wbAuth.Url);
74 | var cookies = container.GetCookies(wbAuth.Url);
75 | foreach (Cookie cookie in cookies)
76 | {
77 | if (cookie.Name.StartsWith("steamMachineAuth"))
78 | Settings.Default.steamMachineAuth = cookie.Value;
79 | }
80 | }
81 | // If the page it just finished loading isn't the login page
82 | else if (url.StartsWith("javascript:") == false && url.StartsWith("about:") == false)
83 | {
84 |
85 | try
86 | {
87 | dynamic parentalNotice = htmldoc.GetElementById("parental_notice");
88 | if (parentalNotice != null)
89 | {
90 | if (parentalNotice.OuterHtml != "")
91 | {
92 | // Steam family options enabled
93 | wbAuth.Show();
94 | Width = 1000;
95 | Height = 350;
96 | return;
97 | }
98 | }
99 | }
100 | catch (Exception)
101 | {
102 |
103 | }
104 |
105 | // Get a list of cookies from the current page
106 | var container = GetUriCookieContainer(wbAuth.Url);
107 | var cookies = container.GetCookies(wbAuth.Url);
108 |
109 | // Go through the cookie data so that we can extract the cookies we are looking for
110 | foreach (Cookie cookie in cookies)
111 | {
112 | // Save the "sessionid" cookie
113 | if (cookie.Name == "sessionid")
114 | {
115 | Settings.Default.sessionid = cookie.Value;
116 | }
117 |
118 | // Save the "steamLogin" cookie and construct and save the user's profile link
119 | else if (cookie.Name == "steamLogin")
120 | {
121 | Settings.Default.steamLogin = cookie.Value;
122 | Settings.Default.myProfileURL = SteamProfile.GetSteamUrl();
123 | }
124 |
125 | // Save the "steamparental" cookie"
126 | else if (cookie.Name == "steamparental")
127 | {
128 | Settings.Default.steamparental = cookie.Value;
129 | }
130 |
131 | else if (cookie.Name == "steamRememberLogin")
132 | {
133 | Settings.Default.steamRememberLogin = cookie.Value;
134 | }
135 | }
136 |
137 | // Save all of the data to the program settings file, and close this form
138 | Settings.Default.Save();
139 | Close();
140 | }
141 | }
142 |
143 | // Imports the InternetGetCookieEx function from wininet.dll which allows the application to access the cookie data from the web browser control
144 | // Reference: http://stackoverflow.com/questions/3382498/is-it-possible-to-transfer-authentication-from-webbrowser-to-webrequest
145 | [DllImport("wininet.dll", SetLastError = true)]
146 | public static extern bool InternetGetCookieEx(
147 | string url,
148 | string cookieName,
149 | StringBuilder cookieData,
150 | ref int size,
151 | int dwFlags,
152 | IntPtr lpReserved);
153 |
154 | // Assigns the hex value for the DLL flag that allows Idle Master to be able to access cookie data marked as "HTTP Only"
155 | private const int InternetCookieHttponly = 0x2000;
156 |
157 | // This function returns cookie data based on a uniform resource identifier
158 | public static CookieContainer GetUriCookieContainer(Uri uri)
159 | {
160 | // First, create a null cookie container
161 | CookieContainer cookies = null;
162 |
163 | // Determine the size of the cookie
164 | var datasize = 8192 * 16;
165 | var cookieData = new StringBuilder(datasize);
166 |
167 | // Call InternetGetCookieEx from wininet.dll
168 | if (!InternetGetCookieEx(uri.ToString(), null, cookieData, ref datasize, InternetCookieHttponly, IntPtr.Zero))
169 | {
170 | if (datasize < 0)
171 | return null;
172 | // Allocate stringbuilder large enough to hold the cookie
173 | cookieData = new StringBuilder(datasize);
174 | if (!InternetGetCookieEx(
175 | uri.ToString(),
176 | null, cookieData,
177 | ref datasize,
178 | InternetCookieHttponly,
179 | IntPtr.Zero))
180 | return null;
181 | }
182 |
183 | // If the cookie contains data, add it to the cookie container
184 | if (cookieData.Length > 0)
185 | {
186 | cookies = new CookieContainer();
187 | cookies.SetCookies(uri, cookieData.ToString().Replace(';', ','));
188 | }
189 |
190 | // Return the cookie container
191 | return cookies;
192 | }
193 |
194 | // This code executes each time the web browser control is in the process of navigating
195 | private void wbAuth_Navigating(object sender, WebBrowserNavigatingEventArgs e)
196 | {
197 | // Get the url that's being navigated to
198 | var url = e.Url.AbsoluteUri;
199 |
200 | // Check to see if the page it's navigating to isn't the Steam login page or related calls
201 | if (url != "https://steamcommunity.com/login/home/?goto=my/profile" && url != "https://store.steampowered.com/login/transfer" && url != "https://store.steampowered.com//login/transfer" && url.StartsWith("javascript:") == false && url.StartsWith("about:") == false)
202 | {
203 | // start the sanity check timer
204 | tmrCheck.Enabled = true;
205 |
206 | // If it's navigating to a page other than the Steam login page, hide the browser control and resize the form
207 | wbAuth.Visible = false;
208 |
209 | // Scale the form based on the user's DPI settings
210 | var graphics = CreateGraphics();
211 | var scaleY = graphics.DpiY * 0.84375;
212 | var scaleX = graphics.DpiX * 2.84;
213 | Height = Convert.ToInt32(scaleY);
214 | Width = Convert.ToInt32(scaleX);
215 | }
216 | }
217 |
218 | private void tmrCheck_Tick(object sender, EventArgs e)
219 | {
220 | // Prevents the application from "saving" for more than 30 seconds and will attempt to save the cookie data after that time
221 | if (SecondsWaiting > 0)
222 | {
223 | SecondsWaiting = SecondsWaiting - 1;
224 | }
225 | else
226 | {
227 | tmrCheck.Enabled = false;
228 | Close();
229 | }
230 | }
231 | }
232 | }
233 |
--------------------------------------------------------------------------------
/Source/IdleMaster/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace IdleMaster.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 |
26 | [global::System.Configuration.UserScopedSettingAttribute()]
27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
28 | [global::System.Configuration.DefaultSettingValueAttribute("")]
29 | public string sessionid {
30 | get {
31 | return ((string)(this["sessionid"]));
32 | }
33 | set {
34 | this["sessionid"] = value;
35 | }
36 | }
37 |
38 | [global::System.Configuration.UserScopedSettingAttribute()]
39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
40 | [global::System.Configuration.DefaultSettingValueAttribute("")]
41 | public string steamLogin {
42 | get {
43 | return ((string)(this["steamLogin"]));
44 | }
45 | set {
46 | this["steamLogin"] = value;
47 | }
48 | }
49 |
50 | [global::System.Configuration.UserScopedSettingAttribute()]
51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
52 | [global::System.Configuration.DefaultSettingValueAttribute("")]
53 | public string myProfileURL {
54 | get {
55 | return ((string)(this["myProfileURL"]));
56 | }
57 | set {
58 | this["myProfileURL"] = value;
59 | }
60 | }
61 |
62 | [global::System.Configuration.UserScopedSettingAttribute()]
63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
64 | [global::System.Configuration.DefaultSettingValueAttribute("")]
65 | public string steamparental {
66 | get {
67 | return ((string)(this["steamparental"]));
68 | }
69 | set {
70 | this["steamparental"] = value;
71 | }
72 | }
73 |
74 | [global::System.Configuration.UserScopedSettingAttribute()]
75 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
76 | [global::System.Configuration.DefaultSettingValueAttribute("")]
77 | public string sort {
78 | get {
79 | return ((string)(this["sort"]));
80 | }
81 | set {
82 | this["sort"] = value;
83 | }
84 | }
85 |
86 | [global::System.Configuration.UserScopedSettingAttribute()]
87 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
88 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
89 | public bool minToTray {
90 | get {
91 | return ((bool)(this["minToTray"]));
92 | }
93 | set {
94 | this["minToTray"] = value;
95 | }
96 | }
97 |
98 | [global::System.Configuration.UserScopedSettingAttribute()]
99 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
100 | [global::System.Configuration.DefaultSettingValueAttribute("True")]
101 | public bool updateNeeded {
102 | get {
103 | return ((bool)(this["updateNeeded"]));
104 | }
105 | set {
106 | this["updateNeeded"] = value;
107 | }
108 | }
109 |
110 | [global::System.Configuration.UserScopedSettingAttribute()]
111 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
112 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
113 | public bool ignoreclient {
114 | get {
115 | return ((bool)(this["ignoreclient"]));
116 | }
117 | set {
118 | this["ignoreclient"] = value;
119 | }
120 | }
121 |
122 | [global::System.Configuration.UserScopedSettingAttribute()]
123 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
124 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
125 | public bool showUsername {
126 | get {
127 | return ((bool)(this["showUsername"]));
128 | }
129 | set {
130 | this["showUsername"] = value;
131 | }
132 | }
133 |
134 | [global::System.Configuration.UserScopedSettingAttribute()]
135 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
136 | [global::System.Configuration.DefaultSettingValueAttribute("\r\n\r\n \r\n")]
139 | public global::System.Collections.Specialized.StringCollection blacklist {
140 | get {
141 | return ((global::System.Collections.Specialized.StringCollection)(this["blacklist"]));
142 | }
143 | set {
144 | this["blacklist"] = value;
145 | }
146 | }
147 |
148 | [global::System.Configuration.UserScopedSettingAttribute()]
149 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
150 | [global::System.Configuration.DefaultSettingValueAttribute("False")]
151 | public bool OnlyOneGameIdle {
152 | get {
153 | return ((bool)(this["OnlyOneGameIdle"]));
154 | }
155 | set {
156 | this["OnlyOneGameIdle"] = value;
157 | }
158 | }
159 |
160 | [global::System.Configuration.UserScopedSettingAttribute()]
161 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
162 | [global::System.Configuration.DefaultSettingValueAttribute("")]
163 | public string steamRememberLogin {
164 | get {
165 | return ((string)(this["steamRememberLogin"]));
166 | }
167 | set {
168 | this["steamRememberLogin"] = value;
169 | }
170 | }
171 |
172 | [global::System.Configuration.UserScopedSettingAttribute()]
173 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
174 | [global::System.Configuration.DefaultSettingValueAttribute("")]
175 | public string steamMachineAuth {
176 | get {
177 | return ((string)(this["steamMachineAuth"]));
178 | }
179 | set {
180 | this["steamMachineAuth"] = value;
181 | }
182 | }
183 |
184 | [global::System.Configuration.UserScopedSettingAttribute()]
185 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
186 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
187 | public uint totalCardIdled {
188 | get {
189 | return ((uint)(this["totalCardIdled"]));
190 | }
191 | set {
192 | this["totalCardIdled"] = value;
193 | }
194 | }
195 |
196 | [global::System.Configuration.UserScopedSettingAttribute()]
197 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
198 | [global::System.Configuration.DefaultSettingValueAttribute("0")]
199 | public uint totalMinutesIdled {
200 | get {
201 | return ((uint)(this["totalMinutesIdled"]));
202 | }
203 | set {
204 | this["totalMinutesIdled"] = value;
205 | }
206 | }
207 |
208 | [global::System.Configuration.UserScopedSettingAttribute()]
209 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
210 | [global::System.Configuration.DefaultSettingValueAttribute("")]
211 | public string language {
212 | get {
213 | return ((string)(this["language"]));
214 | }
215 | set {
216 | this["language"] = value;
217 | }
218 | }
219 |
220 | [global::System.Configuration.UserScopedSettingAttribute()]
221 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
222 | [global::System.Configuration.DefaultSettingValueAttribute("True")]
223 | public bool OneThenMany {
224 | get {
225 | return ((bool)(this["OneThenMany"]));
226 | }
227 | set {
228 | this["OneThenMany"] = value;
229 | }
230 | }
231 | }
232 | }
233 |
--------------------------------------------------------------------------------
/Source/IdleMaster/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\Resources\Changelog.rtf;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252
123 |
124 |
125 | ..\Resources\ban-2x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
126 |
127 |
128 | ..\Resources\document-2x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
129 |
130 |
131 | ..\Resources\power-standby-2x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
132 |
133 |
134 | ..\Resources\x-2x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
135 |
136 |
137 | ..\Resources\globe-2x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
138 |
139 |
140 | ..\Resources\info-2x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
141 |
142 |
143 | ..\Resources\lock-locked-2x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
144 |
145 |
146 | ..\Resources\media-pause-2x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
147 |
148 |
149 | ..\Resources\media-pause.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
150 |
151 |
152 | ..\Resources\media-play-2x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
153 |
154 |
155 | ..\Resources\media-play.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
156 |
157 |
158 | ..\Resources\cog-2x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
159 |
160 |
161 | ..\Resources\media-step-forward-2x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
162 |
163 |
164 | ..\Resources\media-step-forward.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
165 |
166 |
167 | ..\Resources\select2-spinner.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
168 |
169 |
170 | ..\Resources\bar-chart-2x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
171 |
172 |
173 | ..\Resources\trash-2x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
174 |
175 |
176 | ..\Resources\check-2x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
177 |
178 |
179 | ..\Resources\eye-2x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
180 |
181 |
--------------------------------------------------------------------------------
/Source/IdleMaster/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.34209
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace IdleMaster.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("IdleMaster.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized string similar to {\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
65 | ///{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f10\fbidi \fn [rest of string was truncated]";.
66 | ///
67 | internal static string Changelog {
68 | get {
69 | return ResourceManager.GetString("Changelog", resourceCulture);
70 | }
71 | }
72 |
73 | ///
74 | /// Looks up a localized resource of type System.Drawing.Bitmap.
75 | ///
76 | internal static System.Drawing.Bitmap imgBlacklist {
77 | get {
78 | object obj = ResourceManager.GetObject("imgBlacklist", resourceCulture);
79 | return ((System.Drawing.Bitmap)(obj));
80 | }
81 | }
82 |
83 | ///
84 | /// Looks up a localized resource of type System.Drawing.Bitmap.
85 | ///
86 | internal static System.Drawing.Bitmap imgDocument {
87 | get {
88 | object obj = ResourceManager.GetObject("imgDocument", resourceCulture);
89 | return ((System.Drawing.Bitmap)(obj));
90 | }
91 | }
92 |
93 | ///
94 | /// Looks up a localized resource of type System.Drawing.Bitmap.
95 | ///
96 | internal static System.Drawing.Bitmap imgExit {
97 | get {
98 | object obj = ResourceManager.GetObject("imgExit", resourceCulture);
99 | return ((System.Drawing.Bitmap)(obj));
100 | }
101 | }
102 |
103 | ///
104 | /// Looks up a localized resource of type System.Drawing.Bitmap.
105 | ///
106 | internal static System.Drawing.Bitmap imgFalse {
107 | get {
108 | object obj = ResourceManager.GetObject("imgFalse", resourceCulture);
109 | return ((System.Drawing.Bitmap)(obj));
110 | }
111 | }
112 |
113 | ///
114 | /// Looks up a localized resource of type System.Drawing.Bitmap.
115 | ///
116 | internal static System.Drawing.Bitmap imgGlobe {
117 | get {
118 | object obj = ResourceManager.GetObject("imgGlobe", resourceCulture);
119 | return ((System.Drawing.Bitmap)(obj));
120 | }
121 | }
122 |
123 | ///
124 | /// Looks up a localized resource of type System.Drawing.Bitmap.
125 | ///
126 | internal static System.Drawing.Bitmap imgInfo {
127 | get {
128 | object obj = ResourceManager.GetObject("imgInfo", resourceCulture);
129 | return ((System.Drawing.Bitmap)(obj));
130 | }
131 | }
132 |
133 | ///
134 | /// Looks up a localized resource of type System.Drawing.Bitmap.
135 | ///
136 | internal static System.Drawing.Bitmap imgLock {
137 | get {
138 | object obj = ResourceManager.GetObject("imgLock", resourceCulture);
139 | return ((System.Drawing.Bitmap)(obj));
140 | }
141 | }
142 |
143 | ///
144 | /// Looks up a localized resource of type System.Drawing.Bitmap.
145 | ///
146 | internal static System.Drawing.Bitmap imgPause {
147 | get {
148 | object obj = ResourceManager.GetObject("imgPause", resourceCulture);
149 | return ((System.Drawing.Bitmap)(obj));
150 | }
151 | }
152 |
153 | ///
154 | /// Looks up a localized resource of type System.Drawing.Bitmap.
155 | ///
156 | internal static System.Drawing.Bitmap imgPauseSmall {
157 | get {
158 | object obj = ResourceManager.GetObject("imgPauseSmall", resourceCulture);
159 | return ((System.Drawing.Bitmap)(obj));
160 | }
161 | }
162 |
163 | ///
164 | /// Looks up a localized resource of type System.Drawing.Bitmap.
165 | ///
166 | internal static System.Drawing.Bitmap imgPlay {
167 | get {
168 | object obj = ResourceManager.GetObject("imgPlay", resourceCulture);
169 | return ((System.Drawing.Bitmap)(obj));
170 | }
171 | }
172 |
173 | ///
174 | /// Looks up a localized resource of type System.Drawing.Bitmap.
175 | ///
176 | internal static System.Drawing.Bitmap imgPlaySmall {
177 | get {
178 | object obj = ResourceManager.GetObject("imgPlaySmall", resourceCulture);
179 | return ((System.Drawing.Bitmap)(obj));
180 | }
181 | }
182 |
183 | ///
184 | /// Looks up a localized resource of type System.Drawing.Bitmap.
185 | ///
186 | internal static System.Drawing.Bitmap imgSettings {
187 | get {
188 | object obj = ResourceManager.GetObject("imgSettings", resourceCulture);
189 | return ((System.Drawing.Bitmap)(obj));
190 | }
191 | }
192 |
193 | ///
194 | /// Looks up a localized resource of type System.Drawing.Bitmap.
195 | ///
196 | internal static System.Drawing.Bitmap imgSkip {
197 | get {
198 | object obj = ResourceManager.GetObject("imgSkip", resourceCulture);
199 | return ((System.Drawing.Bitmap)(obj));
200 | }
201 | }
202 |
203 | ///
204 | /// Looks up a localized resource of type System.Drawing.Bitmap.
205 | ///
206 | internal static System.Drawing.Bitmap imgSkipSmall {
207 | get {
208 | object obj = ResourceManager.GetObject("imgSkipSmall", resourceCulture);
209 | return ((System.Drawing.Bitmap)(obj));
210 | }
211 | }
212 |
213 | ///
214 | /// Looks up a localized resource of type System.Drawing.Bitmap.
215 | ///
216 | internal static System.Drawing.Bitmap imgSpin {
217 | get {
218 | object obj = ResourceManager.GetObject("imgSpin", resourceCulture);
219 | return ((System.Drawing.Bitmap)(obj));
220 | }
221 | }
222 |
223 | ///
224 | /// Looks up a localized resource of type System.Drawing.Bitmap.
225 | ///
226 | internal static System.Drawing.Bitmap imgStatistics {
227 | get {
228 | object obj = ResourceManager.GetObject("imgStatistics", resourceCulture);
229 | return ((System.Drawing.Bitmap)(obj));
230 | }
231 | }
232 |
233 | ///
234 | /// Looks up a localized resource of type System.Drawing.Bitmap.
235 | ///
236 | internal static System.Drawing.Bitmap imgTrash {
237 | get {
238 | object obj = ResourceManager.GetObject("imgTrash", resourceCulture);
239 | return ((System.Drawing.Bitmap)(obj));
240 | }
241 | }
242 |
243 | ///
244 | /// Looks up a localized resource of type System.Drawing.Bitmap.
245 | ///
246 | internal static System.Drawing.Bitmap imgTrue {
247 | get {
248 | object obj = ResourceManager.GetObject("imgTrue", resourceCulture);
249 | return ((System.Drawing.Bitmap)(obj));
250 | }
251 | }
252 |
253 | ///
254 | /// Looks up a localized resource of type System.Drawing.Bitmap.
255 | ///
256 | internal static System.Drawing.Bitmap imgView {
257 | get {
258 | object obj = ResourceManager.GetObject("imgView", resourceCulture);
259 | return ((System.Drawing.Bitmap)(obj));
260 | }
261 | }
262 | }
263 | }
264 |
--------------------------------------------------------------------------------
/Source/IdleMaster/localization/strings.zh.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 关于(&A)
122 |
123 |
124 | 徽章状态加载错误, __num__ 秒后重试
125 |
126 |
127 | 黑名单(&B)
128 |
129 |
130 | 将当前游戏加入黑名单(&B)
131 |
132 |
133 | 剩余卡牌掉落
134 |
135 |
136 | 游戏中
137 |
138 |
139 | 退出(&X)
140 |
141 |
142 | 文件(&F)
143 |
144 |
145 | 游戏(&G)
146 |
147 |
148 | 游戏尚有卡牌
149 |
150 |
151 | 帮助(&H)
152 |
153 |
154 | 游戏时间
155 |
156 |
157 | 小时游戏时间
158 |
159 |
160 | Idle Master已登录到Steam
161 |
162 |
163 | Idle Master未登录到Steam
164 |
165 |
166 | 正在运行
167 |
168 |
169 | 挂卡完成,无剩余卡牌掉落
170 |
171 |
172 | 游戏暂停
173 |
174 |
175 | 加载下一个游戏...
176 |
177 |
178 | 游戏时间
179 |
180 |
181 | 下次刷新
182 |
183 |
184 | 无游戏运行
185 |
186 |
187 | 官方组(&O)
188 |
189 |
190 | 暂停(&P)
191 |
192 |
193 | 请稍候...
194 |
195 |
196 | 读取徽章状态中
197 |
198 |
199 | 更新记录(&R)
200 |
201 |
202 | 继续(&R)
203 |
204 |
205 | 设置(&S)
206 |
207 |
208 | 当前账号为
209 |
210 |
211 | 登录
212 |
213 |
214 | 退出
215 |
216 |
217 | 下一个(&S)
218 |
219 |
220 | 排序加载中请稍候...
221 |
222 |
223 | 统计 (&S)
224 |
225 |
226 | Steam状态已被忽略
227 |
228 |
229 | Steam没有启动
230 |
231 |
232 | Steam正在运行
233 |
234 |
235 | 更新游戏状态
236 |
237 |
238 | 确定(&A)
239 |
240 |
241 | 添加(&A)
242 |
243 |
244 | 添加游戏到黑名单
245 |
246 |
247 | 高级设置
248 |
249 |
250 | Idle Master 用户数据(Cookie)
251 |
252 |
253 | 取消(&C)
254 |
255 |
256 | 显示数据
257 |
258 | [警告]
259 | 不要泄露任何数据,这和你把密码泄露出去没什么区别
260 |
261 |
262 | 常规
263 |
264 |
265 | 按顺序运行
266 |
267 |
268 | Idle Master 设置
269 |
270 |
271 | 将所有游戏运行满2小时后再按顺序运行
272 |
273 |
274 | 规则
275 |
276 |
277 | 顺序
278 |
279 |
280 | 忽略Steam运行状态
281 |
282 |
283 | 界面语言
284 |
285 |
286 | 管理 Idle Master 黑名单
287 |
288 |
289 | 最小化到系统托盘
290 |
291 |
292 | 确定(&A)
293 |
294 |
295 | 默认 (按字母排序)
296 |
297 |
298 | 优先运行卡牌数量少的游戏
299 |
300 |
301 | 优先运行卡牌数量多的游戏
302 |
303 |
304 | 优先运行卡牌价值高的游戏
305 |
306 |
307 | 请登录 Steam
308 |
309 |
310 | 请重启程序使语言更改生效.
311 |
312 |
313 | Idle Master更新记录
314 |
315 |
316 | 保存(&S)
317 |
318 |
319 | Idle Master正在提取用户数据
320 |
321 |
322 | 显示当前Steam用户
323 |
324 |
325 | 本次统计
326 |
327 |
328 | 历史统计
329 |
330 |
331 | 更新(&U)
332 |
333 |
334 | 您输入的数据无效. 请再试一次.
335 |
336 |
337 | 验证中...
338 |
339 |
340 | 优先单独运行已满2小时的游戏,然后再同时挂卡
341 |
342 |
343 |
--------------------------------------------------------------------------------
/Source/IdleMaster/localization/strings.zh-TW.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | 關於(&A)
122 |
123 |
124 | 徽章頁沒有載入,將在 __num__ 秒後重試
125 |
126 |
127 | 黑名單(&B)
128 |
129 |
130 | 將目前遊戲加入黑名單(&B)
131 |
132 |
133 | 卡片剩餘
134 |
135 |
136 | 目前正在遊戲內
137 |
138 |
139 | 離開(&X)
140 |
141 |
142 | 檔案(&F)
143 |
144 |
145 | 遊戲(&G)
146 |
147 |
148 | 遊戲尚有未掉落卡片
149 |
150 |
151 | 說明(&H)
152 |
153 |
154 | 時數
155 |
156 |
157 | 小時
158 |
159 |
160 | Idle Master已經連結至Steam
161 |
162 |
163 | Idle Master尚未連結至Steam
164 |
165 |
166 | 現在開始掉落
167 |
168 |
169 | 掉落結束, 沒有可掉落的卡片
170 |
171 |
172 | 掉落已暫停
173 |
174 |
175 | 正在載入下一個遊戲...
176 |
177 |
178 | 名稱
179 |
180 |
181 | 下一次檢查
182 |
183 |
184 | 不在遊戲中
185 |
186 |
187 | 官方群組(&O)
188 |
189 |
190 | 暫停掉落(&P)
191 |
192 |
193 | 請稍候...
194 |
195 |
196 | 讀取徽章頁
197 |
198 |
199 | 版本發佈說明(&R)
200 |
201 |
202 | 繼續(&R)
203 |
204 |
205 | 設定(&S)
206 |
207 |
208 | 登入身分:
209 |
210 |
211 | 登入
212 |
213 |
214 | 登出
215 |
216 |
217 | 跳過目前遊戲(&S)
218 |
219 |
220 | 正在依您的設定進行排序,請稍候...
221 |
222 |
223 | 統計數據(&S)
224 |
225 |
226 | Steam客戶端狀態已忽略
227 |
228 |
229 | Steam 已停止運行
230 |
231 |
232 | Steam 正在運行
233 |
234 |
235 | 更新遊戲狀態
236 |
237 |
238 | 接受(&A)
239 |
240 |
241 | 添加(&A)
242 |
243 |
244 | 將遊戲加到黑名單
245 |
246 |
247 | 顯示進階身份驗證資訊
248 |
249 |
250 | Idle Master認證資料
251 |
252 |
253 | 取消(&C)
254 |
255 |
256 | 顯示資訊
257 |
258 | [WARNING]
259 | 以上資訊請勿與人分享,
260 | 潛在攻擊者可能會用它登入至您的Steam帳戶。
261 |
262 |
263 | 一般
264 |
265 |
266 | 各遊戲卡片分開掉落
267 |
268 |
269 | Idle Master設定
270 |
271 |
272 | 所有遊戲同時等待掉落2小時,然後再分開進行
273 |
274 |
275 | 卡片掉落行為
276 |
277 |
278 | 掉落順序
279 |
280 |
281 | 忽略Steam用戶端狀態
282 |
283 |
284 | 介面語言
285 |
286 |
287 | 管理Idle Master黑名單
288 |
289 |
290 | 將Idle Master縮小至系統工具列
291 |
292 |
293 | 確認(&O)
294 |
295 |
296 | 預設(字母順序)
297 |
298 |
299 | 優先掉落遊戲卡片數量最少的
300 |
301 |
302 | 優先掉落遊戲卡片數量最多的
303 |
304 |
305 | 優先掉落價值最高的卡片
306 |
307 |
308 | 請登入至Steam帳戶
309 |
310 |
311 | 請重新啟動程式,使語言更改生效
312 |
313 |
314 | Idle Master版本發佈說明
315 |
316 |
317 | 儲存(&S)
318 |
319 |
320 | Idle Master正在儲存您的資訊
321 |
322 |
323 | 顯示已登入Steam帳戶的使用者名字
324 |
325 |
326 | 這次使用期間
327 |
328 |
329 | 總計
330 |
331 |
332 | 更新(&U)
333 |
334 |
335 | 您輸入的資料不是有效的。 請再試一次。
336 |
337 |
338 | 驗證中...
339 |
340 |
341 | 同時對遊戲時間超過2小時的遊戲進行掛機
342 |
343 |
344 |
--------------------------------------------------------------------------------
/Source/IdleMaster/localization/strings.ja.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | &詳細
122 |
123 |
124 | あなたのSteamバッジページが読み込まれていません、__num__秒以内に再試行します。
125 |
126 |
127 | &ブラックリスト
128 |
129 |
130 | &現在のゲームをブラックリストに
131 |
132 |
133 | 枚のカードが未ドロップです
134 |
135 |
136 | 現在ゲーム中
137 |
138 |
139 | &終了
140 |
141 |
142 | &ファイル
143 |
144 |
145 | &ゲーム
146 |
147 |
148 | 個のゲームがアイドル待機中です
149 |
150 |
151 | &ヘルプ
152 |
153 |
154 | 時間
155 |
156 |
157 | 時間のプレイ記録
158 |
159 |
160 | Idle MasterはSteamと接続しました
161 |
162 |
163 | Idle MasterはSteamと接続していません
164 |
165 |
166 | ゲームアイドル中
167 |
168 |
169 | アイドリングが完了しました! ドロップ可能なカードはもうありません
170 |
171 |
172 | アイドリング一時停止中
173 |
174 |
175 | 次のゲームを読み込んでいます...
176 |
177 |
178 | ゲーム名
179 |
180 |
181 | 次のチェックまで残り
182 |
183 |
184 | ゲーム中ではありません
185 |
186 |
187 | &公式グループ
188 |
189 |
190 | &アイドリングを一時停止
191 |
192 |
193 | お待ち下さい...
194 |
195 |
196 | Steamバッジページを読み込み中
197 |
198 |
199 | &更新履歴
200 |
201 |
202 | &アイドリングを続行
203 |
204 |
205 | &設定
206 |
207 |
208 | ログイン中のアカウント
209 |
210 |
211 | サインイン
212 |
213 |
214 | サインアウト
215 |
216 |
217 | &現在のゲームをスキップする
218 |
219 |
220 | 結果を並べ替えています、しばらくお待ち下さい...
221 |
222 |
223 | &統計
224 |
225 |
226 | Steamクライアントの状況を無視しています
227 |
228 |
229 | Steamが起動していません
230 |
231 |
232 | Steamは起動しています
233 |
234 |
235 | ゲームのカード獲得状況を更新する
236 |
237 |
238 | &承認
239 |
240 |
241 | &追加
242 |
243 |
244 | ゲームをブラックリストに追加する
245 |
246 |
247 | より詳細な認証情報を表示する
248 |
249 |
250 | Idle Masterの認証情報
251 |
252 |
253 | &キャンセル
254 |
255 |
256 | 上の情報を表示する
257 |
258 | [WARNING]
259 | ハッカーやクラッカーがあなたのSteamアカウントにログインするのに使われる可能性があるので、この情報をいかなる第三者とも共有しないで下さい。
260 |
261 |
262 | 基本設定
263 |
264 |
265 | ゲームを一つづつ個別にアイドルする
266 |
267 |
268 | Idle Masterの設定
269 |
270 |
271 | 複数のゲームを同時に2時間アイドルし、その後一つづつ個別にアイドルする
272 |
273 |
274 | アイドル時の動作
275 |
276 |
277 | アイドルする順番
278 |
279 |
280 | Steamクライアントの状態を無視する
281 |
282 |
283 | 言語
284 |
285 |
286 | Idle Masterのブラックリストを編集する
287 |
288 |
289 | Idle Masterを通知領域に最小化する
290 |
291 |
292 | &はい
293 |
294 |
295 | デフォルト(アルファベット順)
296 |
297 |
298 | カードのドロップ可能な数が少ない順に並び替える
299 |
300 |
301 | カードのドロップ可能な数が多い順に並び替える
302 |
303 |
304 | カードの価格が高い順に並び替える
305 |
306 |
307 | Steamにログインして下さい
308 |
309 |
310 | 言語の変更を完了するために再起動してください。
311 |
312 |
313 | Idle Masterの更新履歴
314 |
315 |
316 | &保存
317 |
318 |
319 | Idle Masterはあなたの情報を保存中です
320 |
321 |
322 | 現在サインイン中のユーザー名を表示する
323 |
324 |
325 | 現行のセッション
326 |
327 |
328 | 合計
329 |
330 |
331 | &更新
332 |
333 |
334 | あなたが入力したデータは有効ではありません。もう一度お試し下さい。
335 |
336 |
337 | 確認中です...
338 |
339 |
340 | 2時間以上のプレイ記録のあるゲームを一つづつ個別にアイドルし、その後プレイ記録が2時間未満のゲームを同時にアイドルする
341 |
342 |
343 |
--------------------------------------------------------------------------------
/Source/IdleMaster/localization/strings.ko.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | Idle Master 정보(A)
122 |
123 |
124 | 배지 페이지를 불러오지 못했습니다. __num__초 후 다시 시도합니다.
125 |
126 |
127 | 블랙리스트(B)
128 |
129 |
130 | 현재 게임을 블랙리스트에 추가(B)
131 |
132 |
133 | 획득 가능한 카드 장수
134 |
135 |
136 | 현재 플레이중인 게임
137 |
138 |
139 | 종료(X)
140 |
141 |
142 | 파일(F)
143 |
144 |
145 | 게임(G)
146 |
147 |
148 | 남은 게임 수
149 |
150 |
151 | 도움말(H)
152 |
153 |
154 | 시간
155 |
156 |
157 | 시간째 플레이
158 |
159 |
160 | Idle master가 Steam에 연결되었습니다.
161 |
162 |
163 | Idle Master가 Steam과 연결되어 있지 않습니다
164 |
165 |
166 | 현재 농사중
167 |
168 |
169 | 농사가 모두 완료되었습니다. 더 이상 수확할 카드가 없습니다
170 |
171 |
172 | 농사가 잠시 중단되었습니다
173 |
174 |
175 | 다음 게임을 불러옵니다
176 |
177 |
178 | 제목
179 |
180 |
181 | 다음번 확인까지
182 |
183 |
184 | 게임중이 아닙니다
185 |
186 |
187 | 공식 Steam 그룹(O)
188 |
189 |
190 | 농사 일시 중지(P)
191 |
192 |
193 | 잠시 기다려 주십시오
194 |
195 |
196 | 배지 페이지를 읽고 있습니다
197 |
198 |
199 | 릴리스 노트(R)
200 |
201 |
202 | 농사 재개(R)
203 |
204 |
205 | 설정(S)
206 |
207 |
208 | 다음 이름으로 로그인 했습니다
209 |
210 |
211 | 로그인
212 |
213 |
214 | 로그아웃
215 |
216 |
217 | 현재 게임 건너뛰기(S)
218 |
219 |
220 | 설정에 따라 결과를 정렬중입니다. 잠시만 기다려 주십시오.
221 |
222 |
223 | 통계(S)
224 |
225 |
226 | Steam 클라이언트 상태 무시
227 |
228 |
229 | Steam 클라이언트가 꺼져있습니다
230 |
231 |
232 | Steam 클라이언트가 실행중입니다
233 |
234 |
235 | 게임 상태 업데이트
236 |
237 |
238 | 확인(A)
239 |
240 |
241 | 추가(A)
242 |
243 |
244 | 게임을 블랙리스트에 추가합니다
245 |
246 |
247 | 고급 인증 정보를 표시합니다
248 |
249 |
250 | Idle Master 인증 정보
251 |
252 |
253 | 취소(C)
254 |
255 |
256 | 위의 정보를 표시합니다
257 |
258 | [WARNING]
259 | 이 정보는 귀하의 계정으로 로그인하려는 해커들에게 사용될 수
260 | 있기 때문에, 다른 사람들과 이 정보를 공유하지 않도록 하십시오.
261 |
262 |
263 | 일반
264 |
265 |
266 | 개별 게임을 각각 농사짓습니다
267 |
268 |
269 | Idle Master 설정
270 |
271 |
272 | 2시간까지는 동시에 농사를 짓고, 이후에는 따로 농사를 짓습니다
273 |
274 |
275 | 농사 동작
276 |
277 |
278 | 농사 순서
279 |
280 |
281 | Steam 클라이언트 상태를 무시합니다
282 |
283 |
284 | 인터페이스 언어
285 |
286 |
287 | Idle Master 블랙 리스트를 관리합니다
288 |
289 |
290 | Idle Master를 시스템 트레이로 최소화합니다
291 |
292 |
293 | 확인(O)
294 |
295 |
296 | 기본 (알파벳 순서)
297 |
298 |
299 | 남아있는 카드 수가 적은 게임을 최우선 순위로 합니다
300 |
301 |
302 | 남아있는 카드 수가 가장 많은 게임을 최우선 순위로 합니다
303 |
304 |
305 | 카드 값이 가장 비싼 게임을 최우선순위로 합니다
306 |
307 |
308 | Steam에 로그인해 주십시오
309 |
310 |
311 | 언어 변경 내역을 적용하려면 응용 프로그램을 다시 실행해 주십시오.
312 |
313 |
314 | Idle Master 릴리스 노트
315 |
316 |
317 | 저장(S)
318 |
319 |
320 | Idle Master가 귀하의 정보를 저장중입니다
321 |
322 |
323 | Steam에 로그인한 사용자의 이름을 보여줍니다
324 |
325 |
326 | 현재 세션
327 |
328 |
329 | 총합
330 |
331 |
332 | 업데이트U)
333 |
334 |
335 | 입력하신 정보를 사용할 수 없습니다. 다시 시도해 주십시오.
336 |
337 |
338 | 확인 중...
339 |
340 |
341 | 2시간까지는 따로 농사를 짓고, 이후부터는 동시에 농사를 짓습니다
342 |
343 |
344 |
--------------------------------------------------------------------------------
/Source/IdleMaster/IdleMaster.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {D26CAFBB-F684-4E53-BE38-60AAD2531893}
8 | WinExe
9 | Properties
10 | IdleMaster
11 | IdleMaster
12 | v4.5
13 | 512
14 |
15 | true
16 | ftp://ftp.steamidlemaster.com/idlemaster/install/
17 | true
18 | Web
19 | true
20 | Background
21 | 1
22 | Days
23 | true
24 | false
25 | false
26 | http://www.steamidlemaster.com/install/
27 | 0
28 | 1.4.1.%2a
29 | false
30 | true
31 | true
32 | true
33 |
34 |
35 | x86
36 | true
37 | full
38 | false
39 | bin\Debug\
40 | DEBUG;TRACE
41 | prompt
42 | 4
43 | false
44 | false
45 |
46 |
47 | AnyCPU
48 | pdbonly
49 | true
50 | bin\Release\
51 | TRACE
52 | prompt
53 | 4
54 | false
55 |
56 |
57 | logo1.ico
58 |
59 |
60 | 2E30D3385B38F3716634E7A4D3A3E0DB97BAA205
61 |
62 |
63 |
64 |
65 |
66 |
67 | true
68 |
69 |
70 | false
71 |
72 |
73 |
74 | False
75 | ..\packages\HtmlAgilityPack.1.4.9.5\lib\Net45\HtmlAgilityPack.dll
76 |
77 |
78 | True
79 |
80 |
81 | False
82 | ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll
83 |
84 |
85 | False
86 | ..\..\Steamworks.NET.dll
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 | Component
105 |
106 |
107 | Form
108 |
109 |
110 | frmAbout.cs
111 |
112 |
113 | Form
114 |
115 |
116 | frmBlacklist.cs
117 |
118 |
119 | Form
120 |
121 |
122 | frmChangelog.cs
123 |
124 |
125 | Form
126 |
127 |
128 | frmMain.cs
129 |
130 |
131 | Form
132 |
133 |
134 | frmBrowser.cs
135 |
136 |
137 | Form
138 |
139 |
140 | frmSettings.cs
141 |
142 |
143 | Form
144 |
145 |
146 | frmSettingsAdvanced.cs
147 |
148 |
149 | Form
150 |
151 |
152 | frmStatistics.cs
153 |
154 |
155 |
156 |
157 |
158 | True
159 | True
160 | Resources.resx
161 |
162 |
163 | True
164 | True
165 | strings.resx
166 |
167 |
168 |
169 |
170 | frmAbout.cs
171 |
172 |
173 | frmBlacklist.cs
174 |
175 |
176 | frmBrowser.cs
177 |
178 |
179 | frmChangelog.cs
180 |
181 |
182 | frmMain.cs
183 |
184 |
185 | frmSettings.cs
186 |
187 |
188 | frmSettingsAdvanced.cs
189 |
190 |
191 | frmStatistics.cs
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 | ResXFileCodeGenerator
218 | Designer
219 | Resources.Designer.cs
220 |
221 |
222 | ResXFileCodeGenerator
223 | strings.Designer.cs
224 |
225 |
226 |
227 |
228 |
229 | SettingsSingleFileGenerator
230 | Settings.Designer.cs
231 |
232 |
233 | True
234 | Settings.settings
235 | True
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 | False
260 | Microsoft .NET Framework 4.5 %28x86 and x64%29
261 | true
262 |
263 |
264 | False
265 | .NET Framework 3.5 SP1 Client Profile
266 | false
267 |
268 |
269 | False
270 | .NET Framework 3.5 SP1
271 | false
272 |
273 |
274 | False
275 | Windows Installer 4.5
276 | true
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
297 |
--------------------------------------------------------------------------------