Compare commits

..

95 Commits

Author SHA1 Message Date
ffa385d3c8 Update 'README.md' 2020-05-01 23:58:56 +03:00
a3a4cf267e Update 'README.md' 2020-05-01 23:57:10 +03:00
1c157c5dd1 Update 'README.md' 2020-05-01 23:54:22 +03:00
3e1d0b2fee Ex and API 2019-01-23 12:34:14 +03:00
0ed3830d9c todo 2019-01-23 12:18:34 +03:00
2b23479079 Move Paths Struct with Comments and Version bump 2019-01-23 12:16:27 +03:00
6a8019c1ac Remove Meesage box invoke from Tracker class 2019-01-23 11:58:44 +03:00
d0745d1bec Merge branch 'release/1.4.3' of Hesham/OWtrack into master 2018-12-22 10:14:19 +03:00
0632fe5b8f Merge branch 'Redo-SR' into release/1.4.3 2018-12-22 10:06:55 +03:00
bc3c84c984 Fixed #40 2018-12-22 10:04:45 +03:00
8d00ee0720 Paths to struct 2018-12-22 09:22:02 +03:00
5905ec0122 ProgramFiles class to struct 2018-12-22 09:18:39 +03:00
5caf393ea8 Merge branch 'release/1.4.3' of Hesham/OWtrack into master
Fixed:

    #39
    #33
    #11
    #37
2018-12-22 00:19:53 +03:00
44595496be Fixed #37 2018-12-22 00:17:23 +03:00
9176bf903c Merge branch 'session-class' into release/1.4.3 2018-12-21 23:30:45 +03:00
fbfd7740a2 Merge remote-tracking branch 'origin/session-class' into session-class 2018-12-21 23:30:23 +03:00
ec9def19c4 Fixed bug and organize #39 #33 #11 2018-12-21 23:29:28 +03:00
003668dea4 Fixed bug and organize 2018-12-21 23:23:59 +03:00
a28e09de89 Formatting White Space Clean 2018-12-21 22:00:33 +03:00
52fce485f8 Matches not saved in JSON Bug fixed 2018-12-21 22:00:11 +03:00
035d9979d1 Formatting (White space) 2018-12-21 21:57:56 +03:00
2d5771beb8 Start new session and other fixes 2018-12-21 18:44:48 +03:00
5d7640c0f0 Improved LoadSave Function 2018-12-21 18:17:47 +03:00
20d6844f2d follow up 2018-12-21 17:30:47 +03:00
7b3348a723 add match function
Adds a match to the last session in the sessions list
2018-12-21 17:30:16 +03:00
7f10e36e25 Total matches functions 2018-12-21 17:29:17 +03:00
470e2399f1 incomplete implementation of sessions class 2018-12-21 15:51:42 +03:00
4906361a56 Session class (Not Implemented) 2018-12-21 15:34:11 +03:00
0434fc1f40 clean 2018-12-21 12:56:15 +03:00
7ba2694c95 cleanup 2018-12-21 12:52:50 +03:00
5b4578fede Settings & Match classes
- Added settings class
- Added Match class
2018-12-21 11:13:48 +03:00
b23cc399b4 Docs update 2018-12-20 19:13:15 +03:00
98031dbe48 Rename function GetGamePath 2018-12-20 19:13:03 +03:00
aa4a08c525 Merge branch 'saveNotLoading' into release/1.4.3 2018-12-20 19:11:56 +03:00
e788aaeea3 Fixed Readline Bug (MultiLine) 2018-12-20 19:11:31 +03:00
86efb124c6 Merge branch 'master' into saveNotLoading 2018-12-20 19:03:39 +03:00
20ea1ae1df Version 2018-12-18 07:17:12 +03:00
ece2a122dd fixed notify icon bug 2018-12-13 22:32:33 +03:00
c959fc2d84 clean & Check paths string 2018-12-10 15:55:26 +03:00
5818104335 cleanup 2018-12-10 11:06:32 +03:00
008b889ccd resolve 2018-12-10 10:56:29 +03:00
264ca744f3 removed messagebox 2018-12-10 10:48:55 +03:00
632325fcd0 Merge branch 'Improve-search' of Hesham/OWtrack into release/1.4.3 2018-12-10 10:44:02 +03:00
1ea9bf531c search function rework 2018-12-10 10:42:14 +03:00
bbd855af11 Merge branch 'indent-json' of Hesham/OWtrack into master 2018-12-10 09:31:58 +03:00
9a05516dad corrected 2018-12-10 09:23:47 +03:00
b9f9dd7cff Link 2018-12-09 16:53:35 +03:00
f1831c78a8 Rough code. Not tested. 2018-12-09 16:45:22 +03:00
0bbdf3eade Encapsulate 2018-12-08 20:52:26 +03:00
4916456924 Version bump 2018-12-08 08:50:52 +03:00
c279b98621 Refactor search loops 2018-12-08 08:44:49 +03:00
5136773351 new structs 2018-12-08 08:41:46 +03:00
c2f9d4a782 Merge branch 'Badges' of Hesham/OWtrack into master 2018-11-25 04:42:32 +03:00
f1fa5f944d Update 'README.md' 2018-11-25 04:41:36 +03:00
8c9bce0a2a Version bump 2018-11-24 03:39:54 +03:00
5314344474 Merge branch 'release/1.4.2' of Hesham/OWtrack into master 2018-11-24 03:34:43 +03:00
6e7de80233 Fixed #29 2018-11-24 03:24:50 +03:00
fdfd400d0a dummy 2018-10-04 09:08:41 +03:00
885d235b33 clean 2018-10-04 09:03:54 +03:00
19c1c1cd5d Update 'README.md' 2018-09-27 11:40:40 +03:00
d19a680054 Merge branch 'release/1.4' of Hesham/OWtrack into master 2018-09-27 11:31:10 +03:00
05ab987a68 Version 2018-09-27 11:30:11 +03:00
7be0e816f1 New Save Parameters 2018-09-27 11:24:32 +03:00
216f9d1d54 Merge branch 'feature/settingsForm' into release/1.4 2018-09-27 11:06:45 +03:00
b02b0ee65b settings form done 2018-09-27 11:06:24 +03:00
713b43b3a7 refactor 2018-09-27 10:34:14 +03:00
b7e1bf3792 fixed bug 2018-09-27 10:29:30 +03:00
b0846bc10a Merge branch 'refactor/usingSaveManeger' into release/1.4 2018-09-27 10:19:06 +03:00
ccc2028b7f Paths class 2018-09-27 10:17:17 +03:00
a77e5684c3 Paths enum (to be built) 2018-09-26 15:58:17 +03:00
f3f2b71d68 Design Done 2018-09-23 16:31:18 +03:00
3500430109 use of save maneger 2018-09-23 16:08:46 +03:00
f4c56e2bc2 saveManeger 2018-09-23 15:25:51 +03:00
c410f078b0 Tracker Update 2018-09-23 15:14:11 +03:00
0817dbea29 Version 2018-09-22 13:00:31 +03:00
1fcb053d99 Merge branch 'Bug-#24' of Hesham/OWtrack into release/1.4
- #24
2018-09-22 12:55:43 +03:00
294a6e02fe MIT Licance 2018-09-22 12:54:00 +03:00
09e1ea0969 Fixed #24 2018-09-22 12:41:42 +03:00
0958d3d467 Merge branch 'release/1.4' of Hesham/OWtrack into master (1.4.0a2)
- #22 incapsulate data.json save dir
- Refactoring
- #16 hidden Form Bug
- #21 Negative win/loss values
2018-09-20 11:35:45 +03:00
fae9d2f50c nigative win/loss 2018-09-20 11:33:26 +03:00
500f9c5852 Merge branch 'saveManegerClass' into release/1.4 2018-09-20 11:26:04 +03:00
d2cc397c69 refactor, saveManeger 2018-09-20 11:23:47 +03:00
5ce37c59c0 arrange 2018-09-20 09:56:16 +03:00
424983da5f refactor 2018-09-20 09:53:49 +03:00
ce4caa4b80 Merge branch 'feature/splash' into release/1.4 2018-09-20 09:11:12 +03:00
23ff1420e6 csproj 2018-09-14 15:39:53 +03:00
83fad4d6ca saveManeger class & splash Form 2018-09-14 15:38:42 +03:00
7aeecd511d assets folder 2018-09-14 14:56:18 +03:00
a1ee527747 cleanup 2018-09-14 14:53:54 +03:00
ce876b7430 version 2018-09-08 15:20:29 +03:00
ee39a3c7a5 fix files csproj 2018-09-08 15:12:27 +03:00
6e5e159ca4 Merge branch 'feature/savesDir' into release/1.4 2018-09-08 14:53:33 +03:00
9ffdd871b6 savesPath 2018-09-08 14:53:05 +03:00
0632089d19 rename fix 2018-09-08 14:33:07 +03:00
5e30eebda7 MainForm Rename 2018-09-08 14:32:12 +03:00
15 changed files with 942 additions and 343 deletions

57
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,57 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (console)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/<insert-target-framework-here>/<insert-project-name-here>.dll",
"args": [],
"cwd": "${workspaceFolder}",
"console": "internalConsole",
"stopAtEntry": false,
"internalConsoleOptions": "openOnSessionStart"
},
{
"name": ".NET Core Launch (web)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/<insert-target-framework-here>/<insert-project-name-here>.dll",
"args": [],
"cwd": "${workspaceFolder}",
"stopAtEntry": false,
"internalConsoleOptions": "openOnSessionStart",
"launchBrowser": {
"enabled": true,
"args": "${auto-detect-url}",
"windows": {
"command": "cmd.exe",
"args": "/C start ${auto-detect-url}"
},
"osx": {
"command": "open"
},
"linux": {
"command": "xdg-open"
}
},
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"sourceFileMap": {
"/Views": "${workspaceFolder}/Views"
}
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach",
"processId": "${command:pickProcess}"
}
]
}

View File

@ -1,214 +0,0 @@
using System;
using System.Drawing;
using System.Windows.Forms;
using Newtonsoft.Json;
using System.IO;
namespace OWTrack
{
public partial class Form1 : Form
{
Tracker tr = new Tracker();
private const string IS_RUNNING = "Running";
private const string NOT_RUNNING = " Not running";
private bool SRonce = false;
public Form1()
{
InitializeComponent();
loadSave();
checkStatus();
update();
label4.Text = Program.Version.ToString();
Text = "OWTrack " + Program.Version.ToString();
}
private void checkStatus()
{
try
{
Time.Text = DateTime.Now.ToString("h:mm tt");
status.Text = NOT_RUNNING;
status.ForeColor = Color.Red;
if (tr.owRunning())
{
status.Text = IS_RUNNING;
status.ForeColor = Color.FromArgb(0, 192, 0);
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
private void loadSave()
{
if (saveExist())
{
tr.wins = savedTracker().wins;
tr.losses = savedTracker().losses;
tr.newSR = savedTracker().newSR;
tr.startSR = savedTracker().startSR;
tr.gamePath = savedTracker().gamePath;
update();
}
}
private bool saveExist()
{
try
{
if (File.Exists(Directory.GetCurrentDirectory() + "/data.json"))
{
using (StreamReader st = new StreamReader(Directory.GetCurrentDirectory() + "/data.json"))
{
string line = st.ReadLine();
if (line.Contains("Overwatch.exe"))
{
st.Close();
return true;
}
else
{
if (!tr.LoacteOW())
{
st.Close();
getGamePath();
}
return true;
}
}
}
else
{
if (!tr.LoacteOW())
{
getGamePath();
}
return false;
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
return false;
}
}
private void getGamePath()
{
openFileDialog1.Title = "Select Overwatch.exe";
openFileDialog1.DefaultExt = "exe";
openFileDialog1.Filter = "exe Files (*.exe)|*.exe|All files (*.*)|*.*";
openFileDialog1.CheckFileExists = true;
openFileDialog1.CheckPathExists = true;
DialogResult result = openFileDialog1.ShowDialog();
if (result == DialogResult.OK)
{
tr.gamePath = openFileDialog1.FileName;
}
else if (result == DialogResult.Cancel)
{
Close();
}
FindForm();
update();
}
private Tracker savedTracker()
{
try
{
return JsonConvert.DeserializeObject<Tracker>(File.ReadAllText(Directory.GetCurrentDirectory() + "/data.json"));
}
catch (Exception e)
{
MessageBox.Show(e.Message);
return null;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
checkStatus();
}
private void button1_Click(object sender, EventArgs e)
{
tr.addWin();
update();
}
private void button2_Click(object sender, EventArgs e)
{
tr.addLoss();
update();
}
private void reduceWinBut_Click(object sender, EventArgs e)
{
tr.reduceWin();
update();
}
private void reduceLossBut_Click(object sender, EventArgs e)
{
tr.rediceLoss();
update();
}
private void update()
{
Wins.Text = tr.GetWins().ToString();
Losses.Text = tr.GetLosses().ToString();
if (tr.newSR == 0)
{
if (tr.srDiff() < 1) { srLabel.Text = tr.startSR.ToString() + " - 0"; }
else srLabel.Text = tr.startSR.ToString() + " - " + tr.srDiff();
}
else srLabel.Text = tr.startSR.ToString() + " - " + tr.srDiff();
srTextBox.Text = null;
File.WriteAllText(Directory.GetCurrentDirectory() + "/data.json", JsonConvert.SerializeObject(tr));
}
private void clearBut_Click(object sender, EventArgs e)
{
tr.reset();
update();
}
private void srBut_Click(object sender, EventArgs e)
{
int sr = 0;
try
{
sr = Convert.ToInt32(srTextBox.Text);
}
catch (FormatException)
{
MessageBox.Show("Enter a Number!");
return;
}
catch (OverflowException ex)
{
MessageBox.Show(ex.Message);
return;
}
finally
{
if (!SRonce)
{
tr.startSR = sr;
SRonce = true;
}
else tr.newSR = sr;
}
update();
}
}
}

View File

@ -1,6 +1,6 @@
namespace OWTrack
{
partial class Form1
partial class MainForm
{
/// <summary>
/// Required designer variable.
@ -29,7 +29,7 @@
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.label1 = new System.Windows.Forms.Label();
this.status = new System.Windows.Forms.Label();
this.timer1 = new System.Windows.Forms.Timer(this.components);
@ -48,13 +48,19 @@
this.srBut = new System.Windows.Forms.Button();
this.srLabel = new System.Windows.Forms.Label();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.label5 = new System.Windows.Forms.Label();
this.SRInfoLabel = new System.Windows.Forms.Label();
this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
this.SettingsGroup = new System.Windows.Forms.GroupBox();
this.ChngOWPathBtn = new System.Windows.Forms.Button();
this.ExeTrackCheckBx = new System.Windows.Forms.CheckBox();
this.SRCheckBx = new System.Windows.Forms.CheckBox();
this.SettingsGroup.SuspendLayout();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 36);
this.label1.Location = new System.Drawing.Point(17, 36);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(75, 13);
this.label1.TabIndex = 0;
@ -79,7 +85,7 @@
// Time
//
this.Time.AutoSize = true;
this.Time.Location = new System.Drawing.Point(15, 13);
this.Time.Location = new System.Drawing.Point(20, 13);
this.Time.Name = "Time";
this.Time.Size = new System.Drawing.Size(35, 13);
this.Time.TabIndex = 2;
@ -88,62 +94,62 @@
// Wins
//
this.Wins.AutoSize = true;
this.Wins.Font = new System.Drawing.Font("Miriam Mono CLM", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(177)));
this.Wins.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(177)));
this.Wins.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(0)))));
this.Wins.Location = new System.Drawing.Point(107, 78);
this.Wins.Location = new System.Drawing.Point(162, 78);
this.Wins.Name = "Wins";
this.Wins.Size = new System.Drawing.Size(40, 42);
this.Wins.Size = new System.Drawing.Size(39, 42);
this.Wins.TabIndex = 3;
this.Wins.Text = "0";
//
// Losses
//
this.Losses.AutoSize = true;
this.Losses.Font = new System.Drawing.Font("Miriam Mono CLM", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(177)));
this.Losses.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(177)));
this.Losses.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
this.Losses.Location = new System.Drawing.Point(176, 78);
this.Losses.Location = new System.Drawing.Point(231, 78);
this.Losses.Name = "Losses";
this.Losses.Size = new System.Drawing.Size(40, 42);
this.Losses.Size = new System.Drawing.Size(39, 42);
this.Losses.TabIndex = 4;
this.Losses.Text = "0";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Font = new System.Drawing.Font("Miriam Mono CLM", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(177)));
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(177)));
this.label3.ForeColor = System.Drawing.Color.Black;
this.label3.Location = new System.Drawing.Point(151, 75);
this.label3.Location = new System.Drawing.Point(206, 75);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(40, 42);
this.label3.Size = new System.Drawing.Size(28, 42);
this.label3.TabIndex = 5;
this.label3.Text = ":";
//
// WinBut
//
this.WinBut.Location = new System.Drawing.Point(106, 136);
this.WinBut.Location = new System.Drawing.Point(161, 136);
this.WinBut.Name = "WinBut";
this.WinBut.Size = new System.Drawing.Size(52, 26);
this.WinBut.TabIndex = 6;
this.WinBut.Text = "win";
this.WinBut.UseVisualStyleBackColor = true;
this.WinBut.Click += new System.EventHandler(this.button1_Click);
this.WinBut.Click += new System.EventHandler(this.WinBtn_Click);
//
// button2
//
this.button2.Location = new System.Drawing.Point(164, 136);
this.button2.Location = new System.Drawing.Point(219, 136);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(52, 26);
this.button2.TabIndex = 6;
this.button2.Text = "loss";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
this.button2.Click += new System.EventHandler(this.LossBtn_Click);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label2.ForeColor = System.Drawing.Color.Black;
this.label2.Location = new System.Drawing.Point(142, 76);
this.label2.Location = new System.Drawing.Point(197, 76);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(31, 42);
this.label2.TabIndex = 5;
@ -161,7 +167,7 @@
//
// reduceLossBut
//
this.reduceLossBut.Location = new System.Drawing.Point(222, 137);
this.reduceLossBut.Location = new System.Drawing.Point(277, 137);
this.reduceLossBut.Name = "reduceLossBut";
this.reduceLossBut.Size = new System.Drawing.Size(20, 24);
this.reduceLossBut.TabIndex = 8;
@ -171,7 +177,7 @@
//
// reduceWinBut
//
this.reduceWinBut.Location = new System.Drawing.Point(82, 137);
this.reduceWinBut.Location = new System.Drawing.Point(137, 137);
this.reduceWinBut.Name = "reduceWinBut";
this.reduceWinBut.Size = new System.Drawing.Size(20, 24);
this.reduceWinBut.TabIndex = 9;
@ -181,17 +187,17 @@
//
// clearBut
//
this.clearBut.Location = new System.Drawing.Point(271, 200);
this.clearBut.Location = new System.Drawing.Point(19, 103);
this.clearBut.Name = "clearBut";
this.clearBut.Size = new System.Drawing.Size(49, 25);
this.clearBut.Size = new System.Drawing.Size(75, 25);
this.clearBut.TabIndex = 10;
this.clearBut.Text = "clear";
this.clearBut.Text = "Clear stats";
this.clearBut.UseVisualStyleBackColor = true;
this.clearBut.Click += new System.EventHandler(this.clearBut_Click);
//
// srTextBox
//
this.srTextBox.Location = new System.Drawing.Point(114, 168);
this.srTextBox.Location = new System.Drawing.Point(169, 168);
this.srTextBox.Name = "srTextBox";
this.srTextBox.Size = new System.Drawing.Size(100, 20);
this.srTextBox.TabIndex = 11;
@ -199,7 +205,7 @@
//
// srBut
//
this.srBut.Location = new System.Drawing.Point(129, 194);
this.srBut.Location = new System.Drawing.Point(184, 194);
this.srBut.Name = "srBut";
this.srBut.Size = new System.Drawing.Size(75, 23);
this.srBut.TabIndex = 12;
@ -210,11 +216,11 @@
// srLabel
//
this.srLabel.AutoSize = true;
this.srLabel.Font = new System.Drawing.Font("Noto Mono", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.srLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.srLabel.ForeColor = System.Drawing.Color.DarkOrchid;
this.srLabel.Location = new System.Drawing.Point(189, 36);
this.srLabel.Name = "srLabel";
this.srLabel.Size = new System.Drawing.Size(65, 23);
this.srLabel.Size = new System.Drawing.Size(46, 24);
this.srLabel.TabIndex = 13;
this.srLabel.Text = "0 - 0";
//
@ -224,28 +230,83 @@
this.openFileDialog1.InitialDirectory = "C:\\";
this.openFileDialog1.RestoreDirectory = true;
//
// label5
// SRInfoLabel
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(190, 13);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(87, 13);
this.label5.TabIndex = 14;
this.label5.Text = "Start - Gain/Loss";
this.SRInfoLabel.AutoSize = true;
this.SRInfoLabel.Location = new System.Drawing.Point(180, 13);
this.SRInfoLabel.Name = "SRInfoLabel";
this.SRInfoLabel.Size = new System.Drawing.Size(87, 13);
this.SRInfoLabel.TabIndex = 14;
this.SRInfoLabel.Text = "Start - Gain/Loss";
//
// Form1
// notifyIcon1
//
this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
this.notifyIcon1.Text = "OWtrack";
this.notifyIcon1.Visible = true;
//
// SettingsGroup
//
this.SettingsGroup.Controls.Add(this.ChngOWPathBtn);
this.SettingsGroup.Controls.Add(this.ExeTrackCheckBx);
this.SettingsGroup.Controls.Add(this.SRCheckBx);
this.SettingsGroup.Controls.Add(this.clearBut);
this.SettingsGroup.Location = new System.Drawing.Point(12, 62);
this.SettingsGroup.Name = "SettingsGroup";
this.SettingsGroup.Size = new System.Drawing.Size(116, 143);
this.SettingsGroup.TabIndex = 15;
this.SettingsGroup.TabStop = false;
this.SettingsGroup.Text = "Settings";
//
// ChngOWPathBtn
//
this.ChngOWPathBtn.Location = new System.Drawing.Point(19, 74);
this.ChngOWPathBtn.Name = "ChngOWPathBtn";
this.ChngOWPathBtn.Size = new System.Drawing.Size(75, 23);
this.ChngOWPathBtn.TabIndex = 1;
this.ChngOWPathBtn.Text = "OW Path";
this.ChngOWPathBtn.UseVisualStyleBackColor = true;
this.ChngOWPathBtn.Click += new System.EventHandler(this.ChngOWPathBtn_Click);
//
// ExeTrackCheckBx
//
this.ExeTrackCheckBx.AutoSize = true;
this.ExeTrackCheckBx.Checked = true;
this.ExeTrackCheckBx.CheckState = System.Windows.Forms.CheckState.Checked;
this.ExeTrackCheckBx.Location = new System.Drawing.Point(11, 44);
this.ExeTrackCheckBx.Name = "ExeTrackCheckBx";
this.ExeTrackCheckBx.Size = new System.Drawing.Size(90, 17);
this.ExeTrackCheckBx.TabIndex = 0;
this.ExeTrackCheckBx.Text = "OW Tracking";
this.ExeTrackCheckBx.UseVisualStyleBackColor = true;
this.ExeTrackCheckBx.CheckedChanged += new System.EventHandler(this.ExeTrackCheckBx_CheckedChanged);
//
// SRCheckBx
//
this.SRCheckBx.AutoSize = true;
this.SRCheckBx.Checked = true;
this.SRCheckBx.CheckState = System.Windows.Forms.CheckState.Checked;
this.SRCheckBx.Location = new System.Drawing.Point(11, 19);
this.SRCheckBx.Name = "SRCheckBx";
this.SRCheckBx.Size = new System.Drawing.Size(86, 17);
this.SRCheckBx.TabIndex = 0;
this.SRCheckBx.Text = "SR Tracking";
this.SRCheckBx.UseVisualStyleBackColor = true;
this.SRCheckBx.CheckedChanged += new System.EventHandler(this.SRCheckBx_CheckedChanged);
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(332, 237);
this.Controls.Add(this.label5);
this.ClientSize = new System.Drawing.Size(342, 237);
this.Controls.Add(this.SettingsGroup);
this.Controls.Add(this.SRInfoLabel);
this.Controls.Add(this.srLabel);
this.Controls.Add(this.srBut);
this.Controls.Add(this.srTextBox);
this.Controls.Add(this.Time);
this.Controls.Add(this.status);
this.Controls.Add(this.label1);
this.Controls.Add(this.clearBut);
this.Controls.Add(this.reduceWinBut);
this.Controls.Add(this.reduceLossBut);
this.Controls.Add(this.label4);
@ -258,9 +319,12 @@
this.DoubleBuffered = true;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "Form1";
this.Name = "MainForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "OWTrack";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
this.SettingsGroup.ResumeLayout(false);
this.SettingsGroup.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
@ -286,7 +350,12 @@
private System.Windows.Forms.Button srBut;
private System.Windows.Forms.Label srLabel;
private System.Windows.Forms.OpenFileDialog openFileDialog1;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label SRInfoLabel;
private System.Windows.Forms.NotifyIcon notifyIcon1;
private System.Windows.Forms.GroupBox SettingsGroup;
private System.Windows.Forms.CheckBox ExeTrackCheckBx;
private System.Windows.Forms.CheckBox SRCheckBx;
private System.Windows.Forms.Button ChngOWPathBtn;
}
}

269
OWTrack/MainForm.cs Normal file
View File

@ -0,0 +1,269 @@
/*Copyright(c) 2018 Hesham Systems LLC.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.*/
using System;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
namespace OWTrack
{
public partial class MainForm : Form
{
Tracker tr;
private const string IS_RUNNING = "Running";
private const string NOT_RUNNING = " Not running";
private bool SRonce = false;
private string Version = Program.Version.ToString();
public MainForm()
{
InitializeComponent();
tr = new Tracker();
loadSave();
checkStatus();
update();
label4.Text = Version;
Text = "OWTrack " + Version;
}
private void checkStatus()
{
Time.Text = DateTime.Now.ToString("h:mm tt");
try
{
if (tr.owRunning())
{
status.Text = IS_RUNNING;
status.ForeColor = Color.FromArgb(0, 192, 0);
}
else
{
if (tr.settings.TrackOW)
{
status.Text = NOT_RUNNING;
status.ForeColor = Color.Black;
}
else status.Text = "";
}
}
catch (Exception e)
{
status.Text = e.Message;
status.ForeColor = Color.Red;
}
}
//Move to saveManeger.cs ?
private void loadSave()
{
try
{
Directory.CreateDirectory("saves");
}
catch (Exception e)
{
MessageBox.Show("Can not create save directory.\n" + e.Message);
}
if (saveManeger.saveExist())
{
try
{
try
{
tr = saveManeger.GetSavedTracker();
}
catch (Exception)
{
MessageBox.Show("Could not load Save.\n" +
"Starting new save.");
tr = new Tracker();
}
if (tr.startSR > 0) SRonce = true;
if (tr.settings.GamePath == "" || tr.settings.GamePath == null)
{
if (!tr.LoacteOW())
{
tr.settings.GamePath = askForGamePath();
}
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
else if (!tr.LoacteOW())
{
tr.settings.GamePath = askForGamePath();
}
ExeTrackCheckBx.Checked = tr.settings.TrackOW;
SRCheckBx.Checked = tr.settings.TrackSR;
tr.StartNewSeission();
}
private string askForGamePath()
{
openFileDialog1.Title = "Select Overwatch.exe";
openFileDialog1.DefaultExt = "exe";
openFileDialog1.Filter = "exe Files (*.exe)|*.exe|All files (*.*)|*.*";
DialogResult result = openFileDialog1.ShowDialog();
if (result == DialogResult.OK)
{
MessageBox.Show("Saved Overwatch.exe location.\nPress Clear to rest");
return openFileDialog1.FileName;
}
else return null;
}
private void SRSystem(bool state)
{
srBut.Enabled = state;
srTextBox.Enabled = state;
tr.settings.TrackSR = state;
}
private void OWTrackFunc(bool state) => tr.settings.TrackOW = state;
private void update()
{
Wins.Text = tr.GetWins().ToString();
Losses.Text = tr.GetLosses().ToString();
if (tr.newSR == 0)
{
if (tr.srDiff() < 1) { srLabel.Text = tr.startSR.ToString() + " - 0"; }
else srLabel.Text = tr.startSR.ToString() + " - " + tr.srDiff();
}
else srLabel.Text = tr.startSR.ToString() + " - " + tr.srDiff();
srTextBox.Text = null;
saveManeger.SaveJSON(tr);
}
private void AddMatch()
{
Match match = new Match
{
StartSR = tr.startSR,
newSR = tr.newSR,
ChangeInSR = tr.srDiff(),
dateTime = DateTime.Now.Date
};
tr.GetCurrentSession().AddMatch(match);
}
#region Events
private void timer1_Tick(object sender, EventArgs e) => checkStatus();
private void WinBtn_Click(object sender, EventArgs e)
{
tr.addWin();
update();
}
private void LossBtn_Click(object sender, EventArgs e)
{
tr.addLoss();
update();
}
private void reduceWinBut_Click(object sender, EventArgs e)
{
if (tr.wins > 0)
{
tr.reduceWin();
update();
}
}
private void reduceLossBut_Click(object sender, EventArgs e)
{
if (tr.losses > 0)
{
tr.rediceLoss();
update();
}
}
private void clearBut_Click(object sender, EventArgs e)
{
tr.reset();
update();
}
private void srBut_Click(object sender, EventArgs e)
{
int sr = 0;
try
{
sr = Convert.ToInt32(srTextBox.Text);
}
catch (FormatException)
{
MessageBox.Show("Enter a Number!");
return;
}
catch (OverflowException ex)
{
MessageBox.Show(ex.Message);
return;
}
finally
{
//if (!SRonce)
//{
// tr.startSR = sr;
// SRonce = true;
//}
//else tr.newSR = sr;
if (tr.GetCurrentSession().IsNewSession())
tr.startSR = sr;
else
tr.newSR = sr;
}
AddMatch();
update();
}
private void SRCheckBx_CheckedChanged(object sender, EventArgs e)
{
SRSystem(SRCheckBx.Checked);
update();
}
private void ExeTrackCheckBx_CheckedChanged(object sender, EventArgs e)
{
OWTrackFunc(ExeTrackCheckBx.Checked);
update();
}
private void ChngOWPathBtn_Click(object sender, EventArgs e)
{
tr.settings.GamePath = askForGamePath();
update();
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
notifyIcon1.Icon = null;
notifyIcon1.Dispose();
}
#endregion
}
}

View File

@ -123,7 +123,146 @@
<metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>104, 17</value>
</metadata>
<metadata name="notifyIcon1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>244, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="notifyIcon1.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAMAICAAAAEAIACoEAAANgAAABgYAAABACAAiAkAAN4QAAAQEAAAAQAgAGgEAABmGgAAKAAAACAA
AABAAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA////zP///8z////M////zP///8z/AAAA/////////////////wAA
AP///8z////M////zP///8z////M////zP///8z/AAAA////zP///8z////M/wAAAP8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD////M////zP8AAAD/AAAA////
/////////////wAAAP///8z////M////zP///8z////M////zP8AAAD////M////zP///8z/AAAA/wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ZpnM/2aZzP8AAAD/AAAA/zPM
//8zzP//AAAA/////////////////wAAAP///8z////M////zP///8z////M////zP///8z////M////
zP8AAAD/AAAAAAAAAABERET/AAAA/wAAAP9ERET/AAAAAAAAAAAAAAAAAAAA/2aZzP9mmcz/ZpnM/2aZ
zP9mmcz/AAAA/zPM//8zzP//AAAA/////////////////wAAAP8AAAD/AAAA////zP///8z////M////
zP///8z////M/wAAAP8AAAAAAAAA/5lm//8AM5n/ADOZ/wAzmf8AAAD/AAAAAAAAAAAAAAAAAAAA/wAA
AP8AAAD/AAAA/2aZzP9mmcz/AAAA/zPM//8zzP//AAAA/////////////////wAAAP///8z////M////
zP///8z////M////zP///8z/AAAA/0RERP8AM5n/mWb//wAAAP8AAAD/mWb//wAzmf9ERET/AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA/2aZzP9mmcz/AAAA/zPM//8zzP//AAAA/////////////////wAA
AP///8z////M////zP///8z/AAAA/wAAAP8AAAAAAAAA/5lm//8AAAD/AAAAAAAAAAAAAAD/ADOZ/wAA
AP8AAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP//////AAAA/2aZzP9mmcz/AAAA/zPM//8zzP//AAAA////
/////////////wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAD/mZn//wAAAP8AAAAAAAAAAAAA
AP8AM5n/AAAA/wAAAAAAAAAAAAAA/zMz//8zM///MzP//wAAAP8AAAD/AAAA/2aZzP8AAAD/M8z//zPM
//8zzP//AAAA//////8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERERP+Zmf//mZn//wAA
AP8AAAD/ADOZ/wAzmf9ERET/AAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/MzP//zMz//8AAAD/ZpnM/wAA
AP8zzP//M8z//zPM//8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AP/MzP//mZn//5lm//+ZZv//AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAA
AP9mmcz/AAAA/zPM//8zzP//M8z//wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAERERP8AAAD/AAAA/0RERP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA////
////////AAAA/2aZzP8AAAD/M8z//zPM//8zzP//AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAAAAAAD/AAAA////
////////AAAA/wAAAP9mmcz/ZpnM/wAAAP8AAAD/M8z//zPM//8AAAD/AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////AAAA////
////////AAAA/wAAAP8AAAD/ZpnM/2aZzP8AAAD/M8z//zPM//8AAAD/M8z//wAAAP8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8AAAD/ZpnM/2aZzP9mmcz/AAAA/zPM//8AAAD/M8z//wAAAP8zzP//M8z//wAA
AP8AAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9mmcz/ZpnM/2aZ
zP9mmcz/ZpnM/2aZzP9mmcz/ZpnM/2aZzP9mmcz/AAAA/wAAAP8zzP//M8z//wAAAP8AAAD/M8z//zPM
//8AAAD/AAAA/wAAAP8AAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AP9mmcz/ZpnM/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8zzP//M8z//zPM//8zzP//M8z//zPM
//8AAAD/AAAA/zPM//8AAAD/AAAA/wAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAP8AAAD/M8z//zPM//8zzP//M8z//zPM//8zzP//M8z//zPM//8zzP//M8z//zPM
//8AAAD/M8z//wAAAP8zzP//AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAD/M8z//zPM//8zzP//M8z//wAAAP8AAAD/AAAA/wAAAP9VVVX/M8z//zPM
//8zzP//M8z//zPM//8AAAD/AAAA/zPM//8zzP//M8z//wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8zzP//M8z//zPM//8AAAD////M////zP///8z////M/wAA
AP8zzP//M8z//zPM//8zzP//M8z//zPM//8zzP//M8z//zPM//8zzP//M8z//wAAAP8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAA////zP///8z/AAAA////
zP///////////wAAAP8zzP//M8z//zPM//8zzP//M8z//zPM//8zzP//M8z//zPM//8zzP//AAAA/wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7u7v/AAAA////
zP//////////////////////AAAA/zPM//8zzP//M8z//zPM//8zzP//M8z//zPM//8zzP//M8z//zPM
//8zzP//AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAD///////////////////////////8AAAD/M8z//zPM//8zzP//M8z//zPM//8zzP//M8z//zPM
//8zzP//M8z//zPM//8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAALu7u/8AAAD/////////////////AAAA/zPM//8zzP//M8z//zPM//8zzP//M8z//zPM
//8zzP//M8z//zPM//8zzP//M8z//wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAALu7u/8AAAD/VVVV/wAAAP8zzP//M8z//zPM//8zzP//M8z//zPM
//8zzP//M8z//zPM//8zzP//M8z//zPM//8zzP//AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/M8z//zPM//8zzP//M8z//zPM
//8zzP//M8z//zPM//8zzP//M8z//zPM//8zzP//M8z//wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/M8z//zPM
//8zzP//M8z//zPM//8zzP//M8z//zPM//8zzP//M8z//zPM//8zzP//AAAA/wAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
AADAAwAA8AMAAPADAAD8BwAA/gcAAP8HAAA=
</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAMAICAAAAEAIACoEAAANgAAABgYAAABACAAiAkAAN4QAAAQEAAAAQAgAGgEAABmGgAAKAAAACAA

View File

@ -13,7 +13,7 @@
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<Install>false</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
@ -87,11 +87,11 @@
<TargetZone>LocalIntranet</TargetZone>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>Jeanette-Foshee-Simpsons-11-Rollover-Homer-donut-1.ico</ApplicationIcon>
<ApplicationIcon>assets\Jeanette-Foshee-Simpsons-11-Rollover-Homer-donut-1.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
@ -106,17 +106,19 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.cs">
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="Paths.cs" />
<Compile Include="saveManeger.cs" />
<Compile Include="Tracker.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
@ -156,7 +158,7 @@
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Content Include="Jeanette-Foshee-Simpsons-11-Rollover-Homer-donut-1.ico" />
<Content Include="assets\Jeanette-Foshee-Simpsons-11-Rollover-Homer-donut-1.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

67
OWTrack/Paths.cs Normal file
View File

@ -0,0 +1,67 @@
/*Copyright(c) 2018 Hesham Systems LLC.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.*/
using System.IO;
namespace OWTrack
{
public struct Paths
{
/// <summary>
/// Current Application directory.
/// </summary>
private static string curDir = Directory.GetCurrentDirectory();
/// <summary>
/// Saves Folder relative path. \n Relative to Application Directory.
/// </summary>
private static string SAVES = curDir + "/saves/data.json";
/// <summary>
/// Saves Folder relative path. \n Relative to Application Directory.
/// </summary>
private static string JSON = curDir + "/data.json";
public static string GetJSON() { return JSON; }//TODO: Unused var
/// <summary>
/// Get Saves file Path.
/// </summary>
/// <returns></returns>
public static string GetSaves() { return SAVES; }
/// <summary>
/// Get Current Application directory.
/// </summary>
/// <returns></returns>
public static string GetCurrentDir() { return curDir; }
/// <summary>
/// "Program Files" standered constant paths.
/// </summary>
public struct ProgramFiles
{
public const string C = "C:\\Program Files";
public const string D = "D:\\Program Files";
public const string E = "E:\\Program Files";
public const string F = "F:\\Program Files";
}
}
}

View File

@ -1,8 +1,4 @@
using System;
using System.Collections.Generic;
using System.Deployment.Application;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Deployment.Application;
@ -19,12 +15,8 @@ namespace OWTrack
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
Application.Run(new MainForm());
}
public static string Version = "1.3.0";
//public static string Version = Application.ProductVersion;
//public static Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
public static string Version { get; } = "1.4.4.a1";
}
}

View File

@ -7,7 +7,7 @@ using System.Runtime.InteropServices;
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("OWTrack")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyDescription("Shitty SR Tracker")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Hesham Systems LLC")]
[assembly: AssemblyProduct("OWTrack")]
@ -35,8 +35,8 @@ using System.Runtime.InteropServices;
// [assembly: AssemblyVersion("1.0.*")]
//[assembly: AssemblyVersion("1.0.0.0")]
//[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyVersion("2.0.*")]
[assembly: AssemblyFileVersion("1.2.0.0")]
[assembly: AssemblyVersion("1.3.0.3")]
[assembly: AssemblyFileVersion("1.3.0.3")]
[assembly: NeutralResourcesLanguage("")]

View File

@ -1,105 +1,220 @@
using System;
/*Copyright(c) 2018 Hesham Systems LLC.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.*/
using System;
using System.Diagnostics;
using System.Linq;
using System.IO;
using System.Windows.Forms;
using System.Collections.Generic;
namespace OWTrack
{
class Tracker
{
public int wins, losses, startSR, newSR = 0;
public string gamePath;
//TODO: Encapsulate
public int wins, losses, startSR, newSR, totalMatches = 0;
public void Track() { }
public void reset() { wins = 0; losses = 0; startSR = 0; newSR = 0; }
public void addWin() { wins++; }
public void addLoss() { losses++; }
public void reduceWin() { wins--; }
public void rediceLoss() { losses--; }
public void addWin() => wins++;
public void addLoss() => losses++;
public void reduceWin() => wins--;
public void rediceLoss() => losses--;
public int GetWins() { return wins; }
public int GetLosses() { return losses; }
public void setNewSR(int SR) { newSR = SR; }
public int srDiff() { return newSR - startSR; }
public Settings settings = new Settings();
public List<Session> sessions = new List<Session>();
public int GetTotalMatches()
{
int number = 0;
foreach (var session in sessions)
{
number += session.TotalMatches;
}
return number;
}
public int GetCurrentSessionMatches()
{
return sessions.Last().TotalMatches;
}
public void reset()
{
wins = 0;
losses = 0;
startSR = 0;
newSR = 0;
settings.Reset();
sessions.Clear();
StartNewSeission();
}
public void StartNewSeission()
{
Session ses = new Session(startSR);
sessions.Add(ses);
}
public Session GetCurrentSession()
{
return sessions.Last();
}
public bool owRunning()
{
try
if (settings.TrackOW)
{
bool isRunning = Process.GetProcessesByName("Overwatch")
.FirstOrDefault(p => p.MainModule.FileName.StartsWith(gamePath)) != default(Process);
return isRunning;
}
catch (Exception e)
{
Exception ex = new Exception("Error in tracking Overwatch.exe");
throw ex;
try
{
bool isRunning = Process.GetProcessesByName("Overwatch")
.FirstOrDefault(p => p.MainModule.FileName.StartsWith(settings.GamePath)) != default(Process);
return isRunning;
}
catch (Exception e)
{
throw e;
}
}
else return false;
}
/// <summary>
/// Not Working!
/// </summary>
/// <returns></returns>
public bool LoacteOW()
public bool LoacteOW()
{
try
try
{
DriveInfo[] driveInfo = DriveInfo.GetDrives();
List<string> paths = new List<string>();
string[] filesC = null;
string[] filesD = null;
if (ProgramFilesExist('c')) { filesC = Directory.GetFiles("C:\\Program Files", "Overwatch.exe", SearchOption.AllDirectories); }
if (ProgramFilesExist('d')) { filesD = Directory.GetFiles("D:\\Program Files", "Overwatch.exe", SearchOption.AllDirectories); }
if (filesC != null)
{
for (int i = 0; i < filesC.Length; i++)
{
if (filesC[i].Contains("Overwatch.exe"))
{
paths.Add(filesC[i]);
}
}
}
if (filesD != null)
{
for (int i = 0; i < filesD.Length - 1; i++)
{
if (filesD[i].Contains("Overwatch.exe"))
{
paths.Add(filesD[i]);
}
}
}
//Searches all drives (too long)
//foreach (var drive in driveInfo)
//{
//paths.AddRange(GetFiles(drive.ToString(),"Overwatch.exe"));
//}
paths.AddRange(GetFiles(Paths.ProgramFiles.C, "Overwatch.exe"));
paths.AddRange(GetFiles(Paths.ProgramFiles.D, "Overwatch.exe"));
if (paths.Count > 1)
{
//TODO: ask about correct path
//New Form??
return true;
}
else if (paths.Count == 1)
else if (paths.Count == 1
&& paths[0].Contains("Overwatch.exe"))
{
gamePath = paths[0];
settings.GamePath = paths[0];
return true;
}
else return false;
}
catch (Exception e)
catch (Exception)
{
MessageBox.Show(e.Message);
return false;
}
}
}
private bool ProgramFilesExist(char drive)
public static IEnumerable<string> GetFiles(string root, string searchPattern)
{
return Directory.Exists(drive+":\\Program Files");
Stack<string> pending = new Stack<string>();
pending.Push(root);
while (pending.Count != 0)
{
var path = pending.Pop();
string[] next = null;
try
{
next = Directory.GetFiles(path, searchPattern);
}
catch { }
if (next != null && next.Length != 0)
foreach (var file in next) yield return file;
try
{
next = Directory.GetDirectories(path);
foreach (var subdir in next) pending.Push(subdir);
}
catch { }
}
}
}
class Settings
{
public bool TrackSR, TrackOW = true;
public string GamePath = "";
/// <summary>
/// Reset All values to defult
/// </summary>
public void Reset()
{
TrackOW = true;
TrackSR = true;
GamePath = "";
}
}
class Session
{
public int TotalMatches;
public int SkillChange;
public int StartSR;
public DateTime date;
public List<Match> Matches = new List<Match>();
/// <summary>
/// Start a new session with a starting Skill Rating
///</summary>
public Session(int StartSR)
{
this.StartSR = StartSR;
date = DateTime.Now.Date;
TotalMatches = 0;
}
public bool IsNewSession()
{
if (Matches.Count == 0) return true;
else return false;
}
public Match GetLastMatch()
{
return Matches.Last();
}
public void AddMatch(Match match)
{
this.Matches.Add(match);
this.TotalMatches = Matches.Count();
}
}
class Match
{
public Match() { }
public DateTime dateTime { get; set; }
public int StartSR;
public int LastMatchSR;
public int newSR;
public int ChangeInSR;
}
}

View File

@ -20,7 +20,7 @@
</requestedPrivileges>
<applicationRequestMinimum>
<defaultAssemblyRequest permissionSetReference="Custom" />
<PermissionSet ID="Custom" SameSite="site" Unrestricted="true" />
<PermissionSet ID="Custom" SameSite="site" />
</applicationRequestMinimum>
</security>
</trustInfo>

View File

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net461" />
<package id="Newtonsoft.Json" version="12.0.1" targetFramework="net461" />
</packages>

103
OWTrack/saveManeger.cs Normal file
View File

@ -0,0 +1,103 @@
/*Copyright(c) 2018 Hesham Systems LLC.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.*/
using Newtonsoft.Json;
using System;
using System.IO;
namespace OWTrack
{
class saveManeger
{
/// <summary>
/// Deserialize saved tracker instance.
/// </summary>
/// <returns>Tracker Object</returns>
public static Tracker GetSavedTracker()
{
try
{
return JsonConvert.DeserializeObject<Tracker>(File.ReadAllText(Paths.GetSaves()));
}
catch (Exception e)
{
throw e;
}
}
/// <summary>
/// Deserialize saved tracker instance from a Custom path
/// </summary>
/// <param name="customPath"></param>
/// <returns></returns>
public static Tracker GetSavedTracker(string customPath)
{
try
{
return JsonConvert.DeserializeObject<Tracker>(File.ReadAllText(customPath));
}
catch (Exception e)
{
throw e;
}
}
/// <summary>
/// Deserializes and Saves the Tracker Object.
/// </summary>
/// <param name="tracker"></param>
/// <returns>Boolean value that represents the success or failuer</returns>
public static bool SaveJSON(Tracker tracker)
{
try
{
File.WriteAllText(Paths.GetSaves(), JsonConvert.SerializeObject(tracker, Formatting.Indented));
return true;
}
catch (Exception)
{
return false;
}
}
/// <summary>
/// Check if a 'data.json' exists in the default location '../saves/data.json'.
/// </summary>
/// <returns>Boolean Value</returns>
public static bool saveExist()
{
try
{
if (File.Exists(Paths.GetSaves()))
{
return true;
}
else
{
return false;
}
}
catch (Exception e)
{
throw e;
}
}
}
}

View File

@ -1,4 +1,4 @@
# OWtrack ![CI status](https://img.shields.io/badge/build-passing-brightgreen.svg) [![GitHub](https://img.shields.io/badge/Version-1.3.0-blue.svg)] (https://heshamgit.ddns.net/Hesham/OWtrack/releases) [![GitHub](https://img.shields.io/github/license/mashape/apistatus.svg)](https://opensource.org/licenses/MIT)
# OWtrack ![CI status](https://img.shields.io/badge/build-passing-brightgreen.svg) [![GitHub](https://img.shields.io/badge/Version-1.4.3-blue.svg)](https://apollo-server.ddns.net/gitea/Hesham/OWtrack/releases) [![GitHub](https://img.shields.io/github/license/mashape/apistatus.svg)](https://opensource.org/licenses/MIT)
Track your Overwatch preformance with a shi#ty UI