This repository has been archived on 2022-08-05. You can view files and clone it, but cannot push or open issues or pull requests.
LaptopSimulator2015/2/2.cs

134 lines
31 KiB
C#
Raw Normal View History

2019-07-27 20:57:23 +02:00
using Base;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LaptopSimulator2015.Levels
{
class Lvl2 : Level
{
public string name
2019-07-27 20:57:23 +02:00
{
get {
switch (CultureInfo.CurrentUICulture.Name.Split('-')[0])
{
case "de":
return "Pentium 2 Download (gratis) (Kein Virus!)";
default:
return "Pentium 2 free download (No virus!)";
}
}
}
public string installerText
{
get {
switch (CultureInfo.CurrentUICulture.Name.Split('-')[0])
{
case "de":
return "Vielen Dank für diesen garantiert sicheren Download.\r\nBitte klicken sie \"Fortfahren\" um mit der Installation ihres Pentium-Prozessors fortzufahren.";
default:
return "Thank you for downloading this very secure Installer.\r\nPlease click \"Continue\" to continue the Installation of your Pentium 2.";
}
}
}
static Image _installer;
public Image icon
2019-07-27 20:57:23 +02:00
{
get {
if (_installer == null)
{
string __installer = "iVBORw0KGgoAAAANSUhEUgAAAMgAAAEICAYAAAAax7ueAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJTUUH4QseEDQYYrq76wAATCxJREFUeNrtnXecVNXZx7/PubO7gKBYYo+xRfE1tthgd0HRGGMsSTRYYk/s3dhAdsiEXUQJSuwlGqPRKGDvxoLAzoCKLQqiJqgo2FAWaTu7c8/z/nGHZcvM3Duzsw3u8/mMsjP33nPuOed3nnKeImcdfY8KICigiAiCen+r970oiCiCoGoxqgggAigYURALKoiApH9HLY53CYgi6t1gVIH0M1f9G8UgqCgGRfGegyqI4KjFinhtiyJ21TO9jkj6HoPiqGKb+qGoFYwoqooRvL4JYMHgounn4o0AButdYwRRC+q1Z8RrAwVHFLvq3RXEgFFFrfdepMfNeB3FIpTaFAq4xhCxFq8Jm25NiaCogkUosc36JWCBiLqoejPloCiCY10QUAwOFkFxRTDWIiIYXdU+lKhLo5r0GLm4EsHBYrC4GCK4uGIwaolYl5Q6GCyOuqRMBEctmu6rYy1qBGMVg9UVpmSFK2apivk2hflajfmqEeerRlvymTF2vkpkXkmD+7/fvPLXOnoQRQgppACkGDfpRL5vxHzVKJH5KuaDpO31nov7xkfa753YlFhqTXzvECAhtSZbL5HvXafXgiSRORCZlcSN/7ei/4xYLGbXtsEIAbJWcwVsUiLfNZrIvHrp9XbKuK+Urej35NGvxJa1ufiFtXOMQoCsRZSSSHKZ0+vzpERmrzQlz2uy3/1nvjB8STgyIUDWSmowkaUN6sxrNKWvNFi5/9Tnrn49HJUQIGstuZj6FU7Zhw1aMjXZJ3LP6Y9VvxGOSgiQtVeHUHRFpNfX9VI2faVjHjjriepH8QzfIYUAWVv1CGdFUkr+s1JKnkzW29vPe37st6t/rQkHKATIWkYC9VKypN4pfT0ZWefesx8ZcV/IJUKArPXS00pT+lXSKXtlmTg3Xvh4LLH6pyvD0QkBsnZyihWU1SVN5EVrqTnrqep3wkEJAbLWU5LId/Wm9GXXOH85+7HYa+GIhABZ68liVi51+sxKRnT8+Y/EnghHJARIqFSg9nvT+8OVpuwfdUsar4298qdUOCohQNZ6asD5Jim9HnaSzugznx/5RTgiIUBCEQpprHd6vb1cSsdc9ujwx8MRCQESEtAo5qukUzqpUdxRFz82qi4ckRAgoW6B2HonMjvplP75kodHPByOSAiQkICUmvoVTukLy8pKLo5OvPx/4YiEAAkJSBH5osGJ3DVn4w1H33HHmY3hiIQACcUoMdpoIv9bYaTmikevvCcckRAgIaUZxkpT+vYyU3JZ9KHLXgmHIwRISABIw0pT8pIYzrv44RHzwvEIARKSJ0olV1D2b+3V66wrHjx/YTgiIYUAASyyYoUpe3SllpwXe+ziunBEQgoBAqjoihWUTFpRkjw/NrlqWbgcQgoB4nGM5Ap6Pd6wTuT02P0XfL9Wr4Dh09dHSg1lDeuRkhJE+7b43YkopOpA6qnXlfSqXEJMbAiQNZJjSEO9KX3CJvucceXT5yxe414wNiUCJZvTaLbE0c1QtkDYHMvmCBsgrI+yPuj6IOsDZd6NKXBNs6TFzci1gPH+XSLgJiAabwSWAUuBJMJiVL5C9UsMC1H9EmUhol/hlCyAlV8SG5oKAdJtgUGqgchzdbb0tKseu+irng+E2q2w7Iw1OyBsD2wHuj0uWwMlGE1nDMf7vzT7NxlAkD+VAOunPzRl9JZV/26WIdx1gdJGovF5wFxEPkTth1j5EOu+z9gh34QA6TISTZrSN2xp6YlXPnD+3J4HhNmluN/tgTq7I7orsAuwCy7906/XU96kBNgR2BFNI9YAxoFo/AvgDZA3EX0T47xBbODnIUA6kmMgJHHm2kjJ6VWTL6ztOYCYvi3W2Rd0X2Bf3Lo9wJSt4UlMNgMOAz3Mqw3hQjT+OcpURKbhMI1YeZdtbrKm1QdxxfkiaSKXxiZf+K9uvzRGxn+EwwEoBwAHphdLSG1pPsLTwNMsXvIiN/4yGXKQvC1T1NdHSm/+06QLL+u2skds5rpYezBWD0I4ANiOMMNVENoK5WzgbDbsvxMwNwRIYB6ITZrSF+uSvY6/9pEzF8FF3Y9LGDkY9HBc9yCgrP068lpLlm/rPg51kCB6hggpcealIpHjYxMvmNm9OMW0/8OaY7H8CmFXQjZRLFrQmeJVjwWIqixdIb2qqh8+74ZuJD5tScoehdhhuFKR5m4hFVdc6PTAtJ4FEMWupOQl813kyOpXzu1615DYlP64pb9DOA7XrUCaDgBC6pid8eMQIFnIxflmhfQ68aqHz36+yzsTnb4nmDNw9XhgnVCC6jQKOUhbrmrcehuZHFn8kxOveqUL3RViU/rjlh2N2nNBdiWUobpgLYQAaUEpE/msMVl65JgnzprVdcCI746rF+PKMaBl3uFPSF1DNhSx0kq4m5KSm/88+dwLu6wTI2srMXIFLocSoqJ7kJMKOYirztdLS+xvrnvw3ETnc4vZpbhLjgW9HNg5XJHdir4nNnTRWgsQQXSlOE+WLtr5qOs6W9eIzeqDmzwLt+5yYJNwLYYKercCiBVZvkLM2eMmn/fPTm34/GfK6N//ZNzkn4DNwzXYrWneWgmQBhN5v5Q+B4ybfOqXndboxYnerGPPQrgcdNM1bCGtAL5B+AJlEcpShKVAHbAUpRHR5WAamt2zDKFlEjylBOgL2gu0L/ADYGOQLUB+kB63DTpPxJC1CyAKrkvpjVdNPuviTmv0jFklbNxwBmKrQDbtuQCQ91Gdi/Ax6KcIn2L0U5atWMD4g5d3Wk8ur+1HmQwA2QnsTiAD0rrbNkVfW3YtErGsmGX1ht+Nn3TWk53W6Kjph6PJccCAHnJ+0eCBQOaAvovIbCzvESn/uNvEhI+rXAq8nv605NB97J4YKQfKgf0gHeRVKBm7dnAQV8wnpvc6lePvPXlBpzQYTewBOj4dc9HNlVCNA9OBGTiNH/TUOG4mlK8EatMfGDbJYYct98Wxv8DKoQg/LWBXXdMBotSbyPOf6gaHTr73aLfDmxuZ2AKjNaAn0ZR1oNuQi/IOQi0itaRStVw1ZM2tPjX5aBdIpD+jiCW2J6XHIByDF0bsRym+LpvfFV3vlIhCC26DidSMn3RmrFP0jE2SF4OOAlmnGy2ThShPgzxDg30pLZ6EFI0PAs4BhtGUZaUNzaO6Yrs1koO4IssbpfS48ZNO63h9Y2RtJZK8FfhJN9AzLMjrKE8TkaeJDXyLNTy4vCCqrpgBzGDEtD8ScS4ALgDWbSV9dFl+5A4FiIp841pTMf7h0z7q0LcY8eqGOO41iP6erkVGCuQF0Ek4PEOs/OsQAQHJS/8TJZaYgNU/olwA9PPkHP63xgHERebX1Zs973jyzEUdCUGiM06E1Hg8O30XkbyB8k8ikYnE9vlyjVq4sdrNaWRbXJ3N1YM7PtlerPw7oIorp92Mca5BOBGVNYuDuGLe/ETXHzT5yaMbOm4gZ2yNm/g7MLSLQDEH1X9B6l/U7PcxaypZ3RNjnsAIROMLgDmIvAf2DYzOIDa4YxavZ7Q4iVGJ+3Ht8jUGII0ambLuzp//bHLszI6z1UcTJ+Ham5pYcOdREngCNXdQM+jFLtvRrRyKMgRha1R6I9qIykLgPZTXWc5LaVNrsWkLYAtUD/KyJgpE418BM9KfKTjlbxT1nGZ0eZcGyBXVitWIeXDCpDOP67DeXjlzExz3DuCITh6nD1H+jhu5k7H7fttlszUq/iuUB4DePld+B1xCdcU/2t/m9MNR80QedyxCeQGR53Ai/+7pImdROIiCukRumjDp9As6jmvEjwX3ZjrP/ycF8gjq3kpN5dRuYYGysjWivQNcuQFwG7HZ/yK2c0MH92olXmrRVWtpI4TjQI/DbbSMiteiTMThIWIVX699ABG1rlB93aTTY
Stream s = new MemoryStream(Convert.FromBase64String(__installer));
_installer = Image.FromStream(s);
s.Close();
}
return _installer;
}
}
2019-09-19 18:51:31 +02:00
public int availableAfter => 2;
2019-07-27 20:57:23 +02:00
public int gameClock => 17;
public Panel desktopIcon { get; set; }
public int installerProgressSteps => 500;
2019-09-26 22:24:45 +02:00
public Color backColor => Color.Black;
2019-09-29 11:23:07 +02:00
public string[] credits => new string[] { "Level2 Icon made by Intel" };
2019-10-05 17:49:56 +02:00
public bool isLowQuality => false;
2019-09-15 16:21:56 +02:00
List<Vector2> enemies;
Vector2 player;
int lives;
2019-07-27 20:57:23 +02:00
public void gameTick(GraphicsWrapper g, Panel minigamePanel, Timer minigameTimer, uint minigameTime)
2019-07-27 20:57:23 +02:00
{
try
{
Random random = new Random();
if (random.Next(0, 100000) < minigameTime + 1300)
2019-07-27 20:57:23 +02:00
{
int tst = random.Next(minigamePanel.Width * 2 + (minigamePanel.Height - 10) * 2);
if (tst <= minigamePanel.Width)
enemies.Add(new Vector2(tst, 0));
else if (tst <= minigamePanel.Width * 2)
enemies.Add(new Vector2(tst - minigamePanel.Width, minigamePanel.Height - 10));
else if (tst <= minigamePanel.Width * 2 + minigamePanel.Height - 10)
enemies.Add(new Vector2(0, tst - minigamePanel.Width * 2));
else
enemies.Add(new Vector2(0, tst - minigamePanel.Width * 2 - minigamePanel.Height + 10));
}
if (Input.Up)
2019-09-26 22:24:45 +02:00
player.Y += 5;
if (Input.Left)
player.X -= 5;
if (Input.Down)
2019-09-26 22:24:45 +02:00
player.Y -= 5;
if (Input.Right)
player.X += 5;
List<Vector2> enemiesToRemove = new List<Vector2>();
for (int i = 0; i < enemies.Count; i++)
{
enemies[i].moveTowards(player, Math.Max(6, Math.Sqrt(minigameTime / 100 + 1)));
for (int j = 0; j < enemies.Count; j++)
2019-07-27 20:57:23 +02:00
{
if (i != j && enemies[i].distanceFromSquared(enemies[j]) < 25 && !enemiesToRemove.Contains(enemies[j]))
enemiesToRemove.Add(enemies[i]);
2019-07-27 20:57:23 +02:00
}
if (player.distanceFromSquared(enemies[i]) < 100 && !enemiesToRemove.Contains(enemies[i]))
2019-07-27 20:57:23 +02:00
{
lives--;
enemiesToRemove.Add(enemies[i]);
if (lives <= 0)
throw new Exception("The VM was shut down to prevent damage to your Machine.", new Exception("0717750f-3508-4bc2-841e-f3b077c676fe"));
2019-07-27 20:57:23 +02:00
}
}
enemies = enemies.Except(enemiesToRemove.Distinct()).Distinct().ToList();
2019-07-27 20:57:23 +02:00
}
2019-09-14 14:00:28 +02:00
catch (Exception ex) { if (ex.InnerException?.Message == "0717750f-3508-4bc2-841e-f3b077c676fe") Misc.closeGameWindow.Invoke(); else Console.WriteLine(ex.ToString()); }
2019-07-27 20:57:23 +02:00
}
public void initGame(Panel minigamePanel, Timer minigameTimer)
2019-07-27 20:57:23 +02:00
{
2019-09-15 16:21:56 +02:00
enemies = new List<Vector2>();
2019-07-27 20:57:23 +02:00
player = new Vector2(minigamePanel.Width / 2, minigamePanel.Height / 2);
player.bounds_wrap = true;
2019-09-26 22:24:45 +02:00
player.bounds = new Rectangle(-5, -5, minigamePanel.Width + 10, minigamePanel.Height + 10);
2019-07-27 20:57:23 +02:00
lives = 3;
}
public void draw(GraphicsWrapper g, Panel minigamePanel, Timer minigameTimer, uint minigameTime)
{
for (int i = 0; i < enemies.Count; i++)
2019-09-26 22:24:45 +02:00
g.DrawRectangle(new RectangleF(enemies[i].toPointF(), new SizeF(10, 10)), Color.Red);
g.DrawRectangle(new RectangleF(player.toPointF(), new SizeF(10, 10)), Color.Green);
g.DrawSizedString(lives.ToString(), 7, player.toPointF(), Brushes.White, true, true);
}
2019-07-27 20:57:23 +02:00
}
}