aboutsummaryrefslogtreecommitdiff
path: root/source/WindowsFormsApplication1/Hacking_Enemy.cs
diff options
context:
space:
mode:
authorMichael VanOverbeek <[email protected]>2016-04-09 13:16:39 -0400
committerMichael VanOverbeek <[email protected]>2016-04-09 13:16:39 -0400
commit14edb9eade65806b531e51a0ed1fba7c62ba848e (patch)
treeb8a0124d66ca9d414870a27de103e7be9a748081 /source/WindowsFormsApplication1/Hacking_Enemy.cs
parentcfb8690c6fbbb0595f8a3a4cd9f3210054a9680d (diff)
downloadshiftos-c-_theultimatehacker-14edb9eade65806b531e51a0ed1fba7c62ba848e.tar.gz
shiftos-c-_theultimatehacker-14edb9eade65806b531e51a0ed1fba7c62ba848e.tar.bz2
shiftos-c-_theultimatehacker-14edb9eade65806b531e51a0ed1fba7c62ba848e.zip
Uploaded source code for ShiftOS 0.1.1 Beta 2.3
Initial commit of repository.
Diffstat (limited to 'source/WindowsFormsApplication1/Hacking_Enemy.cs')
-rw-r--r--source/WindowsFormsApplication1/Hacking_Enemy.cs322
1 files changed, 322 insertions, 0 deletions
diff --git a/source/WindowsFormsApplication1/Hacking_Enemy.cs b/source/WindowsFormsApplication1/Hacking_Enemy.cs
new file mode 100644
index 0000000..8cec39f
--- /dev/null
+++ b/source/WindowsFormsApplication1/Hacking_Enemy.cs
@@ -0,0 +1,322 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace ShiftOS
+{
+ public partial class Hacking_Enemy : Form
+ {
+ public Hacking_Enemy(Hacking_YourHealth enemy, EnemyHacker thisHacker)
+ {
+ ThisHacker = thisHacker;
+ Enemy = enemy;
+ InitializeComponent();
+ }
+
+ private EnemyHacker ThisHacker { get; set; }
+ public Hacking_YourHealth Enemy { get; set; }
+ public List<Computer> AllComputers = null;
+ public Computer ThisPC { get; set; }
+ private void Hacking_Enemy_Load(object sender, EventArgs e)
+ {
+ AllComputers = new List<Computer>();
+ VisualizeNetwork();
+ tmrhealthdetect.Start();
+ ThisPC.Enemy = true;
+ }
+
+ private void VisualizeNetwork()
+ {
+ var rnd = new Random();
+ foreach (Module m in ThisHacker.Network)
+ {
+ var c = m.Deploy();
+ if (c.Type == SystemType.Core)
+ {
+ ThisPC = c;
+ ThisPC.EnemyComputer = Enemy.ThisPC;
+ Enemy.ThisPC.EnemyComputer = ThisPC;
+ }
+ c.Location = new Point(rnd.Next(100, 350), rnd.Next(100, 350));
+ AddModule(c);
+ }
+ }
+
+ public void System_Attacking(object s, EventArgs a)
+ {
+ int i = new Random().Next(Enemy.AllComputers.Count);
+ var pc = Enemy.AllComputers[i];
+ var se = (Computer)s;
+ pc.LaunchAttack(se.GetProperType());
+ }
+
+ public Computer SelectedComputer = null;
+
+ public void AddModule(Computer newModule)
+ {
+ var rnd = new Random();
+ panel1.Controls.Add(newModule);
+ foreach(var pc in AllComputers)
+ {
+ while (newModule.Bounds.IntersectsWith(pc.Bounds))
+ {
+ newModule.Location = new Point(rnd.Next(100, 350), rnd.Next(100, 350));
+ }
+ }
+ AllComputers.Add(newModule);
+ int hp = newModule.HP;
+ TotalHP += (decimal)newModule.HP;
+ newModule.Show();
+ newModule.OnDestruction += (object s, EventArgs a) =>
+ {
+ if(this.SelectedComputer == newModule)
+ {
+ SelectedComputer = null;
+ }
+ AllComputers.Remove(newModule);
+ newModule.Dispose();
+ };
+ newModule.Select += (object s, EventArgs a) =>
+ {
+ bool c = true;
+ foreach(var pc in Enemy.SelectedComputer.Enemies)
+ {
+ if(pc.Hostname == newModule.Hostname)
+ {
+ c = false;
+ }
+ }
+ if (c == true)
+ {
+ Enemy.SelectedComputer.Enemies.Add(newModule);
+ Enemy.ShowPCInfo(Enemy.SelectedComputer.Hostname);
+ if(Enemy.IsTutorial)
+ {
+ if(Enemy.TutorialProgress == 9)
+ {
+ Enemy.SetupTutorialUI(10);
+ }
+ }
+ }
+ };
+ newModule.HP_Decreased += new EventHandler(System_Damaged);
+ newModule.OnRepair += new EventHandler(System_Repaired);
+ if (newModule.Type == SystemType.Antivirus)
+ {
+ var b = newModule.GetAreaOfEffect();
+ newModule.AntivirusRepair += (object s, EventArgs a) =>
+ {
+ foreach (Computer pc in AllComputers)
+ {
+ if (pc != newModule && pc.Bounds.IntersectsWith(b))
+ {
+ if (newModule.Type == SystemType.RepairModule)
+ {
+ if (pc.HP < newModule.HP)
+ {
+ if (pc.HP < pc.GetTotal())
+ {
+ pc.Repair(1);
+ }
+ }
+
+ }
+ else {
+ if (pc.HP < 10)
+ {
+ pc.Repair(1);
+ }
+ }
+ }
+ }
+ };
+ }
+ if (newModule.Type == SystemType.Firewall)
+ {
+ panel1.Refresh();
+ Firewall_Deflect(newModule);
+ }
+ if (newModule.Type == SystemType.ServerStack)
+ {
+ newModule.MassDDoS += (object s, EventArgs a) =>
+ {
+ Enemy.Worm();
+ };
+ }
+ }
+
+ public void Firewall_Deflect(Computer fwall)
+ {
+ //Safegaurd...
+ if (fwall.Type == SystemType.Firewall)
+ {
+ var r = fwall.GetAreaOfEffect();
+ foreach (var pc in AllComputers)
+ {
+ if (pc != fwall)
+ {
+ if (pc.Bounds.IntersectsWith(r))
+ {
+ pc.DamageDefector = fwall.Grade;
+ }
+ }
+ }
+ }
+ }
+
+ public void Firewall_Destroy(Computer fwall)
+ {
+ //Safegaurd...
+ if (fwall.Type == SystemType.Firewall)
+ {
+ var r = fwall.GetAreaOfEffect();
+ foreach (var pc in AllComputers)
+ {
+ if (pc.Bounds.IntersectsWith(r))
+ {
+ pc.DamageDefector = 1;
+ UpdateFirewalls();
+ }
+ }
+ }
+ }
+
+ public void UpdateFirewalls()
+ {
+ foreach (var pc in AllComputers)
+ {
+ if (pc.Type == SystemType.Firewall)
+ {
+ Firewall_Deflect(pc);
+ }
+ }
+ }
+
+
+ private void System_Repaired(object s, EventArgs e)
+ {
+ var c = (Computer)s;
+ lbcompromised.Text = "System regenerating...";
+ int location = c.Left - (lbcompromised.Width / 4);
+ int y = c.Top - 25;
+ lbcompromised.Location = new Point(location, y);
+ lbcompromised.Show();
+ c.Flash(lbcompromised);
+
+ }
+
+
+ private void System_Damaged(object s, EventArgs e)
+ {
+ var c = (Computer)s;
+ lbcompromised.Text = "System damaged!";
+ int location = c.Left - (lbcompromised.Width / 4);
+ int y = c.Top - 25;
+ lbcompromised.Location = new Point(location, y);
+ lbcompromised.Show();
+ c.Flash(lbcompromised);
+ }
+
+ private decimal TotalHP = 0;
+
+ private void tmrhealthdetect_Tick(object sender, EventArgs e)
+ {
+ decimal health = 0;
+
+ var rnd = new Random();
+ int chance = 0;
+ foreach (var pc in AllComputers)
+ {
+ if (pc.Disabled == false)
+ {
+ foreach (var enemy in Enemy.AllComputers)
+ {
+ chance = rnd.Next(1, 20);
+ if (chance == 10)
+ {
+ if (Enemy.IsTutorial)
+ {
+ if (Enemy.TutorialProgress == 9)
+ {
+ Enemy.ThisPC.LaunchAttack(pc.GetProperType(), pc.GetDamageRate());
+ }
+ else if (Enemy.TutorialProgress == 32)
+ {
+ enemy.LaunchAttack(pc.GetProperType(), pc.GetDamageRate());
+ }
+ else
+ {
+ enemy.Enemies.Clear();
+ }
+ }
+ else {
+ enemy.LaunchAttack(pc.GetProperType(), pc.GetDamageRate());
+ }
+ }
+ }
+ }
+ }
+
+ foreach (var pc in AllComputers)
+ {
+ health += (decimal)pc.HP;
+ }
+ try {
+ decimal percent = (health / TotalHP) * 100;
+ lbstats.Text = $"Enemy Health: {percent}%";
+ if (ThisPC.HP <= 0)
+ {
+ if (Enemy.IsTutorial)
+ {
+ Enemy.SetupTutorialUI(33);
+ }
+ else {
+ API.CreateInfoboxSession("You won.", "You have successfully overthrown the enemy network.", infobox.InfoboxMode.Info);
+ UserRequestedClose = false;
+ Enemy.UserRequestedClose = false;
+ Enemy.Close();
+ this.Close();
+ }
+ }
+ }
+ catch(Exception ex)
+ {
+
+ }
+ }
+
+ public void Worm()
+ {
+ var rnd = new Random();
+ int r = rnd.Next(0, 10);
+
+ foreach (Computer c in AllComputers)
+ {
+ if(r == 5)
+ {
+ c.Disable();
+ }
+ }
+ }
+
+ public bool UserRequestedClose = true;
+
+ private void this_Closing(object sender, FormClosingEventArgs e)
+ {
+ if(UserRequestedClose == false)
+ {
+ tmrhealthdetect.Stop();
+ foreach(var pc in AllComputers)
+ {
+ pc.HP = 0;
+ }
+ }
+ }
+ }
+}