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

181 lines
159 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 name
{
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 icon
{
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;
}
}
2019-09-19 18:51:31 +02:00
public int availableAfter => 3;
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[] { "Level3 Icon made by NVidia" };
2019-10-05 17:49:56 +02:00
public bool isLowQuality => false;
Vector2 center;
Vector2 cannon;
Vector2 targ;
2019-09-15 16:21:56 +02:00
List<Vector2> targets;
double playerRot;
double cannonL;
double power;
bool firing;
uint lastTarget;
public void gameTick(GraphicsWrapper g, Panel minigamePanel, Timer minigameTimer, uint minigameTime)
{
try
{
Random random = new Random();
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);
if (Input.Action)
{
firing = true;
power = Math.Min(power + 5, 100);
}
else
if (firing)
{
firing = false;
List<Vector2> targetsToRemove = new List<Vector2>();
2019-10-05 17:49:56 +02:00
Rect tr = new Rect(targ, new Vector2(power, power), true);
for (int i = 0; i < targets.Count; i++)
{
if (targets[i].distanceToRectSquared(tr) <= 676)
targetsToRemove.Add(targets[i]);
}
targets = targets.Except(targetsToRemove.Distinct()).Distinct().ToList();
2019-10-05 17:49:56 +02:00
g.DrawRectangle(tr, Color.White);
g.DrawSizedString("TL", 10, tr.topLeftPoint.toPointF(), Brushes.Yellow);
g.DrawSizedString("TR", 10, tr.topRightPoint.toPointF(), Brushes.Yellow);
g.DrawSizedString("BL", 10, tr.bottomLeftPoint.toPointF(), Brushes.Yellow);
g.DrawSizedString("BR", 10, tr.bottomRightPoint.toPointF(), Brushes.Yellow);
g.DrawSizedString("CT", 10, tr.Location.toPointF(), Brushes.Blue);
power = 10;
}
targ = new Vector2(center);
targ.Tag = playerRot;
if (Input.Up)
cannonL += 100 / power;
if (Input.Down)
cannonL -= 100 / power;
if (Input.Right)
playerRot -= 80 / power;
2019-10-05 17:49:56 +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"));
}
}
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()); }
}
public void initGame(Panel minigamePanel, Timer minigameTimer)
{
center = new Vector2(minigamePanel.Width / 2, minigamePanel.Height / 2);
2019-09-15 16:21:56 +02:00
cannon = new Vector2(center);
targ = new Vector2(center);
targets = new List<Vector2>();
playerRot = 0;
cannonL = 30;
power = 10;
firing = false;
lastTarget = 0;
}
public void draw(GraphicsWrapper g, Panel minigamePanel, Timer minigameTimer, uint minigameTime)
{
2019-10-05 17:49:56 +02:00
g.DrawRectangle(new RectangleF(center.toPointF(), new SizeF(10, 10)), Color.Green);
g.DrawLine(center, cannon, Color.Green, 5);
for (int i = 0; i < targets.Count; i++)
{
g.DrawEllipse(new Rect(targets[i], new Vector2(26, 26), true), Color.Red);
g.DrawEllipse(new Rect(targets[i], new Vector2(13, 13), true), Color.White, false, 4.333f);
Vector2 mp = new Vector2(targets[i].X + ((((double)targets[i].Tag) * 0.2) - 12.9) + 0.1, targets[i].Y + 15);
g.DrawLine(mp, new Vector2(targets[i].X + 13, targets[i].Y + 15), Color.Gray, 3);
g.DrawLine(new Vector2(targets[i].X - 13, targets[i].Y + 15), mp, Color.Red, 3);
}
if (firing)
{
2019-10-05 17:49:56 +02:00
g.DrawRectangle(new Rect(targ, new Vector2(power, power), true), Color.Green, filled: false);
g.DrawLine(targ + new Vector2(-power / 2, 0), targ + new Vector2(power / 2, 0), Color.Green, 1);
g.DrawLine(targ + new Vector2(0, -power / 2), targ + new Vector2(0, power / 2), Color.Green, 1);
}
else
{
2019-10-05 17:49:56 +02:00
g.DrawRectangle(new RectangleF(targ.toPointF(), new SizeF(5, 5)), Color.Green);
}
}
}
}