Compare commits

..

No commits in common. "master" and "1.3.0" have entirely different histories.

15 changed files with 347 additions and 946 deletions

57
.vscode/launch.json vendored
View File

@ -1,57 +0,0 @@
{
// 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,6 +1,6 @@
namespace OWTrack
{
partial class MainForm
partial class Form1
{
/// <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(MainForm));
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.label1 = new System.Windows.Forms.Label();
this.status = new System.Windows.Forms.Label();
this.timer1 = new System.Windows.Forms.Timer(this.components);
@ -48,19 +48,13 @@
this.srBut = new System.Windows.Forms.Button();
this.srLabel = new System.Windows.Forms.Label();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
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.label5 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(17, 36);
this.label1.Location = new System.Drawing.Point(12, 36);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(75, 13);
this.label1.TabIndex = 0;
@ -85,7 +79,7 @@
// Time
//
this.Time.AutoSize = true;
this.Time.Location = new System.Drawing.Point(20, 13);
this.Time.Location = new System.Drawing.Point(15, 13);
this.Time.Name = "Time";
this.Time.Size = new System.Drawing.Size(35, 13);
this.Time.TabIndex = 2;
@ -94,62 +88,62 @@
// Wins
//
this.Wins.AutoSize = true;
this.Wins.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(177)));
this.Wins.Font = new System.Drawing.Font("Miriam Mono CLM", 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(162, 78);
this.Wins.Location = new System.Drawing.Point(107, 78);
this.Wins.Name = "Wins";
this.Wins.Size = new System.Drawing.Size(39, 42);
this.Wins.Size = new System.Drawing.Size(40, 42);
this.Wins.TabIndex = 3;
this.Wins.Text = "0";
//
// Losses
//
this.Losses.AutoSize = true;
this.Losses.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(177)));
this.Losses.Font = new System.Drawing.Font("Miriam Mono CLM", 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(231, 78);
this.Losses.Location = new System.Drawing.Point(176, 78);
this.Losses.Name = "Losses";
this.Losses.Size = new System.Drawing.Size(39, 42);
this.Losses.Size = new System.Drawing.Size(40, 42);
this.Losses.TabIndex = 4;
this.Losses.Text = "0";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(177)));
this.label3.Font = new System.Drawing.Font("Miriam Mono CLM", 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(206, 75);
this.label3.Location = new System.Drawing.Point(151, 75);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(28, 42);
this.label3.Size = new System.Drawing.Size(40, 42);
this.label3.TabIndex = 5;
this.label3.Text = ":";
//
// WinBut
//
this.WinBut.Location = new System.Drawing.Point(161, 136);
this.WinBut.Location = new System.Drawing.Point(106, 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.WinBtn_Click);
this.WinBut.Click += new System.EventHandler(this.button1_Click);
//
// button2
//
this.button2.Location = new System.Drawing.Point(219, 136);
this.button2.Location = new System.Drawing.Point(164, 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.LossBtn_Click);
this.button2.Click += new System.EventHandler(this.button2_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(197, 76);
this.label2.Location = new System.Drawing.Point(142, 76);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(31, 42);
this.label2.TabIndex = 5;
@ -167,7 +161,7 @@
//
// reduceLossBut
//
this.reduceLossBut.Location = new System.Drawing.Point(277, 137);
this.reduceLossBut.Location = new System.Drawing.Point(222, 137);
this.reduceLossBut.Name = "reduceLossBut";
this.reduceLossBut.Size = new System.Drawing.Size(20, 24);
this.reduceLossBut.TabIndex = 8;
@ -177,7 +171,7 @@
//
// reduceWinBut
//
this.reduceWinBut.Location = new System.Drawing.Point(137, 137);
this.reduceWinBut.Location = new System.Drawing.Point(82, 137);
this.reduceWinBut.Name = "reduceWinBut";
this.reduceWinBut.Size = new System.Drawing.Size(20, 24);
this.reduceWinBut.TabIndex = 9;
@ -187,17 +181,17 @@
//
// clearBut
//
this.clearBut.Location = new System.Drawing.Point(19, 103);
this.clearBut.Location = new System.Drawing.Point(271, 200);
this.clearBut.Name = "clearBut";
this.clearBut.Size = new System.Drawing.Size(75, 25);
this.clearBut.Size = new System.Drawing.Size(49, 25);
this.clearBut.TabIndex = 10;
this.clearBut.Text = "Clear stats";
this.clearBut.Text = "clear";
this.clearBut.UseVisualStyleBackColor = true;
this.clearBut.Click += new System.EventHandler(this.clearBut_Click);
//
// srTextBox
//
this.srTextBox.Location = new System.Drawing.Point(169, 168);
this.srTextBox.Location = new System.Drawing.Point(114, 168);
this.srTextBox.Name = "srTextBox";
this.srTextBox.Size = new System.Drawing.Size(100, 20);
this.srTextBox.TabIndex = 11;
@ -205,7 +199,7 @@
//
// srBut
//
this.srBut.Location = new System.Drawing.Point(184, 194);
this.srBut.Location = new System.Drawing.Point(129, 194);
this.srBut.Name = "srBut";
this.srBut.Size = new System.Drawing.Size(75, 23);
this.srBut.TabIndex = 12;
@ -216,11 +210,11 @@
// srLabel
//
this.srLabel.AutoSize = true;
this.srLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.srLabel.Font = new System.Drawing.Font("Noto Mono", 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(46, 24);
this.srLabel.Size = new System.Drawing.Size(65, 23);
this.srLabel.TabIndex = 13;
this.srLabel.Text = "0 - 0";
//
@ -230,83 +224,28 @@
this.openFileDialog1.InitialDirectory = "C:\\";
this.openFileDialog1.RestoreDirectory = true;
//
// SRInfoLabel
// label5
//
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";
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";
//
// 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
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(342, 237);
this.Controls.Add(this.SettingsGroup);
this.Controls.Add(this.SRInfoLabel);
this.ClientSize = new System.Drawing.Size(332, 237);
this.Controls.Add(this.label5);
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);
@ -319,12 +258,9 @@
this.DoubleBuffered = true;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "MainForm";
this.Name = "Form1";
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();
@ -350,12 +286,7 @@
private System.Windows.Forms.Button srBut;
private System.Windows.Forms.Label srLabel;
private System.Windows.Forms.OpenFileDialog openFileDialog1;
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;
private System.Windows.Forms.Label label5;
}
}

214
OWTrack/Form1.cs Normal file
View File

@ -0,0 +1,214 @@
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

@ -123,146 +123,7 @@
<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

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@ -1,269 +0,0 @@
/*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

@ -13,7 +13,7 @@
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>publish\</PublishUrl>
<Install>false</Install>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
@ -87,11 +87,11 @@
<TargetZone>LocalIntranet</TargetZone>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>assets\Jeanette-Foshee-Simpsons-11-Rollover-Homer-donut-1.ico</ApplicationIcon>
<ApplicationIcon>Jeanette-Foshee-Simpsons-11-Rollover-Homer-donut-1.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<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 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>
<Reference Include="System" />
<Reference Include="System.Core" />
@ -106,19 +106,17 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="MainForm.cs">
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.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="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
@ -158,7 +156,7 @@
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Content Include="assets\Jeanette-Foshee-Simpsons-11-Rollover-Homer-donut-1.ico" />
<Content Include="Jeanette-Foshee-Simpsons-11-Rollover-Homer-donut-1.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -1,67 +0,0 @@
/*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,4 +1,8 @@
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;
@ -15,8 +19,12 @@ namespace OWTrack
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
Application.Run(new Form1());
}
public static string Version { get; } = "1.4.4.a1";
public static string Version = "1.3.0";
//public static string Version = Application.ProductVersion;
//public static Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
}
}

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("Shitty SR Tracker")]
[assembly: AssemblyDescription("")]
[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("1.3.0.3")]
[assembly: AssemblyFileVersion("1.3.0.3")]
[assembly: AssemblyVersion("2.0.*")]
[assembly: AssemblyFileVersion("1.2.0.0")]
[assembly: NeutralResourcesLanguage("")]

View File

@ -1,220 +1,105 @@
/*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;
using System.Diagnostics;
using System.Linq;
using System.IO;
using System.Windows.Forms;
using System.Collections.Generic;
namespace OWTrack
{
class Tracker
{
//TODO: Encapsulate
public int wins, losses, startSR, newSR, totalMatches = 0;
public int wins, losses, startSR, newSR = 0;
public string gamePath;
public void addWin() => wins++;
public void addLoss() => losses++;
public void reduceWin() => wins--;
public void rediceLoss() => losses--;
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 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()
{
if (settings.TrackOW)
{
try
{
bool isRunning = Process.GetProcessesByName("Overwatch")
.FirstOrDefault(p => p.MainModule.FileName.StartsWith(settings.GamePath)) != default(Process);
.FirstOrDefault(p => p.MainModule.FileName.StartsWith(gamePath)) != default(Process);
return isRunning;
}
catch (Exception e)
{
throw e;
Exception ex = new Exception("Error in tracking Overwatch.exe");
throw ex;
}
}
else return false;
}
/// <summary>
/// Not Working!
/// </summary>
/// <returns></returns>
public bool LoacteOW()
{
try
{
DriveInfo[] driveInfo = DriveInfo.GetDrives();
List<string> paths = new List<string>();
//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"));
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]);
}
}
}
if (paths.Count > 1)
{
//TODO: ask about correct path
//New Form??
return true;
}
else if (paths.Count == 1
&& paths[0].Contains("Overwatch.exe"))
else if (paths.Count == 1)
{
settings.GamePath = paths[0];
gamePath = paths[0];
return true;
}
else return false;
}
catch (Exception)
catch (Exception e)
{
MessageBox.Show(e.Message);
return false;
}
}
public static IEnumerable<string> GetFiles(string root, string searchPattern)
private bool ProgramFilesExist(char drive)
{
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 { }
return Directory.Exists(drive+":\\Program Files");
}
}
}
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" />
<PermissionSet ID="Custom" SameSite="site" Unrestricted="true" />
</applicationRequestMinimum>
</security>
</trustInfo>

View File

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

View File

@ -1,103 +0,0 @@
/*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.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)
# 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)
Track your Overwatch preformance with a shi#ty UI