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/3/3.cs

176 lines
160 KiB
C#
Raw Normal View History

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 Lvl3 : Level
{
public string installerHeader
{
get {
switch (CultureInfo.CurrentUICulture.Name.Split('-')[0])
{
case "de":
return "NVidia Geforce 630M Installationsassistent (gratis)";
default:
return "NVidia Geforce 630M Installer (free)";
}
}
}
public string installerText
{
get {
switch (CultureInfo.CurrentUICulture.Name.Split('-')[0])
{
case "de":
return "Thx 4 installiere gratis grapicz upgr8, ich hoffen es gefallen dir (bitte bewerten 5 Sterne und abonniere)!\r\niN todayz installer ich installiere u frei NVidia Geforec 630M\r\n\r\nTagz 4 Googl:\r\nftx fre\r\ngtx\r\nRTX 2080 ti kostenlose\r\ngta 6 frei\r\nWindows Office crack frei\r\ncrack\r\nhack";
default:
return "Thx 4 install free grapicz upgr8, I hope u like it (plz rate 5 starz and subscrib)!\r\niN todayz installer i install u free NVidia Geforec 630M\r\n\r\ntagz 4 googl:\r\nftx fre\r\ngtx\r\nRTX 2080 ti free\r\ngta 6 free\r\nwindows office crack free\r\ncrack\r\nhack";
}
}
}
static Image _installer;
public Image installerIcon
{
get {
if (_installer == null)
{
string __installer = "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
Stream s = new MemoryStream(Convert.FromBase64String(__installer));
_installer = Image.FromStream(s);
s.Close();
}
return _installer;
}
}
public int LevelNumber => 3;
public int gameClock => 17;
public Panel desktopIcon { get; set; }
public int installerProgressSteps => 500;
uint minigamePrevTime = 0;
Vector2 center;
Vector2 cannon;
Vector2 targ;
List<Vector2> targets = new List<Vector2>();
Rectangle player => new Rectangle(center.toPoint().X - 5, center.toPoint().Y - 5, 10, 10);
double playerRot = 0;
double cannonL = 30;
double power = 10;
bool firing = false;
uint lastTarget = 0;
public void gameTick(Graphics e, Panel minigamePanel, Timer minigameTimer, uint minigameTime)
{
BufferedGraphics buffer = BufferedGraphicsManager.Current.Allocate(e, new Rectangle(0, 0, minigamePanel.Width, minigamePanel.Height));
Graphics g = buffer.Graphics;
try
{
g.Clear(Color.Black);
g.FillRectangle(new SolidBrush(Color.Green), player);
g.DrawLine(new Pen(new SolidBrush(Color.Green), 5), center.toPoint(), cannon.toPoint());
for (int i = 0; i < targets.Count; i++)
{
g.DrawEllipse(new Pen(new SolidBrush(Color.Red), 6), new RectangleF(Misc.d2f(targets[i].X - 10), Misc.d2f(targets[i].Y - 10), 20, 20));
g.DrawEllipse(new Pen(new SolidBrush(Color.White), 6), new RectangleF(Misc.d2f(targets[i].X - 7), Misc.d2f(targets[i].Y - 7), 14, 14));
g.FillEllipse(new SolidBrush(Color.Red), new RectangleF(Misc.d2f(targets[i].X - 3), Misc.d2f(targets[i].Y - 3), 6, 6));
g.DrawLine(new Pen(new SolidBrush(Color.Gray), 3), Misc.d2f(targets[i].X - 13), Misc.d2f(targets[i].Y - 15), Misc.d2f(targets[i].X + 13), Misc.d2f(targets[i].Y - 15));
g.DrawLine(new Pen(new SolidBrush(Color.Red), 3), Misc.d2f(targets[i].X - 13), Misc.d2f(targets[i].Y - 15), Misc.d2f(targets[i].X + ((((double)targets[i].Tag) * 0.2) - 12.9) + 0.1), Misc.d2f(targets[i].Y - 15));
}
if (firing)
{
g.DrawRectangle(new Pen(new SolidBrush(Color.Green), 1), new Rectangle(Misc.d2i(targ.X - power / 2), Misc.d2i(targ.Y - power / 2), Misc.d2i(power), Misc.d2i(power)));
g.DrawLine(new Pen(new SolidBrush(Color.Green), 1), new PointF(Misc.d2i(targ.X), Misc.d2i(targ.Y - power / 2)), new PointF(Misc.d2i(targ.X), Misc.d2i(targ.Y + power / 2)));
g.DrawLine(new Pen(new SolidBrush(Color.Green), 1), new PointF(Misc.d2i(targ.X - power / 2), Misc.d2i(targ.Y)), new PointF(Misc.d2i(targ.X + power / 2), Misc.d2i(targ.Y)));
}
else
{
g.FillRectangle(new SolidBrush(Color.Green), new RectangleF(Misc.d2f(targ.X - 2.5f), Misc.d2f(targ.Y - 2.5f), 5, 5));
}
Random random = new Random();
if (minigameTime != minigamePrevTime)
{
minigamePrevTime = minigameTime;
if (minigameTime - lastTarget > 90 + 40 / (minigameTime / 100 + 1))
{
targets.Add(new Vector2(random.Next(minigamePanel.Height + 25) + (minigamePanel.Width - minigamePanel.Height - 50) / 2, random.Next(minigamePanel.Height)));
targets[targets.Count - 1].Tag = (double)130;
lastTarget = minigameTime;
}
cannon = new Vector2(center);
cannon.moveInDirection(Misc.deg2rad(playerRot), 20);
2019-08-25 16:21:07 +02:00
if (Input.Action)
{
firing = true;
power = Math.Min(power + 5, 100);
}
else
if (firing)
{
firing = false;
List<Vector2> targetsToRemove = new List<Vector2>();
for (int i = 0; i < targets.Count; i++)
{
if (targets[i].distanceFromSquared(targ) <= Math.Pow(power + 10, 2))
targetsToRemove.Add(targets[i]);
}
targets = targets.Except(targetsToRemove.Distinct()).Distinct().ToList();
g.FillRectangle(new SolidBrush(Color.White), new Rectangle(Misc.d2i(targ.X - power / 2), Misc.d2i(targ.Y - power / 2), Misc.d2i(power), Misc.d2i(power)));
power = 10;
}
targ = new Vector2(center);
targ.Tag = playerRot;
2019-08-25 16:21:07 +02:00
if (Input.Up)
cannonL += 100 / power;
2019-08-25 16:21:07 +02:00
if (Input.Down)
cannonL -= 100 / power;
2019-08-25 16:21:07 +02:00
if (Input.Right)
playerRot += 80 / power;
2019-08-25 16:21:07 +02:00
if (Input.Left)
playerRot -= 80 / power;
while (playerRot > 360)
playerRot -= 360;
while (playerRot < 0)
playerRot += 360;
cannonL = Math.Max(Math.Min(cannonL, minigamePanel.Height / 2), 22.5f);
targ.moveInDirection(Misc.deg2rad((double)targ.Tag), cannonL);
for (int i = 0; i < targets.Count; i++)
{
targets[i].Tag = ((double)targets[i].Tag) - 1;
if ((double)targets[i].Tag <= 0)
throw new Exception("The VM was shut down to prevent damage to your Machine.", new Exception("0717750f-3508-4bc2-841e-f3b077c676fe"));
}
}
buffer.Render();
buffer.Dispose();
}
catch (Exception ex) { if (ex.InnerException?.Message == "0717750f-3508-4bc2-841e-f3b077c676fe") throw new Exception(ex.Message); else Console.WriteLine(ex.ToString()); }
}
public void initGame(Graphics g, Panel minigamePanel, Timer minigameTimer)
{
center = new Vector2(minigamePanel.Width / 2, minigamePanel.Height / 2);
cannon = center;
targ = center;
targets = new List<Vector2>();
playerRot = 0;
cannonL = 30;
power = 10;
firing = false;
lastTarget = 0;
}
}
}