Added online Hacker Battles with matchmaking system

It's untested, but in theory it'll all work perfectly.
This commit is contained in:
MichaelTheShifter 2016-06-25 21:22:46 -04:00
parent 84f689b91a
commit 309f9fe361
11 changed files with 796 additions and 308 deletions

View file

@ -367,10 +367,6 @@ public static void LaunchMod(string modSAA)
{ {
CreateForm(new Labyrinth(), "Labyrinth", null); CreateForm(new Labyrinth(), "Labyrinth", null);
} }
else if (File.ReadAllText(modSAA) == HiddenQuickChatCommand)
{
CreateForm(new QuickChat(), "QuickChat", null);
}
else else
{ {
try try

View file

@ -29,10 +29,12 @@ protected override void Dispose(bool disposing)
private void InitializeComponent() private void InitializeComponent()
{ {
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NetworkBrowser));
this.panel1 = new System.Windows.Forms.Panel(); this.panel1 = new System.Windows.Forms.Panel();
this.label3 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label();
this.btnscreen = new System.Windows.Forms.Button(); this.btnscreen = new System.Windows.Forms.Button();
this.pnlmynet = new System.Windows.Forms.Panel(); this.pnlmynet = new System.Windows.Forms.Panel();
this.pgtotalhealth = new ShiftOS.ProgressBarEX();
this.flmodules = new System.Windows.Forms.FlowLayoutPanel(); this.flmodules = new System.Windows.Forms.FlowLayoutPanel();
this.label5 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label();
@ -44,15 +46,23 @@ private void InitializeComponent()
this.panel2 = new System.Windows.Forms.Panel(); this.panel2 = new System.Windows.Forms.Panel();
this.lbnetdesc = new System.Windows.Forms.Label(); this.lbnetdesc = new System.Windows.Forms.Label();
this.lbtitle = new System.Windows.Forms.Label(); this.lbtitle = new System.Windows.Forms.Label();
this.pgtotalhealth = new ShiftOS.ProgressBarEX();
this.tmrcalctotal = new System.Windows.Forms.Timer(this.components); this.tmrcalctotal = new System.Windows.Forms.Timer(this.components);
this.button1 = new System.Windows.Forms.Button();
this.pnlonline = new System.Windows.Forms.Panel();
this.lbonlinedesc = new System.Windows.Forms.Label();
this.lbonlineheader = new System.Windows.Forms.Label();
this.lbonlineservers = new System.Windows.Forms.ListBox();
this.btnjoinlobby = new System.Windows.Forms.Button();
this.panel1.SuspendLayout(); this.panel1.SuspendLayout();
this.pnlmynet.SuspendLayout(); this.pnlmynet.SuspendLayout();
this.panel2.SuspendLayout(); this.panel2.SuspendLayout();
this.pnlonline.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// panel1 // panel1
// //
this.panel1.Controls.Add(this.pnlonline);
this.panel1.Controls.Add(this.button1);
this.panel1.Controls.Add(this.label3); this.panel1.Controls.Add(this.label3);
this.panel1.Controls.Add(this.btnscreen); this.panel1.Controls.Add(this.btnscreen);
this.panel1.Controls.Add(this.pnlmynet); this.panel1.Controls.Add(this.pnlmynet);
@ -104,6 +114,28 @@ private void InitializeComponent()
this.pnlmynet.Size = new System.Drawing.Size(404, 447); this.pnlmynet.Size = new System.Drawing.Size(404, 447);
this.pnlmynet.TabIndex = 6; this.pnlmynet.TabIndex = 6;
// //
// pgtotalhealth
//
this.pgtotalhealth.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.pgtotalhealth.BackColor = System.Drawing.Color.Black;
this.pgtotalhealth.BlockSeparation = 3;
this.pgtotalhealth.BlockWidth = 5;
this.pgtotalhealth.Color = System.Drawing.Color.Gray;
this.pgtotalhealth.Label = "Progress:";
this.pgtotalhealth.Location = new System.Drawing.Point(7, 98);
this.pgtotalhealth.MaxValue = 100;
this.pgtotalhealth.MinValue = 0;
this.pgtotalhealth.Name = "pgtotalhealth";
this.pgtotalhealth.Orientation = ShiftOS.ProgressBarEX.ProgressBarOrientation.Horizontal;
this.pgtotalhealth.ShowLabel = false;
this.pgtotalhealth.ShowValue = true;
this.pgtotalhealth.Size = new System.Drawing.Size(394, 32);
this.pgtotalhealth.Step = 10;
this.pgtotalhealth.Style = ShiftOS.ProgressBarEX.ProgressBarExStyle.Continuous;
this.pgtotalhealth.TabIndex = 4;
this.pgtotalhealth.Value = 0;
//
// flmodules // flmodules
// //
this.flmodules.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.flmodules.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@ -209,7 +241,7 @@ private void InitializeComponent()
this.lbnetdesc.Name = "lbnetdesc"; this.lbnetdesc.Name = "lbnetdesc";
this.lbnetdesc.Size = new System.Drawing.Size(283, 290); this.lbnetdesc.Size = new System.Drawing.Size(283, 290);
this.lbnetdesc.TabIndex = 1; this.lbnetdesc.TabIndex = 1;
this.lbnetdesc.Text = "No network selected."; this.lbnetdesc.Text = resources.GetString("lbnetdesc.Text");
// //
// lbtitle // lbtitle
// //
@ -221,31 +253,80 @@ private void InitializeComponent()
this.lbtitle.TabIndex = 0; this.lbtitle.TabIndex = 0;
this.lbtitle.Text = "Network Browser"; this.lbtitle.Text = "Network Browser";
// //
// pgtotalhealth
//
this.pgtotalhealth.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.pgtotalhealth.BackColor = System.Drawing.Color.Black;
this.pgtotalhealth.BlockSeparation = 3;
this.pgtotalhealth.BlockWidth = 5;
this.pgtotalhealth.Color = System.Drawing.Color.Gray;
this.pgtotalhealth.Location = new System.Drawing.Point(7, 98);
this.pgtotalhealth.MaxValue = 100;
this.pgtotalhealth.MinValue = 0;
this.pgtotalhealth.Name = "pgtotalhealth";
this.pgtotalhealth.Orientation = ShiftOS.ProgressBarEX.ProgressBarOrientation.Horizontal;
this.pgtotalhealth.ShowValue = true;
this.pgtotalhealth.Size = new System.Drawing.Size(394, 32);
this.pgtotalhealth.Step = 10;
this.pgtotalhealth.Style = ShiftOS.ProgressBarEX.ProgressBarExStyle.Continuous;
this.pgtotalhealth.TabIndex = 4;
this.pgtotalhealth.Value = 0;
//
// tmrcalctotal // tmrcalctotal
// //
this.tmrcalctotal.Enabled = true; this.tmrcalctotal.Enabled = true;
this.tmrcalctotal.Tick += new System.EventHandler(this.tmrcalctotal_Tick); this.tmrcalctotal.Tick += new System.EventHandler(this.tmrcalctotal_Tick);
// //
// button1
//
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button1.Location = new System.Drawing.Point(549, 465);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(83, 23);
this.button1.TabIndex = 9;
this.button1.Text = "Battle online!";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// pnlonline
//
this.pnlonline.Controls.Add(this.btnjoinlobby);
this.pnlonline.Controls.Add(this.lbonlineservers);
this.pnlonline.Controls.Add(this.lbonlinedesc);
this.pnlonline.Controls.Add(this.lbonlineheader);
this.pnlonline.Location = new System.Drawing.Point(12, 12);
this.pnlonline.Name = "pnlonline";
this.pnlonline.Size = new System.Drawing.Size(404, 447);
this.pnlonline.TabIndex = 10;
//
// lbonlinedesc
//
this.lbonlinedesc.Location = new System.Drawing.Point(4, 37);
this.lbonlinedesc.Name = "lbonlinedesc";
this.lbonlinedesc.Size = new System.Drawing.Size(386, 364);
this.lbonlinedesc.TabIndex = 3;
this.lbonlinedesc.Text = "You can battle other Shifters over the Internet by joining a lobby and waiting fo" +
"r a match to be made. Please select a server from the list below.";
//
// lbonlineheader
//
this.lbonlineheader.AutoSize = true;
this.lbonlineheader.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F);
this.lbonlineheader.Location = new System.Drawing.Point(3, 5);
this.lbonlineheader.Name = "lbonlineheader";
this.lbonlineheader.Size = new System.Drawing.Size(106, 20);
this.lbonlineheader.TabIndex = 2;
this.lbonlineheader.Text = "Online battles";
//
// lbonlineservers
//
this.lbonlineservers.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lbonlineservers.BackColor = System.Drawing.Color.Black;
this.lbonlineservers.ForeColor = System.Drawing.Color.White;
this.lbonlineservers.FormattingEnabled = true;
this.lbonlineservers.Location = new System.Drawing.Point(1, 72);
this.lbonlineservers.Name = "lbonlineservers";
this.lbonlineservers.Size = new System.Drawing.Size(389, 329);
this.lbonlineservers.TabIndex = 4;
this.lbonlineservers.SelectedIndexChanged += new System.EventHandler(this.lbonlineservers_SelectedIndexChanged);
//
// btnjoinlobby
//
this.btnjoinlobby.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.btnjoinlobby.Enabled = false;
this.btnjoinlobby.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnjoinlobby.Location = new System.Drawing.Point(306, 415);
this.btnjoinlobby.Name = "btnjoinlobby";
this.btnjoinlobby.Size = new System.Drawing.Size(84, 23);
this.btnjoinlobby.TabIndex = 8;
this.btnjoinlobby.Text = "Join Lobby";
this.btnjoinlobby.UseVisualStyleBackColor = true;
this.btnjoinlobby.Click += new System.EventHandler(this.btnjoinlobby_Click);
//
// NetworkBrowser // NetworkBrowser
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -263,6 +344,8 @@ private void InitializeComponent()
this.pnlmynet.PerformLayout(); this.pnlmynet.PerformLayout();
this.panel2.ResumeLayout(false); this.panel2.ResumeLayout(false);
this.panel2.PerformLayout(); this.panel2.PerformLayout();
this.pnlonline.ResumeLayout(false);
this.pnlonline.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
} }
@ -286,5 +369,11 @@ private void InitializeComponent()
private System.Windows.Forms.Label label4; private System.Windows.Forms.Label label4;
private ProgressBarEX pgtotalhealth; private ProgressBarEX pgtotalhealth;
private System.Windows.Forms.Timer tmrcalctotal; private System.Windows.Forms.Timer tmrcalctotal;
private System.Windows.Forms.Panel pnlonline;
private System.Windows.Forms.Label lbonlinedesc;
private System.Windows.Forms.Label lbonlineheader;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.ListBox lbonlineservers;
private System.Windows.Forms.Button btnjoinlobby;
} }
} }

View file

@ -23,6 +23,36 @@ public NetworkBrowser()
private void NetworkBrowser_Load(object sender, EventArgs e) private void NetworkBrowser_Load(object sender, EventArgs e)
{ {
Online.Hacking.Matchmaker.Initiated += (o, a) =>
{
if (selected_server == null)
{
lbonlineservers.Items.Clear();
foreach (var s in Online.Hacking.Matchmaker.Servers)
{
lbonlineservers.Items.Add(s.ServerName);
}
}
};
Online.Hacking.Matchmaker.MorePlayersFound += (o, a) =>
{
if(selected_server != null)
{
lbonlineheader.Text = selected_server.ServerName + " - Lobby";
lbonlinedesc.Text = $@"Network Browser is waiting for the server to pair you with another network...
Players in lobby: {Online.Hacking.Matchmaker.Players.Count}
My Network:
- {Hacking.MyNetwork.Count} available modules
- {API.Codepoints} codepoints
- {API.CurrentSave.MyOnlineNetwork.Wins} wins, {API.CurrentSave.MyOnlineNetwork.Losses} losses.
You can set your name and description in the Network Status page.";
}
};
LoadNetworks(); LoadNetworks();
SetupSidePane(); SetupSidePane();
pnlmynet.Hide(); pnlmynet.Hide();
@ -106,6 +136,18 @@ public void SetupSidePane()
} }
public void SetupUI(List<string> tier) public void SetupUI(List<string> tier)
{
pnlonline.Visible = online_mode;
pnlonline.BringToFront();
btnjoinlobby.Enabled = (selected_server != null);
if (online_mode)
{
if(Online.Hacking.Matchmaker.Servers == null)
{
Online.Hacking.Matchmaker.Initiate();
}
}
else
{ {
if (tier.Count > 0) if (tier.Count > 0)
{ {
@ -119,6 +161,7 @@ public void SetupUI(List<string> tier)
AddLeader(CurrentTier); AddLeader(CurrentTier);
} }
} }
}
public void AddLeader(string tier) public void AddLeader(string tier)
{ {
@ -196,6 +239,8 @@ private void btnstartbattle_Click(object sender, EventArgs e)
API.CreateInfoboxSession("Your Core isn't ready.", "Your Core (hostname \"localhost\") has 0 HP, and cannot fight. Please wait until your Core regenerates.", infobox.InfoboxMode.Info); API.CreateInfoboxSession("Your Core isn't ready.", "Your Core (hostname \"localhost\") has 0 HP, and cannot fight. Please wait until your Core regenerates.", infobox.InfoboxMode.Info);
} }
else else
{
if (online_mode == false)
{ {
string tier_upgrade = null; string tier_upgrade = null;
if (SelectedNet.IsLeader == true) if (SelectedNet.IsLeader == true)
@ -253,6 +298,11 @@ private void btnstartbattle_Click(object sender, EventArgs e)
}; };
hui.Show(); hui.Show();
} }
else
{
//nyi
}
}
} }
public void SetupMyNet() public void SetupMyNet()
@ -297,5 +347,36 @@ private void tmrcalctotal_Tick(object sender, EventArgs e)
pgtotalhealth.MaxValue = total; pgtotalhealth.MaxValue = total;
pgtotalhealth.Value = hp; pgtotalhealth.Value = hp;
} }
bool online_mode = false;
private void button1_Click(object sender, EventArgs e)
{
online_mode = !online_mode;
LoadNetworks();
}
Online.Hacking.ServerInfo selected_server = null;
private void lbonlineservers_SelectedIndexChanged(object sender, EventArgs e)
{
var server_name = lbonlineservers.SelectedItem as string;
var server = new Online.Hacking.ServerInfo();
foreach(var srv in Online.Hacking.Matchmaker.Servers)
{
if (srv.ServerName == server_name)
server = srv;
}
selected_server = server;
LoadNetworks();
}
private void btnjoinlobby_Click(object sender, EventArgs e)
{
lbonlineservers.Hide();
API.CurrentSave.MyOnlineNetwork.Codepoints = API.Codepoints;
Package_Grabber.SendMessage(selected_server.IPAddress, "join_lobby", API.CurrentSave.MyOnlineNetwork);
Online.Hacking.Matchmaker.Matchmake(selected_server);
}
} }
} }

View file

@ -117,6 +117,13 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="lbnetdesc.Text" xml:space="preserve">
<value>Welcome to the Network Browser. Here, you can choose various enemy networks to battle and conquer. On the left is the network selection panel, and it will let you choose what network you'd like to fight. When you beat a network, it's removed from the list.
Below the network selection panel is a Tier button. You can click it to change the difficulty of networks that you will fight. The higher the tier, the harder the battle. Beside that button, is the Screen button. Clicking it will switch between the Network Selection panel and your Network Status panel which will show you the health of all your modules if they are below max.
You can start the battle using the "Start Battle" button, and you can join an online session using the "Battle online" button. It is wise to practice offline, as offline networks are more predictable than online ones - and you require more speed to battle against another real player. But, this is ShiftOS. Do what you wish.</value>
</data>
<metadata name="tmrcalctotal.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="tmrcalctotal.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>17, 17</value>
</metadata> </metadata>

View file

@ -14,6 +14,8 @@ public partial class Computer : UserControl
{ {
public int TotalHP = 100; public int TotalHP = 100;
public Online.Hacking.NetTransmitter Transmitter = null;
public Computer() public Computer()
{ {
InitializeComponent(); InitializeComponent();
@ -24,6 +26,7 @@ public Computer()
public void Repair(int hp) public void Repair(int hp)
{ {
this._HP += hp; this._HP += hp;
Transmitter?.send_message(Online.Hacking.NetTransmitter.Messages.SetHealth, $"{Hostname} {_HP}");
var h = OnRepair; var h = OnRepair;
if(h != null) if(h != null)
{ {
@ -175,6 +178,7 @@ public void Deteriorate(int amount)
} }
else { else {
this._HP -= amount / DamageDefector; this._HP -= amount / DamageDefector;
Transmitter?.send_message(Online.Hacking.NetTransmitter.Messages.SetHealth, $"{Hostname} {_HP}");
EventHandler handler = HP_Decreased; EventHandler handler = HP_Decreased;
if (handler != null) if (handler != null)
{ {
@ -187,6 +191,7 @@ public void Deteriorate(int amount)
public void Disable() public void Disable()
{ {
Transmitter?.send_message(Online.Hacking.NetTransmitter.Messages.Disabled, $"{Hostname}");
var t = new Timer(); var t = new Timer();
t.Interval = 1000; t.Interval = 1000;
int i = 0; int i = 0;

View file

@ -249,18 +249,6 @@ public void RegisterCore()
return new Color(); return new Color();
} }
}); });
mod.speechrec_create = new Func<SpeechListener>(() =>
{
return new SpeechListener();
});
mod.speechrec_on_recognize = new Action<SpeechListener, string>((obj, func) =>
{
obj.OnRecognize += (object s, EventArgs a) =>
{
mod($"{func}('{s.ToString()}')");
};
obj.Engine.RecognizeAsync();
});
mod.get_desktop_session = new Func<Form>(() => mod.get_desktop_session = new Func<Form>(() =>
{ {
return API.CurrentSession; return API.CurrentSession;

View file

@ -34,6 +34,7 @@ public class Save
public int PriceDivider = 1; public int PriceDivider = 1;
public string CloudID = ""; public string CloudID = "";
public List<string> CompletedNets = new List<string>(); public List<string> CompletedNets = new List<string>();
public ShiftOS.Online.Hacking.Network MyOnlineNetwork = new ShiftOS.Online.Hacking.Network();
} }
public class PrivateBitnoteAddress public class PrivateBitnoteAddress

View file

@ -22,12 +22,24 @@ public HackUI()
public event EventHandler OnWin; public event EventHandler OnWin;
private bool InOnlineBattle = false;
private Online.Hacking.NetTransmitter transmitter = null;
private Online.Hacking.NetListener receiver = null;
public HackUI(EnemyHacker enemy) public HackUI(EnemyHacker enemy)
{ {
ThisEnemyHacker = enemy; ThisEnemyHacker = enemy;
InitializeComponent(); InitializeComponent();
} }
public HackUI(Online.Hacking.NetTransmitter t, Online.Hacking.NetListener l)
{
InOnlineBattle = true;
transmitter = t;
receiver = l;
InitializeComponent();
}
public Computer ThisPlayerPC = null; public Computer ThisPlayerPC = null;
private decimal TotalPlayerHP = 0; private decimal TotalPlayerHP = 0;
private EnemyHacker EnemyNet = null; private EnemyHacker EnemyNet = null;
@ -212,6 +224,11 @@ private void this_Closing(object sender, FormClosingEventArgs e)
public void AddModule(Computer newModule) public void AddModule(Computer newModule)
{ {
if (InOnlineBattle)
{
newModule.Transmitter = transmitter;
transmitter?.send_message(Online.Hacking.NetTransmitter.Messages.PlaceModule, new Online.Hacking.Module { Grade = newModule.Grade, Hostname = newModule.Hostname, HP = newModule.HP, Type = (int)newModule.Type, X = newModule.Left, Y = newModule.Top });
}
pnlyou.Controls.Add(newModule); pnlyou.Controls.Add(newModule);
int hp = newModule.HP; int hp = newModule.HP;
WriteLine($"[Network] Welcome to the network, {newModule.Hostname}!"); WriteLine($"[Network] Welcome to the network, {newModule.Hostname}!");
@ -274,6 +291,7 @@ public void AddModule(Computer newModule)
AllPlayerComputers.Remove(newModule); AllPlayerComputers.Remove(newModule);
newModule.Dispose(); newModule.Dispose();
WriteLine($"[Network] {newModule.Hostname} has gone OFFLINE."); WriteLine($"[Network] {newModule.Hostname} has gone OFFLINE.");
transmitter?.send_message(Online.Hacking.NetTransmitter.Messages.RemoveModule, newModule.Hostname);
}; };
newModule.Select += (object s, EventArgs e) => newModule.Select += (object s, EventArgs e) =>
{ {
@ -1078,8 +1096,10 @@ private void HackUI_Load(object sender, EventArgs e)
Hacking.RepairTimer.Stop(); //Don't want the player to be able to repair dead modules during a battle! Hacking.RepairTimer.Stop(); //Don't want the player to be able to repair dead modules during a battle!
this.TopMost = true; this.TopMost = true;
this.WindowState = FormWindowState.Maximized; this.WindowState = FormWindowState.Maximized;
//this.TopMost = true;
LoadPlayerScreen(); LoadPlayerScreen();
if (InOnlineBattle)
LoadOnlineEnemy();
else
LoadEnemyScreen(); LoadEnemyScreen();
tmrvisualizer.Interval = 10; tmrvisualizer.Interval = 10;
tmrvisualizer.Start(); tmrvisualizer.Start();
@ -1532,6 +1552,72 @@ public void WriteLine(string text)
#endregion #endregion
#region ONLINE ENEMY
public void LoadOnlineEnemy()
{
AllEnemyComputers = new List<Computer>();
tmrenemyhealthdetect.Start();
//register event handlers
receiver.ModuleHealthSet += Receiver_ModuleHealthSet;
receiver.ModulePlaced += Receiver_ModulePlaced;
receiver.ModuleUpgraded += Receiver_ModuleUpgraded;
receiver.ModuleRemoved += Receiver_ModuleRemoved;
}
private void Receiver_ModuleRemoved(object sender, Online.Hacking.Events.ModuleRemoved e)
{
Computer c = null;
foreach(var m in AllEnemyComputers)
{
if(m.Hostname == e.new_module)
{
c = m;
}
}
AllEnemyComputers.Remove(c);
c.Dispose();
}
private void Receiver_ModuleUpgraded(object sender, Online.Hacking.Events.ModuleUpgraded e)
{
foreach(var m in AllEnemyComputers)
{
if (m.Hostname == e.hostname)
m.Grade = e.grade;
}
}
private void Receiver_ModulePlaced(object sender, Online.Hacking.Events.ModulePlaced e)
{
var newModule = new Module((SystemType)e.new_module.Type, e.new_module.Grade, e.new_module.Hostname);
newModule.HP = e.new_module.HP;
newModule.X = e.new_module.X;
newModule.Y = e.new_module.Y;
AddEnemyModule(newModule.Deploy());
}
private void Receiver_ModuleHealthSet(object sender, Online.Hacking.Events.Health e)
{
var mod = new Computer();
foreach(var m in AllEnemyComputers)
{
if (m.Hostname == e.host_name)
mod = m;
}
int health_amount = mod.HP - e.health;
if(health_amount > 0)
{
mod.Repair(health_amount);
}
else if(health_amount < 0)
{
mod.LaunchAttack(AttackType.Virus, -health_amount);
}
}
#endregion
bool playing = true; bool playing = true;
private void button2_Click(object sender, EventArgs e) private void button2_Click(object sender, EventArgs e)

View file

@ -0,0 +1,260 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ShiftOS.Online.Hacking
{
public class Matchmaker
{
public static List<ServerInfo> Servers = null;
public static List<Network> Players = null;
public static ServerInfo SelectedServer = null;
public static Network SelectedNetwork = null;
public static NetListener SelectedNetworkListener = null;
public static NetTransmitter SelectedNetworkTransmitter = null;
public static Timer MakerTimer = null;
public static void Initiate()
{
MakerTimer = new Timer();
MakerTimer.Interval = 100;
Servers = new List<ServerInfo>();
foreach(var c in Package_Grabber.clients)
{
c.Value.OnReceived += (o, e) =>
{
var om = (e.Data.Object as ObjectModel);
if(om.Command == "server_info")
{
var si = om.OptionalObject as ServerInfo;
si.IPAddress = c.Value.RemoteHost;
Servers.Add(si);
invoke(() =>
{
Initiated?.Invoke(null, new EventArgs());
});
}
};
Package_Grabber.SendMessage(c.Value.RemoteHost, "get_info");
}
}
public static void Matchmake(ServerInfo si)
{
SelectedServer = si;
var rnd = new Random();
Players = new List<Network>();
var server = Package_Grabber.clients[si.IPAddress];
server.OnReceived += (o, e) =>
{
var om = e.Data.Object as ObjectModel;
if (om.Command == "matchmaking")
{
Players = JsonConvert.DeserializeObject<List<Network>>(om.OptionalObject as string);
invoke(() =>
{
MorePlayersFound?.Invoke(null, new EventArgs());
});
}
};
Package_Grabber.SendMessage(si.IPAddress, "get_matchmaking");
MakerTimer.Tick += (o, e) =>
{
int index = rnd.Next(0, Players.Count - 1);
if (Players[index] != API.CurrentSave.MyOnlineNetwork)
{
SelectedNetwork = Players[index];
MakerTimer.Stop();
SelectedNetworkListener = new NetListener(si, SelectedNetwork);
SelectedNetworkTransmitter = new NetTransmitter(si, SelectedNetwork);
}
};
}
public static event EventHandler Initiated;
public static event EventHandler MorePlayersFound;
public static void invoke(Action method)
{
API.CurrentSession.Invoke(method);
}
}
public class NetListener
{
public NetListener(ServerInfo si, Network net)
{
register_events(si, net);
}
public List<Module> MyModules = null;
private void register_events(ServerInfo si, Network net)
{
MyModules = new List<Module>();
var server = Package_Grabber.clients[si.IPAddress];
server.OnReceived += (o, e) =>
{
if(e.Data.Object is string)
{
string data = e.Data.Object as string;
string[] args = data.Split(' ');
if (args[1] == net.Name + ";" + net.Description) {
switch (args[0].ToLower())
{
case "set_health":
string hn = args[2];
int hp = Convert.ToInt32(args[3]);
invoke(() => { ModuleHealthSet?.Invoke(this, new Events.Health { host_name = hn, health = hp }); });
break;
case "place_module":
string hostname = args[2];
int grade = Convert.ToInt32(args[3]);
int newhp = Convert.ToInt32(args[4]);
int x = Convert.ToInt32(args[5]);
int y = Convert.ToInt32(args[6]);
int type = Convert.ToInt32(args[7]);
var moduleToPlace = new Module { Grade = grade, Hostname = hostname, HP = newhp, Type = type, X = x, Y = y };
MyModules.Add(moduleToPlace);
invoke(() => { ModulePlaced?.Invoke(this, new Events.ModulePlaced { new_module = moduleToPlace }); });
break;
case "remove_module":
string hostnametoremove = args[2];
var m = new Module();
foreach (var mod in MyModules)
{
if (mod.Hostname == hostnametoremove)
{
m = mod;
}
}
MyModules.Remove(m);
invoke(() => { ModuleRemoved?.Invoke(this, new Events.ModuleRemoved { new_module = hostnametoremove }); });
break;
case "upgrade":
invoke(() =>
{
string hostnametoupgrade = args[2];
int newgrade = Convert.ToInt32(args[3]);
ModuleUpgraded?.Invoke(this, new Events.ModuleUpgraded { hostname = hostnametoupgrade, grade = newgrade });
});
break;
case "disable":
invoke(() =>
{
string name = args[2];
ModuleDisabled?.Invoke(this, new Events.Disabled { hostName = name });
});
break;
}
}
}
};
}
public void invoke(Action method)
{
API.CurrentSession.Invoke(method);
}
public event EventHandler<Events.Health> ModuleHealthSet;
public event EventHandler<Events.ModulePlaced> ModulePlaced;
public event EventHandler<Events.ModuleRemoved> ModuleRemoved;
public event EventHandler<Events.ModuleUpgraded> ModuleUpgraded;
public event EventHandler<Events.Disabled> ModuleDisabled;
}
public class NetTransmitter
{
public ServerInfo serverInfo = null;
public string EnemyIdent = "";
public NetTransmitter(ServerInfo si, Network enemy)
{
EnemyIdent = enemy.Name + ";" + enemy.Description;
serverInfo = si;
var h = new HackUI(this, Matchmaker.SelectedNetworkListener);
//HackUI will handle everything else to do with our network.
}
public void send_message(Messages msg, object value)
{
switch(msg)
{
case Messages.PlaceModule:
var m = value as Module;
Package_Grabber.SendMessage(serverInfo.IPAddress, $"place_module {EnemyIdent} {m.Hostname} {m.Grade} {m.HP} {m.X} {m.Y} {m.Type}");
break;
case Messages.Upgrade:
string upgradestr = value as string;
Package_Grabber.SendMessage(serverInfo.IPAddress, $"upgrade {EnemyIdent} {upgradestr}");
break;
case Messages.RemoveModule:
string hostnametoremove = value as string;
Package_Grabber.SendMessage(serverInfo.IPAddress, $"remove_module {EnemyIdent} {hostnametoremove}");
break;
case Messages.SetHealth:
string healthsetstr = value as string;
Package_Grabber.SendMessage(serverInfo.IPAddress, $"set_health {EnemyIdent} {healthsetstr}");
break;
case Messages.Disabled:
string hnamestr = value as string;
Package_Grabber.SendMessage(serverInfo.IPAddress, $"disable {EnemyIdent} {hnamestr}");
break;
}
}
public enum Messages
{
PlaceModule,
Upgrade,
RemoveModule,
SetHealth,
Disabled,
}
}
namespace Events
{
public class Health : EventArgs
{
public string host_name { get; set; }
public int health { get; set; }
}
public class Disabled : EventArgs
{
public string hostName { get; set; }
}
public class ModulePlaced : EventArgs
{
public Module new_module { get; set; }
}
public class ModuleRemoved : EventArgs
{
public string new_module { get; set; }
}
public class ModuleUpgraded : EventArgs
{
public string hostname { get; set; }
public int grade { get; set; }
}
}
}

View file

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ShiftOS.Online.Hacking
{
[Serializable]
public class Module
{
public string Hostname { get; set; }
public int Grade { get; set; }
public int HP { get; set; }
public int X { get; set; }
public int Y { get; set; }
public int Type { get; set; } //will be converted by the client
}
[Serializable]
public class Network
{
public string Name { get; set; }
public int Codepoints { get; set; }
public string Description { get; set; }
public int Losses { get; set; }
public int Wins { get; set; }
}
[Serializable]
public class ServerInfo
{
public string ServerName { get; set; }
public int PlayersAwaitingMatch { get; set; }
public string IPAddress { get; set; }
}
}

View file

@ -84,72 +84,66 @@
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="AlternateDesktop.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="AlternateDesktop.Designer.cs">
<DependentUpon>AlternateDesktop.cs</DependentUpon>
</Compile>
<Compile Include="API.cs" /> <Compile Include="API.cs" />
<Compile Include="Appscape.cs"> <Compile Include="Apps\Appscape.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Appscape.Designer.cs"> <Compile Include="Apps\Appscape.Designer.cs">
<DependentUpon>Appscape.cs</DependentUpon> <DependentUpon>Appscape.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="AppscapeUploader.cs"> <Compile Include="Apps\AppscapeUploader.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="AppscapeUploader.Designer.cs"> <Compile Include="Apps\AppscapeUploader.Designer.cs">
<DependentUpon>AppscapeUploader.cs</DependentUpon> <DependentUpon>AppscapeUploader.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Artpad.cs"> <Compile Include="Apps\Artpad.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Artpad.Designer.cs"> <Compile Include="Apps\Artpad.Designer.cs">
<DependentUpon>Artpad.cs</DependentUpon> <DependentUpon>Artpad.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="AudioResourceClient.cs" /> <Compile Include="Engine\AudioResourceClient.cs" />
<Compile Include="BitnoteConverter.cs"> <Compile Include="Apps\BitnoteConverter.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="BitnoteConverter.Designer.cs"> <Compile Include="Apps\BitnoteConverter.Designer.cs">
<DependentUpon>BitnoteConverter.cs</DependentUpon> <DependentUpon>BitnoteConverter.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="BitnoteDigger.cs"> <Compile Include="Apps\BitnoteDigger.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="BitnoteDigger.Designer.cs"> <Compile Include="Apps\BitnoteDigger.Designer.cs">
<DependentUpon>BitnoteDigger.cs</DependentUpon> <DependentUpon>BitnoteDigger.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="BitnoteWallet.cs"> <Compile Include="Apps\BitnoteWallet.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="BitnoteWallet.Designer.cs"> <Compile Include="Apps\BitnoteWallet.Designer.cs">
<DependentUpon>BitnoteWallet.cs</DependentUpon> <DependentUpon>BitnoteWallet.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Color_Picker.cs"> <Compile Include="Dialogs\Color_Picker.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Color_Picker.Designer.cs"> <Compile Include="Dialogs\Color_Picker.Designer.cs">
<DependentUpon>Color_Picker.cs</DependentUpon> <DependentUpon>Color_Picker.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Computer.cs"> <Compile Include="Controls\Computer.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="Computer.Designer.cs"> <Compile Include="Controls\Computer.Designer.cs">
<DependentUpon>Computer.cs</DependentUpon> <DependentUpon>Computer.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Connection.cs"> <Compile Include="Controls\Connection.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="Connection.Designer.cs"> <Compile Include="Controls\Connection.Designer.cs">
<DependentUpon>Connection.cs</DependentUpon> <DependentUpon>Connection.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="ConnectionManager.cs"> <Compile Include="Online\ConnectionManager.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="ConnectionManager.Designer.cs"> <Compile Include="Online\ConnectionManager.Designer.cs">
<DependentUpon>ConnectionManager.cs</DependentUpon> <DependentUpon>ConnectionManager.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="CreditScroller.cs"> <Compile Include="CreditScroller.cs">
@ -158,22 +152,22 @@
<Compile Include="CreditScroller.Designer.cs"> <Compile Include="CreditScroller.Designer.cs">
<DependentUpon>CreditScroller.cs</DependentUpon> <DependentUpon>CreditScroller.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="DesktopIcon.cs"> <Compile Include="Controls\DesktopIcon.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="DesktopIcon.Designer.cs"> <Compile Include="Controls\DesktopIcon.Designer.cs">
<DependentUpon>DesktopIcon.cs</DependentUpon> <DependentUpon>DesktopIcon.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Dodge.cs"> <Compile Include="Apps\Dodge.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Dodge.Designer.cs"> <Compile Include="Apps\Dodge.Designer.cs">
<DependentUpon>Dodge.cs</DependentUpon> <DependentUpon>Dodge.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="File Skimmer.cs"> <Compile Include="Apps\File Skimmer.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="File Skimmer.Designer.cs"> <Compile Include="Apps\File Skimmer.Designer.cs">
<DependentUpon>File Skimmer.cs</DependentUpon> <DependentUpon>File Skimmer.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="FinalMission\ChoiceControl.cs"> <Compile Include="FinalMission\ChoiceControl.cs">
@ -207,142 +201,120 @@
<Compile Include="GameSettings.Designer.cs"> <Compile Include="GameSettings.Designer.cs">
<DependentUpon>GameSettings.cs</DependentUpon> <DependentUpon>GameSettings.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Graphic_Picker.cs"> <Compile Include="Dialogs\Graphic_Picker.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Graphic_Picker.Designer.cs"> <Compile Include="Dialogs\Graphic_Picker.Designer.cs">
<DependentUpon>Graphic_Picker.cs</DependentUpon> <DependentUpon>Graphic_Picker.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Hacking.cs" /> <Compile Include="Gameplay\Hacking.cs" />
<Compile Include="Hacking_Enemy.cs"> <Compile Include="Gameplay\HackUI.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Hacking_Enemy.Designer.cs"> <Compile Include="Gameplay\HackUI.Designer.cs">
<DependentUpon>Hacking_Enemy.cs</DependentUpon>
</Compile>
<Compile Include="Hacking_YourHealth.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Hacking_YourHealth.Designer.cs">
<DependentUpon>Hacking_YourHealth.cs</DependentUpon>
</Compile>
<Compile Include="HackUI.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="HackUI.Designer.cs">
<DependentUpon>HackUI.cs</DependentUpon> <DependentUpon>HackUI.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="HijackScreen.cs"> <Compile Include="Gameplay\HijackScreen.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="HijackScreen.Designer.cs"> <Compile Include="Gameplay\HijackScreen.Designer.cs">
<DependentUpon>HijackScreen.cs</DependentUpon> <DependentUpon>HijackScreen.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="HoloChat.cs"> <Compile Include="Apps\HoloChat.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="HoloChat.Designer.cs"> <Compile Include="Apps\HoloChat.Designer.cs">
<DependentUpon>HoloChat.cs</DependentUpon> <DependentUpon>HoloChat.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="IconControl.cs"> <Compile Include="Controls\IconControl.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="IconControl.Designer.cs"> <Compile Include="Controls\IconControl.Designer.cs">
<DependentUpon>IconControl.cs</DependentUpon> <DependentUpon>IconControl.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="IconManager.cs"> <Compile Include="Apps\IconManager.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="IconManager.Designer.cs"> <Compile Include="Apps\IconManager.Designer.cs">
<DependentUpon>IconManager.cs</DependentUpon> <DependentUpon>IconManager.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="ImageSelector.cs"> <Compile Include="Controls\ImageSelector.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="ImageSelector.Designer.cs"> <Compile Include="Controls\ImageSelector.Designer.cs">
<DependentUpon>ImageSelector.cs</DependentUpon> <DependentUpon>ImageSelector.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="infobox.cs"> <Compile Include="Controls\infobox.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="infobox.Designer.cs"> <Compile Include="Controls\infobox.Designer.cs">
<DependentUpon>infobox.cs</DependentUpon> <DependentUpon>infobox.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Jumper.cs"> <Compile Include="Apps\KnowledgeInput.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Jumper.Designer.cs"> <Compile Include="Apps\KnowledgeInput.Designer.cs">
<DependentUpon>Jumper.cs</DependentUpon>
</Compile>
<Compile Include="KnowledgeInput.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="KnowledgeInput.Designer.cs">
<DependentUpon>KnowledgeInput.cs</DependentUpon> <DependentUpon>KnowledgeInput.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Labyrinth.cs"> <Compile Include="Apps\Labyrinth.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Labyrinth.Designer.cs"> <Compile Include="Apps\Labyrinth.Designer.cs">
<DependentUpon>Labyrinth.cs</DependentUpon> <DependentUpon>Labyrinth.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="ListViewEx.cs"> <Compile Include="Engine\Lua_Interp.cs" />
<SubType>UserControl</SubType> <Compile Include="HostLayer\MountMgr.cs" />
</Compile> <Compile Include="Apps\NameChanger.cs">
<Compile Include="ListViewEx.Designer.cs">
<DependentUpon>ListViewEx.cs</DependentUpon>
</Compile>
<Compile Include="Lua_Interp.cs" />
<Compile Include="MountMgr.cs" />
<Compile Include="NameChanger.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="NameChanger.Designer.cs"> <Compile Include="Apps\NameChanger.Designer.cs">
<DependentUpon>NameChanger.cs</DependentUpon> <DependentUpon>NameChanger.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="NetGen.cs"> <Compile Include="Apps\NetGen.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="NetGen.Designer.cs"> <Compile Include="Apps\NetGen.Designer.cs">
<DependentUpon>NetGen.cs</DependentUpon> <DependentUpon>NetGen.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="NetModuleStatus.cs"> <Compile Include="Controls\NetModuleStatus.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="NetModuleStatus.Designer.cs"> <Compile Include="Controls\NetModuleStatus.Designer.cs">
<DependentUpon>NetModuleStatus.cs</DependentUpon> <DependentUpon>NetModuleStatus.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="NetworkBrowser.cs"> <Compile Include="Apps\NetworkBrowser.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="NetworkBrowser.Designer.cs"> <Compile Include="Apps\NetworkBrowser.Designer.cs">
<DependentUpon>NetworkBrowser.cs</DependentUpon> <DependentUpon>NetworkBrowser.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Notification.cs"> <Compile Include="Controls\Notification.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="Notification.Designer.cs"> <Compile Include="Controls\Notification.Designer.cs">
<DependentUpon>Notification.cs</DependentUpon> <DependentUpon>Notification.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="OSInfo.cs" /> <Compile Include="HostLayer\OSInfo.cs" />
<Compile Include="Package_Grabber.cs" /> <Compile Include="Online\Hacking\Matchmaker.cs" />
<Compile Include="PanelManager.cs"> <Compile Include="Online\Hacking\Objects.cs" />
<Compile Include="Online\Package_Grabber.cs" />
<Compile Include="Apps\PanelManager.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="PanelManager.Designer.cs"> <Compile Include="Apps\PanelManager.Designer.cs">
<DependentUpon>PanelManager.cs</DependentUpon> <DependentUpon>PanelManager.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Pong.cs"> <Compile Include="Apps\Pong.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Pong.Designer.cs"> <Compile Include="Apps\Pong.Designer.cs">
<DependentUpon>Pong.cs</DependentUpon> <DependentUpon>Pong.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
<Compile Include="ProgressBarEX.cs"> <Compile Include="Controls\ProgressBarEX.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="ProgressBarEX.Designer.cs"> <Compile Include="Controls\ProgressBarEX.Designer.cs">
<DependentUpon>ProgressBarEX.cs</DependentUpon> <DependentUpon>ProgressBarEX.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
@ -351,126 +323,115 @@
<DesignTime>True</DesignTime> <DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon> <DependentUpon>Resources.resx</DependentUpon>
</Compile> </Compile>
<Compile Include="QuickChat.cs"> <Compile Include="Apps\Shifter.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="QuickChat.Designer.cs"> <Compile Include="Apps\Shifter.Designer.cs">
<DependentUpon>QuickChat.cs</DependentUpon>
</Compile>
<Compile Include="RemoteCoherence.cs" />
<Compile Include="Shifter.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Shifter.Designer.cs">
<DependentUpon>Shifter.cs</DependentUpon> <DependentUpon>Shifter.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="ShifterColorInput.cs"> <Compile Include="Controls\ShifterColorInput.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="ShifterColorInput.Designer.cs"> <Compile Include="Controls\ShifterColorInput.Designer.cs">
<DependentUpon>ShifterColorInput.cs</DependentUpon> <DependentUpon>ShifterColorInput.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="ShifterGraphicInput.cs"> <Compile Include="Controls\ShifterGraphicInput.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="ShifterGraphicInput.Designer.cs"> <Compile Include="Controls\ShifterGraphicInput.Designer.cs">
<DependentUpon>ShifterGraphicInput.cs</DependentUpon> <DependentUpon>ShifterGraphicInput.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="ShifterIntInput.cs"> <Compile Include="Controls\ShifterIntInput.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="ShifterIntInput.Designer.cs"> <Compile Include="Controls\ShifterIntInput.Designer.cs">
<DependentUpon>ShifterIntInput.cs</DependentUpon> <DependentUpon>ShifterIntInput.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="ShifterTextInput.cs"> <Compile Include="Controls\ShifterTextInput.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="ShifterTextInput.Designer.cs"> <Compile Include="Controls\ShifterTextInput.Designer.cs">
<DependentUpon>ShifterTextInput.cs</DependentUpon> <DependentUpon>ShifterTextInput.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Shiftnet.cs"> <Compile Include="Apps\Shiftnet.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Shiftnet.Designer.cs"> <Compile Include="Apps\Shiftnet.Designer.cs">
<DependentUpon>Shiftnet.cs</DependentUpon> <DependentUpon>Shiftnet.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="ShiftnetDecryptor.cs"> <Compile Include="Apps\ShiftnetDecryptor.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="ShiftnetDecryptor.Designer.cs"> <Compile Include="Apps\ShiftnetDecryptor.Designer.cs">
<DependentUpon>ShiftnetDecryptor.cs</DependentUpon> <DependentUpon>ShiftnetDecryptor.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="ShiftOSColorTable.cs" /> <Compile Include="SkinEngine\ShiftOSColorTable.cs" />
<Compile Include="SkinLoader.cs"> <Compile Include="Apps\SkinLoader.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="SkinLoader.Designer.cs"> <Compile Include="Apps\SkinLoader.Designer.cs">
<DependentUpon>SkinLoader.cs</DependentUpon> <DependentUpon>SkinLoader.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="SpeechListener.cs" /> <Compile Include="Apps\TextPad.cs">
<Compile Include="TextPad.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="TextPad.Designer.cs"> <Compile Include="Apps\TextPad.Designer.cs">
<DependentUpon>TextPad.cs</DependentUpon> <DependentUpon>TextPad.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Viruses.cs" /> <Compile Include="Engine\Viruses.cs" />
<Compile Include="WidgetManager.cs"> <Compile Include="Apps\WidgetManager.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="WidgetManager.Designer.cs"> <Compile Include="Apps\WidgetManager.Designer.cs">
<DependentUpon>WidgetManager.cs</DependentUpon> <DependentUpon>WidgetManager.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="WindowBorder.cs"> <Compile Include="Controls\WindowBorder.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
<Compile Include="WindowBorder.Designer.cs"> <Compile Include="Controls\WindowBorder.Designer.cs">
<DependentUpon>WindowBorder.cs</DependentUpon> <DependentUpon>WindowBorder.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="WindowComposition.cs" /> <Compile Include="SkinEngine\WindowComposition.cs" />
<EmbeddedResource Include="AlternateDesktop.resx"> <EmbeddedResource Include="Apps\Appscape.resx">
<DependentUpon>AlternateDesktop.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Appscape.resx">
<DependentUpon>Appscape.cs</DependentUpon> <DependentUpon>Appscape.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="AppscapeUploader.resx"> <EmbeddedResource Include="Apps\AppscapeUploader.resx">
<DependentUpon>AppscapeUploader.cs</DependentUpon> <DependentUpon>AppscapeUploader.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Artpad.resx"> <EmbeddedResource Include="Apps\Artpad.resx">
<DependentUpon>Artpad.cs</DependentUpon> <DependentUpon>Artpad.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="BitnoteConverter.resx"> <EmbeddedResource Include="Apps\BitnoteConverter.resx">
<DependentUpon>BitnoteConverter.cs</DependentUpon> <DependentUpon>BitnoteConverter.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="BitnoteDigger.resx"> <EmbeddedResource Include="Apps\BitnoteDigger.resx">
<DependentUpon>BitnoteDigger.cs</DependentUpon> <DependentUpon>BitnoteDigger.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="BitnoteWallet.resx"> <EmbeddedResource Include="Apps\BitnoteWallet.resx">
<DependentUpon>BitnoteWallet.cs</DependentUpon> <DependentUpon>BitnoteWallet.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Color_Picker.resx"> <EmbeddedResource Include="Dialogs\Color_Picker.resx">
<DependentUpon>Color_Picker.cs</DependentUpon> <DependentUpon>Color_Picker.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Computer.resx"> <EmbeddedResource Include="Controls\Computer.resx">
<DependentUpon>Computer.cs</DependentUpon> <DependentUpon>Computer.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Connection.resx"> <EmbeddedResource Include="Controls\Connection.resx">
<DependentUpon>Connection.cs</DependentUpon> <DependentUpon>Connection.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ConnectionManager.resx"> <EmbeddedResource Include="Online\ConnectionManager.resx">
<DependentUpon>ConnectionManager.cs</DependentUpon> <DependentUpon>ConnectionManager.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="CreditScroller.resx"> <EmbeddedResource Include="CreditScroller.resx">
<DependentUpon>CreditScroller.cs</DependentUpon> <DependentUpon>CreditScroller.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DesktopIcon.resx"> <EmbeddedResource Include="Controls\DesktopIcon.resx">
<DependentUpon>DesktopIcon.cs</DependentUpon> <DependentUpon>DesktopIcon.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Dodge.resx"> <EmbeddedResource Include="Apps\Dodge.resx">
<DependentUpon>Dodge.cs</DependentUpon> <DependentUpon>Dodge.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="File Skimmer.resx"> <EmbeddedResource Include="Apps\File Skimmer.resx">
<DependentUpon>File Skimmer.cs</DependentUpon> <DependentUpon>File Skimmer.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="FinalMission\ChoiceControl.resx"> <EmbeddedResource Include="FinalMission\ChoiceControl.resx">
@ -488,67 +449,55 @@
<EmbeddedResource Include="GameSettings.resx"> <EmbeddedResource Include="GameSettings.resx">
<DependentUpon>GameSettings.cs</DependentUpon> <DependentUpon>GameSettings.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Graphic_Picker.resx"> <EmbeddedResource Include="Dialogs\Graphic_Picker.resx">
<DependentUpon>Graphic_Picker.cs</DependentUpon> <DependentUpon>Graphic_Picker.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Hacking_Enemy.resx"> <EmbeddedResource Include="Gameplay\HackUI.resx">
<DependentUpon>Hacking_Enemy.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Hacking_YourHealth.resx">
<DependentUpon>Hacking_YourHealth.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="HackUI.resx">
<DependentUpon>HackUI.cs</DependentUpon> <DependentUpon>HackUI.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="HijackScreen.resx"> <EmbeddedResource Include="Gameplay\HijackScreen.resx">
<DependentUpon>HijackScreen.cs</DependentUpon> <DependentUpon>HijackScreen.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="HoloChat.resx"> <EmbeddedResource Include="Apps\HoloChat.resx">
<DependentUpon>HoloChat.cs</DependentUpon> <DependentUpon>HoloChat.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="IconControl.resx"> <EmbeddedResource Include="Controls\IconControl.resx">
<DependentUpon>IconControl.cs</DependentUpon> <DependentUpon>IconControl.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="IconManager.resx"> <EmbeddedResource Include="Apps\IconManager.resx">
<DependentUpon>IconManager.cs</DependentUpon> <DependentUpon>IconManager.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ImageSelector.resx"> <EmbeddedResource Include="Controls\ImageSelector.resx">
<DependentUpon>ImageSelector.cs</DependentUpon> <DependentUpon>ImageSelector.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="infobox.resx"> <EmbeddedResource Include="Controls\infobox.resx">
<DependentUpon>infobox.cs</DependentUpon> <DependentUpon>infobox.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Jumper.resx"> <EmbeddedResource Include="Apps\KnowledgeInput.resx">
<DependentUpon>Jumper.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="KnowledgeInput.resx">
<DependentUpon>KnowledgeInput.cs</DependentUpon> <DependentUpon>KnowledgeInput.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ListViewEx.resx"> <EmbeddedResource Include="Apps\NameChanger.resx">
<DependentUpon>ListViewEx.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="NameChanger.resx">
<DependentUpon>NameChanger.cs</DependentUpon> <DependentUpon>NameChanger.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="NetGen.resx"> <EmbeddedResource Include="Apps\NetGen.resx">
<DependentUpon>NetGen.cs</DependentUpon> <DependentUpon>NetGen.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="NetModuleStatus.resx"> <EmbeddedResource Include="Controls\NetModuleStatus.resx">
<DependentUpon>NetModuleStatus.cs</DependentUpon> <DependentUpon>NetModuleStatus.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="NetworkBrowser.resx"> <EmbeddedResource Include="Apps\NetworkBrowser.resx">
<DependentUpon>NetworkBrowser.cs</DependentUpon> <DependentUpon>NetworkBrowser.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Notification.resx"> <EmbeddedResource Include="Controls\Notification.resx">
<DependentUpon>Notification.cs</DependentUpon> <DependentUpon>Notification.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="PanelManager.resx"> <EmbeddedResource Include="Apps\PanelManager.resx">
<DependentUpon>PanelManager.cs</DependentUpon> <DependentUpon>PanelManager.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Pong.resx"> <EmbeddedResource Include="Apps\Pong.resx">
<DependentUpon>Pong.cs</DependentUpon> <DependentUpon>Pong.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ProgressBarEX.resx"> <EmbeddedResource Include="Controls\ProgressBarEX.resx">
<DependentUpon>ProgressBarEX.cs</DependentUpon> <DependentUpon>ProgressBarEX.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx"> <EmbeddedResource Include="Properties\Resources.resx">
@ -556,52 +505,46 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
<LastGenOutput>Resources.Designer.cs</LastGenOutput> <LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="QuickChat.resx"> <EmbeddedResource Include="Apps\Shifter.resx">
<DependentUpon>QuickChat.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Shifter.resx">
<DependentUpon>Shifter.cs</DependentUpon> <DependentUpon>Shifter.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ShifterColorInput.resx"> <EmbeddedResource Include="Controls\ShifterColorInput.resx">
<DependentUpon>ShifterColorInput.cs</DependentUpon> <DependentUpon>ShifterColorInput.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ShifterGraphicInput.resx"> <EmbeddedResource Include="Controls\ShifterGraphicInput.resx">
<DependentUpon>ShifterGraphicInput.cs</DependentUpon> <DependentUpon>ShifterGraphicInput.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ShifterIntInput.resx"> <EmbeddedResource Include="Controls\ShifterIntInput.resx">
<DependentUpon>ShifterIntInput.cs</DependentUpon> <DependentUpon>ShifterIntInput.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ShifterTextInput.resx"> <EmbeddedResource Include="Controls\ShifterTextInput.resx">
<DependentUpon>ShifterTextInput.cs</DependentUpon> <DependentUpon>ShifterTextInput.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Shiftnet.resx"> <EmbeddedResource Include="Apps\Shiftnet.resx">
<DependentUpon>Shiftnet.cs</DependentUpon> <DependentUpon>Shiftnet.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ShiftnetDecryptor.resx"> <EmbeddedResource Include="Apps\ShiftnetDecryptor.resx">
<DependentUpon>ShiftnetDecryptor.cs</DependentUpon> <DependentUpon>ShiftnetDecryptor.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Shiftorium.resx"> <EmbeddedResource Include="Apps\Shiftorium.resx">
<DependentUpon>Shiftorium.cs</DependentUpon> <DependentUpon>Shiftorium.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ShiftOSDesktop.resx"> <EmbeddedResource Include="Desktop\ShiftOSDesktop.resx">
<DependentUpon>ShiftOSDesktop.cs</DependentUpon> <DependentUpon>ShiftOSDesktop.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="SkinLoader.resx"> <EmbeddedResource Include="Apps\SkinLoader.resx">
<DependentUpon>SkinLoader.cs</DependentUpon> <DependentUpon>SkinLoader.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Template.resx"> <EmbeddedResource Include="Apps\Terminal.resx">
<DependentUpon>Template.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Terminal.resx">
<DependentUpon>Terminal.cs</DependentUpon> <DependentUpon>Terminal.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="TextPad.resx"> <EmbeddedResource Include="Apps\TextPad.resx">
<DependentUpon>TextPad.cs</DependentUpon> <DependentUpon>TextPad.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="WidgetManager.resx"> <EmbeddedResource Include="Apps\WidgetManager.resx">
<DependentUpon>WidgetManager.cs</DependentUpon> <DependentUpon>WidgetManager.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="WindowBorder.resx"> <EmbeddedResource Include="Controls\WindowBorder.resx">
<DependentUpon>WindowBorder.cs</DependentUpon> <DependentUpon>WindowBorder.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<None Include="packages.config" /> <None Include="packages.config" />
@ -626,7 +569,7 @@
<None Include="Resources\MusicData.txt" /> <None Include="Resources\MusicData.txt" />
<None Include="bin\Debug\Newtonsoft.Json.dll" /> <None Include="bin\Debug\Newtonsoft.Json.dll" />
<None Include="bin\Debug\NetSockets.dll" /> <None Include="bin\Debug\NetSockets.dll" />
<Compile Include="Paths.cs" /> <Compile Include="HostLayer\Paths.cs" />
<None Include="Resources\3beepvirus.wav" /> <None Include="Resources\3beepvirus.wav" />
<None Include="Resources\anycolourshade.png" /> <None Include="Resources\anycolourshade.png" />
<None Include="Resources\anycolourshade2.png" /> <None Include="Resources\anycolourshade2.png" />
@ -964,14 +907,14 @@
<None Include="Resources\christmas_skin.jpg" /> <None Include="Resources\christmas_skin.jpg" />
<None Include="Resources\jumperplayer.bmp" /> <None Include="Resources\jumperplayer.bmp" />
<None Include="Resources\upgradeadvancedshifter.png" /> <None Include="Resources\upgradeadvancedshifter.png" />
<Compile Include="SaveSystem.cs" /> <Compile Include="Engine\SaveSystem.cs" />
<Compile Include="Shiftorium.cs"> <Compile Include="Apps\Shiftorium.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Shiftorium.Designer.cs"> <Compile Include="Apps\Shiftorium.Designer.cs">
<DependentUpon>Shiftorium.cs</DependentUpon> <DependentUpon>Shiftorium.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="skins.cs" /> <Compile Include="SkinEngine\skins.cs" />
<None Include="Resources\Icon.bmp" /> <None Include="Resources\Icon.bmp" />
<None Include="Resources\QuitButton.Image.png" /> <None Include="Resources\QuitButton.Image.png" />
<None Include="Resources\BeginButton.Image.png" /> <None Include="Resources\BeginButton.Image.png" />
@ -1002,25 +945,19 @@
<None Include="Resources\Hacker_JonathanRivard.txt" /> <None Include="Resources\Hacker_JonathanRivard.txt" />
<None Include="Resources\iconColourPicker.fw.png" /> <None Include="Resources\iconColourPicker.fw.png" />
<None Include="Resources\AustinWalkerCompletionStory.txt" /> <None Include="Resources\AustinWalkerCompletionStory.txt" />
<Compile Include="ShiftOSDesktop.cs"> <Compile Include="Desktop\ShiftOSDesktop.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="ShiftOSDesktop.Designer.cs"> <Compile Include="Desktop\ShiftOSDesktop.Designer.cs">
<DependentUpon>ShiftOSDesktop.cs</DependentUpon> <DependentUpon>ShiftOSDesktop.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Template.cs"> <Compile Include="Apps\Terminal.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Template.Designer.cs"> <Compile Include="Apps\Terminal.Designer.cs">
<DependentUpon>Template.cs</DependentUpon>
</Compile>
<Compile Include="Terminal.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Terminal.Designer.cs">
<DependentUpon>Terminal.cs</DependentUpon> <DependentUpon>Terminal.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="undo.cs" /> <Compile Include="Engine\undo.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<COMReference Include="AxWMPLib"> <COMReference Include="AxWMPLib">
@ -1041,6 +978,7 @@
<EmbedInteropTypes>True</EmbedInteropTypes> <EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference> </COMReference>
</ItemGroup> </ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\Baseclass.Contrib.Nuget.Output.2.0.0\build\net40\Baseclass.Contrib.Nuget.Output.targets" Condition="Exists('..\packages\Baseclass.Contrib.Nuget.Output.2.0.0\build\net40\Baseclass.Contrib.Nuget.Output.targets')" /> <Import Project="..\packages\Baseclass.Contrib.Nuget.Output.2.0.0\build\net40\Baseclass.Contrib.Nuget.Output.targets" Condition="Exists('..\packages\Baseclass.Contrib.Nuget.Output.2.0.0\build\net40\Baseclass.Contrib.Nuget.Output.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">