Compare commits

...

23 Commits
v1.0 ... master

Author SHA1 Message Date
J. Fronny a42306b0b1 Add LICENSE 2020-06-27 16:29:30 +00:00
J. Fronny b7a29ce224 Merge branch 'renovate/configure' into 'master'
Configure Renovate

See merge request JFronny/LaptopSimulator2015!1
2020-06-23 11:57:27 +00:00
Renovate Bot dc46269b4f
Add renovate.json 2020-06-23 08:55:02 +00:00
CreepyCrafter24 739a35d00f Removed CC-Functions dependency 2019-10-12 10:37:20 +02:00
CreepyCrafter24 a0da4df4e3 Minimal change: quality feature implemented in tick function 2019-10-09 18:59:31 +02:00
CreepyCrafter24 2c949a745c tweaked make.bat and .gitignore to reflect other changes 2019-10-07 17:37:55 +02:00
CreepyCrafter24 1aebfb2ccf Fixed some stuff (Drawing is now working, yay) 2019-10-07 17:26:55 +02:00
CreepyCrafter24 148c1f9b83 Some improvements (Physics in Level 3 still not fixed, added some debugging) 2019-10-06 17:13:10 +02:00
CreepyCrafter24 6c8cdd2af2 Some ToDos 2019-10-05 17:49:56 +02:00
CreepyCrafter24 35ecfcd98b Added exit-statement to make.bat 2019-10-05 16:13:57 +02:00
CreepyCrafter24 9f054ccdc4 Added stuff 2019-10-05 16:12:18 +02:00
CreepyCrafter24 4bf91056ff Added first content to the Tutorial-form. The installation minigame is to be added. 2019-09-29 18:24:45 +02:00
CreepyCrafter24 0bcc3c08b5 Added PoC credits 2019-09-29 11:23:07 +02:00
CreepyCrafter24 4ecf0b122a Added basis for tutorial (ToDo), now uses .Net 4.8 (should work fine) 2019-09-28 19:05:06 +02:00
CreepyCrafter24 d3494903b8 Fixed Subtitle-Thread crashing when exiting before the subtitles are fully played back 2019-09-28 18:40:40 +02:00
CreepyCrafter24 91c4e4a898 Added stuff 2019-09-27 08:59:21 +02:00
CreepyCrafter24 21c3ba85db Some stuff 2019-09-26 22:24:45 +02:00
CreepyCrafter24 1fca2fe8d2 Updated ToDo 2019-09-26 20:48:23 +02:00
CreepyCrafter24 8549ee0da8 Quick Graphics Wrapper, moved Level testing to singular Binary 2019-09-26 20:44:45 +02:00
CreepyCrafter24 9645a01445 Added Debug Menu, Menu changes 2019-09-26 19:10:39 +02:00
CreepyCrafter24 b4439c4708 Added Glitches (+ small fix) 2019-09-19 18:51:31 +02:00
CreepyCrafter24 8c11682cc0 New features to smooth gameplay and storytelling 2019-09-15 21:31:36 +02:00
CreepyCrafter24 7c62a71358 Some minor polishing 2019-09-15 16:21:56 +02:00
106 changed files with 3694 additions and 3372 deletions

5
.gitignore vendored
View File

@ -1,3 +1,8 @@
BUILD/*
tmp/*
tmp1/*
tmp2/*
tmp3/*
# Created by https://www.gitignore.io/api/csharp,visualstudio
# Edit at https://www.gitignore.io/?templates=csharp,visualstudio

149
1/1.cs
View File

@ -13,7 +13,7 @@ namespace LaptopSimulator2015.Levels
class Lvl1 : Level
{
static Image _installer;
public string installerHeader
public string name
{
get {
switch (CultureInfo.CurrentUICulture.Name.Split('-')[0])
@ -39,7 +39,7 @@ namespace LaptopSimulator2015.Levels
}
}
public Image installerIcon
public Image icon
{
get {
if (_installer == null)
@ -53,103 +53,92 @@ namespace LaptopSimulator2015.Levels
}
}
public int LevelNumber => 1;
public int availableAfter => 1;
public int gameClock => 17;
public Panel desktopIcon { get; set; }
public int installerProgressSteps => 500;
public Color backColor => Color.Black;
public string[] credits => new string[] { "Level1 Icon made by Oliver Scholtz from www.iconfinder.com" };
public bool isLowQuality => false;
List<Vector2> invadersAliens = new List<Vector2>();
List<Vector2> invadersBullets = new List<Vector2>();
Vector2 invadersPlayer;
uint minigamePrevTime = 0;
bool invadersCanShoot = true;
double speedMod = 5;
List<Vector2> enemies;
List<Vector2> bullets;
Vector2 player;
double speedMod;
bool enemiesCanShoot;
public void gameTick(Graphics e, Panel minigamePanel, Timer minigameTimer, uint minigameTime)
public void gameTick(GraphicsWrapper g, 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);
for (int i = 0; i < invadersAliens.Count; i++)
{
g.FillRectangle(new SolidBrush(Color.Red), new Rectangle(invadersAliens[i].toPoint(), new Size(10, 10)));
}
for (int i = 0; i < invadersBullets.Count; i++)
{
g.FillRectangle(new SolidBrush(Color.White), new Rectangle(invadersBullets[i].toPoint(), new Size(5, 5)));
}
g.FillRectangle(new SolidBrush(Color.Green), new Rectangle(invadersPlayer.toPoint(), new Size(10, 10)));
Random random = new Random();
if (minigameTime != minigamePrevTime)
if (random.Next(0, 100000) < minigameTime + 1300)
enemies.Add(new Vector2(minigamePanel.Width, random.Next(minigamePanel.Height - 10)));
for (int i = 0; i < enemies.Count; i++)
{
minigamePrevTime = minigameTime;
if (random.Next(0, 100000) < minigameTime + 1300)
invadersAliens.Add(new Vector2(minigamePanel.Width, random.Next(minigamePanel.Height - 10)));
for (int i = 0; i < invadersAliens.Count; i++)
enemies[i].X -= 1.2;
if (player.distanceFromSquared(enemies[i]) < 100 | enemies[i].X < 0)
{
invadersAliens[i].X -= 1.2;
if (invadersPlayer.distanceFromSquared(invadersAliens[i]) < 100 | invadersAliens[i].X < 0)
{
throw new Exception("The VM was shut down to prevent damage to your Machine.", new Exception("0717750f-3508-4bc2-841e-f3b077c676fe"));
}
}
invadersCanShoot = invadersCanShoot | !Input.Action;
List<Vector2> aliensToRemove = new List<Vector2>();
List<Vector2> bulletsToRemove = new List<Vector2>();
for (int i = 0; i < invadersBullets.Count; i++)
{
invadersBullets[i].X += 4;
for (int j = 0; j < invadersAliens.Count; j++)
{
if (invadersBullets[i].distanceFromSquared(invadersAliens[j] + new Vector2(2.5f, 2.5f)) < 56.25f)
{
aliensToRemove.Add(invadersAliens[j]);
bulletsToRemove.Add(invadersBullets[i]);
}
}
if (invadersBullets[i].X > minigamePanel.Width)
bulletsToRemove.Add(invadersBullets[i]);
}
invadersAliens = invadersAliens.Except(aliensToRemove.Distinct()).Distinct().ToList();
invadersBullets = invadersBullets.Except(bulletsToRemove.Distinct()).Distinct().ToList();
speedMod += 0.1;
speedMod = Math.Max(Math.Min(speedMod, 5), 1);
if (Input.Up)
invadersPlayer.Y -= speedMod;
if (Input.Left)
invadersPlayer.X -= speedMod;
if (Input.Down)
invadersPlayer.Y += speedMod;
if (Input.Right)
invadersPlayer.X += speedMod;
if (Input.Action & invadersCanShoot)
{
invadersBullets.Add(new Vector2(0, 2.5) + invadersPlayer);
invadersCanShoot = false;
speedMod--;
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();
enemiesCanShoot = enemiesCanShoot | !Input.Action;
List<Vector2> enemiesToRemove = new List<Vector2>();
List<Vector2> bulletsToRemove = new List<Vector2>();
for (int i = 0; i < bullets.Count; i++)
{
bullets[i].X += 4;
for (int j = 0; j < enemies.Count; j++)
{
if (bullets[i].distanceFromSquared(enemies[j]) < 56.25f)
{
enemiesToRemove.Add(enemies[j]);
bulletsToRemove.Add(bullets[i]);
}
}
if (bullets[i].X > minigamePanel.Width)
bulletsToRemove.Add(bullets[i]);
}
enemies = enemies.Except(enemiesToRemove.Distinct()).Distinct().ToList();
bullets = bullets.Except(bulletsToRemove.Distinct()).Distinct().ToList();
speedMod += 0.1;
speedMod = Math.Max(Math.Min(speedMod, 5), 1);
if (Input.Up)
player.Y += speedMod;
if (Input.Left)
player.X -= speedMod;
if (Input.Down)
player.Y -= speedMod;
if (Input.Right)
player.X += speedMod;
if (Input.Action & enemiesCanShoot)
{
bullets.Add(new Vector2(player));
enemiesCanShoot = false;
speedMod--;
}
}
catch (Exception ex) { if (ex.InnerException?.Message == "0717750f-3508-4bc2-841e-f3b077c676fe") Misc.closeGameWindow.Invoke(); else Console.WriteLine(ex.ToString()); }
}
public void initGame(Graphics g, Panel minigamePanel, Timer minigameTimer)
public void initGame(Panel minigamePanel, Timer minigameTimer)
{
invadersPlayer = new Vector2(minigamePanel.Width / 4, minigamePanel.Height / 2);
invadersPlayer.bounds_wrap = true;
invadersPlayer.bounds = new Rectangle(-10, -10, minigamePanel.Width + 10, minigamePanel.Height + 10);
invadersAliens = new List<Vector2>();
invadersBullets = new List<Vector2>();
minigamePrevTime = 0;
invadersCanShoot = true;
enemies = new List<Vector2>();
bullets = new List<Vector2>();
speedMod = 5;
enemiesCanShoot = true;
player = new Vector2(minigamePanel.Width / 4, minigamePanel.Height / 2);
player.bounds_wrap = true;
player.bounds = new Rectangle(-5, -5, minigamePanel.Width + 10, minigamePanel.Height + 10);
}
public void draw(GraphicsWrapper g, Panel minigamePanel, Timer minigameTimer, uint minigameTime)
{
for (int i = 0; i < enemies.Count; i++)
g.DrawRectangle(new RectangleF(enemies[i].toPointF(), new SizeF(10, 10)), Color.Red);
for (int i = 0; i < bullets.Count; i++)
g.DrawRectangle(new RectangleF(bullets[i].toPointF(), new SizeF(5, 5)), Color.White);
g.DrawRectangle(new RectangleF(player.toPointF(), new SizeF(10, 10)), Color.Green);
}
}
}

View File

@ -9,9 +9,10 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>_1</RootNamespace>
<AssemblyName>1</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>

120
2/2.cs
View File

@ -13,7 +13,7 @@ namespace LaptopSimulator2015.Levels
{
class Lvl2 : Level
{
public string installerHeader
public string name
{
get {
switch (CultureInfo.CurrentUICulture.Name.Split('-')[0])
@ -40,7 +40,7 @@ namespace LaptopSimulator2015.Levels
}
static Image _installer;
public Image installerIcon
public Image icon
{
get {
if (_installer == null)
@ -54,84 +54,80 @@ namespace LaptopSimulator2015.Levels
}
}
public int LevelNumber => 2;
public int availableAfter => 2;
public int gameClock => 17;
public Panel desktopIcon { get; set; }
public int installerProgressSteps => 500;
List<Vector2> enemies = new List<Vector2>();
Vector2 player;
uint minigamePrevTime = 0;
uint lives = 3;
public Color backColor => Color.Black;
public string[] credits => new string[] { "Level2 Icon made by Intel" };
public bool isLowQuality => false;
public void gameTick(Graphics e, Panel minigamePanel, Timer minigameTimer, uint minigameTime)
List<Vector2> enemies;
Vector2 player;
int lives;
public void gameTick(GraphicsWrapper g, 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
{
for (int i = 0; i < enemies.Count; i++)
g.FillRectangle(new SolidBrush(Color.Red), new Rectangle(enemies[i].toPoint(), new Size(10, 10)));
g.FillRectangle(new SolidBrush(Color.Green), new Rectangle(player.toPoint(), new Size(10, 10)));
g.DrawString(lives.ToString(), new Font("Tahoma", 7), Brushes.White, new Rectangle(player.toPoint(), new Size(10, 10)));
Random random = new Random();
if (minigameTime != minigamePrevTime)
if (random.Next(0, 100000) < minigameTime + 1300)
{
minigamePrevTime = minigameTime;
if (random.Next(0, 100000) < minigameTime + 1300)
{
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)
player.Y -= 5;
if (Input.Left)
player.X -= 5;
if (Input.Down)
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)));
if (player.distanceFromSquared(enemies[i]) < 100)
{
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"));
}
for (int j = 0; j < enemies.Count; j++)
{
if (i != j & enemies[i].distanceFromSquared(enemies[j]) < 25)
enemiesToRemove.Add(enemies[i]);
}
}
enemies = enemies.Except(enemiesToRemove.Distinct()).Distinct().ToList();
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));
}
buffer.Render();
buffer.Dispose();
if (Input.Up)
player.Y += 5;
if (Input.Left)
player.X -= 5;
if (Input.Down)
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++)
{
if (i != j && enemies[i].distanceFromSquared(enemies[j]) < 25 && !enemiesToRemove.Contains(enemies[j]))
enemiesToRemove.Add(enemies[i]);
}
if (player.distanceFromSquared(enemies[i]) < 100 && !enemiesToRemove.Contains(enemies[i]))
{
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"));
}
}
enemies = enemies.Except(enemiesToRemove.Distinct()).Distinct().ToList();
}
catch (Exception ex) { if (ex.InnerException?.Message == "0717750f-3508-4bc2-841e-f3b077c676fe") Misc.closeGameWindow.Invoke(); else Console.WriteLine(ex.ToString()); }
}
public void initGame(Graphics g, Panel minigamePanel, Timer minigameTimer)
public void initGame(Panel minigamePanel, Timer minigameTimer)
{
enemies = new List<Vector2>();
player = new Vector2(minigamePanel.Width / 2, minigamePanel.Height / 2);
player.bounds_wrap = true;
player.bounds = new Rectangle(-10, -10, minigamePanel.Width + 10, minigamePanel.Height + 10);
enemies = new List<Vector2>();
player.bounds = new Rectangle(-5, -5, minigamePanel.Width + 10, minigamePanel.Height + 10);
lives = 3;
}
public void draw(GraphicsWrapper g, Panel minigamePanel, Timer minigameTimer, uint minigameTime)
{
for (int i = 0; i < enemies.Count; i++)
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);
}
}
}

View File

@ -9,9 +9,10 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>_2</RootNamespace>
<AssemblyName>2</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>

167
3/3.cs
View File

@ -13,7 +13,7 @@ namespace LaptopSimulator2015.Levels
{
class Lvl3 : Level
{
public string installerHeader
public string name
{
get {
switch (CultureInfo.CurrentUICulture.Name.Split('-')[0])
@ -40,7 +40,7 @@ namespace LaptopSimulator2015.Levels
}
static Image _installer;
public Image installerIcon
public Image icon
{
get {
if (_installer == null)
@ -54,116 +54,91 @@ namespace LaptopSimulator2015.Levels
}
}
public int LevelNumber => 3;
public int availableAfter => 3;
public int gameClock => 17;
public Panel desktopIcon { get; set; }
public int installerProgressSteps => 500;
uint minigamePrevTime = 0;
public Color backColor => Color.Black;
public string[] credits => new string[] { "Level3 Icon made by NVidia" };
public bool isLowQuality => false;
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)
List<Vector2> targets;
double playerRot;
double cannonL;
double power;
bool firing;
uint lastTarget;
public void gameTick(GraphicsWrapper g, 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++)
Random random = new Random();
if (minigameTime - lastTarget > 90 + 40 / (minigameTime / 100 + 1))
{
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));
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;
}
if (firing)
cannon = new Vector2(center);
cannon.moveInDirection(Misc.deg2rad(playerRot), 20);
if (Input.Action)
{
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)));
firing = true;
power = Math.Min(power + 5, 100);
}
else
if (firing)
{
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);
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;
if (Input.Up)
cannonL += 100 / power;
if (Input.Down)
cannonL -= 100 / power;
if (Input.Right)
playerRot += 80 / power;
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);
firing = false;
List<Vector2> targetsToRemove = new List<Vector2>();
Rect tr = new Rect(targ, new Vector2(power, power), true);
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"));
if (targets[i].distanceToRectSquared(tr) <= 400)
targetsToRemove.Add(targets[i]);
}
targets = targets.Except(targetsToRemove.Distinct()).Distinct().ToList();
g.DrawRectangle(tr, Color.White);
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;
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") Misc.closeGameWindow.Invoke(); else Console.WriteLine(ex.ToString()); }
}
public void initGame(Graphics g, Panel minigamePanel, Timer minigameTimer)
public void initGame(Panel minigamePanel, Timer minigameTimer)
{
center = new Vector2(minigamePanel.Width / 2, minigamePanel.Height / 2);
cannon = center;
targ = center;
cannon = new Vector2(center);
targ = new Vector2(center);
targets = new List<Vector2>();
playerRot = 0;
cannonL = 30;
@ -171,5 +146,29 @@ namespace LaptopSimulator2015.Levels
firing = false;
lastTarget = 0;
}
public void draw(GraphicsWrapper g, Panel minigamePanel, Timer minigameTimer, uint minigameTime)
{
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)
{
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
{
g.DrawRectangle(new RectangleF(targ.toPointF(), new SizeF(5, 5)), Color.Green);
}
}
}
}

View File

@ -9,9 +9,10 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>_3</RootNamespace>
<AssemblyName>3</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>

497
3g/3.cs Normal file

File diff suppressed because one or more lines are too long

View File

@ -4,17 +4,17 @@
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{741EE70E-4CED-40EB-89F2-BD77D41FECED}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>lv2_t</RootNamespace>
<AssemblyName>lv2_t</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<ProjectGuid>{E61E2797-62B4-471C-ACBF-31EAB7C746CF}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>LaptopSimulator2015.Levels</RootNamespace>
<AssemblyName>3g</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
@ -24,7 +24,6 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
@ -35,55 +34,28 @@
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="3.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Base\Base.csproj">
<Project>{9a9561a7-dd5f-43a5-a3f5-a95f35da204d}</Project>
<Project>{9A9561A7-DD5F-43A5-A3F5-A95F35DA204D}</Project>
<Name>Base</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>if not exist "$(SolutionDir)tmp1" mkdir "$(SolutionDir)tmp1"
copy "$(TargetPath)" "$(SolutionDir)tmp1"</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -5,11 +5,11 @@ using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("SIT")]
[assembly: AssemblyTitle("3g")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SIT")]
[assembly: AssemblyProduct("3g")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@ -20,7 +20,7 @@ using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("d80dbbf2-307f-40a0-86f1-871c8daa394b")]
[assembly: Guid("e61e2797-62b4-471c-acbf-31eab7c746cf")]
// Version information for an assembly consists of the following four values:
//

253
4/4.cs
View File

@ -10,7 +10,7 @@ namespace LaptopSimulator2015.Levels
{
class Lvl4 : Level
{
public string installerHeader
public string name
{
get {
switch (CultureInfo.CurrentUICulture.Name.Split('-')[0])
@ -37,7 +37,7 @@ namespace LaptopSimulator2015.Levels
}
static Image _installer;
public Image installerIcon
public Image icon
{
get {
if (_installer == null)
@ -51,185 +51,150 @@ namespace LaptopSimulator2015.Levels
}
}
public int LevelNumber => 4;
public int availableAfter => 4;
public int gameClock => 17;
public Panel desktopIcon { get; set; }
public int installerProgressSteps => 500;
uint minigamePrevTime = 0;
Random rnd = new Random();
Vector2 player = new Vector2();
Vector2 playerV = new Vector2();
public Color backColor => Color.Black;
public bool isLowQuality => false;
public string[] credits => new string[] { "Level4 Icon made by Microsoft" };
Random rnd;
Vector2 player;
Vector2 playerV;
double lazor;
double lazorTime;
double speed;
int jmpj;
List<Vector2> platforms = new List<Vector2>();
public void gameTick(Graphics e, Panel minigamePanel, Timer minigameTimer, uint minigameTime)
bool wasOnPlatform;
List<Vector2> platforms;
public void gameTick(GraphicsWrapper g, 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), player2rect());
bool onPlatform = false;
Random random = new Random();
speed = Math.Min(minigameTime / 200d, 2) + 0.5;
lazorTime -= Math.Min(minigameTime / 800, 2.5) + 0.5;
if (lazorTime <= 0)
{
g.DrawRectangle(new RectangleF((float)lazor, minigamePanel.Height / 2, 10, minigamePanel.Height), Color.Red);
if (lazorTime <= -2)
{
lazorTime = 100;
lazor = player.X;
}
else
{
if (player.X > lazor - 10 && player.X < lazor + 10)
throw new Exception("The VM was shut down to prevent damage to your Machine.", new Exception("0717750f-3508-4bc2-841e-f3b077c676fe"));
}
}
player.Y -= speed;
for (int i = 0; i < platforms.Count; i++)
{
g.FillRectangle(new SolidBrush(Color.White), plat2rect(i));
onPlatform |= isOnPlatform(i);
}
if (lazorTime >= 0 && lazorTime <= 30)
{
g.FillRectangle(new SolidBrush(Color.DarkGray), new RectangleF((float)lazor - 1, 0, 2, minigamePanel.Height));
g.FillRectangle(new SolidBrush(Color.Red), new RectangleF((float)lazor - 1, 0, 2, minigamePanel.Height - (float)Misc.map(0, 30, 0, minigamePanel.Height, lazorTime)));
}
Random random = new Random();
if (minigameTime != minigamePrevTime)
{
lazorTime -= minigameTime - minigamePrevTime;
minigamePrevTime = minigameTime;
if (lazorTime <= 0)
platforms[i].Y -= speed;
if (platforms[i].Y < 0)
{
g.FillRectangle(new SolidBrush(Color.Red), new RectangleF((float)lazor - 5, 0, 10, minigamePanel.Height));
if (lazorTime <= -2)
{
lazorTime = 40;
lazor = player.X;
}
else
{
if (player.X >= lazor - 5 && player.X <= lazor + 5)
throw new Exception("The VM was shut down to prevent damage to your Machine.", new Exception("0717750f-3508-4bc2-841e-f3b077c676fe"));
}
platforms[i].Y = minigamePanel.Height;
platforms[i].X = rnd.Next(minigamePanel.Width);
}
if (onPlatform)
playerV.Y = Math.Min(playerV.Y, 0);
else
playerV.Y += 1;
playerV.X /= 1.2f;
if (onPlatform)
jmpj = 10;
else
if (!Input.Up)
jmpj = 0;
if ((onPlatform || jmpj > 0) && Input.Up)
}
double movementFactor;
if (wasOnPlatform)
{
movementFactor = 2;
playerV.X *= 0.7;
playerV.Y = Math.Max(playerV.Y, 0);
}
else
{
movementFactor = 5;
playerV.X *= 0.9;
playerV.Y -= 1;
}
if (Input.Up)
{
if (wasOnPlatform || jmpj > 0)
{
playerV.Y -= jmpj / 6d + 1.5;
playerV.Y += jmpj / 6d + 1.5;
jmpj--;
}
double movementFactor = 15;
if (onPlatform)
movementFactor /= 4;
if (Input.Left)
playerV.X -= movementFactor;
if (Input.Right)
playerV.X += movementFactor;
player.X += playerV.X;
onPlatform = false;
if (playerV.Y < 0)
player.Y += playerV.Y;
else
for (int i = 0; i < playerV.Y / 2; i++)
{
for (int j = 0; j < platforms.Count; j++)
onPlatform |= isOnPlatform(j);
if (!onPlatform)
player.Y += 2;
}
List<Vector2> platformsToRemove = new List<Vector2>();
for (int i = 0; i < platforms.Count; i++)
{
platforms[i].Y += 1.7;
if (platforms[i].Y > minigamePanel.Height)
{
platforms[i].Y = 0;
platforms[i].X = rnd.Next(minigamePanel.Width);
}
}
if (player.Y > minigamePanel.Height)
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();
else
{
if (wasOnPlatform)
jmpj = 10;
else
jmpj = 0;
}
jmpj = Math.Max(0, jmpj);
if (Input.Left)
playerV.X -= movementFactor;
if (Input.Right)
playerV.X += movementFactor;
player.X += playerV.X;
if (playerV.Y > 0)
player.Y += playerV.Y;
else
for (int i = 0; i < (-playerV.Y) / 2; i++)
{
if (onPlatform)
break;
player.Y -= 2;
}
if (player.Y < 0)
throw new Exception("The VM was shut down to prevent damage to your Machine.", new Exception("0717750f-3508-4bc2-841e-f3b077c676fe"));
wasOnPlatform = onPlatform;
}
catch (Exception ex) { if (ex.InnerException?.Message == "0717750f-3508-4bc2-841e-f3b077c676fe") Misc.closeGameWindow.Invoke(); else Console.WriteLine(ex.ToString()); }
}
public void initGame(Graphics g, Panel minigamePanel, Timer minigameTimer)
public void initGame(Panel minigamePanel, Timer minigameTimer)
{
rnd = new Random();
playerV = new Vector2();
playerV.bounds = new Rectangle(-5, -20, 10, 40);
playerV.bounds = new Rectangle(-10, -20, 20, 40);
playerV.bounds_wrap = false;
platforms = new List<Vector2>();
for (int i = 0; i < 5; i++)
for (int j = 0; j < 2; j++)
platforms.Add(new Vector2(rnd.Next(minigamePanel.Width), i * (minigamePanel.Height / 5)));
player = new Vector2(platforms[0].X, -10);
{
platforms.Add(new Vector2(rnd.Next(minigamePanel.Width - 100) + 50, i * (minigamePanel.Height / 5)));
}
player = new Vector2(platforms[platforms.Count / 2].X, minigamePanel.Height + 10);
player.bounds = new Rectangle(-5, 0, minigamePanel.Width + 10, 0);
player.bounds_wrap = true;
lazor = player.X;
lazorTime = 50;
lazorTime = 100;
speed = 1;
wasOnPlatform = true;
}
RectangleF plat2rect(int platform) => new RectangleF((platforms[platform] - new Vector2(50, 5)).toPointF(), new SizeF(100, 10));
RectangleF player2rect() => new RectangleF((player - new Vector2(5, 5)).toPointF(), new SizeF(10, 10));
bool isOnPlatform(int platform)
bool onPlatform
{
calcDist(platform);
return ((double)platforms[platform].Tag) <= 20 && RectangleF.Intersect(player2rect(), plat2rect(platform)) != RectangleF.Empty && player.Y < platforms[platform].Y - 8;
get {
for (int i = 0; i < platforms.Count; i++)
{
Rect rect = new Rect(platforms[i], new Vector2(100, 10), true);
if (rect.doOverlap(new Rect(player, new Vector2(10, 10), true)) && platforms[i].Y + 11 > player.Y && player.Y > platforms[i].Y + 9)
return true;
}
return false;
}
}
void calcDist(int platform)
public void draw(GraphicsWrapper g, Panel minigamePanel, Timer minigameTimer, uint minigameTime)
{
RectangleF rect = plat2rect(platform);
if (player.X < rect.X)
g.DrawRectangle(new Rect(player, new Vector2(10, 10), true), Color.Green);
if (lazorTime >= 0 && lazorTime <= 80)
{
if (player.Y < rect.Y)
{
Vector2 diff = player - new Vector2(rect.X, rect.Y);
platforms[platform].Tag = diff.magnitude;
}
else if (player.Y > rect.Y + rect.Height)
{
Vector2 diff = player - new Vector2(rect.X, rect.Y + rect.Height);
platforms[platform].Tag = diff.magnitude;
}
else
{
platforms[platform].Tag = rect.X - player.X;
}
}
else if (player.X > rect.X + rect.Width)
{
if (player.Y < rect.Y)
{
Vector2 diff = player - new Vector2(rect.X + rect.Width, rect.Y);
platforms[platform].Tag = diff.magnitude;
}
else if (player.Y > rect.Y + rect.Height)
{
Vector2 diff = player - new Vector2(rect.X + rect.Width, rect.Y + rect.Height);
platforms[platform].Tag = diff.magnitude;
}
else
{
platforms[platform].Tag = player.X - rect.X + rect.Width;
}
}
else
{
if (player.Y < rect.Y)
{
platforms[platform].Tag = rect.Y - player.Y;
}
else if (player.Y > rect.Y + rect.Height)
{
platforms[platform].Tag = player.Y - (rect.Y + rect.Height);
}
else
{
platforms[platform].Tag = 0d;
}
float m = (float)Misc.map(0, 80, 0, minigamePanel.Height, lazorTime);
Vector2 mp = new Vector2(lazor, m);
g.DrawLine(mp, new Vector2(lazor, 0), Color.DarkGray, 2);
g.DrawLine(new Vector2(lazor, minigamePanel.Height), mp, Color.Red, 2);
}
for (int i = 0; i < platforms.Count; i++)
g.DrawRectangle(new Rect(platforms[i], new Vector2(100, 10), true), Color.White);
}
}
}

View File

@ -9,9 +9,10 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>_4</RootNamespace>
<AssemblyName>4</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>

View File

@ -9,9 +9,10 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Base</RootNamespace>
<AssemblyName>Base</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@ -43,10 +44,13 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Drawing.cs" />
<Compile Include="Glitch.cs" />
<Compile Include="Input.cs" />
<Compile Include="Level.cs" />
<Compile Include="Minigame.cs" />
<Compile Include="Misc.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Rect.cs" />
<Compile Include="Vector2.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

170
Base/Drawing.cs Normal file
View File

@ -0,0 +1,170 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Base
{
public sealed class GraphicsWrapper : IDisposable
{
BufferedGraphics _g;
Color backColor;
Rectangle targetSize;
public readonly Graphics g;
/// <summary>
/// Wrap the Graphics object with these excellent High-Quality functions
/// </summary>
/// <param name="g">The Graphics-object to wrap</param>
/// <param name="backColor">Color used when filling</param>
/// <param name="targetSize">The size of the device the Graphics are drawn to</param>
/// <param name="isLowQuality">Whether the quality should be ugly</param>
public GraphicsWrapper(Graphics g, Color backColor, Rectangle targetSize, bool isLowQuality = false)
{
_g = BufferedGraphicsManager.Current.Allocate(g ?? throw new ArgumentNullException(nameof(g)), targetSize);
this.g = _g.Graphics;
this.backColor = backColor;
this.targetSize = targetSize;
this.g.SmoothingMode = isLowQuality ? SmoothingMode.None : SmoothingMode.HighQuality;
this.g.InterpolationMode = isLowQuality ? InterpolationMode.Low : InterpolationMode.HighQualityBicubic;
this.g.CompositingMode = isLowQuality ? CompositingMode.SourceCopy : CompositingMode.SourceOver;
this.g.CompositingQuality = isLowQuality ? CompositingQuality.HighSpeed : CompositingQuality.HighQuality;
this.g.PixelOffsetMode = isLowQuality ? PixelOffsetMode.None : PixelOffsetMode.HighQuality;
}
/// <summary>
/// Draw a string with the given size
/// </summary>
/// <param name="text">The string to draw</param>
/// <param name="size">The font size of the string</param>
/// <param name="location">The location to draw the string at</param>
/// <param name="brush">The brush to draw the string with</param>
/// <param name="centered">Set to true if you want to draw the string around instead of left-down from the location</param>
public void DrawSizedString(string text, int size, PointF location, Brush brush, bool transform = true, bool centered = false)
{
SmoothingMode tmpS = g.SmoothingMode;
InterpolationMode tmpI = g.InterpolationMode;
CompositingMode tmpM = g.CompositingMode;
CompositingQuality tmpQ = g.CompositingQuality;
PixelOffsetMode tmpP = g.PixelOffsetMode;
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.CompositingMode = CompositingMode.SourceOver;
g.CompositingQuality = CompositingQuality.HighQuality;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
Font f = new Font("Tahoma", size);
SizeF s = g.MeasureString(text, f);
RectangleF r = new RectangleF(centered ? new PointF(location.X - s.Width / 2, location.Y - s.Height / 2) : location, s);
if (transform)
r = w2s(r);
g.DrawString(text, f, brush, r);
g.PixelOffsetMode = tmpP;
g.CompositingQuality = tmpQ;
g.CompositingMode = tmpM;
g.InterpolationMode = tmpI;
g.SmoothingMode = tmpS;
}
/// <summary>
/// Draws a rectangle
/// </summary>
/// <param name="rectangle">Use the PointF/SizeF Constructor as it is much more logical</param>
/// <param name="color">The color of the rectangle</param>
/// <param name="centered">Whether the rectangle should be drawn centered rather than down-left</param>
/// <param name="filled">Whether the rectangle should be filled</param>
/// <param name="unfilledLineSize">The size of the lines used when not filling</param>
public void DrawRectangle(RectangleF rectangle, Color color, bool centered = true, bool transform = true, bool filled = true, float unfilledLineSize = 1)
{
SizeF s = rectangle.Size;
PointF location = rectangle.Location;
RectangleF r = new RectangleF(centered ? new PointF(location.X - s.Width / 2, location.Y - s.Height / 2) : location, s);
if (transform)
r = w2s(r);
Brush b = new SolidBrush(color);
if (filled)
g.FillRectangle(b, r);
else
g.DrawRectangle(new Pen(b, unfilledLineSize), new Rectangle(Misc.f2i(r.X), Misc.f2i(r.Y), Misc.f2i(r.Width), Misc.f2i(r.Height)));
}
/// <summary>
/// Draws a rectangle
/// </summary>
/// <param name="rectangle">The rectangle to be drawn</param>
/// <param name="color">The color of the rectangle</param>
/// <param name="filled">Whether the rectangle should be filled</param>
/// <param name="unfilledLineSize">The size of the lines used when not filling</param>
public void DrawRectangle(Rect rectangle, Color color, bool filled = true, float unfilledLineSize = 1) => DrawRectangle(rectangle.toRectangleF(), color, false, true, filled, unfilledLineSize);
/// <summary>
/// Draws an ellipse
/// </summary>
/// <param name="rectangle">Use the PointF/SizeF Constructor as it is much more logical</param>
/// <param name="color">The color of the ellipse</param>
/// <param name="centered">Whether the ellipse should be drawn centered rather than down-left</param>
/// <param name="filled">Whether the ellipse should be filled</param>
/// <param name="unfilledLineSize">The size of the lines used when not filling</param>
public void DrawEllipse(RectangleF rectangle, Color color, bool centered = true, bool transform = true, bool filled = true, float unfilledLineSize = 1)
{
RectangleF r = rectangle;
if (transform)
r = w2s(r);
Brush b = new SolidBrush(color);
if (centered)
{
r = new RectangleF(new PointF(r.X - r.Width / 2, r.Y - r.Height / 2), r.Size);
}
if (filled)
g.FillEllipse(b, r);
else
g.DrawEllipse(new Pen(b, unfilledLineSize), new Rectangle(Misc.f2i(r.X), Misc.f2i(r.Y), Misc.f2i(r.Width), Misc.f2i(r.Height)));
}
/// <summary>
/// Draws a ellipse
/// </summary>
/// <param name="rectangle">The rectangle to draw the ellipse in</param>
/// <param name="color">The color of the ellipse</param>
/// <param name="filled">Whether the ellipse should be filled</param>
/// <param name="unfilledLineSize">The size of the lines used when not filling</param>
public void DrawEllipse(Rect rectangle, Color color, bool filled = true, float unfilledLineSize = 1) => DrawEllipse(rectangle.toRectangleF(), color, false, true, filled, unfilledLineSize);
/// <summary>
/// Draw a line connecting the vectors
/// </summary>
/// <param name="p1">Start of the line</param>
/// <param name="p2">End of the line</param>
/// <param name="color">Color to be used</param>
/// <param name="width">Width of the line in pixels</param>
public void DrawLine(Vector2 p1, Vector2 p2, Color color, float width, bool transform = true) => DrawLine(p1.toPointF(), p2.toPointF(), color, width, transform);
/// <summary>
/// Draw a line connecting the points
/// </summary>
/// <param name="p1">Start of the line</param>
/// <param name="p2">End of the line</param>
/// <param name="color">Color to be used</param>
/// <param name="width">Width of the line in pixels</param>
public void DrawLine(PointF p1, PointF p2, Color color, float width, bool transform = true) => g.DrawLine(new Pen(color, width), transform ? w2s(p1) : p1, transform ? w2s(p2) : p2);
/// <summary>
/// Clear the screen with the color provided when creating
/// </summary>
public void Clear() => g.Clear(backColor);
/// <summary>
/// Render and dispose
/// </summary>
public void Dispose()
{
g.Flush();
_g.Render();
g.Dispose();
_g.Dispose();
}
public RectangleF w2s(RectangleF from) => new RectangleF(w2s(new PointF(from.Left, from.Bottom)), from.Size);
public PointF w2s(PointF from) => new PointF(from.X, targetSize.Height - from.Y);
}
}

32
Base/Glitch.cs Normal file
View File

@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Base
{
public interface CaptchaGlitch
{
/// <summary>
/// The chance of the Glitch being called, must be bewteen 0 and 1. Set this to zero if it should not be called (select based on currentLevel)
/// </summary>
double chance { get; }
/// <summary>
/// The current level, intended for modifying the intensity of the Glitch
/// </summary>
int currentLevel { get; set; }
/// <summary>
/// If set to true this will always try to execute the glitch (check the chance)
/// </summary>
bool postGlitch { get; }
/// <summary>
/// Called with the selected chance after the player inputs a char to the Captcha-box
/// </summary>
/// <param name="inputChar">The character the player typed</param>
/// <param name="inputString">The string to be added to the Captcha-box, modified by previous CaptchaGlitch instances</param>
/// <param name="captchaChars">The characters which can be added to the CaptchaBox</param>
/// <param name="rnd">Random Number Generator shared between instances</param>
void apply(char inputChar, ref string inputString, char[] captchaChars, Random rnd);
}
}

View File

@ -9,12 +9,15 @@ using System.Windows.Input;
namespace Base
{
public class Input
public static class Input
{
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
private static extern short GetKeyState(int keyCode);
//public static bool IsKeyDown(Key key) => Keyboard.IsKeyDown(key);
static extern short GetKeyState(int keyCode);
/// <summary>
/// Check whether the Key is pressed
/// </summary>
/// <param name="key">Key to check</param>
/// <returns>Whether the key is pressed</returns>
public static bool IsKeyDown(Keys key)
{
try
@ -27,21 +30,32 @@ namespace Base
state |= 2;
return 1 == (state & 1);
}
catch (Exception e1)
catch (Exception e)
{
Console.WriteLine("Invader: IsKeyDown failed:\r\n" + e1.ToString());
Console.WriteLine("Invader: IsKeyDown failed:\r\n" + e.ToString());
return false;
}
/*Enum.TryParse(key.ToString(), out Key k);
if (k == Key.None)
return false;
return IsKeyDown(k);*/
}
/// <summary>
/// Unified input for going up
/// </summary>
public static bool Up => IsKeyDown(Keys.Up) || IsKeyDown(Keys.W);
/// <summary>
/// Unified input for going left
/// </summary>
public static bool Left => IsKeyDown(Keys.Left) || IsKeyDown(Keys.A);
/// <summary>
/// Unified input for going down
/// </summary>
public static bool Down => IsKeyDown(Keys.Down) || IsKeyDown(Keys.S);
/// <summary>
/// Unified input for going right
/// </summary>
public static bool Right => IsKeyDown(Keys.Right) || IsKeyDown(Keys.D);
/// <summary>
/// Unified input for doing something
/// </summary>
public static bool Action => IsKeyDown(Keys.Space) || IsKeyDown(Keys.Q) || IsKeyDown(Keys.E);
}
}

View File

@ -1,23 +0,0 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LaptopSimulator2015
{
public interface Level
{
string installerHeader { get; }
string installerText { get; }
Image installerIcon { get; }
int LevelNumber { get; }
int gameClock { get; }
Panel desktopIcon { get; set; }
int installerProgressSteps { get; }
void initGame(Graphics g, Panel minigamePanel, Timer minigameTimer);
void gameTick(Graphics g, Panel minigamePanel, Timer minigameTimer, uint minigameTime);
}
}

100
Base/Minigame.cs Normal file
View File

@ -0,0 +1,100 @@
using Base;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LaptopSimulator2015
{
public interface Minigame
{
/// <summary>
/// The minigames displayed name, found in installers title and tooltips
/// </summary>
string name { get; }
/// <summary>
/// The minigames icon, found in installers and on desktop
/// </summary>
Image icon { get; }
/// <summary>
/// Added to credits, to be used for crediting authours of used icons etc
/// </summary>
string[] credits { get; }
/// <summary>
/// Level on which the Minigame becomes visible
/// </summary>
int availableAfter { get; }
/// <summary>
/// Defines the delay between frames
/// </summary>
int gameClock { get; }
/// <summary>
/// Color to be painted to the Background before calling the draw method
/// </summary>
Color backColor { get; }
/// <summary>
/// In what quality to draw the frames
/// </summary>
bool isLowQuality { get; }
/// <summary>
/// DO NOT CHANGE! INTERNAL USE ONLY!
/// </summary>
Panel desktopIcon { get; set; }
/// <summary>
/// Called before each time before gameTick, to be used for resetting/initializing variables
/// </summary>
/// <param name="g">A temporary Graphics object, should not be used</param>
/// <param name="minigamePanel">The panel on which the minigame is displayed</param>
/// <param name="minigameTimer">The timer used for scheduling frames</param>
void initGame(Panel minigamePanel, Timer minigameTimer);
/// <summary>
/// Called physics frame
/// </summary>
/// <param name="g">Graphics object, to be used for drawing the scene</param>
/// <param name="minigamePanel">The panel on which the minigame is displayed</param>
/// <param name="minigameTimer">The timer used for scheduling frames</param>
/// <param name="minigameTime">The amount of total displayed frames</param>
void gameTick(GraphicsWrapper g, Panel minigamePanel, Timer minigameTimer, uint minigameTime);
/// <summary>
/// Called graphics frame
/// </summary>
/// <param name="g">Graphics object, to be used for drawing the scene</param>
/// <param name="minigamePanel">The panel on which the minigame is displayed</param>
/// <param name="minigameTimer">The timer used for scheduling frames</param>
/// <param name="minigameTime">The amount of total displayed frames</param>
void draw(GraphicsWrapper g, Panel minigamePanel, Timer minigameTimer, uint minigameTime);
}
public interface Level : Minigame
{
/// <summary>
/// Description shown on the installers first page
/// </summary>
string installerText { get; }
/// <summary>
/// Amount of seconds the minigame is to be played times ten
/// </summary>
int installerProgressSteps { get; }
}
public interface Goal : Minigame
{
/// <summary>
/// The level on which the Goal is reached
/// </summary>
int playableAfter { get; }
/// <summary>
/// The text displayed after the Minigame becomes visible
/// </summary>
string[] availableText { get; }
/// <summary>
/// The text displayed after finding out about the fact the Goal is not reached
/// </summary>
string[] incompleteText { get; }
/// <summary>
/// The text displayed after Goal is reached (NOT after the goals minigame is played)
/// </summary>
string[] completeText { get; }
}
}

View File

@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@ -8,7 +10,15 @@ namespace Base
{
public static class Misc
{
/// <summary>
/// Call to signal that the player failed
/// </summary>
public static Action closeGameWindow;
/// <summary>
/// Convert a double to a float
/// </summary>
/// <param name="input">Value to be converted</param>
/// <returns>Converted value</returns>
public static float d2f(double input)
{
float result = Convert.ToSingle(input);
@ -19,13 +29,57 @@ namespace Base
return result;
}
/// <summary>
/// Convert a float to an int
/// </summary>
/// <param name="input">Value to be converted</param>
/// <returns>Converted value</returns>
public static int f2i(float input) => (int)Math.Round(input);
/// <summary>
/// Convert a double to an int
/// </summary>
/// <param name="input">Value to be converted</param>
/// <returns>Converted value</returns>
public static int d2i(double input) => f2i(d2f(input));
/// <summary>
/// Convert an int to a float
/// </summary>
/// <param name="input">Value to be converted</param>
/// <returns>Converted value</returns>
public static float i2f(int input) => input;
/// <summary>
/// Convert an int to a double
/// </summary>
/// <param name="input">Value to be converted</param>
/// <returns>Converted value</returns>
public static double i2d(int input) => input;
/// <summary>
/// Convert a float to a double
/// </summary>
/// <param name="input">Value to be converted</param>
/// <returns>Converted value</returns>
public static double f2d(float input) => input;
/// <summary>
/// Convert a value in radians to a value in degrees
/// </summary>
/// <param name="input">Value to be converted</param>
/// <returns>Converted value</returns>
public static double rad2deg(double input) => (360 * input) / (2 * Math.PI);
/// <summary>
/// Convert a value in degrees to a value in radians
/// </summary>
/// <param name="input">Value to be converted</param>
/// <returns>Converted value</returns>
public static double deg2rad(double input) => ((2 * Math.PI) * input) / 360;
/// <summary>
/// Maps a number from one range of numbers to another
/// </summary>
/// <param name="originalStart">Start of the range the original number is in</param>
/// <param name="originalEnd">End of the range the original number is in</param>
/// <param name="newStart">Start of the range the new number is in</param>
/// <param name="newEnd">End of the range the new number is in</param>
/// <param name="value">Value to be mapped</param>
/// <returns>Mapped value</returns>
public static double map(double originalStart, double originalEnd, double newStart, double newEnd, double value)
{
double scale = (newEnd - newStart) / (originalEnd - originalStart);

77
Base/Rect.cs Normal file
View File

@ -0,0 +1,77 @@
using System;
using System.Drawing;
namespace Base
{
public struct Rect
{
/// <summary>
/// Create a rect from the provided data
/// </summary>
/// <param name="Location">Position</param>
/// <param name="Size">Rect's size</param>
/// <param name="centered">Whether the Rect should be created top-right or around the Location</param>
public Rect(Vector2 Location, Vector2 Size, bool centered = false) : this(Location.X, Location.Y, Size.X, Size.Y, centered) { }
/// <summary>
/// Create a rect from the provided data
/// </summary>
/// <param name="X">X in world-coordinates</param>
/// <param name="Y">Y in world-coordinates</param>
/// <param name="Width">Width</param>
/// <param name="Height">Height</param>
/// <param name="centered">Whether the Rect should be created top-right or around the Location</param>
public Rect(double X, double Y, double Width, double Height, bool centered = false)
{
this.X = X;
this.Y = Y;
this.Width = Width;
this.Height = Height;
if (centered)
{
this.X -= Width / 2;
this.Y -= Height / 2;
}
}
/// <summary>
/// Copies the Rect's data
/// </summary>
/// <param name="rect"></param>
public Rect(Rect rect)
{
X = rect.X;
Y = rect.Y;
Width = rect.Width;
Height = rect.Height;
}
/// <summary>
/// Copies the Rect's data
/// </summary>
/// <param name="rect"></param>
public Rect(Rectangle rect, bool transform = false) : this(rect.X, rect.Y, rect.Width, rect.Height, false) { }
/// <summary>
/// Copies the Rect's data
/// </summary>
/// <param name="rect"></param>
public Rect(RectangleF rect, bool transform = false) : this(rect.X, rect.Y, rect.Width, rect.Height, false) { }
public double X;
public double Y;
public double Width;
public double Height;
public Vector2 Location => new Vector2(X, Y);
public Vector2 Size => new Vector2(Width, Height);
public double Bottom => Y;
public double Top => Y + Height;
public double Left => X;
public double Right => X + Width;
public Vector2 bottomLeftPoint => new Vector2(Left, Bottom);
public Vector2 topLeftPoint => new Vector2(Left, Top);
public Vector2 bottomRightPoint => new Vector2(Right, Bottom);
public Vector2 topRightPoint => new Vector2(Right, Top);
public bool doOverlap(Rect other) => (Left <= other.Right && other.Left <= Right) || (Left >= other.Right && other.Left >= Right);
public Rectangle toRectangle() => new Rectangle(Misc.d2i(X), Misc.d2i(Y), Misc.d2i(Width), Misc.d2i(Height));
public RectangleF toRectangleF() => new RectangleF(Misc.d2f(X), Misc.d2f(Y), Misc.d2f(Width), Misc.d2f(Height));
}
}

View File

@ -7,9 +7,14 @@ using System.Threading.Tasks;
namespace Base
{
/// <summary>
/// Class for a 2-Dimensional Vector
/// </summary>
public class Vector2
{
/// <summary>
/// A new Vector with a value of zero
/// </summary>
public static readonly Vector2 Zero = new Vector2(Point.Empty);
double x_unchecked = 0;
double y_unchecked = 0;
@ -20,18 +25,34 @@ namespace Base
{
if (bounds_wrap)
{
if (bounds.X != 0 & bounds.Width < 0)
throw new ArgumentException("bounds.Width must be greater than or equal to 0");
while (bounds.X != 0 & x_unchecked > bounds.X + bounds.Width)
x_unchecked -= bounds.Width;
while (bounds.X != 0 & x_unchecked < bounds.X)
x_unchecked += bounds.Width;
if (bounds.Y != 0 & bounds.Height < 0)
throw new ArgumentException("bounds.Height must be greater than or equal to 0");
while (bounds.Y != 0 & y_unchecked > bounds.Y + bounds.Height)
y_unchecked -= bounds.Height;
while (bounds.Y != 0 & y_unchecked < bounds.Y)
y_unchecked += bounds.Height;
if (!(bounds.X == 0 && bounds.Width == 0))
{
if (bounds.Width == 0)
x_unchecked = bounds.X;
else
{
if (bounds.Width < 0)
throw new ArgumentException("bounds.Width must be greater than or equal to 0");
while (x_unchecked > bounds.X + bounds.Width)
x_unchecked -= bounds.Width;
while (x_unchecked < bounds.X)
x_unchecked += bounds.Width;
}
}
if (!(bounds.Y == 0 && bounds.Height == 0))
{
if (bounds.Height == 0)
y_unchecked = bounds.Y;
else
{
if (bounds.Height < 0)
throw new ArgumentException("bounds.Height must be greater than or equal to 0");
while (y_unchecked > bounds.Y + bounds.Height)
y_unchecked -= bounds.Height;
while (y_unchecked < bounds.Y)
y_unchecked += bounds.Height;
}
}
}
else
{
@ -40,6 +61,9 @@ namespace Base
}
}
}
/// <summary>
/// X-Coordinate of the Vector
/// </summary>
public double X
{
get {
@ -51,6 +75,9 @@ namespace Base
check();
}
}
/// <summary>
/// Y-Coordinate of the Vector
/// </summary>
public double Y
{
get {
@ -62,26 +89,70 @@ namespace Base
check();
}
}
/// <summary>
/// Bounds of the Vector, set both values for a axis to zero to ignore it
/// </summary>
public Rectangle bounds;
/// <summary>
/// Set to true if you want the Vector to wrap instead of 'cutting' when reaching the bound
/// </summary>
public bool bounds_wrap = false;
/// <summary>
/// Create a new Vector
/// </summary>
/// <param name="x">X coordinate</param>
/// <param name="y">Y coordinate</param>
public Vector2(double x = 0, double y = 0)
{
X = x;
Y = y;
}
/// <summary>
/// Create a new Vector
/// </summary>
/// <param name="from">Point to copy data from</param>
public Vector2(Point from)
{
X = from.X;
Y = from.Y;
}
/// <summary>
/// Create a new Vector
/// </summary>
/// <param name="from">Point to copy data from</param>
public Vector2(PointF from)
{
X = from.X;
Y = from.Y;
}
/// <summary>
/// Create a new Vector
/// </summary>
/// <param name="from">Size to copy data from</param>
public Vector2(Size from)
{
X = from.Width;
Y = from.Height;
}
/// <summary>
/// Create a new Vector
/// </summary>
/// <param name="from">Size to copy data from</param>
public Vector2(SizeF from)
{
X = from.Width;
Y = from.Height;
}
/// <summary>
/// Copy data from the Vector to a new one
/// </summary>
/// <param name="from">Vector to copy data from</param>
/// <param name="useProperties">Set to true to copy bounds etc</param>
public Vector2(Vector2 from, bool useProperties = false)
{
X = from.X;
@ -94,20 +165,91 @@ namespace Base
}
}
public Point toPoint() => new Point((int)Math.Round(X), (int)Math.Round(Y));
/// <summary>
/// Copy the Vectors axis to a point
/// </summary>
/// <returns>The new Point</returns>
public Point toPoint() => new Point(Misc.d2i(X), Misc.d2i(Y));
/// <summary>
/// Copy the Vectors axis to a point
/// </summary>
/// <returns>The new Point</returns>
public PointF toPointF() => new PointF(Misc.d2f(X), Misc.d2f(Y));
/// <summary>
/// Get the squared distance between this Vector and the other
/// </summary>
/// <param name="other">The other Vector</param>
/// <returns>Distance</returns>
public double distanceFromSquared(Vector2 other) => Math.Pow(X - other.X, 2) + Math.Pow(Y - other.Y, 2);
/// <summary>
/// Get the distance between this Vector and the other
/// </summary>
/// <param name="other">The other Vector</param>
/// <returns>Distance</returns>
public double distanceFrom(Vector2 other) => Math.Sqrt(distanceFromSquared(other));
public double distanceToRectSquared(Rect rect)
{
if (X < rect.X)
{
if (Y < rect.Bottom)
return distanceFromSquared(rect.bottomLeftPoint);
else if (Y > rect.Top)
return distanceFromSquared(rect.topLeftPoint);
else
return Math.Pow(rect.Left - X, 2);
}
else if (X > rect.X + rect.Width)
{
if (Y < rect.Bottom)
return distanceFromSquared(rect.bottomRightPoint);
else if (Y > rect.Top)
return distanceFromSquared(rect.topRightPoint);
else
return Math.Pow(X - rect.Right, 2);
}
else
{
if (Y < rect.Bottom)
return Math.Pow(rect.Bottom - Y, 2);
else if (Y > rect.Top)
return Y - rect.Top;
else
return 0d;
}
}
public double distanceToRect(Rect rect) => Math.Sqrt(distanceToRectSquared(rect));
/// <summary>
/// Provided for compatibility with some methods for other Vector implementations
/// </summary>
public double magnitude { get { return distanceFrom(Zero); } }
/// <summary>
/// Provided for compatibility with some methods for other Vector implementations
/// </summary>
public double sqrMagnitude { get { return distanceFromSquared(Zero); } }
/// <summary>
/// Move the Vector in the direction
/// </summary>
/// <param name="radians">The angle in radians</param>
/// <param name="distance">Distance to move the Vector</param>
public void moveInDirection(double radians = 0, double distance = 1)
{
X += Math.Cos(radians) * distance;
Y += Math.Sin(radians) * distance;
}
/// <summary>
/// Get the angle inbetween the X-Axis and a line between two poins
/// </summary>
/// <param name="other">The other point for the line</param>
/// <returns>Angle in Radians</returns>
public double getDirection(Vector2 other) => Math.Atan((other.X - X) / (other.Y - Y));
/// <summary>
/// Move the Vector towards the other Vector
/// </summary>
/// <param name="other">The other Vector</param>
/// <param name="distance">The distance to move</param>
/// <param name="stopAtTarget">Whether to stop at the target or to go through it</param>
public void moveTowards(Vector2 other, double distance = 1, bool stopAtTarget = true)
{
double dist = distanceFrom(other);
@ -126,23 +268,26 @@ namespace Base
}
}
public Vector2 addTag(object Tag) { this.Tag = Tag; return this; }
public Vector2 addBounds(Rectangle bounds) { this.bounds = bounds; return this; }
public Vector2 addBoundsW(bool bounds_wrap) { this.bounds_wrap = bounds_wrap; return this; }
Vector2 addTag(object Tag) { this.Tag = Tag; return this; }
Vector2 addBounds(Rectangle bounds) { this.bounds = bounds; return this; }
Vector2 addBoundsW(bool bounds_wrap) { this.bounds_wrap = bounds_wrap; return this; }
Vector2 addData(object Tag, Rectangle bounds, bool bounds_wrap) => addTag(Tag).addBounds(bounds).addBoundsW(bounds_wrap);
public override string ToString() => "{X=" + X.ToString() + ", Y=" + Y.ToString() + "}";
public static Vector2 operator +(Vector2 left, Vector2 right) => new Vector2(left.X + right.X, left.Y + right.Y).addTag(left.Tag).addBounds(left.bounds).addBoundsW(left.bounds_wrap);
public static Vector2 operator +(Vector2 left, Point right) => new Vector2(left.X + right.X, left.Y + right.Y).addTag(left.Tag).addBounds(left.bounds).addBoundsW(left.bounds_wrap);
public static Vector2 operator +(Vector2 left, PointF right) => new Vector2(left.X + right.X, left.Y + right.Y).addTag(left.Tag).addBounds(left.bounds).addBoundsW(left.bounds_wrap);
public static Vector2 operator -(Vector2 left, Vector2 right) => new Vector2(left.X - right.X, left.Y - right.Y).addTag(left.Tag).addBounds(left.bounds).addBoundsW(left.bounds_wrap);
public static Vector2 operator -(Vector2 left, Point right) => new Vector2(left.X - right.X, left.Y - right.Y).addTag(left.Tag).addBounds(left.bounds).addBoundsW(left.bounds_wrap);
public static Vector2 operator -(Vector2 left, PointF right) => new Vector2(left.X - right.X, left.Y - right.Y).addTag(left.Tag).addBounds(left.bounds).addBoundsW(left.bounds_wrap);
public static Vector2 operator *(Vector2 left, Vector2 right) => new Vector2(left.X * right.X, left.Y * right.Y).addTag(left.Tag).addBounds(left.bounds).addBoundsW(left.bounds_wrap);
public static Vector2 operator *(Vector2 left, Point right) => new Vector2(left.X * right.X, left.Y * right.Y);
public static Vector2 operator *(Vector2 left, PointF right) => new Vector2(left.X * right.X, left.Y * right.Y);
public static Vector2 operator /(Vector2 left, Vector2 right) => new Vector2(left.X / right.X, left.Y / right.Y);
public static Vector2 operator /(Vector2 left, Point right) => new Vector2(left.X / right.X, left.Y / right.Y);
public static Vector2 operator /(Vector2 left, PointF right) => new Vector2(left.X / right.X, left.Y / right.Y);
public static Vector2 operator ^(Vector2 left, double right) => new Vector2(Math.Pow(left.X, right), Math.Pow(left.Y, right));
public static Vector2 operator +(Vector2 left, Vector2 right) => new Vector2(left.X + right.X, left.Y + right.Y).addData(left.Tag, left.bounds, left.bounds_wrap);
public static Vector2 operator +(Vector2 left, Point right) => new Vector2(left.X + right.X, left.Y + right.Y).addData(left.Tag, left.bounds, left.bounds_wrap);
public static Vector2 operator +(Vector2 left, PointF right) => new Vector2(left.X + right.X, left.Y + right.Y).addData(left.Tag, left.bounds, left.bounds_wrap);
public static Vector2 operator -(Vector2 left, Vector2 right) => new Vector2(left.X - right.X, left.Y - right.Y).addData(left.Tag, left.bounds, left.bounds_wrap);
public static Vector2 operator -(Vector2 left, Point right) => new Vector2(left.X - right.X, left.Y - right.Y).addData(left.Tag, left.bounds, left.bounds_wrap);
public static Vector2 operator -(Vector2 left, PointF right) => new Vector2(left.X - right.X, left.Y - right.Y).addData(left.Tag, left.bounds, left.bounds_wrap);
public static Vector2 operator *(Vector2 left, double right) => new Vector2(left * new Vector2(right, right)).addData(left.Tag, left.bounds, left.bounds_wrap);
public static Vector2 operator *(Vector2 left, Vector2 right) => new Vector2(left.X * right.X, left.Y * right.Y).addData(left.Tag, left.bounds, left.bounds_wrap);
public static Vector2 operator *(Vector2 left, Point right) => new Vector2(left.X * right.X, left.Y * right.Y).addData(left.Tag, left.bounds, left.bounds_wrap);
public static Vector2 operator *(Vector2 left, PointF right) => new Vector2(left.X * right.X, left.Y * right.Y).addData(left.Tag, left.bounds, left.bounds_wrap);
public static Vector2 operator /(Vector2 left, double right) => new Vector2(left / new Vector2(right, right)).addData(left.Tag, left.bounds, left.bounds_wrap);
public static Vector2 operator /(Vector2 left, Vector2 right) => new Vector2(left.X / right.X, left.Y / right.Y).addData(left.Tag, left.bounds, left.bounds_wrap);
public static Vector2 operator /(Vector2 left, Point right) => new Vector2(left.X / right.X, left.Y / right.Y).addData(left.Tag, left.bounds, left.bounds_wrap);
public static Vector2 operator /(Vector2 left, PointF right) => new Vector2(left.X / right.X, left.Y / right.Y).addData(left.Tag, left.bounds, left.bounds_wrap);
public static Vector2 operator ^(Vector2 left, double right) => new Vector2(Math.Pow(left.X, right), Math.Pow(left.Y, right)).addData(left.Tag, left.bounds, left.bounds_wrap);
}
}

View File

@ -4,17 +4,17 @@
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{244E68E6-90D2-447D-B380-13CA8DD3D4EC}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>lv3_t</RootNamespace>
<AssemblyName>lv3_t</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<ProjectGuid>{B97A24F8-8027-471A-B688-8BC5D49B21D7}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CaptchaGlitch_Double</RootNamespace>
<AssemblyName>CaptchaGlitch_Double</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
@ -24,7 +24,6 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
@ -39,45 +38,12 @@
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Double.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Base\Base.csproj">
@ -86,4 +52,8 @@
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>if not exist "$(SolutionDir)tmp2" mkdir "$(SolutionDir)tmp2"
copy "$(TargetPath)" "$(SolutionDir)tmp2"</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Base;
namespace LaptopSimulator2015.Glitches
{
public class Double : CaptchaGlitch
{
public double chance { get { if (currentLevel < 1) return 0; return Math.Min(currentLevel / 10d, 0.8); } }
public int currentLevel { get; set; }
public bool postGlitch => false;
public void apply(char inputChar, ref string inputString, char[] captchaChars, Random rnd) => inputString += inputChar;
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("CaptchaGlitch_Double")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("CaptchaGlitch_Double")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("b97a24f8-8027-471a-b688-8bc5d49b21d7")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -4,17 +4,17 @@
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{22D618C0-F0A4-417F-A815-C760BF4376B2}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>lv4_t</RootNamespace>
<AssemblyName>lv4_t</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<ProjectGuid>{72BBB6B8-5DA3-4FF1-8FA6-75256637F931}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CaptchaGlitch_Rand</RootNamespace>
<AssemblyName>CaptchaGlitch_Rand</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
@ -24,7 +24,6 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
@ -39,45 +38,12 @@
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Rand.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Base\Base.csproj">
@ -86,4 +52,8 @@
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>if not exist "$(SolutionDir)tmp2" mkdir "$(SolutionDir)tmp2"
copy "$(TargetPath)" "$(SolutionDir)tmp2"</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -5,11 +5,11 @@ using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("lv2_t")]
[assembly: AssemblyTitle("CaptchaGlitch_Rand")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("lv2_t")]
[assembly: AssemblyProduct("CaptchaGlitch_Rand")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@ -20,7 +20,7 @@ using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("741ee70e-4ced-40eb-89f2-bd77d41feced")]
[assembly: Guid("72bbb6b8-5da3-4ff1-8fa6-75256637f931")]
// Version information for an assembly consists of the following four values:
//

View File

@ -0,0 +1,17 @@
using Base;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LaptopSimulator2015.Glitches
{
public class Rand : CaptchaGlitch
{
public double chance { get { if (currentLevel < 2) return 0; return Math.Min((currentLevel - 1) / 16d, 0.4); } }
public int currentLevel { get; set; }
public bool postGlitch => false;
public void apply(char inputChar, ref string inputString, char[] captchaChars, Random rnd) => inputString += captchaChars[rnd.Next(captchaChars.Length - 1)];
}
}

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020 J. Fronny
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -8,38 +8,58 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LaptopSimulator2015", "Lapt
{0965C803-49B2-4311-B62F-1E60DBD9185F} = {0965C803-49B2-4311-B62F-1E60DBD9185F}
{8109040E-9D8D-43E7-A461-83475B2939C9} = {8109040E-9D8D-43E7-A461-83475B2939C9}
{4AA1EF48-BC5E-4FE4-9B7D-BAE6D6AB9529} = {4AA1EF48-BC5E-4FE4-9B7D-BAE6D6AB9529}
{048BCC52-64BA-452B-A3F6-3683F9049AFD} = {048BCC52-64BA-452B-A3F6-3683F9049AFD}
{DFD89655-00A7-4DF8-8B2E-17F5BEFE5090} = {DFD89655-00A7-4DF8-8B2E-17F5BEFE5090}
{E61E2797-62B4-471C-ACBF-31EAB7C746CF} = {E61E2797-62B4-471C-ACBF-31EAB7C746CF}
{DFA2FB97-D676-4B0D-B281-2685F85781EE} = {DFA2FB97-D676-4B0D-B281-2685F85781EE}
{72BBB6B8-5DA3-4FF1-8FA6-75256637F931} = {72BBB6B8-5DA3-4FF1-8FA6-75256637F931}
{5E10F1D0-0114-444A-B80E-975B5DC40D9F} = {5E10F1D0-0114-444A-B80E-975B5DC40D9F}
{B97A24F8-8027-471A-B688-8BC5D49B21D7} = {B97A24F8-8027-471A-B688-8BC5D49B21D7}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Minigame Tests", "Minigame Tests", "{69DC5824-3F89-4B47-BF1A-F25942094195}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Levels", "Levels", "{83BF22F9-3A2D-42A3-9DB0-C1E2AA1DD218}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Base", "Base\Base.csproj", "{9A9561A7-DD5F-43A5-A3F5-A95F35DA204D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "1", "1\1.csproj", "{DFA2FB97-D676-4B0D-B281-2685F85781EE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "lv_tst_base", "lv_tst_base\lv_tst_base.csproj", "{52CE6BEB-EC81-4A14-85DD-3F8DB8E33202}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "lv1_t", "lv1_t\lv1_t.csproj", "{D80DBBF2-307F-40A0-86F1-871C8DAA394B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "lv2_t", "lv2_t\lv2_t.csproj", "{741EE70E-4CED-40EB-89F2-BD77D41FECED}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "2", "2\2.csproj", "{0965C803-49B2-4311-B62F-1E60DBD9185F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "lv3_t", "lv3_t\lv3_t.csproj", "{244E68E6-90D2-447D-B380-13CA8DD3D4EC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "3", "3\3.csproj", "{8109040E-9D8D-43E7-A461-83475B2939C9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "lv4_t", "lv4_t\lv4_t.csproj", "{22D618C0-F0A4-417F-A815-C760BF4376B2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "4", "4\4.csproj", "{4AA1EF48-BC5E-4FE4-9B7D-BAE6D6AB9529}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{23D851A7-722E-416A-91F8-0C86349D5BF3}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Meta", "Meta", "{23D851A7-722E-416A-91F8-0C86349D5BF3}"
ProjectSection(SolutionItems) = preProject
.gitignore = .gitignore
make.bat = make.bat
README.md = README.md
ToDo.txt = ToDo.txt
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Goals", "Goals", "{7D9F2BFD-61B6-4C6C-97CC-D9AD51A04959}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "3g", "3g\3g.csproj", "{E61E2797-62B4-471C-ACBF-31EAB7C746CF}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Glitches", "Glitches", "{A8CDDCD3-43FC-46AE-9132-24DE27808D96}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CaptchaGlitch_Rand", "CaptchaGlitch_Rand\CaptchaGlitch_Rand.csproj", "{72BBB6B8-5DA3-4FF1-8FA6-75256637F931}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "zz_CaptchaGlitch_Empty", "zz_CaptchaGlitch_Empty\zz_CaptchaGlitch_Empty.csproj", "{048BCC52-64BA-452B-A3F6-3683F9049AFD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CaptchaGlitch_Double", "CaptchaGlitch_Double\CaptchaGlitch_Double.csproj", "{B97A24F8-8027-471A-B688-8BC5D49B21D7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "zzz_ShuffleChars", "zzz_ShuffleChars\zzz_ShuffleChars.csproj", "{5E10F1D0-0114-444A-B80E-975B5DC40D9F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LevelTest", "LevelTest\LevelTest.csproj", "{DFD89655-00A7-4DF8-8B2E-17F5BEFE5090}"
ProjectSection(ProjectDependencies) = postProject
{0965C803-49B2-4311-B62F-1E60DBD9185F} = {0965C803-49B2-4311-B62F-1E60DBD9185F}
{8109040E-9D8D-43E7-A461-83475B2939C9} = {8109040E-9D8D-43E7-A461-83475B2939C9}
{4AA1EF48-BC5E-4FE4-9B7D-BAE6D6AB9529} = {4AA1EF48-BC5E-4FE4-9B7D-BAE6D6AB9529}
{E61E2797-62B4-471C-ACBF-31EAB7C746CF} = {E61E2797-62B4-471C-ACBF-31EAB7C746CF}
{DFA2FB97-D676-4B0D-B281-2685F85781EE} = {DFA2FB97-D676-4B0D-B281-2685F85781EE}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -58,53 +78,56 @@ Global
{DFA2FB97-D676-4B0D-B281-2685F85781EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DFA2FB97-D676-4B0D-B281-2685F85781EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DFA2FB97-D676-4B0D-B281-2685F85781EE}.Release|Any CPU.Build.0 = Release|Any CPU
{52CE6BEB-EC81-4A14-85DD-3F8DB8E33202}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{52CE6BEB-EC81-4A14-85DD-3F8DB8E33202}.Debug|Any CPU.Build.0 = Debug|Any CPU
{52CE6BEB-EC81-4A14-85DD-3F8DB8E33202}.Release|Any CPU.ActiveCfg = Release|Any CPU
{52CE6BEB-EC81-4A14-85DD-3F8DB8E33202}.Release|Any CPU.Build.0 = Release|Any CPU
{D80DBBF2-307F-40A0-86F1-871C8DAA394B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D80DBBF2-307F-40A0-86F1-871C8DAA394B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D80DBBF2-307F-40A0-86F1-871C8DAA394B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D80DBBF2-307F-40A0-86F1-871C8DAA394B}.Release|Any CPU.Build.0 = Release|Any CPU
{741EE70E-4CED-40EB-89F2-BD77D41FECED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{741EE70E-4CED-40EB-89F2-BD77D41FECED}.Debug|Any CPU.Build.0 = Debug|Any CPU
{741EE70E-4CED-40EB-89F2-BD77D41FECED}.Release|Any CPU.ActiveCfg = Release|Any CPU
{741EE70E-4CED-40EB-89F2-BD77D41FECED}.Release|Any CPU.Build.0 = Release|Any CPU
{0965C803-49B2-4311-B62F-1E60DBD9185F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0965C803-49B2-4311-B62F-1E60DBD9185F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0965C803-49B2-4311-B62F-1E60DBD9185F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0965C803-49B2-4311-B62F-1E60DBD9185F}.Release|Any CPU.Build.0 = Release|Any CPU
{244E68E6-90D2-447D-B380-13CA8DD3D4EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{244E68E6-90D2-447D-B380-13CA8DD3D4EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{244E68E6-90D2-447D-B380-13CA8DD3D4EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{244E68E6-90D2-447D-B380-13CA8DD3D4EC}.Release|Any CPU.Build.0 = Release|Any CPU
{8109040E-9D8D-43E7-A461-83475B2939C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8109040E-9D8D-43E7-A461-83475B2939C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8109040E-9D8D-43E7-A461-83475B2939C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8109040E-9D8D-43E7-A461-83475B2939C9}.Release|Any CPU.Build.0 = Release|Any CPU
{22D618C0-F0A4-417F-A815-C760BF4376B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{22D618C0-F0A4-417F-A815-C760BF4376B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{22D618C0-F0A4-417F-A815-C760BF4376B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{22D618C0-F0A4-417F-A815-C760BF4376B2}.Release|Any CPU.Build.0 = Release|Any CPU
{4AA1EF48-BC5E-4FE4-9B7D-BAE6D6AB9529}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4AA1EF48-BC5E-4FE4-9B7D-BAE6D6AB9529}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4AA1EF48-BC5E-4FE4-9B7D-BAE6D6AB9529}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4AA1EF48-BC5E-4FE4-9B7D-BAE6D6AB9529}.Release|Any CPU.Build.0 = Release|Any CPU
{E61E2797-62B4-471C-ACBF-31EAB7C746CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E61E2797-62B4-471C-ACBF-31EAB7C746CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E61E2797-62B4-471C-ACBF-31EAB7C746CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E61E2797-62B4-471C-ACBF-31EAB7C746CF}.Release|Any CPU.Build.0 = Release|Any CPU
{72BBB6B8-5DA3-4FF1-8FA6-75256637F931}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{72BBB6B8-5DA3-4FF1-8FA6-75256637F931}.Debug|Any CPU.Build.0 = Debug|Any CPU
{72BBB6B8-5DA3-4FF1-8FA6-75256637F931}.Release|Any CPU.ActiveCfg = Release|Any CPU
{72BBB6B8-5DA3-4FF1-8FA6-75256637F931}.Release|Any CPU.Build.0 = Release|Any CPU
{048BCC52-64BA-452B-A3F6-3683F9049AFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{048BCC52-64BA-452B-A3F6-3683F9049AFD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{048BCC52-64BA-452B-A3F6-3683F9049AFD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{048BCC52-64BA-452B-A3F6-3683F9049AFD}.Release|Any CPU.Build.0 = Release|Any CPU
{B97A24F8-8027-471A-B688-8BC5D49B21D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B97A24F8-8027-471A-B688-8BC5D49B21D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B97A24F8-8027-471A-B688-8BC5D49B21D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B97A24F8-8027-471A-B688-8BC5D49B21D7}.Release|Any CPU.Build.0 = Release|Any CPU
{5E10F1D0-0114-444A-B80E-975B5DC40D9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5E10F1D0-0114-444A-B80E-975B5DC40D9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5E10F1D0-0114-444A-B80E-975B5DC40D9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5E10F1D0-0114-444A-B80E-975B5DC40D9F}.Release|Any CPU.Build.0 = Release|Any CPU
{DFD89655-00A7-4DF8-8B2E-17F5BEFE5090}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DFD89655-00A7-4DF8-8B2E-17F5BEFE5090}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DFD89655-00A7-4DF8-8B2E-17F5BEFE5090}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DFD89655-00A7-4DF8-8B2E-17F5BEFE5090}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{9A9561A7-DD5F-43A5-A3F5-A95F35DA204D} = {83BF22F9-3A2D-42A3-9DB0-C1E2AA1DD218}
{DFA2FB97-D676-4B0D-B281-2685F85781EE} = {83BF22F9-3A2D-42A3-9DB0-C1E2AA1DD218}
{52CE6BEB-EC81-4A14-85DD-3F8DB8E33202} = {69DC5824-3F89-4B47-BF1A-F25942094195}
{D80DBBF2-307F-40A0-86F1-871C8DAA394B} = {69DC5824-3F89-4B47-BF1A-F25942094195}
{741EE70E-4CED-40EB-89F2-BD77D41FECED} = {69DC5824-3F89-4B47-BF1A-F25942094195}
{0965C803-49B2-4311-B62F-1E60DBD9185F} = {83BF22F9-3A2D-42A3-9DB0-C1E2AA1DD218}
{244E68E6-90D2-447D-B380-13CA8DD3D4EC} = {69DC5824-3F89-4B47-BF1A-F25942094195}
{8109040E-9D8D-43E7-A461-83475B2939C9} = {83BF22F9-3A2D-42A3-9DB0-C1E2AA1DD218}
{22D618C0-F0A4-417F-A815-C760BF4376B2} = {69DC5824-3F89-4B47-BF1A-F25942094195}
{4AA1EF48-BC5E-4FE4-9B7D-BAE6D6AB9529} = {83BF22F9-3A2D-42A3-9DB0-C1E2AA1DD218}
{E61E2797-62B4-471C-ACBF-31EAB7C746CF} = {7D9F2BFD-61B6-4C6C-97CC-D9AD51A04959}
{72BBB6B8-5DA3-4FF1-8FA6-75256637F931} = {A8CDDCD3-43FC-46AE-9132-24DE27808D96}
{048BCC52-64BA-452B-A3F6-3683F9049AFD} = {A8CDDCD3-43FC-46AE-9132-24DE27808D96}
{B97A24F8-8027-471A-B688-8BC5D49B21D7} = {A8CDDCD3-43FC-46AE-9132-24DE27808D96}
{5E10F1D0-0114-444A-B80E-975B5DC40D9F} = {A8CDDCD3-43FC-46AE-9132-24DE27808D96}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9631F8FF-AFC1-4583-9D27-6C2D97D3A2E9}

View File

@ -1,30 +1,11 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="LaptopSimulator2015.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
</startup>
<userSettings>
<LaptopSimulator2015.Properties.Settings>
<setting name="wam" serializeAs="String">
<value>0</value>
</setting>
<setting name="mlg" serializeAs="String">
<value>False</value>
</setting>
<setting name="subs" serializeAs="String">
<value>True</value>
</setting>
<setting name="level" serializeAs="String">
<value>1</value>
</setting>
<setting name="lang" serializeAs="String">
<value>(Default)</value>
</setting>
</LaptopSimulator2015.Properties.Settings>
</userSettings>
</configuration>
<runtime>
<!-- AppContextSwitchOverrides values are in the form of 'key1=true|false;key2=true|false -->
<!-- Please note that disabling Switch.UseLegacyAccessibilityFeatures, Switch.UseLegacyAccessibilityFeatures.2 and Switch.UseLegacyAccessibilityFeatures.3 is required to disable Switch.System.Windows.Forms.UseLegacyToolTipDisplay -->
<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false;Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false"/>
</runtime>
</configuration>

View File

@ -45,12 +45,13 @@ namespace LaptopSimulator2015
this.winMenuExit = new System.Windows.Forms.Button();
this.winTaskbar = new System.Windows.Forms.Panel();
this.subsLabel = new System.Windows.Forms.Label();
this.winTimeLabel = new System.Windows.Forms.Label();
this.winDesktop = new System.Windows.Forms.FlowLayoutPanel();
this.options_1 = new System.Windows.Forms.Panel();
this.options_2 = new System.Windows.Forms.Panel();
this.levelWindow = new System.Windows.Forms.Panel();
this.levelWindowC1 = new System.Windows.Forms.Button();
this.levelWindowContents = new System.Windows.Forms.TabControl();
this.levelWindowContents = new WizardTab();
this.levelWindow1 = new System.Windows.Forms.TabPage();
this.levelWindowText1 = new System.Windows.Forms.Label();
this.levelWindow2 = new System.Windows.Forms.TabPage();
@ -65,11 +66,13 @@ namespace LaptopSimulator2015
this.levelWindowIcon = new System.Windows.Forms.Panel();
this.levelWindowTitle = new System.Windows.Forms.Label();
this.levelWindowProgressT = new System.Windows.Forms.Timer(this.components);
this.winTimeLabel = new System.Windows.Forms.Label();
this.winTimeTimer = new System.Windows.Forms.Timer(this.components);
this.minigamePanel = new System.Windows.Forms.Panel();
this.minigameClose = new System.Windows.Forms.Label();
this.minigameClockT = new System.Windows.Forms.Timer(this.components);
this.optionsWindow = new System.Windows.Forms.Panel();
this.optionsWindowCredit = new System.Windows.Forms.Button();
this.devWindowOpen = new System.Windows.Forms.Button();
this.optionsWindowReset = new System.Windows.Forms.Button();
this.optionsWindowLang = new System.Windows.Forms.ComboBox();
this.optionsWindowSubs = new System.Windows.Forms.CheckBox();
@ -82,6 +85,20 @@ namespace LaptopSimulator2015
this.optionsWindowIcon = new System.Windows.Forms.Panel();
this.optionsWindowTitle = new System.Windows.Forms.Label();
this.lsdEffectT = new System.Windows.Forms.Timer(this.components);
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
this.devWindow = new System.Windows.Forms.Panel();
this.devWindowOverlay = new System.Windows.Forms.Button();
this.devWindowSkip = new System.Windows.Forms.Button();
this.devWindowLevelList = new System.Windows.Forms.ListBox();
this.devWindowLevelLabel = new System.Windows.Forms.Label();
this.devWindowDllLabel = new System.Windows.Forms.Label();
this.devWindowDllList = new System.Windows.Forms.ListBox();
this.devWindowHeader = new System.Windows.Forms.Panel();
this.devWindowHeaderExit = new System.Windows.Forms.Label();
this.devWindowIcon = new System.Windows.Forms.Panel();
this.devWindowTitle = new System.Windows.Forms.Label();
this.optionsWindowQualityLabel = new System.Windows.Forms.Label();
this.optionsWindowQualityBox = new System.Windows.Forms.ComboBox();
this.winMenuPanel.SuspendLayout();
this.winTaskbar.SuspendLayout();
this.winDesktop.SuspendLayout();
@ -92,9 +109,12 @@ namespace LaptopSimulator2015
this.levelWindow2.SuspendLayout();
this.levelWindow3.SuspendLayout();
this.levelWindowHeader.SuspendLayout();
this.minigamePanel.SuspendLayout();
this.optionsWindow.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.optionsWindowWam)).BeginInit();
this.optionsWindowHeader.SuspendLayout();
this.devWindow.SuspendLayout();
this.devWindowHeader.SuspendLayout();
this.SuspendLayout();
//
// winKey
@ -179,6 +199,7 @@ namespace LaptopSimulator2015
| System.Windows.Forms.AnchorStyles.Right)));
this.winTaskbar.BackColor = System.Drawing.Color.Navy;
this.winTaskbar.Controls.Add(this.subsLabel);
this.winTaskbar.Controls.Add(this.winTimeLabel);
this.winTaskbar.Location = new System.Drawing.Point(30, 889);
this.winTaskbar.Name = "winTaskbar";
this.winTaskbar.Size = new System.Drawing.Size(1357, 30);
@ -188,11 +209,25 @@ namespace LaptopSimulator2015
//
this.subsLabel.AutoSize = true;
this.subsLabel.BackColor = System.Drawing.Color.Navy;
this.subsLabel.Location = new System.Drawing.Point(6, 9);
this.subsLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.subsLabel.ForeColor = System.Drawing.Color.White;
this.subsLabel.Location = new System.Drawing.Point(6, 7);
this.subsLabel.Name = "subsLabel";
this.subsLabel.Size = new System.Drawing.Size(0, 13);
this.subsLabel.Size = new System.Drawing.Size(0, 16);
this.subsLabel.TabIndex = 0;
//
// winTimeLabel
//
this.winTimeLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.winTimeLabel.AutoSize = true;
this.winTimeLabel.BackColor = System.Drawing.Color.Navy;
this.winTimeLabel.ForeColor = System.Drawing.Color.White;
this.winTimeLabel.Location = new System.Drawing.Point(1305, 9);
this.winTimeLabel.Name = "winTimeLabel";
this.winTimeLabel.Size = new System.Drawing.Size(49, 13);
this.winTimeLabel.TabIndex = 0;
this.winTimeLabel.Text = "00:00:00";
//
// winDesktop
//
this.winDesktop.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@ -248,6 +283,7 @@ namespace LaptopSimulator2015
this.levelWindowC1.Name = "levelWindowC1";
this.levelWindowC1.Size = new System.Drawing.Size(75, 23);
this.levelWindowC1.TabIndex = 2;
this.levelWindowC1.TabStop = false;
this.levelWindowC1.Text = "Continue";
this.levelWindowC1.UseVisualStyleBackColor = true;
this.levelWindowC1.Click += new System.EventHandler(this.LevelWindowC1_Click);
@ -259,7 +295,7 @@ namespace LaptopSimulator2015
this.levelWindowContents.Controls.Add(this.levelWindow2);
this.levelWindowContents.Controls.Add(this.levelWindow3);
this.levelWindowContents.Dock = System.Windows.Forms.DockStyle.Fill;
this.levelWindowContents.ItemSize = new System.Drawing.Size(20, 15);
this.levelWindowContents.ItemSize = new System.Drawing.Size(10, 10);
this.levelWindowContents.Location = new System.Drawing.Point(0, 20);
this.levelWindowContents.Name = "levelWindowContents";
this.levelWindowContents.SelectedIndex = 0;
@ -271,10 +307,10 @@ namespace LaptopSimulator2015
// levelWindow1
//
this.levelWindow1.Controls.Add(this.levelWindowText1);
this.levelWindow1.Location = new System.Drawing.Point(4, 19);
this.levelWindow1.Location = new System.Drawing.Point(4, 14);
this.levelWindow1.Name = "levelWindow1";
this.levelWindow1.Padding = new System.Windows.Forms.Padding(3);
this.levelWindow1.Size = new System.Drawing.Size(494, 225);
this.levelWindow1.Size = new System.Drawing.Size(494, 230);
this.levelWindow1.TabIndex = 0;
this.levelWindow1.UseVisualStyleBackColor = true;
//
@ -293,10 +329,10 @@ namespace LaptopSimulator2015
this.levelWindow2.Controls.Add(this.captchaBox);
this.levelWindow2.Controls.Add(this.captchaPanel);
this.levelWindow2.Controls.Add(this.levelWindowText2);
this.levelWindow2.Location = new System.Drawing.Point(4, 19);
this.levelWindow2.Location = new System.Drawing.Point(4, 14);
this.levelWindow2.Name = "levelWindow2";
this.levelWindow2.Padding = new System.Windows.Forms.Padding(3);
this.levelWindow2.Size = new System.Drawing.Size(494, 225);
this.levelWindow2.Size = new System.Drawing.Size(494, 230);
this.levelWindow2.TabIndex = 1;
this.levelWindow2.UseVisualStyleBackColor = true;
//
@ -308,6 +344,7 @@ namespace LaptopSimulator2015
this.captchaBox.ReadOnly = true;
this.captchaBox.Size = new System.Drawing.Size(276, 80);
this.captchaBox.TabIndex = 2;
this.captchaBox.TabStop = false;
this.captchaBox.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.CaptchaBox_KeyPress);
//
// captchaPanel
@ -333,9 +370,9 @@ namespace LaptopSimulator2015
//
this.levelWindow3.Controls.Add(this.levelWindowProgress);
this.levelWindow3.Controls.Add(this.levelWindowText3);
this.levelWindow3.Location = new System.Drawing.Point(4, 19);
this.levelWindow3.Location = new System.Drawing.Point(4, 14);
this.levelWindow3.Name = "levelWindow3";
this.levelWindow3.Size = new System.Drawing.Size(494, 225);
this.levelWindow3.Size = new System.Drawing.Size(494, 230);
this.levelWindow3.TabIndex = 2;
this.levelWindow3.UseVisualStyleBackColor = true;
//
@ -382,7 +419,7 @@ namespace LaptopSimulator2015
this.levelWindowHeaderExit.TabIndex = 2;
this.levelWindowHeaderExit.Text = "r";
this.levelWindowHeaderExit.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.levelWindowHeaderExit.Click += new System.EventHandler(this.LevelWindowHeaderExit_Click);
this.levelWindowHeaderExit.Click += new System.EventHandler(this.CloseMinigame);
//
// levelWindowIcon
//
@ -391,6 +428,9 @@ namespace LaptopSimulator2015
this.levelWindowIcon.Name = "levelWindowIcon";
this.levelWindowIcon.Size = new System.Drawing.Size(20, 20);
this.levelWindowIcon.TabIndex = 1;
this.levelWindowIcon.MouseDown += new System.Windows.Forms.MouseEventHandler(this.LevelWindowHeader_MouseDown);
this.levelWindowIcon.MouseMove += new System.Windows.Forms.MouseEventHandler(this.LevelWindowHeader_MouseMove);
this.levelWindowIcon.MouseUp += new System.Windows.Forms.MouseEventHandler(this.LevelWindowHeader_MouseUp);
//
// levelWindowTitle
//
@ -408,18 +448,6 @@ namespace LaptopSimulator2015
//
this.levelWindowProgressT.Tick += new System.EventHandler(this.LevelWindowProgressT_Tick);
//
// winTimeLabel
//
this.winTimeLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.winTimeLabel.AutoSize = true;
this.winTimeLabel.BackColor = System.Drawing.Color.Navy;
this.winTimeLabel.ForeColor = System.Drawing.Color.White;
this.winTimeLabel.Location = new System.Drawing.Point(1344, 898);
this.winTimeLabel.Name = "winTimeLabel";
this.winTimeLabel.Size = new System.Drawing.Size(34, 13);
this.winTimeLabel.TabIndex = 0;
this.winTimeLabel.Text = "00:00";
//
// winTimeTimer
//
this.winTimeTimer.Enabled = true;
@ -430,6 +458,7 @@ namespace LaptopSimulator2015
//
this.minigamePanel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.minigamePanel.BackColor = System.Drawing.Color.Black;
this.minigamePanel.Controls.Add(this.minigameClose);
this.minigamePanel.Location = new System.Drawing.Point(564, 421);
this.minigamePanel.Name = "minigamePanel";
this.minigamePanel.Size = new System.Drawing.Size(800, 450);
@ -437,6 +466,20 @@ namespace LaptopSimulator2015
this.minigamePanel.Visible = false;
this.minigamePanel.Paint += new System.Windows.Forms.PaintEventHandler(this.InvadersPanel_Paint);
//
// minigameClose
//
this.minigameClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.minigameClose.BackColor = System.Drawing.Color.Red;
this.minigameClose.Font = new System.Drawing.Font("Marlett", 12F);
this.minigameClose.Location = new System.Drawing.Point(760, 0);
this.minigameClose.Name = "minigameClose";
this.minigameClose.Size = new System.Drawing.Size(40, 20);
this.minigameClose.TabIndex = 4;
this.minigameClose.Text = "r";
this.minigameClose.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.minigameClose.Visible = false;
this.minigameClose.Click += new System.EventHandler(this.CloseMinigame);
//
// minigameClockT
//
this.minigameClockT.Interval = 17;
@ -445,6 +488,10 @@ namespace LaptopSimulator2015
// optionsWindow
//
this.optionsWindow.BackColor = System.Drawing.SystemColors.Window;
this.optionsWindow.Controls.Add(this.optionsWindowQualityBox);
this.optionsWindow.Controls.Add(this.optionsWindowQualityLabel);
this.optionsWindow.Controls.Add(this.optionsWindowCredit);
this.optionsWindow.Controls.Add(this.devWindowOpen);
this.optionsWindow.Controls.Add(this.optionsWindowReset);
this.optionsWindow.Controls.Add(this.optionsWindowLang);
this.optionsWindow.Controls.Add(this.optionsWindowSubs);
@ -455,17 +502,40 @@ namespace LaptopSimulator2015
this.optionsWindow.Controls.Add(this.optionsWindowHeader);
this.optionsWindow.Location = new System.Drawing.Point(527, 26);
this.optionsWindow.Name = "optionsWindow";
this.optionsWindow.Size = new System.Drawing.Size(502, 94);
this.optionsWindow.Size = new System.Drawing.Size(495, 91);
this.optionsWindow.TabIndex = 6;
this.optionsWindow.Visible = false;
//
// optionsWindowCredit
//
this.optionsWindowCredit.Location = new System.Drawing.Point(328, 60);
this.optionsWindowCredit.Name = "optionsWindowCredit";
this.optionsWindowCredit.Size = new System.Drawing.Size(51, 23);
this.optionsWindowCredit.TabIndex = 9;
this.optionsWindowCredit.Text = "Credits";
this.optionsWindowCredit.UseVisualStyleBackColor = true;
this.optionsWindowCredit.Click += new System.EventHandler(this.optionsWindowCredit_Click);
//
// devWindowOpen
//
this.devWindowOpen.Location = new System.Drawing.Point(254, 60);
this.devWindowOpen.Name = "devWindowOpen";
this.devWindowOpen.Size = new System.Drawing.Size(75, 23);
this.devWindowOpen.TabIndex = 8;
this.devWindowOpen.TabStop = false;
this.devWindowOpen.Text = "DevTools";
this.devWindowOpen.UseVisualStyleBackColor = true;
this.devWindowOpen.Visible = false;
this.devWindowOpen.Click += new System.EventHandler(this.DevWindowOpen_Click);
//
// optionsWindowReset
//
this.optionsWindowReset.BackColor = System.Drawing.Color.Red;
this.optionsWindowReset.Location = new System.Drawing.Point(332, 64);
this.optionsWindowReset.Location = new System.Drawing.Point(378, 60);
this.optionsWindowReset.Name = "optionsWindowReset";
this.optionsWindowReset.Size = new System.Drawing.Size(75, 23);
this.optionsWindowReset.Size = new System.Drawing.Size(81, 23);
this.optionsWindowReset.TabIndex = 7;
this.optionsWindowReset.TabStop = false;
this.optionsWindowReset.Text = "Reset";
this.optionsWindowReset.UseVisualStyleBackColor = false;
this.optionsWindowReset.Click += new System.EventHandler(this.OptionsWindowReset_Click);
@ -476,27 +546,30 @@ namespace LaptopSimulator2015
this.optionsWindowLang.Items.AddRange(new object[] {
"de",
"en"});
this.optionsWindowLang.Location = new System.Drawing.Point(180, 62);
this.optionsWindowLang.Location = new System.Drawing.Point(161, 61);
this.optionsWindowLang.Name = "optionsWindowLang";
this.optionsWindowLang.Size = new System.Drawing.Size(121, 21);
this.optionsWindowLang.Size = new System.Drawing.Size(168, 21);
this.optionsWindowLang.TabIndex = 6;
this.optionsWindowLang.TabStop = false;
//
// optionsWindowSubs
//
this.optionsWindowSubs.AutoSize = true;
this.optionsWindowSubs.Location = new System.Drawing.Point(108, 64);
this.optionsWindowSubs.Location = new System.Drawing.Point(90, 64);
this.optionsWindowSubs.Name = "optionsWindowSubs";
this.optionsWindowSubs.Size = new System.Drawing.Size(66, 17);
this.optionsWindowSubs.TabIndex = 5;
this.optionsWindowSubs.TabStop = false;
this.optionsWindowSubs.Text = "Subtitles";
this.optionsWindowSubs.UseVisualStyleBackColor = true;
//
// optionsWindowExit
//
this.optionsWindowExit.Location = new System.Drawing.Point(413, 64);
this.optionsWindowExit.Location = new System.Drawing.Point(458, 60);
this.optionsWindowExit.Name = "optionsWindowExit";
this.optionsWindowExit.Size = new System.Drawing.Size(75, 23);
this.optionsWindowExit.Size = new System.Drawing.Size(30, 23);
this.optionsWindowExit.TabIndex = 4;
this.optionsWindowExit.TabStop = false;
this.optionsWindowExit.Text = "OK";
this.optionsWindowExit.UseVisualStyleBackColor = true;
this.optionsWindowExit.Click += new System.EventHandler(this.OptionsWindowExit_Click);
@ -510,6 +583,7 @@ namespace LaptopSimulator2015
this.optionsWindowLSD.Name = "optionsWindowLSD";
this.optionsWindowLSD.Size = new System.Drawing.Size(73, 18);
this.optionsWindowLSD.TabIndex = 3;
this.optionsWindowLSD.TabStop = false;
this.optionsWindowLSD.Text = "LSD Mode";
this.optionsWindowLSD.UseVisualStyleBackColor = true;
this.optionsWindowLSD.CheckedChanged += new System.EventHandler(this.OptionsWindowLSD_CheckedChanged);
@ -527,8 +601,9 @@ namespace LaptopSimulator2015
//
this.optionsWindowWam.Location = new System.Drawing.Point(108, 26);
this.optionsWindowWam.Name = "optionsWindowWam";
this.optionsWindowWam.Size = new System.Drawing.Size(380, 45);
this.optionsWindowWam.Size = new System.Drawing.Size(271, 45);
this.optionsWindowWam.TabIndex = 1;
this.optionsWindowWam.TabStop = false;
this.optionsWindowWam.Scroll += new System.EventHandler(this.OptionsWindowWam_Scroll);
//
// optionsWindowHeader
@ -540,7 +615,7 @@ namespace LaptopSimulator2015
this.optionsWindowHeader.Dock = System.Windows.Forms.DockStyle.Top;
this.optionsWindowHeader.Location = new System.Drawing.Point(0, 0);
this.optionsWindowHeader.Name = "optionsWindowHeader";
this.optionsWindowHeader.Size = new System.Drawing.Size(502, 20);
this.optionsWindowHeader.Size = new System.Drawing.Size(495, 20);
this.optionsWindowHeader.TabIndex = 0;
this.optionsWindowHeader.MouseDown += new System.Windows.Forms.MouseEventHandler(this.OptionsWindowHeader_MouseDown);
this.optionsWindowHeader.MouseMove += new System.Windows.Forms.MouseEventHandler(this.OptionsWindowHeader_MouseMove);
@ -551,7 +626,7 @@ namespace LaptopSimulator2015
this.optionsWindowHeaderExit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.optionsWindowHeaderExit.BackColor = System.Drawing.Color.Red;
this.optionsWindowHeaderExit.Font = new System.Drawing.Font("Marlett", 12F);
this.optionsWindowHeaderExit.Location = new System.Drawing.Point(462, 0);
this.optionsWindowHeaderExit.Location = new System.Drawing.Point(455, 0);
this.optionsWindowHeaderExit.Name = "optionsWindowHeaderExit";
this.optionsWindowHeaderExit.Size = new System.Drawing.Size(40, 20);
this.optionsWindowHeaderExit.TabIndex = 3;
@ -567,6 +642,9 @@ namespace LaptopSimulator2015
this.optionsWindowIcon.Name = "optionsWindowIcon";
this.optionsWindowIcon.Size = new System.Drawing.Size(20, 20);
this.optionsWindowIcon.TabIndex = 1;
this.optionsWindowIcon.MouseDown += new System.Windows.Forms.MouseEventHandler(this.OptionsWindowHeader_MouseDown);
this.optionsWindowIcon.MouseMove += new System.Windows.Forms.MouseEventHandler(this.OptionsWindowHeader_MouseMove);
this.optionsWindowIcon.MouseUp += new System.Windows.Forms.MouseEventHandler(this.OptionsWindowHeader_MouseUp);
//
// optionsWindowTitle
//
@ -576,12 +654,172 @@ namespace LaptopSimulator2015
this.optionsWindowTitle.Size = new System.Drawing.Size(80, 13);
this.optionsWindowTitle.TabIndex = 0;
this.optionsWindowTitle.Text = "PCOptimizerPro";
this.optionsWindowTitle.MouseDown += new System.Windows.Forms.MouseEventHandler(this.OptionsWindowHeader_MouseDown);
this.optionsWindowTitle.MouseMove += new System.Windows.Forms.MouseEventHandler(this.OptionsWindowHeader_MouseMove);
this.optionsWindowTitle.MouseUp += new System.Windows.Forms.MouseEventHandler(this.OptionsWindowHeader_MouseUp);
//
// lsdEffectT
//
this.lsdEffectT.Enabled = true;
this.lsdEffectT.Tick += new System.EventHandler(this.LsdTimer_Tick);
//
// devWindow
//
this.devWindow.BackColor = System.Drawing.SystemColors.Window;
this.devWindow.Controls.Add(this.devWindowOverlay);
this.devWindow.Controls.Add(this.devWindowSkip);
this.devWindow.Controls.Add(this.devWindowLevelList);
this.devWindow.Controls.Add(this.devWindowLevelLabel);
this.devWindow.Controls.Add(this.devWindowDllLabel);
this.devWindow.Controls.Add(this.devWindowDllList);
this.devWindow.Controls.Add(this.devWindowHeader);
this.devWindow.Location = new System.Drawing.Point(527, 149);
this.devWindow.Name = "devWindow";
this.devWindow.Size = new System.Drawing.Size(495, 258);
this.devWindow.TabIndex = 8;
this.devWindow.Visible = false;
//
// devWindowOverlay
//
this.devWindowOverlay.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.devWindowOverlay.Location = new System.Drawing.Point(394, 227);
this.devWindowOverlay.Name = "devWindowOverlay";
this.devWindowOverlay.Size = new System.Drawing.Size(94, 23);
this.devWindowOverlay.TabIndex = 6;
this.devWindowOverlay.Text = "Overlay Console";
this.devWindowOverlay.UseVisualStyleBackColor = true;
this.devWindowOverlay.Click += new System.EventHandler(this.devWindowOverlay_Click);
//
// devWindowSkip
//
this.devWindowSkip.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.devWindowSkip.Location = new System.Drawing.Point(13, 227);
this.devWindowSkip.Name = "devWindowSkip";
this.devWindowSkip.Size = new System.Drawing.Size(75, 23);
this.devWindowSkip.TabIndex = 5;
this.devWindowSkip.TabStop = false;
this.devWindowSkip.Text = "Skip Step";
this.devWindowSkip.UseVisualStyleBackColor = true;
this.devWindowSkip.Click += new System.EventHandler(this.DevWindowSkip_Click);
//
// devWindowLevelList
//
this.devWindowLevelList.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.devWindowLevelList.FormattingEnabled = true;
this.devWindowLevelList.Location = new System.Drawing.Point(51, 127);
this.devWindowLevelList.Name = "devWindowLevelList";
this.devWindowLevelList.Size = new System.Drawing.Size(437, 95);
this.devWindowLevelList.TabIndex = 4;
this.devWindowLevelList.TabStop = false;
this.devWindowLevelList.SelectedIndexChanged += new System.EventHandler(this.DevWindowLevelList_SelectedIndexChanged);
//
// devWindowLevelLabel
//
this.devWindowLevelLabel.AutoSize = true;
this.devWindowLevelLabel.Location = new System.Drawing.Point(10, 131);
this.devWindowLevelLabel.Name = "devWindowLevelLabel";
this.devWindowLevelLabel.Size = new System.Drawing.Size(41, 13);
this.devWindowLevelLabel.TabIndex = 3;
this.devWindowLevelLabel.Text = "Levels:";
//
// devWindowDllLabel
//
this.devWindowDllLabel.AutoSize = true;
this.devWindowDllLabel.Location = new System.Drawing.Point(10, 29);
this.devWindowDllLabel.Name = "devWindowDllLabel";
this.devWindowDllLabel.Size = new System.Drawing.Size(35, 13);
this.devWindowDllLabel.TabIndex = 2;
this.devWindowDllLabel.Text = "DLLs:";
//
// devWindowDllList
//
this.devWindowDllList.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.devWindowDllList.FormattingEnabled = true;
this.devWindowDllList.Location = new System.Drawing.Point(51, 26);
this.devWindowDllList.Name = "devWindowDllList";
this.devWindowDllList.Size = new System.Drawing.Size(437, 95);
this.devWindowDllList.TabIndex = 1;
this.devWindowDllList.TabStop = false;
this.devWindowDllList.SelectedIndexChanged += new System.EventHandler(this.DevWindowDllList_SelectedIndexChanged);
//
// devWindowHeader
//
this.devWindowHeader.BackColor = System.Drawing.SystemColors.WindowFrame;
this.devWindowHeader.Controls.Add(this.devWindowHeaderExit);
this.devWindowHeader.Controls.Add(this.devWindowIcon);
this.devWindowHeader.Controls.Add(this.devWindowTitle);
this.devWindowHeader.Dock = System.Windows.Forms.DockStyle.Top;
this.devWindowHeader.Location = new System.Drawing.Point(0, 0);
this.devWindowHeader.Name = "devWindowHeader";
this.devWindowHeader.Size = new System.Drawing.Size(495, 20);
this.devWindowHeader.TabIndex = 0;
this.devWindowHeader.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DevWindowHeader_MouseDown);
this.devWindowHeader.MouseMove += new System.Windows.Forms.MouseEventHandler(this.DevWindowHeader_MouseMove);
this.devWindowHeader.MouseUp += new System.Windows.Forms.MouseEventHandler(this.DevWindowHeader_MouseUp);
//
// devWindowHeaderExit
//
this.devWindowHeaderExit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.devWindowHeaderExit.BackColor = System.Drawing.Color.Red;
this.devWindowHeaderExit.Font = new System.Drawing.Font("Marlett", 12F);
this.devWindowHeaderExit.Location = new System.Drawing.Point(455, 0);
this.devWindowHeaderExit.Name = "devWindowHeaderExit";
this.devWindowHeaderExit.Size = new System.Drawing.Size(40, 20);
this.devWindowHeaderExit.TabIndex = 3;
this.devWindowHeaderExit.Text = "r";
this.devWindowHeaderExit.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.devWindowHeaderExit.Click += new System.EventHandler(this.DevWindowHeaderExit_Click);
//
// devWindowIcon
//
this.devWindowIcon.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("devWindowIcon.BackgroundImage")));
this.devWindowIcon.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.devWindowIcon.Location = new System.Drawing.Point(0, 0);
this.devWindowIcon.Name = "devWindowIcon";
this.devWindowIcon.Size = new System.Drawing.Size(20, 20);
this.devWindowIcon.TabIndex = 1;
this.devWindowIcon.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DevWindowHeader_MouseDown);
this.devWindowIcon.MouseMove += new System.Windows.Forms.MouseEventHandler(this.DevWindowHeader_MouseMove);
this.devWindowIcon.MouseUp += new System.Windows.Forms.MouseEventHandler(this.DevWindowHeader_MouseUp);
//
// devWindowTitle
//
this.devWindowTitle.AutoSize = true;
this.devWindowTitle.Location = new System.Drawing.Point(19, 4);
this.devWindowTitle.Name = "devWindowTitle";
this.devWindowTitle.Size = new System.Drawing.Size(53, 13);
this.devWindowTitle.TabIndex = 0;
this.devWindowTitle.Text = "DevTools";
this.devWindowTitle.MouseDown += new System.Windows.Forms.MouseEventHandler(this.DevWindowHeader_MouseDown);
this.devWindowTitle.MouseMove += new System.Windows.Forms.MouseEventHandler(this.DevWindowHeader_MouseMove);
this.devWindowTitle.MouseUp += new System.Windows.Forms.MouseEventHandler(this.DevWindowHeader_MouseUp);
//
// optionsWindowQualityLabel
//
this.optionsWindowQualityLabel.AutoSize = true;
this.optionsWindowQualityLabel.Location = new System.Drawing.Point(385, 23);
this.optionsWindowQualityLabel.Name = "optionsWindowQualityLabel";
this.optionsWindowQualityLabel.Size = new System.Drawing.Size(42, 13);
this.optionsWindowQualityLabel.TabIndex = 10;
this.optionsWindowQualityLabel.Text = "Quality:";
//
// optionsWindowQualityBox
//
this.optionsWindowQualityBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.optionsWindowQualityBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.optionsWindowQualityBox.FormattingEnabled = true;
this.optionsWindowQualityBox.Items.AddRange(new object[] {
"Sh*t",
"Default",
"Good"});
this.optionsWindowQualityBox.Location = new System.Drawing.Point(385, 36);
this.optionsWindowQualityBox.Name = "optionsWindowQualityBox";
this.optionsWindowQualityBox.Size = new System.Drawing.Size(103, 21);
this.optionsWindowQualityBox.TabIndex = 11;
this.optionsWindowQualityBox.TabStop = false;
//
// FakeDesktop
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -589,10 +827,10 @@ namespace LaptopSimulator2015
this.BackColor = System.Drawing.Color.Blue;
this.ClientSize = new System.Drawing.Size(1387, 919);
this.ControlBox = false;
this.Controls.Add(this.devWindow);
this.Controls.Add(this.optionsWindow);
this.Controls.Add(this.minigamePanel);
this.Controls.Add(this.levelWindow);
this.Controls.Add(this.winTimeLabel);
this.Controls.Add(this.winMenuPanel);
this.Controls.Add(this.winTaskbar);
this.Controls.Add(this.winKey);
@ -603,6 +841,8 @@ namespace LaptopSimulator2015
this.Text = "FakeDesktop";
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FakeDesktop_FormClosing);
this.Load += new System.EventHandler(this.FakeDesktop_Load);
this.Shown += new System.EventHandler(this.FakeDesktop_Shown);
this.winMenuPanel.ResumeLayout(false);
this.winTaskbar.ResumeLayout(false);
this.winTaskbar.PerformLayout();
@ -617,13 +857,17 @@ namespace LaptopSimulator2015
this.levelWindow3.PerformLayout();
this.levelWindowHeader.ResumeLayout(false);
this.levelWindowHeader.PerformLayout();
this.minigamePanel.ResumeLayout(false);
this.optionsWindow.ResumeLayout(false);
this.optionsWindow.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.optionsWindowWam)).EndInit();
this.optionsWindowHeader.ResumeLayout(false);
this.optionsWindowHeader.PerformLayout();
this.devWindow.ResumeLayout(false);
this.devWindow.PerformLayout();
this.devWindowHeader.ResumeLayout(false);
this.devWindowHeader.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
@ -642,7 +886,7 @@ namespace LaptopSimulator2015
private System.Windows.Forms.Label levelWindowTitle;
private System.Windows.Forms.Panel levelWindowIcon;
private System.Windows.Forms.Label levelWindowText1;
private System.Windows.Forms.TabControl levelWindowContents;
private WizardTab levelWindowContents;
private System.Windows.Forms.TabPage levelWindow1;
private System.Windows.Forms.TabPage levelWindow2;
private System.Windows.Forms.Button levelWindowC1;
@ -674,5 +918,22 @@ namespace LaptopSimulator2015
private System.Windows.Forms.Label levelWindowHeaderExit;
private System.Windows.Forms.Label optionsWindowHeaderExit;
private System.Windows.Forms.Button optionsWindowReset;
private System.Windows.Forms.ToolTip toolTip;
private System.Windows.Forms.Label minigameClose;
private System.Windows.Forms.Panel devWindow;
private System.Windows.Forms.Panel devWindowHeader;
private System.Windows.Forms.Label devWindowHeaderExit;
private System.Windows.Forms.Panel devWindowIcon;
private System.Windows.Forms.Label devWindowTitle;
private System.Windows.Forms.Button devWindowOpen;
private System.Windows.Forms.ListBox devWindowDllList;
private System.Windows.Forms.Label devWindowDllLabel;
private System.Windows.Forms.Label devWindowLevelLabel;
private System.Windows.Forms.ListBox devWindowLevelList;
private System.Windows.Forms.Button devWindowSkip;
private System.Windows.Forms.Button optionsWindowCredit;
private System.Windows.Forms.Button devWindowOverlay;
private System.Windows.Forms.Label optionsWindowQualityLabel;
private System.Windows.Forms.ComboBox optionsWindowQualityBox;
}
}

View File

@ -18,10 +18,10 @@ namespace LaptopSimulator2015
public partial class FakeDesktop : Form
{
#region Base
List<Level> levels = new List<Level>();
List<Minigame> levels = new List<Minigame>();
List<CaptchaGlitch> captchaGlitches = new List<CaptchaGlitch>();
SoundPlayer fans;
bool winShouldClose = false;
enum Mode
{
mainMenu,
@ -35,7 +35,7 @@ namespace LaptopSimulator2015
_mode = value;
winMenuStart.Enabled = _mode == Mode.mainMenu;
winMenuStart.Visible = _mode == Mode.mainMenu;
winMenuExit.Text = strings.winMenuExit1;
winMenuExit.Text = strings.exit;
winMenuPanel.Visible = false | _mode == Mode.mainMenu;
winDesktop.Enabled = _mode == Mode.game;
levelWindowText1.Text = "";
@ -45,6 +45,14 @@ namespace LaptopSimulator2015
optionsWindowLSD.Text = strings.optionsWindowLSD;
optionsWindowTitle.Text = strings.optionsWindowTitle;
optionsWindowWamLabel.Text = strings.optionsWindowWam;
optionsWindowReset.Text = strings.optionsWindowReset;
optionsWindowSubs.Text = strings.optionsWindowSubs;
optionsWindowQualityBox.Items[0] = strings.optionsWindowQuality1;
optionsWindowQualityBox.Items[1] = strings.optionsWindowQuality2;
optionsWindowQualityBox.Items[2] = strings.optionsWindowQuality3;
Text = strings.fakeDesktopTitle;
winMenuStart.Text = strings.start;
winMenuText.Text = strings.winMenuText;
levelWindow.Visible = false;
minigamePanel.Visible = false;
optionsWindow.Visible = false;
@ -57,26 +65,30 @@ namespace LaptopSimulator2015
subsLabel.Visible = optionsWindowSubs.Checked;
if (_mode == Mode.mainMenu)
winMenuStart.Select();
for (int i = 0; i < levels.Count; i++)
levels[i].desktopIcon.Visible = levels[i].LevelNumber <= Settings.level;
if (tmp__mode_uiv)
updateIconVisibility();
}
}
bool tmp__mode_uiv = false;
[DllImport("winmm.dll")]
public static extern int waveOutGetVolume(IntPtr hwo, out uint dwVolume);
static extern int waveOutGetVolume(IntPtr hwo, out uint dwVolume);
[DllImport("winmm.dll")]
public static extern int waveOutSetVolume(IntPtr hwo, uint dwVolume);
static extern int waveOutSetVolume(IntPtr hwo, uint dwVolume);
public FakeDesktop()
{
Directory.SetCurrentDirectory(Path.GetDirectoryName(Application.ExecutablePath));
if (!Directory.Exists("Levels"))
Directory.CreateDirectory("Levels");
if (!Directory.Exists("Content"))
Directory.CreateDirectory("Content");
InitializeComponent();
levelWindowContents.ItemSize = new Size(0, 1);
toolTip.SetToolTip(options_2, strings.optionsWindowTitle);
#if DEBUG
devWindowOpen.Visible = true;
optionsWindowLang.Size = new Size(93, 21);
#endif
optionsWindowLang.Text = Settings.lang.Name;
Thread.CurrentThread.CurrentUICulture = Settings.lang;
optionsWindowWam.Value = Settings.wam;
int NewVolume = ((ushort.MaxValue / 10) * Settings.wam);
uint NewVolumeAllChannels = ((uint)NewVolume & 0x0000ffff) | ((uint)NewVolume << 16);
@ -84,57 +96,184 @@ namespace LaptopSimulator2015
tmpoptionslsdcanchange = Settings.lsd;
optionsWindowLSD.Checked = Settings.lsd;
optionsWindowSubs.Checked = Settings.subs;
Text = strings.fakeDesktopTitle;
winMenuExit.Text = strings.winMenuExit1;
winMenuStart.Text = strings.winMenuStart;
winMenuText.Text = strings.winMenuText;
optionsWindowQualityBox.SelectedIndex = Settings.quality;
levelWindowTitle.Text = "";
winTimeLabel.Text = DateTime.Now.Hour.ToString("00") + ":" + DateTime.Now.Minute.ToString("00");
winTimeLabel.Text = DateTime.Now.ToString("hh:mm:ss", Settings.lang);
fans = new SoundPlayer(Resources.fans);
fans.PlayLooping();
Control[] controls = getControls(ignore: new List<Control> { minigamePanel }).ToArray();
for (int i = 0; i < controls.Length; i++)
{
controls[i].Paint += Control_Paint;
}
levels = new List<Level>();
AppDomain ad = AppDomain.CurrentDomain;
ad.AssemblyResolve += AssemblyResolveHandler;
foreach (string s in Directory.GetFiles("Levels"))
if (Path.GetExtension(s) == ".dll")
ad.Load(s);
List<Type> tmp = ad.GetAssemblies().SelectMany(s => s.GetTypes()).Where(p => typeof(Level).IsAssignableFrom(p)).ToList();
tmp.Remove(typeof(Level));
for (int i = 0; i < tmp.Count; i++)
IEnumerable<string> tmpdirs = Directory.EnumerateFiles("Content", "*.dll", SearchOption.AllDirectories);
IEnumerable<Type> tmp_types = tmpdirs.Select(s => Assembly.LoadFrom(s)).SelectMany(s => s.GetTypes()).Distinct();
levels = tmp_types.Where(p => typeof(Minigame).IsAssignableFrom(p)).Distinct().Except(new Type[] { typeof(Minigame), typeof(Level), typeof(Goal) })
.Select(s => (Minigame)Activator.CreateInstance(s)).OrderBy(lv => lv.availableAfter).ToList();
#if DEBUG
devWindowDllList.Items.AddRange(tmpdirs.ToArray());
devWindowLevelList.Items.AddRange(levels.Select(s => s.availableAfter.ToString() + " - " + s.name + (typeof(Goal).IsAssignableFrom(s.GetType()) ? (" - " + ((Goal)s).playableAfter.ToString() + " (Goal)") : " (Level)")).ToArray());
#endif
captchaGlitches = tmp_types.Where(p => typeof(CaptchaGlitch).IsAssignableFrom(p)).Distinct().Except(new Type[] { typeof(CaptchaGlitch) })
.Select(s => (CaptchaGlitch)Activator.CreateInstance(s)).ToList();
for (int i = 0; i < levels.Count; i++)
{
levels.Add((Level)Activator.CreateInstance(tmp[i]));
levels[i].desktopIcon = new Panel();
Panel tmp1 = new Panel();
levels[i].desktopIcon.Size = new Size(50, 50);
levels[i].desktopIcon.BackColor = Color.FromArgb(128, 128, 255);
levels[i].desktopIcon.Name = "lvl" + i.ToString() + "_1";
levels[i].desktopIcon.Visible = levels[i].LevelNumber <= Settings.level;
tmp1.BackColor = Color.Blue;
tmp1.BackgroundImageLayout = ImageLayout.Stretch;
tmp1.BackgroundImage = levels[i].installerIcon;
tmp1.Anchor = (AnchorStyles)15;
tmp1.Name = "lvl" + i.ToString() + "_2";
tmp1.Location = new Point(2, 2);
tmp1.Size = new Size(46, 46);
tmp1.Tag = i;
tmp1.DoubleClick += (sender, e) => { level_Start((int)((Panel)sender).Tag); };
levels[i].desktopIcon = new Panel
{
Size = new Size(50, 50),
BackColor = Color.FromArgb(128, 128, 255),
Name = "lvl" + i.ToString() + "_1",
Visible = levels[i].availableAfter <= Settings.level
};
Panel tmp1 = new Panel
{
BackColor = Color.Blue,
BackgroundImageLayout = ImageLayout.Stretch,
BackgroundImage = levels[i].icon,
Anchor = (AnchorStyles)15,
Name = "lvl" + i.ToString() + "_2",
Location = new Point(2, 2),
Size = new Size(46, 46),
Tag = i
};
tmp1.DoubleClick += (sender, e) =>
{
levelInd = (int)((Panel)sender).Tag;
levelWindowIcon.BackgroundImage = levels[levelInd].icon;
levelWindowTitle.Text = levels[levelInd].name;
minigameClockT.Interval = levels[levelInd].gameClock;
winDesktop.Enabled = false;
if (typeof(Level).IsAssignableFrom(levels[levelInd].GetType()))
{
Misc.closeGameWindow = new Action(() => {
base.BackColor = Color.FromArgb(100, 0, 255);
levelWindow.Visible = false;
minigamePanel.Visible = false;
minigamePanel.Enabled = false;
minigameClockT.Enabled = false;
winDesktop.Enabled = true;
levelWindowContents.SelectedIndex = 0;
levelWindowProgress.Value = 0;
levelWindowProgressT.Enabled = false;
levelWindowC1.Enabled = true;
Thread.Sleep(100);
base.BackColor = Color.Blue;
});
levelWindowProgress.Maximum = ((Level)levels[levelInd]).installerProgressSteps;
levelWindowText1.Text = ((Level)levels[levelInd]).installerText;
levelWindow.Visible = true;
}
else
{
Goal goal = ((Goal)levels[levelInd]);
if (goal.playableAfter <= Settings.level)
{
levels[levelInd].initGame(minigamePanel, minigameClockT);
minigamePanel.Visible = true;
minigamePanel.Enabled = true;
minigameClockT.Enabled = true;
minigameClose.Visible = true;
Misc.closeGameWindow = new Action(() => {
base.BackColor = Color.FromArgb(100, 0, 255);
minigamePanel.Visible = false;
minigamePanel.Enabled = false;
minigameClockT.Enabled = false;
winDesktop.Enabled = true;
minigameClose.Visible = false;
Thread.Sleep(100);
base.BackColor = Color.Blue;
});
minigamePanel.Show();
}
else
{
base.BackColor = Color.FromArgb(100, 0, 255);
if (levels[levelInd].availableAfter == Settings.level)
{
playDialog(goal.incompleteText);
incrementLevel();
}
Thread.Sleep(100);
base.BackColor = Color.Blue;
winDesktop.Enabled = true;
}
}
};
toolTip.SetToolTip(tmp1, strings.lvPref + " " + (i + 1).ToString() + ": " + levels[i].name);
levels[i].desktopIcon.Controls.Add(tmp1);
winDesktop.Controls.Add(levels[i].desktopIcon);
}
levels = levels.OrderBy(lv => lv.LevelNumber).ToList();
mode = Mode.mainMenu;
Program.splash.Close();
Misc.closeGameWindow = new Action(closeLevelWindow);
GC.Collect();
}
private void FakeDesktop_Load(object sender, EventArgs e)
{
mode = Mode.mainMenu;
tmp__mode_uiv = true;
}
private void FakeDesktop_Shown(object sender, EventArgs e) => Program.splash?.Hide();
void updateIconVisibility(bool ignoreSub = false)
{
for (int i = 0; i < levels.Count; i++)
{
if ((!ignoreSub) && ((typeof(Goal).IsAssignableFrom(levels[i].GetType()) && levels[i].desktopIcon.Visible != levels[i].availableAfter <= Settings.level) || (levels[i].availableAfter == 0 && Settings.level == 0)))
{
string[] at = ((Goal)levels[i]).availableText;
new Thread(() =>
{
try
{
Invoke((MethodInvoker)delegate () { winDesktop.Enabled = false; });
playDialog(at).Join();
Invoke((MethodInvoker)delegate ()
{
winDesktop.Enabled = true;
updateIconVisibility(true);
});
}
catch (InvalidOperationException) { }
}).Start();
}
levels[i].desktopIcon.Visible = levels[i].availableAfter <= Settings.level;
}
#if DEBUG
devWindowLevelList.SelectedIndex = levels.FindIndex(s => s.availableAfter == Settings.level);
#endif
}
Thread playDialog(string[] lines)
{
var tmp = new Thread(() =>
{
try
{
for (int i = 0; i < lines.Length; i++)
{
Invoke((MethodInvoker)delegate () { subsLabel.Text = lines[i]; });
Thread.Sleep(2000);
}
Invoke((MethodInvoker)delegate () { subsLabel.Text = ""; });
}
catch (InvalidOperationException) { }
});
tmp.Start();
return tmp;
}
void incrementLevel()
{
int closest = int.MaxValue;
for (int i = 0; i < levels.Count; i++)
if (levels[i].availableAfter < closest & levels[i].availableAfter > levels[levelInd].availableAfter)
closest = levels[i].availableAfter;
if (closest != int.MaxValue)
Settings.level = closest;
Settings.Save();
updateIconVisibility();
for (int i = 0; i < levels.Count; i++)
if (typeof(Goal).IsAssignableFrom(levels[i].GetType()) && ((Goal)levels[i]).playableAfter == Settings.level)
playDialog(((Goal)levels[i]).completeText);
}
static Assembly AssemblyResolveHandler(object source, ResolveEventArgs e) => Assembly.LoadFrom(e.Name);
public List<Control> getControls(Control parent = null, List<Control> ignore = null)
{
@ -173,7 +312,7 @@ namespace LaptopSimulator2015
else
{
if (levelWindow.Visible)
LevelWindowHeaderExit_Click(sender, new EventArgs());
Misc.closeGameWindow.Invoke();
}
}
}
@ -183,7 +322,7 @@ namespace LaptopSimulator2015
private void WinKey_Click(object sender, EventArgs e)
{
winMenuPanel.Visible = mode == Mode.mainMenu | !winMenuPanel.Visible;
winMenuExit.Text = strings.winMenuExit1;
winMenuExit.Text = strings.exit;
}
private void WinMenuExit_Click(object sender, EventArgs e)
@ -201,24 +340,12 @@ namespace LaptopSimulator2015
else
winMenuExit.Text = strings.winMenuExit2;
}
private void WinMenuStart_Click(object sender, EventArgs e) => mode = Mode.game;
private void WinTimeTimer_Tick(object sender, EventArgs e) => winTimeLabel.Text = DateTime.Now.Hour.ToString("00") + ":" + DateTime.Now.Minute.ToString("00");
private void WinTimeTimer_Tick(object sender, EventArgs e) => winTimeLabel.Text = DateTime.Now.ToString("hh:mm:ss", Settings.lang);
#endregion
#region Level
int levelInd = 0;
private void level_Start(int level)
{
levelInd = level;
levelWindowIcon.BackgroundImage = levels[level].installerIcon;
levelWindowTitle.Text = levels[level].installerHeader;
levelWindowText1.Text = levels[level].installerText;
minigameClockT.Interval = levels[level].gameClock;
levelWindowProgress.Maximum = levels[level].installerProgressSteps;
winDesktop.Enabled = false;
levelWindow.Visible = true;
}
bool levelWindowMoving = false;
Point levelWindowDiff = Point.Empty;
@ -243,6 +370,7 @@ namespace LaptopSimulator2015
case 0:
CaptchaPanel_Click(sender, e);
levelWindowContents.SelectedIndex = 1;
captchaBox.Select();
break;
case 1:
if (captchaBox.Text == (string)captchaBox.Tag)
@ -251,13 +379,11 @@ namespace LaptopSimulator2015
levelWindowProgressT.Enabled = true;
minigameTime = 0;
Graphics g = minigamePanel.CreateGraphics();
levels[levelInd].initGame(g, minigamePanel, minigameClockT);
levels[levelInd].initGame(minigamePanel, minigameClockT);
minigamePanel.Visible = true;
minigamePanel.Enabled = true;
minigameClockT.Enabled = true;
#if !DEBUG
levelWindowC1.Enabled = false;
#endif
g.Clear(Color.Red);
g.DrawString("DANGER!", new Font("Microsoft Sans Serif", 100f), new SolidBrush(Color.White), 100, 150);
g.DrawString("VIRUS DETECTED", new Font("Microsoft Sans Serif", 20f), new SolidBrush(Color.White), 0, 300);
@ -271,18 +397,10 @@ namespace LaptopSimulator2015
}
break;
case 2:
LevelWindowHeaderExit_Click(sender, e);
if (levels[levelInd].LevelNumber >= Settings.level)
Misc.closeGameWindow.Invoke();
if (levels[levelInd].availableAfter >= Settings.level)
{
int closest = int.MaxValue;
for (int i = 0; i < levels.Count; i++)
if (levels[i].LevelNumber < closest & levels[i].LevelNumber > levels[levelInd].LevelNumber)
closest = levels[i].LevelNumber;
if (closest != int.MaxValue)
Settings.level = closest;
Settings.Save();
for (int i = 0; i < levels.Count; i++)
levels[i].desktopIcon.Visible = levels[i].LevelNumber <= Settings.level;
incrementLevel();
mode = Mode.game;
}
break;
@ -302,8 +420,23 @@ namespace LaptopSimulator2015
LevelWindowC1_Click(sender, new EventArgs());
break;
default:
if (strings.captchaLetters.ToCharArray().Contains(char.Parse(e.KeyChar.ToString().ToUpper())))
captchaBox.Text += e.KeyChar.ToString().ToUpper();
char tmp1 = char.ToUpper(e.KeyChar);
if (strings.captchaLetters.ToUpper().ToCharArray().Contains(tmp1))
{
string tmp2 = tmp1.ToString().ToUpper();
captchaGlitches.ForEach(s => s.currentLevel = Settings.level);
Random rnd = new Random();
CaptchaGlitch[] capGlN = captchaGlitches.Where(s => !s.postGlitch).ToArray();
List<CaptchaGlitch> capGlP = captchaGlitches.Where(s => s.postGlitch).ToList();
for (int i = 0; i < capGlN.Length; i++)
if (rnd.NextDouble() < capGlN[i].chance)
{
capGlN[i].apply(tmp1, ref tmp2, strings.captchaLetters.ToUpper().ToCharArray(), rnd);
break;
}
capGlP.ForEach(s => s.apply(tmp1, ref tmp2, strings.captchaLetters.ToUpper().ToCharArray(), rnd));
captchaBox.Text += tmp2;
}
break;
}
}
@ -320,7 +453,6 @@ namespace LaptopSimulator2015
g.FillRectangle(new HatchBrush((HatchStyle)rnd.Next(53), Color.FromArgb(rnd.Next(180, 255), rnd.Next(180, 255), rnd.Next(180, 255)), Color.Transparent), new Rectangle(0, 0, 175, 60));
for (int i = 0; i < 6; i++)
{
int y = rnd.Next(8, 13);
int fontSize = rnd.Next(12, 18);
g.TranslateTransform(25 * (i) + 10, (30 - fontSize) / 2);
g.RotateTransform(rnd.Next(-20, 20));
@ -328,7 +460,7 @@ namespace LaptopSimulator2015
int tmpG = rnd.Next(0, (200 - tmpR) / 2);
string s = Chars[rnd.Next(Chars.Length)].ToString();
captchaBox.Tag = (string)captchaBox.Tag + s;
g.DrawString(s, new Font(new string[] { "Arial", "Consolas", "Verdena" }[rnd.Next(3)], fontSize), new SolidBrush(Color.FromArgb(tmpR, tmpG, Math.Max(0, 200 - tmpR - tmpG))), new PointF(5, y));
g.DrawString(s, new Font(new string[] { "Arial", "Consolas", "Verdena" }[rnd.Next(3)], fontSize), new SolidBrush(Color.FromArgb(tmpR, tmpG, Math.Max(0, 200 - tmpR - tmpG))), new PointF(5, rnd.Next(8, 13)));
g.ResetTransform();
}
g.FillRectangle(new HatchBrush((HatchStyle)rnd.Next(53), Color.FromArgb(rnd.Next(10, 50), rnd.Next(180, 255), rnd.Next(180, 255), rnd.Next(180, 255)), Color.FromArgb(rnd.Next(10, 50), rnd.Next(180, 255), rnd.Next(180, 255), rnd.Next(180, 255))), new Rectangle(0, 0, 175, 60));
@ -346,37 +478,34 @@ namespace LaptopSimulator2015
}
}
private void LevelWindowHeaderExit_Click(object sender, EventArgs e) => closeLevelWindow();
private void CloseMinigame(object sender, EventArgs e) => Misc.closeGameWindow.Invoke();
private void closeLevelWindow()
{
BackColor = Color.FromArgb(100, 0, 255);
levelWindow.Visible = false;
minigamePanel.Visible = false;
minigamePanel.Enabled = false;
minigameClockT.Enabled = false;
winDesktop.Enabled = true;
levelWindowContents.SelectedIndex = 0;
levelWindowProgress.Value = 0;
levelWindowProgressT.Enabled = false;
levelWindowC1.Enabled = true;
Thread.Sleep(100);
BackColor = Color.Blue;
}
#region Minigame
#region Minigame
uint minigameTime = 0;
private void InvadersPanel_Paint(object sender, PaintEventArgs e) => levels[levelInd].gameTick(e.Graphics, minigamePanel, minigameClockT, minigameTime);
uint minigamePrevTime = 0;
private void InvadersPanel_Paint(object sender, PaintEventArgs e)
{
using (GraphicsWrapper w = new GraphicsWrapper(e.Graphics, levels[levelInd].backColor, new Rectangle(Point.Empty, minigamePanel.Size), Settings.quality == 1 ? levels[levelInd].isLowQuality : Settings.quality == 0))
{
w.Clear();
levels[levelInd].draw(w, minigamePanel, minigameClockT, minigameTime);
if (minigameTime != minigamePrevTime)
{
levels[levelInd].gameTick(w, minigamePanel, minigameClockT, minigameTime);
minigamePrevTime = minigameTime;
}
}
}
private void InvadersTimer_Tick(object sender, EventArgs e)
{
minigameTime++;
minigamePanel.Invalidate();
}
#endregion
#endregion
#endregion
#region Options
#endregion
#region Options
private void Options_2_DoubleClick(object sender, EventArgs e)
{
winDesktop.Enabled = false;
@ -412,6 +541,7 @@ namespace LaptopSimulator2015
Settings.wam = optionsWindowWam.Value;
Settings.lsd = optionsWindowLSD.Checked;
Settings.subs = optionsWindowSubs.Checked;
Settings.quality = optionsWindowQualityBox.SelectedIndex;
int NewVolume = ((ushort.MaxValue / 10) * Settings.wam);
uint NewVolumeAllChannels = ((uint)NewVolume & 0x0000ffff) | ((uint)NewVolume << 16);
waveOutSetVolume(IntPtr.Zero, NewVolumeAllChannels);
@ -460,7 +590,7 @@ namespace LaptopSimulator2015
optionsWindowLSD.Checked = false;
try
{
if (MessageBox.Show("Are you SURE?\r\n(This will break EVERYTHING!)", "WARNING", MessageBoxButtons.YesNo) == DialogResult.Yes)
if (MessageBox.Show(strings.optionsWindowLSDWarning, "", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
tmpoptionslsdcanchange = true;
optionsWindowLSD.Checked = true;
@ -512,14 +642,83 @@ namespace LaptopSimulator2015
{
if (MessageBox.Show(strings.resetWarning1, "", MessageBoxButtons.YesNo) == DialogResult.Yes && MessageBox.Show(strings.resetWarning2, "", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
Settings.wam = 0;
Settings.lsd = false;
Settings.subs = true;
Settings.level = 1;
Settings.Save();
mode = Mode.game;
File.Delete(Settings._xmlfile);
winShouldClose = true;
string ex = "";
if (Application.ExecutablePath.Contains(" "))
ex = "\"\" \"" + Application.ExecutablePath + "\"";
else
ex = Application.ExecutablePath;
Process.Start(new ProcessStartInfo
{
Arguments = "/C timeout /t 2 /nobreak >nul & del \"" + Settings._xmlfile + "\" & start " + ex,
WindowStyle = ProcessWindowStyle.Hidden,
CreateNoWindow = true,
FileName = "cmd.exe"
});
Application.Exit();
}
}
private void optionsWindowCredit_Click(object sender, EventArgs e)
{
new Thread(() => {
string tmp = Path.GetTempFileName();
File.Move(tmp, Path.ChangeExtension(tmp, "txt"));
tmp = Path.ChangeExtension(tmp, "txt");
File.WriteAllLines(tmp, levels.SelectMany(s => s.credits).ToArray());
Process.Start(tmp).WaitForExit();
File.Delete(tmp);
}).Start();
}
bool devWindowMoving = false;
Point devWindowDiff = Point.Empty;
private void DevWindowHeader_MouseDown(object sender, MouseEventArgs e)
{
devWindowMoving = true;
devWindowDiff = new Point(devWindow.Location.X - Cursor.Position.X, devWindow.Location.Y - Cursor.Position.Y);
}
private void DevWindowHeader_MouseMove(object sender, MouseEventArgs e)
{
if (devWindowMoving)
devWindow.Location = new Point(Cursor.Position.X + devWindowDiff.X, Cursor.Position.Y + devWindowDiff.Y);
}
private void DevWindowHeader_MouseUp(object sender, MouseEventArgs e) => devWindowMoving = false;
private void DevWindowHeaderExit_Click(object sender, EventArgs e) => devWindow.Visible = false;
private void DevWindowOpen_Click(object sender, EventArgs e) => devWindow.Visible = true;
private void DevWindowDllList_SelectedIndexChanged(object sender, EventArgs e) => _ = Process.Start("explorer", "/select," + (((string)devWindowDllList.SelectedItem).Contains(" ") ? "\"" + (string)devWindowDllList.SelectedItem + "\"" : (string)devWindowDllList.SelectedItem));
private void DevWindowLevelList_SelectedIndexChanged(object sender, EventArgs e)
{
Settings.level = levels[devWindowLevelList.SelectedIndex].availableAfter;
updateIconVisibility();
}
private void DevWindowSkip_Click(object sender, EventArgs e)
{
if (levelWindow.Visible)
{
if (levelWindowContents.SelectedIndex == 1)
captchaBox.Text = (string)captchaBox.Tag;
LevelWindowC1_Click(sender, e);
}
}
private void devWindowOverlay_Click(object sender, EventArgs e) => _ = SetWindowPos(GetConsoleWindow(), HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS);
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
const uint SWP_NOSIZE = 0x0001;
const uint SWP_NOMOVE = 0x0002;
const uint TOPMOST_FLAGS = SWP_NOMOVE | SWP_NOSIZE;
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
#endregion
}
}

View File

@ -290,4 +290,90 @@
<metadata name="lsdEffectT.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>462, 17</value>
</metadata>
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>566, 17</value>
</metadata>
<data name="devWindowIcon.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
/9j/4AAQSkZJRgABAQEAYABgAAD/4QA6RXhpZgAATU0AKgAAAAgAAwESAAMAAAABAAEAAEAAAAMAAAAB
ABUAAEABAAEAAAABAAAAAAAAAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcI
CQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwM
DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCABkAGQDASIAAhEBAxEB/8QA
HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW
V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG
x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQF
BgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq
8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9+/m9qPm9qPm9qjnb5eSvQk+w9aAHsaaK434ifHLwv8Knjj1r
Uo4bu4H7iyi3XF5cD1SFAXbt0B6iuRf9qi6nbdZfDj4g3kX8MptILVWHbCSzLIP+BKK0jRlJXRjUxFOH
xHsWKQjNeOD9pvxDJ/qfhZ4yb/fubFf/AGuaG/aB8ZTcx/CvxB/wPUrL+k3FV9XqGaxlLoz2QZA7UY3V
42fjx4+lHy/C68jH/TXWrYA/lmj/AIXn4+6N8NY1Ht4jt1z9OBR9VqMmWOpLc9jPHpSqa8dh/axtdBlV
fGHh3xB4Vj6PezwLc6ch97iIsF7ff257ZwceoaLrNtr9lHd2dxDdWtwiyRSxOHSRT0YEEgg1Mqc4/Ea0
8RTn8Jp/N7UfN7UyE9af83tWZuHze1FHze1FADJuSuQPY46dK8q+P/xbvtCnsvC/hlrf/hJNYVpWuJlM
kWkWw4NzIB3zwg7n6V6ldt5Ue4/w5I/z9M/nXzh8CrxfHvjnxb4znVpBe6lNHGHO9RBbO1vBH7fMry/V
hXRhKXtHfsebmGKdOPIupreH/C/hH9nnQrjXPEOoMupXRButR1GQy3165HAlfBO454Rfugj1qGH9rqzu
o9ui+F/FGpxrwjWmkTMh9MMV5qL4F+HbP4vfEXxB401jy77+x9Tk0vRLeRtyWXlAeZKF6edIxyfZRXus
V/DHwoXaPusv3W9x2rslVhTfK1dnn4ejKrFtux4Yvx0+IniByumfDHXj3WS7mhtvzDPkflS/afjl4l+a
Lw94X0fdxtutRaVk9/kXn8692GpL/DxQupLu+apli5JXjA0WXUXpOVzwyP4I/F7Wfmu/G3h/Td33ktdM
abH0ZnGPyqxb/sleIr8n+1fid4mk/wBmzghtx7/wsf14r3Vb6ORaPMWT7tR/aWIWx0RyrCrc8J1H9jj+
zrR5tL8a+LoNUAO2Se6F1HJwfleB/kcH0ODjOK8z+HninXP2e/EGqtJbfY7Hw/cLH4o0a03PZrFIDt1a
wDcxLyWkj6BY2xX2EEGfm+lfPPxG/wCJT+2bbxzbWtNa8N7DGy7ll8uZwVx6kSEfjW2ErzrNwq9Tlx2H
hhEqlLyPcpvEVjb6A2pNcQ/YI0+0mZyPLSP7+/Ppt5HsVr5D+Bf/AAVYb42/tGyeGtO8MrJ4Tku0srfU
hOftgJO0SyL02MVPTsK439pD4leINd+EK/s5+D9Y02Hxtf6pc6S015c+W9to8bAxkDrukR0hXHYNXPf8
E1v2I/Enwd+MFzpPjCGBdS0e5Gr3z28m+AxopjtETv8ANmZznvHSo4elGnOVffoefjsxx1TF0aeF+Hr9
x+jYuQBw0aduW25xxkD0oqWIRpGPn2nv7+/49aK8h+zufZrltqLMu6FuwHPHWvl39kvUn0vwPrmivD5N
1p97eQEHqzR3kwOfqGFfU1w/louemcn6da+S7RP+EQ/aa8caPBHsS9vBcxBfvSefbqxx/wBtI5Pzr2cp
gp1JRZ85nicKUai6Gh+yt4q/sz4g/Enw/u2xtLba1b46hZYxG4H0MQ/OvYk8VlnAVmbcSAB9/A4r578N
6Nd+Bf2u/D95qUkMNv4qsrnSZ7de5A82PP8A3y1e/Sa1Z6JNKiQxxurYymM9SR1+tepiqMVXagrnzdHF
NUVKcuVdzctDd3S7vIZV/vM2DV+ONo8bpeT224xXmnif486D4RZl1LVLW3m6+QZg0n4KKyD+1LY6gw/s
63mmGOHlby1x9Ky/srGT96MNA/1oyyl7lSrzPse2rtK/NJTo4lflWZtvpXjMXxlv9RddjRxxsDtWPHJ9
s+n9a9M8F62t3oMEnnLIgizI5xuHXIyOnY/Ra4MfgauFj7Soezk/EOHx9RRolrxf4403wB4XvdY1i8TT
9N02MzzzSkbEUdc//W74r8/PjD+17N8dvi9peveHNQg8M2uj281jZyXAWS5vI3YEyMrkBc7Vx1yDXdft
gftCR/GLxfb6FpkB1Tw9ocnmXQ37YtUuFI7/AMUKfe+q1q/DHxZ4b1GzWy13QjskHLTQLMhHqQOxzn6E
V/OvF3iRSniHg8uxfs3s35n77kPCtChhfreaUOd7qHZdz4d/aV/Yf174pfHV/jXo/ifW7n4g28kV2YHK
pHceUvy+XsACtx05yCRX6t/sUw32sfBmy8Ta5c2d94o8Vxx32rT2zF4VkC7BAjd1iClPqGPevJ9d+BXh
7TL6zvPCMkenPfElYYnP2Y4UknZ/CcZHHXPtXefsX2914PuPFfhy6VVhsbhL21UdI0lU7kH0Kg/8Cr0O
A+KczlW/s/MantL3s/lc8TiTKcrcHj8BH2b6x/A98+b2oqI7Cx3jpwPpRX7F7M+IHPH8v6V8l/tQX3/C
sv2uPDeu+Z5cOq2EaSj+88Nxt/lOK+tXVmZem3vXyN/wVk0ZrX4e+GfEEYbzrG8mtjt6gSwOQR77o1H4
162SSUsVGEuun3ni8QRf1Ocl01+480/bg+O2mfDC80XxNqGoQ6eNF1q1njlkYAOS+3aPc7q8h/a6/wCC
hPiLV/HOoaD4c8zQ9Ot5MC6ziaZSA2dx+6PmOMetflh+3f8AtgeKv2mviJdahrEzWdlp8mzTtOik2w2j
DJJ95C2TX0x4w8Ur4z8F+AvFccu5PEugW1xO3ZpkHlMT/tfIM/hX9JcM8JYGniqccVHmla6R/M3iFmWO
rYGNTCy5YvRs9M+H3xBvn8SrJJLeX1zdyYLlmmlkY/8AoVfSWheMdS8Lx2seqafe2KzYEYuYzCHx/d/2
ueK8F/4J+63YS/FK7a4aNr6GAG23feB3c4/DFfbf7WPifRbL9lzWrrVHt42jjU6e0mN/nk/KF/2jg9K6
uLsZCjmMMFSoe7Jpbd32PzbhnKaksNVxVSteUU3vY4Cw/aBWK9aG1s9Rv3jOPMhjG1COoLnjI710MHi7
xd8QtNfTRcT6LpN2P3tvbsTLcg/89G6bT3xXgX7Kfx00l9WXRtemjs3vJ/NiupMiN3YD5GPZuBX2dp+i
W+k6O15KyraRoGeQZK7fQEde1f5s+P3FvG2CzjE5HiIexpX933bXh6n94eDuWcKVcro5tgn7Wq4pS969
p+hynhP4JwWVvFmNY1jXHy8rj2PcV3Hh/wCGVvDCXP8Aq+KZ4Mv5PiDqr+TH5Ol253M/Pzt6c+vFb3j3
xXFoMA06CX99Io3j/nmp6D8cGv5Mo4dwi683zRez8z9sxmaYqpW9le0uq8uhH4f8Nxw6vut/lEJHP410
nwps/snxr1j+HdpcDSD381sf1pvw1sWfS45X+RrjD89FAPX+danwLddd8Q+KNbX5be4u0tYFHQrEn3h9
S/6V+6+DuW42pjIVq3wpu33Hx+cYyc4OMz0qXy8ru9OKKZM0jMu37uKK/rbmtofEyepY+b2rwr/goz4c
PiH9l7VW27jp91a3h9lWdAx/Imvdfm9qxviB4TtfHfhHUNG1CNpbPVLaW2mRW2s6OhVsHscHg9jg9q2w
lb2VaNTs0zLHUPbYedLumfyX/tceD7rwV8T/ABBYypiS1vJBgdX2kg4+p3V6v8EPHdxr/wCwFpNwz7W8
E69PpjOVyVhmAkVT9NrV73/wVt/YG1jwX4u1PUI7V7i801RFfiJMfa4OVhvI/VWQDcOzq4r4k/Z5+OA/
Zs1bXNB8Q6PJ4i8B+LFVdXsYm8ueBl+7cwNkBZFyeD1z7V/SWDzhtUMxoLmilZr5WP5/qZbTqU6mXYre
+n3ntHg79oT7BcQXFneS200ZHlzRyfN26enSu88R/tb658RYYI9Z1q+1ZLfiNLmfcsZGO3+eleGT63+z
p4YddQsNc+Ierbsuumx6akMkRJyYzIzbcDI5HXJqU/tv+GPCsfl+D/hHb3DDhbvXr43LE9iUUKPXo1fa
S4vwdRRnKg+dbW3PksVwJry02lF99j6A+HnxLu574+Tp93fmXJYJGefYsOdtfYP7KX7Z3xN+E0jLrXh0
al4PbCGDU51tZLSPnJjlk42j0IOcDkd/yq1z9vD4zeJoDBp+rWPhOA5XytF0+O349pPmcY/3u9efa0PG
XxKuPO17Wte16SRst9qvJJ8+v3icfpXxfGuV5fxbSdLMMHFdOaW6+49ThfK6vD9d4nB4txvul8J/Sv8A
B3/goT8AvijqZ0HS/HXhvSdc2Dfpz3cUUiMc9CGZT06g/gK9Fj+CmgeIL5tQtfECXCTSh2kW4jk80H+E
kdq/mX+DH7I/iL4halDbaPot3cSXDEKwiLLGcfeJPAA6ZPTIr9UP+Ccn/BP/AMSWsf2GPUtUurqRfIvL
xLyX7DoKkAMobIV7rGcBPujOeor+ZeLvo75DhaHt5uKe6Stf8P1P3bJvEzFV8QqFKLk9nI/S/wAd63/Y
1pHoHh5o7rXr5fJiC4YWqd3bHQKCW+oFd/8ADTwdB4D8JWul2zb1tUAdyctI5+ZnPuxO78aqeAPhpovw
402Gy0uzitzDGkfmEZlm25G5jklucnn+8a6eM/OwG2vmch4foZfeUPRH3FbFSnHk+bH/ADe1FHze1FfT
HKHze1RXALbevHOQf0qX5vamyFuKHbqB5d+0b+zX4f8A2htDht9Uia21G2LGy1CEbZrYsBkejK2BlCCG
x04yPy9/am/4IM3s+tXl5p+gXF1FIx2XGgBGWQE8s1qzJsbPUK7Z9TwB+yYzntTJjnHSvcyfiLHZb/Al
ddj57NuG8Fj/AH6iafdbn89ehf8ABD/VtV1M28Gn+NLyWNypiTQGix9TIUQfgT9TXsXw7/4N9NYkClvD
WpSLxu/tDUYLTH/fHmf17V+2HNOj7178vETNWrRdvM8SPAWBv70pNdnsflv4K/4N+47MQvdWfhGz29Vm
nuLxl/HCKfyr2jwD/wAEW/DPhZFZ9W0+Fv4ltNDgGPozkmvuQc+lRzJ0rycRxhm9b4qp6eH4Nyun9g+e
/BX/AATf8C+E9v2mbWNYjXrbz3Ait2HfKRquR7HP86908I+GbHwlpUdjptnbWNlbqEihgh8mNAM9E7fX
vWjCOuKeNwrwq+Mr13zVpXPdw2Bw+H0oxsL83tR83tR83tR83tXOdgfN7UUfN7UUAJvo30UUAG+jfRRQ
Ab6N9FFABvo30UUAG+jfRRQAb6N9FFABvooooA//2Q==
</value>
</data>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>54</value>
</metadata>
</root>

View File

@ -8,10 +8,11 @@
<OutputType>Exe</OutputType>
<RootNamespace>LaptopSimulator2015</RootNamespace>
<AssemblyName>LaptopSimulator2015</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
@ -79,6 +80,15 @@
<DesignTime>True</DesignTime>
<DependentUpon>strings.resx</DependentUpon>
</Compile>
<Compile Include="Tutorial.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Tutorial.Designer.cs">
<DependentUpon>Tutorial.cs</DependentUpon>
</Compile>
<Compile Include="WizardTab.cs">
<SubType>Component</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
@ -102,6 +112,9 @@
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>strings.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Tutorial.resx">
<DependentUpon>Tutorial.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="Resources\fans.wav" />
@ -132,9 +145,22 @@
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>if not exist "$(TargetDir)Levels" mkdir "$(TargetDir)Levels"
if exist "$(SolutionDir)tmp" copy $(SolutionDir)tmp\* "$(TargetDir)Levels"
rmdir /s /q "$(SolutionDir)tmp"</PostBuildEvent>
<PostBuildEvent>if not exist "$(TargetDir)Content\Levels" mkdir "$(TargetDir)Content\Levels"
if exist "$(SolutionDir)tmp" copy $(SolutionDir)tmp\* "$(TargetDir)Content\Levels"
rmdir /s /q "$(SolutionDir)tmp"
if not exist "$(TargetDir)Content\Goals" mkdir "$(TargetDir)Content\Goals"
if exist "$(SolutionDir)tmp1" copy $(SolutionDir)tmp1\* "$(TargetDir)Content\Goals"
rmdir /s /q "$(SolutionDir)tmp1"
if not exist "$(TargetDir)Content\Glitches" mkdir "$(TargetDir)Content\Glitches"
if exist "$(SolutionDir)tmp2" copy $(SolutionDir)tmp2\* "$(TargetDir)Content\Glitches"
rmdir /s /q "$(SolutionDir)tmp2"
if exist "$(SolutionDir)tmp3" copy $(SolutionDir)tmp3\* "$(TargetDir)"
rmdir /s /q "$(SolutionDir)tmp3"
del /q "$(TargetDir)save.xml"</PostBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PreBuildEvent>

View File

@ -14,11 +14,13 @@ namespace LaptopSimulator2015
class Program
{
public static Splash splash;
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Settings.Load();
Thread.CurrentThread.CurrentUICulture = Settings.lang;
Console.Title = "LaptopSimulator2015";
splash = new Splash();
splash.Show();
@ -34,6 +36,9 @@ namespace LaptopSimulator2015
Console.ForegroundColor = ConsoleColor.Green;
Console.Clear();
Console.WriteLine(strings.consoleStarting);
if (Settings.level == -1)
while (Settings.level == -1)
Application.Run(new Tutorial());
Application.Run(new FakeDesktop());
Console.WriteLine(strings.consoleQuit);
Thread.Sleep(1000);

View File

@ -5,7 +5,7 @@ using System.Xml.Linq;
namespace LaptopSimulator2015 {
public static class Settings {
static string xmlfile;
public static readonly string _xmlfile = Path.GetDirectoryName(Application.ExecutablePath) + @"\save.xml";
public static void Save()
{
XElement xmldoc_temp = new XElement("save");
@ -13,33 +13,36 @@ namespace LaptopSimulator2015 {
xmldoc_temp.Add(new XElement("lsd", lsd));
xmldoc_temp.Add(new XElement("subs", subs));
xmldoc_temp.Add(new XElement("level", level));
xmldoc_temp.Add(new XElement("quality", quality));
xmldoc_temp.Add(new XElement("lang", lang));
xmldoc_temp.Save(xmlfile);
xmldoc_temp.Save(_xmlfile);
}
public static void Load()
{
xmlfile = Path.GetDirectoryName(Application.ExecutablePath) + @"\save.xml";
if (!File.Exists(xmlfile))
if (!File.Exists(_xmlfile))
{
XElement xmldoc_temp = new XElement("save");
xmldoc_temp.Add(new XElement("wam", 10));
xmldoc_temp.Add(new XElement("lsd", false));
xmldoc_temp.Add(new XElement("subs", true));
xmldoc_temp.Add(new XElement("level", 1));
xmldoc_temp.Add(new XElement("level", -1));
xmldoc_temp.Add(new XElement("quality", 1));
xmldoc_temp.Add(new XElement("lang", CultureInfo.CurrentCulture));
xmldoc_temp.Save(xmlfile);
xmldoc_temp.Save(_xmlfile);
}
XElement xmldoc = XElement.Load(xmlfile);
XElement xmldoc = XElement.Load(_xmlfile);
wam = int.Parse(xmldoc.Element("wam").Value);
lsd = bool.Parse(xmldoc.Element("lsd").Value);
subs = bool.Parse(xmldoc.Element("subs").Value);
level = int.Parse(xmldoc.Element("level").Value);
quality = int.Parse(xmldoc.Element("quality").Value);
lang = CultureInfo.GetCultureInfo(xmldoc.Element("lang").Value);
}
public static int wam;
public static bool lsd;
public static bool subs;
public static int level;
public static int quality;
public static CultureInfo lang;
}
}

400
LaptopSimulator2015/Tutorial.Designer.cs generated Normal file
View File

@ -0,0 +1,400 @@
namespace LaptopSimulator2015
{
partial class Tutorial
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.skipButton = new System.Windows.Forms.Button();
this.dialog = new System.Windows.Forms.Panel();
this.tabs = new LaptopSimulator2015.WizardTab();
this.p1 = new System.Windows.Forms.TabPage();
this.p1descLabel = new System.Windows.Forms.Label();
this.p1controlPanel = new System.Windows.Forms.Panel();
this.p1continue = new System.Windows.Forms.Button();
this.p1lang = new System.Windows.Forms.ComboBox();
this.p1titleLabel = new System.Windows.Forms.Label();
this.p2 = new System.Windows.Forms.TabPage();
this.p2continue = new System.Windows.Forms.Button();
this.p2privacyLabel = new System.Windows.Forms.Label();
this.p3 = new System.Windows.Forms.TabPage();
this.p3spacingPanel1 = new System.Windows.Forms.Panel();
this.p3continue = new System.Windows.Forms.Button();
this.p3spacingPanel2 = new System.Windows.Forms.Panel();
this.p4 = new System.Windows.Forms.TabPage();
this.tutorialPanel = new System.Windows.Forms.Panel();
this.p5 = new System.Windows.Forms.TabPage();
this.p5completeLabel = new System.Windows.Forms.Label();
this.p5controlPanel = new System.Windows.Forms.Panel();
this.p5reboot = new System.Windows.Forms.Button();
this.p5title = new System.Windows.Forms.Label();
this.progressBar = new System.Windows.Forms.ProgressBar();
this.cancelButton = new System.Windows.Forms.Button();
this.progressTimer = new System.Windows.Forms.Timer(this.components);
this.dialog.SuspendLayout();
this.tabs.SuspendLayout();
this.p1.SuspendLayout();
this.p1controlPanel.SuspendLayout();
this.p2.SuspendLayout();
this.p3.SuspendLayout();
this.p4.SuspendLayout();
this.p5.SuspendLayout();
this.p5controlPanel.SuspendLayout();
this.SuspendLayout();
//
// skipButton
//
this.skipButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.skipButton.Location = new System.Drawing.Point(1220, 0);
this.skipButton.Name = "skipButton";
this.skipButton.Size = new System.Drawing.Size(80, 23);
this.skipButton.TabIndex = 0;
this.skipButton.Text = "SKIP";
this.skipButton.UseVisualStyleBackColor = true;
this.skipButton.Visible = false;
this.skipButton.Click += new System.EventHandler(this.skipButton_Click);
//
// dialog
//
this.dialog.Anchor = System.Windows.Forms.AnchorStyles.None;
this.dialog.BackColor = System.Drawing.Color.Silver;
this.dialog.Controls.Add(this.tabs);
this.dialog.Location = new System.Drawing.Point(450, 150);
this.dialog.Name = "dialog";
this.dialog.Size = new System.Drawing.Size(400, 400);
this.dialog.TabIndex = 1;
//
// tabs
//
this.tabs.Appearance = System.Windows.Forms.TabAppearance.Buttons;
this.tabs.Controls.Add(this.p1);
this.tabs.Controls.Add(this.p2);
this.tabs.Controls.Add(this.p3);
this.tabs.Controls.Add(this.p4);
this.tabs.Controls.Add(this.p5);
this.tabs.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabs.ItemSize = new System.Drawing.Size(10, 21);
this.tabs.Location = new System.Drawing.Point(0, 0);
this.tabs.Name = "tabs";
this.tabs.SelectedIndex = 0;
this.tabs.Size = new System.Drawing.Size(400, 400);
this.tabs.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
this.tabs.TabIndex = 0;
this.tabs.TabStop = false;
//
// p1
//
this.p1.BackColor = System.Drawing.Color.White;
this.p1.Controls.Add(this.p1descLabel);
this.p1.Controls.Add(this.p1controlPanel);
this.p1.Controls.Add(this.p1titleLabel);
this.p1.Location = new System.Drawing.Point(4, 25);
this.p1.Name = "p1";
this.p1.Padding = new System.Windows.Forms.Padding(3);
this.p1.Size = new System.Drawing.Size(392, 371);
this.p1.TabIndex = 0;
//
// p1descLabel
//
this.p1descLabel.Dock = System.Windows.Forms.DockStyle.Fill;
this.p1descLabel.Location = new System.Drawing.Point(3, 65);
this.p1descLabel.Name = "p1descLabel";
this.p1descLabel.Size = new System.Drawing.Size(386, 258);
this.p1descLabel.TabIndex = 0;
this.p1descLabel.Text = "label2";
this.p1descLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// p1controlPanel
//
this.p1controlPanel.BackColor = System.Drawing.Color.Silver;
this.p1controlPanel.Controls.Add(this.p1continue);
this.p1controlPanel.Controls.Add(this.p1lang);
this.p1controlPanel.Dock = System.Windows.Forms.DockStyle.Bottom;
this.p1controlPanel.Location = new System.Drawing.Point(3, 323);
this.p1controlPanel.Name = "p1controlPanel";
this.p1controlPanel.Size = new System.Drawing.Size(386, 45);
this.p1controlPanel.TabIndex = 1;
//
// p1continue
//
this.p1continue.Location = new System.Drawing.Point(304, 10);
this.p1continue.Name = "p1continue";
this.p1continue.Size = new System.Drawing.Size(75, 23);
this.p1continue.TabIndex = 1;
this.p1continue.Text = "Continue";
this.p1continue.UseVisualStyleBackColor = true;
this.p1continue.Click += new System.EventHandler(this.Continue1_Click);
//
// p1lang
//
this.p1lang.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.p1lang.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.p1lang.FormattingEnabled = true;
this.p1lang.Items.AddRange(new object[] {
"de",
"en"});
this.p1lang.Location = new System.Drawing.Point(12, 12);
this.p1lang.Name = "p1lang";
this.p1lang.Size = new System.Drawing.Size(121, 21);
this.p1lang.TabIndex = 0;
this.p1lang.SelectedIndexChanged += new System.EventHandler(this.lang_SelectedIndexChanged);
//
// p1titleLabel
//
this.p1titleLabel.BackColor = System.Drawing.Color.Silver;
this.p1titleLabel.Dock = System.Windows.Forms.DockStyle.Top;
this.p1titleLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.p1titleLabel.Location = new System.Drawing.Point(3, 3);
this.p1titleLabel.Name = "p1titleLabel";
this.p1titleLabel.Size = new System.Drawing.Size(386, 62);
this.p1titleLabel.TabIndex = 0;
this.p1titleLabel.Text = "LaptopSimulator2015";
this.p1titleLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// p2
//
this.p2.Controls.Add(this.p2continue);
this.p2.Controls.Add(this.p2privacyLabel);
this.p2.Location = new System.Drawing.Point(4, 25);
this.p2.Name = "p2";
this.p2.Padding = new System.Windows.Forms.Padding(3);
this.p2.Size = new System.Drawing.Size(392, 371);
this.p2.TabIndex = 1;
//
// p2continue
//
this.p2continue.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.p2continue.Location = new System.Drawing.Point(311, 345);
this.p2continue.Name = "p2continue";
this.p2continue.Size = new System.Drawing.Size(75, 23);
this.p2continue.TabIndex = 1;
this.p2continue.Text = "Continue";
this.p2continue.UseVisualStyleBackColor = true;
this.p2continue.Click += new System.EventHandler(this.continue2_Click);
//
// p2privacyLabel
//
this.p2privacyLabel.AutoSize = true;
this.p2privacyLabel.Location = new System.Drawing.Point(6, 3);
this.p2privacyLabel.Name = "p2privacyLabel";
this.p2privacyLabel.Size = new System.Drawing.Size(209, 13);
this.p2privacyLabel.TabIndex = 0;
this.p2privacyLabel.Text = "Alan, please add random \"Privacy\"-notices";
//
// p3
//
this.p3.BackColor = System.Drawing.Color.White;
this.p3.Controls.Add(this.p3spacingPanel1);
this.p3.Controls.Add(this.p3continue);
this.p3.Controls.Add(this.p3spacingPanel2);
this.p3.Location = new System.Drawing.Point(4, 25);
this.p3.Name = "p3";
this.p3.Size = new System.Drawing.Size(392, 371);
this.p3.TabIndex = 2;
//
// p3spacingPanel1
//
this.p3spacingPanel1.Dock = System.Windows.Forms.DockStyle.Top;
this.p3spacingPanel1.Location = new System.Drawing.Point(0, 0);
this.p3spacingPanel1.Name = "p3spacingPanel1";
this.p3spacingPanel1.Size = new System.Drawing.Size(392, 100);
this.p3spacingPanel1.TabIndex = 2;
//
// p3continue
//
this.p3continue.Dock = System.Windows.Forms.DockStyle.Fill;
this.p3continue.Font = new System.Drawing.Font("Microsoft Sans Serif", 37F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.p3continue.Location = new System.Drawing.Point(0, 0);
this.p3continue.Name = "p3continue";
this.p3continue.Size = new System.Drawing.Size(392, 271);
this.p3continue.TabIndex = 0;
this.p3continue.Text = "INSTALL";
this.p3continue.UseVisualStyleBackColor = true;
this.p3continue.Click += new System.EventHandler(this.continue3_Click);
//
// p3spacingPanel2
//
this.p3spacingPanel2.Dock = System.Windows.Forms.DockStyle.Bottom;
this.p3spacingPanel2.Location = new System.Drawing.Point(0, 271);
this.p3spacingPanel2.Name = "p3spacingPanel2";
this.p3spacingPanel2.Size = new System.Drawing.Size(392, 100);
this.p3spacingPanel2.TabIndex = 1;
//
// p4
//
this.p4.BackColor = System.Drawing.Color.White;
this.p4.Controls.Add(this.tutorialPanel);
this.p4.Location = new System.Drawing.Point(4, 25);
this.p4.Name = "p4";
this.p4.Size = new System.Drawing.Size(392, 371);
this.p4.TabIndex = 3;
//
// tutorialPanel
//
this.tutorialPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.tutorialPanel.Location = new System.Drawing.Point(0, 0);
this.tutorialPanel.Name = "tutorialPanel";
this.tutorialPanel.Size = new System.Drawing.Size(392, 371);
this.tutorialPanel.TabIndex = 0;
this.tutorialPanel.Paint += new System.Windows.Forms.PaintEventHandler(this.tutorialPanel_Paint);
//
// p5
//
this.p5.BackColor = System.Drawing.Color.White;
this.p5.Controls.Add(this.p5completeLabel);
this.p5.Controls.Add(this.p5controlPanel);
this.p5.Controls.Add(this.p5title);
this.p5.Location = new System.Drawing.Point(4, 25);
this.p5.Name = "p5";
this.p5.Size = new System.Drawing.Size(392, 371);
this.p5.TabIndex = 4;
//
// p5completeLabel
//
this.p5completeLabel.Dock = System.Windows.Forms.DockStyle.Fill;
this.p5completeLabel.Location = new System.Drawing.Point(0, 62);
this.p5completeLabel.Name = "p5completeLabel";
this.p5completeLabel.Size = new System.Drawing.Size(392, 264);
this.p5completeLabel.TabIndex = 2;
this.p5completeLabel.Text = "label2";
this.p5completeLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// p5controlPanel
//
this.p5controlPanel.Controls.Add(this.p5reboot);
this.p5controlPanel.Dock = System.Windows.Forms.DockStyle.Bottom;
this.p5controlPanel.Location = new System.Drawing.Point(0, 326);
this.p5controlPanel.Name = "p5controlPanel";
this.p5controlPanel.Size = new System.Drawing.Size(392, 45);
this.p5controlPanel.TabIndex = 4;
//
// p5reboot
//
this.p5reboot.Location = new System.Drawing.Point(304, 10);
this.p5reboot.Name = "p5reboot";
this.p5reboot.Size = new System.Drawing.Size(75, 23);
this.p5reboot.TabIndex = 1;
this.p5reboot.Text = "Reboot";
this.p5reboot.UseVisualStyleBackColor = true;
this.p5reboot.Click += new System.EventHandler(this.p5reboot_Click);
//
// p5title
//
this.p5title.BackColor = System.Drawing.Color.Silver;
this.p5title.Dock = System.Windows.Forms.DockStyle.Top;
this.p5title.Font = new System.Drawing.Font("Microsoft Sans Serif", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.p5title.Location = new System.Drawing.Point(0, 0);
this.p5title.Name = "p5title";
this.p5title.Size = new System.Drawing.Size(392, 62);
this.p5title.TabIndex = 3;
this.p5title.Text = "LaptopSimulator2015";
this.p5title.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// progressBar
//
this.progressBar.Dock = System.Windows.Forms.DockStyle.Bottom;
this.progressBar.Location = new System.Drawing.Point(0, 677);
this.progressBar.Name = "progressBar";
this.progressBar.Size = new System.Drawing.Size(1300, 23);
this.progressBar.Step = 1;
this.progressBar.TabIndex = 2;
//
// cancelButton
//
this.cancelButton.Location = new System.Drawing.Point(0, 0);
this.cancelButton.Name = "cancelButton";
this.cancelButton.Size = new System.Drawing.Size(80, 23);
this.cancelButton.TabIndex = 3;
this.cancelButton.Text = "Cancel";
this.cancelButton.UseVisualStyleBackColor = true;
this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
//
// progressTimer
//
this.progressTimer.Interval = 120;
this.progressTimer.Tick += new System.EventHandler(this.timer1_Tick);
//
// Tutorial
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
this.ClientSize = new System.Drawing.Size(1300, 700);
this.Controls.Add(this.cancelButton);
this.Controls.Add(this.progressBar);
this.Controls.Add(this.dialog);
this.Controls.Add(this.skipButton);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Name = "Tutorial";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Tutorial";
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
this.Shown += new System.EventHandler(this.Tutorial_Shown);
this.dialog.ResumeLayout(false);
this.tabs.ResumeLayout(false);
this.p1.ResumeLayout(false);
this.p1controlPanel.ResumeLayout(false);
this.p2.ResumeLayout(false);
this.p2.PerformLayout();
this.p3.ResumeLayout(false);
this.p4.ResumeLayout(false);
this.p5.ResumeLayout(false);
this.p5controlPanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button skipButton;
private System.Windows.Forms.Panel dialog;
private System.Windows.Forms.ProgressBar progressBar;
private WizardTab tabs;
private System.Windows.Forms.TabPage p1;
private System.Windows.Forms.TabPage p2;
private System.Windows.Forms.Button cancelButton;
private System.Windows.Forms.Label p1titleLabel;
private System.Windows.Forms.Label p1descLabel;
private System.Windows.Forms.Panel p1controlPanel;
private System.Windows.Forms.ComboBox p1lang;
private System.Windows.Forms.Button p1continue;
private System.Windows.Forms.Label p2privacyLabel;
private System.Windows.Forms.Button p2continue;
private System.Windows.Forms.TabPage p3;
private System.Windows.Forms.Panel p3spacingPanel1;
private System.Windows.Forms.Panel p3spacingPanel2;
private System.Windows.Forms.Button p3continue;
private System.Windows.Forms.Timer progressTimer;
private System.Windows.Forms.TabPage p4;
private System.Windows.Forms.TabPage p5;
private System.Windows.Forms.Label p5completeLabel;
private System.Windows.Forms.Panel p5controlPanel;
private System.Windows.Forms.Button p5reboot;
private System.Windows.Forms.Label p5title;
private System.Windows.Forms.Panel tutorialPanel;
}
}

View File

@ -0,0 +1,104 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Globalization;
using System.Drawing.Drawing2D;
using Base;
namespace LaptopSimulator2015
{
public partial class Tutorial : Form
{
public Tutorial()
{
InitializeComponent();
#if DEBUG
skipButton.Visible = true;
#endif
p1lang.Text = Settings.lang.Name.Split('-')[0];
p1descLabel.Text = strings.winMenuText;
cancelButton.Text = strings.cancel;
skipButton.Text = strings.skip;
p1continue.Text = strings._continue;
p2continue.Text = strings._continue;
p3continue.Text = strings.install.ToUpper();
p5completeLabel.Text = strings.tutorialFinish;
}
private void skipButton_Click(object sender, EventArgs e) => tabs.SelectedIndex = 4;
private void Tutorial_Shown(object sender, EventArgs e) => Program.splash.Hide();
private void cancelButton_Click(object sender, EventArgs e) => Environment.Exit(0);
private void lang_SelectedIndexChanged(object sender, EventArgs e)
{
Settings.lang = CultureInfo.GetCultureInfo(p1lang.Text);
Thread.CurrentThread.CurrentUICulture = Settings.lang;
p1descLabel.Text = strings.winMenuText;
cancelButton.Text = strings.cancel;
skipButton.Text = strings.skip;
p1continue.Text = strings._continue;
p2continue.Text = strings._continue;
p3continue.Text = strings.install.ToUpper();
p5completeLabel.Text = strings.tutorialFinish;
}
private void Continue1_Click(object sender, EventArgs e)
{
tabs.SelectedIndex = 1;
progressBar.Value = 25;
}
private void continue2_Click(object sender, EventArgs e)
{
tabs.SelectedIndex = 2;
progressBar.Value = 50;
}
private void continue3_Click(object sender, EventArgs e)
{
tabs.SelectedIndex = 3;
progressTimer.Enabled = true;
}
int timertime = 0;
private void timer1_Tick(object sender, EventArgs e)
{
if (timertime <= 50)
{
progressBar.Value = 50 + timertime;
timertime++;
tutorialPanel.Invalidate();
}
else
{
tabs.SelectedIndex = 4;
progressTimer.Enabled = false;
}
}
private void p5reboot_Click(object sender, EventArgs e)
{
Settings.level = 0;
Settings.Save();
Program.splash.Show();
Close();
}
private void tutorialPanel_Paint(object sender, PaintEventArgs e)
{
using (GraphicsWrapper g = new GraphicsWrapper(e.Graphics, Color.Red, new Rectangle(Point.Empty, tutorialPanel.Size), true))
{
for (int i = 0; i < 40; i++)
for (int j = 0; j < 40; j++)
g.DrawLine(new PointF(tutorialPanel.Width / 2, tutorialPanel.Height / 2), new PointF(i * 10 + 5, j * 10 + 5), Color.DarkGray, 1, false);
g.DrawSizedString("This is " + ((timertime < 17) ? "bad" : (timertime <= 33) ? "neutral" : "you"), 10, new PointF(tutorialPanel.Width / 2, tutorialPanel.Height / 2), new SolidBrush((timertime < 17) ? Color.Red : (timertime <= 33) ? Color.White : Color.Green), true, true);
}
}
}
}

View File

@ -117,7 +117,7 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="minigameClockT.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<metadata name="progressTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing;
namespace LaptopSimulator2015
{
public class WizardTab : TabControl
{
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
var filteredKeys = new Keys[]{(Keys.Control | Keys.Tab),
(Keys.Control | Keys.Shift | Keys.Tab),
Keys.Left, Keys.Right, Keys.Home, Keys.End};
if (filteredKeys.Contains(keyData))
return true;
return base.ProcessCmdKey(ref msg, keyData);
}
public const int TCM_FIRST = 0x1300;
public const int TCM_ADJUSTRECT = TCM_FIRST + 40;
public WizardTab()
{
Appearance = TabAppearance.Buttons;
ItemSize = new Size(1, 0);
SizeMode = TabSizeMode.Fixed;
TabStop = false;
}
protected override void WndProc(ref Message m)
{
if (m.Msg == TCM_ADJUSTRECT && !DesignMode)
m.Result = (IntPtr)1;
else
base.WndProc(ref m);
}
}
}

View File

@ -69,6 +69,15 @@ namespace LaptopSimulator2015 {
}
}
/// <summary>
/// Looks up a localized string similar to Cancel.
/// </summary>
internal static string cancel {
get {
return ResourceManager.GetString("cancel", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to ABCDEFGHIJKLMNPQRSTUVWXYZ123456789.
/// </summary>
@ -97,7 +106,7 @@ namespace LaptopSimulator2015 {
}
/// <summary>
/// Looks up a localized string similar to E X I T E D ..
/// Looks up a localized string similar to Shutting down VM....
/// </summary>
internal static string consoleQuit {
get {
@ -106,7 +115,7 @@ namespace LaptopSimulator2015 {
}
/// <summary>
/// Looks up a localized string similar to S T A R T I N G . . ..
/// Looks up a localized string similar to Starting up VM....
/// </summary>
internal static string consoleStarting {
get {
@ -114,6 +123,15 @@ namespace LaptopSimulator2015 {
}
}
/// <summary>
/// Looks up a localized string similar to Exit.
/// </summary>
internal static string exit {
get {
return ResourceManager.GetString("exit", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Fake Desktop.
/// </summary>
@ -123,6 +141,15 @@ namespace LaptopSimulator2015 {
}
}
/// <summary>
/// Looks up a localized string similar to Install.
/// </summary>
internal static string install {
get {
return ResourceManager.GetString("install", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to WARNING: We recommend you restart your game to apply these changes. Restart?.
/// </summary>
@ -132,6 +159,24 @@ namespace LaptopSimulator2015 {
}
}
/// <summary>
/// Looks up a localized string similar to Level.
/// </summary>
internal static string lvPref {
get {
return ResourceManager.GetString("lvPref", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Credits.
/// </summary>
internal static string optionsWindowCredits {
get {
return ResourceManager.GetString("optionsWindowCredits", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to LSD Mode.
/// </summary>
@ -142,7 +187,61 @@ namespace LaptopSimulator2015 {
}
/// <summary>
/// Looks up a localized string similar to PCOptimizerPro.
/// Looks up a localized string similar to Are you SURE?\r\n(This will break EVERYTHING!).
/// </summary>
internal static string optionsWindowLSDWarning {
get {
return ResourceManager.GetString("optionsWindowLSDWarning", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Sh*t.
/// </summary>
internal static string optionsWindowQuality1 {
get {
return ResourceManager.GetString("optionsWindowQuality1", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Default.
/// </summary>
internal static string optionsWindowQuality2 {
get {
return ResourceManager.GetString("optionsWindowQuality2", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Good.
/// </summary>
internal static string optionsWindowQuality3 {
get {
return ResourceManager.GetString("optionsWindowQuality3", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Reset.
/// </summary>
internal static string optionsWindowReset {
get {
return ResourceManager.GetString("optionsWindowReset", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Subtitles.
/// </summary>
internal static string optionsWindowSubs {
get {
return ResourceManager.GetString("optionsWindowSubs", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Options.
/// </summary>
internal static string optionsWindowTitle {
get {
@ -196,11 +295,29 @@ namespace LaptopSimulator2015 {
}
/// <summary>
/// Looks up a localized string similar to Exit.
/// Looks up a localized string similar to Skip.
/// </summary>
internal static string winMenuExit1 {
internal static string skip {
get {
return ResourceManager.GetString("winMenuExit1", resourceCulture);
return ResourceManager.GetString("skip", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Start.
/// </summary>
internal static string start {
get {
return ResourceManager.GetString("start", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Thank you for installing our OS. Please reboot your system to complete the installation!.
/// </summary>
internal static string tutorialFinish {
get {
return ResourceManager.GetString("tutorialFinish", resourceCulture);
}
}
@ -213,15 +330,6 @@ namespace LaptopSimulator2015 {
}
}
/// <summary>
/// Looks up a localized string similar to Start.
/// </summary>
internal static string winMenuStart {
get {
return ResourceManager.GetString("winMenuStart", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Hello and welcome to my game, I hope you&apos;ll like it. My name is CreepyCrafter24, btw. (FunFact: This game was originally created as the result of a conversation with a classmate).
/// </summary>

View File

@ -117,6 +117,9 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="cancel" xml:space="preserve">
<value>Abbrechen</value>
</data>
<data name="captchaLetters" xml:space="preserve">
<value>ABCDEFGHIJKLMNPQRSTUVWXYZ123456789</value>
</data>
@ -127,23 +130,53 @@
<value>Drücken Sie eine beliebige Taste.</value>
</data>
<data name="consoleQuit" xml:space="preserve">
<value>B E E N D E T . . .</value>
<value>VM wird heruntergefahren...</value>
</data>
<data name="consoleStarting" xml:space="preserve">
<value>S T A R T E T . . .</value>
<value>VM wird gestartet...</value>
</data>
<data name="continue" xml:space="preserve">
<value>Fortfahren</value>
</data>
<data name="fakeDesktopTitle1" xml:space="preserve">
<data name="exit" xml:space="preserve">
<value>Beenden</value>
</data>
<data name="fakeDesktopTitle" xml:space="preserve">
<value>Falscher Desktop</value>
</data>
<data name="install" xml:space="preserve">
<value>Installieren</value>
</data>
<data name="langWarning" xml:space="preserve">
<value>WARNUNG: Wir empfehlen, das Spiel nach der Änderung neu zu starten. Neu starten?</value>
</data>
<data name="lvPref" xml:space="preserve">
<value>Level</value>
</data>
<data name="optionsWindowCredits" xml:space="preserve">
<value>Credits</value>
</data>
<data name="optionsWindowLSD" xml:space="preserve">
<value>LSD-Modus</value>
</data>
<data name="optionsWindowLSDWarning" xml:space="preserve">
<value>Bist du dir sicher? (ALLES wird verbuggt werden!)</value>
</data>
<data name="optionsWindowQuality1" xml:space="preserve">
<value>Müll</value>
</data>
<data name="optionsWindowQuality2" xml:space="preserve">
<value>Standard</value>
</data>
<data name="optionsWindowQuality3" xml:space="preserve">
<value>Supremo</value>
</data>
<data name="optionsWindowReset" xml:space="preserve">
<value>Zurücksetzen</value>
</data>
<data name="optionsWindowSubs" xml:space="preserve">
<value>Untertitel</value>
</data>
<data name="optionsWindowTitle" xml:space="preserve">
<value>Optionen</value>
</data>
@ -162,15 +195,18 @@
<data name="resetWarning2" xml:space="preserve">
<value>Bist du dir wirklich sicher, dass du deinen Fortschritt zurücksetzten möchtest? Dies ist deine letzte Möglichkeit, dies abzubrechen!</value>
</data>
<data name="winMenuExit1" xml:space="preserve">
<value>Beenden</value>
<data name="skip" xml:space="preserve">
<value>Skip</value>
</data>
<data name="start" xml:space="preserve">
<value>Start</value>
</data>
<data name="tutorialFinish" xml:space="preserve">
<value>Vielen Dank, dass sie unser OS installiert haben. Bitte starten sie ihren Rechner neu, um die Installation fertigzustellen</value>
</data>
<data name="winMenuExit2" xml:space="preserve">
<value>Bist du sicher?</value>
</data>
<data name="winMenuStart" xml:space="preserve">
<value>Start</value>
</data>
<data name="winMenuText" xml:space="preserve">
<value>Hallo und Willkommen in diesem Spiel. Mein Name ist CreepyCrafter24. (Im Übrigen: Dieses Spiel entstand ursprünglich aus einer Unterhaltung mit einem Klassenkameraden. Lustig, oder?)</value>
</data>

View File

@ -117,6 +117,9 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="cancel" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="captchaLetters" xml:space="preserve">
<value>ABCDEFGHIJKLMNPQRSTUVWXYZ123456789</value>
</data>
@ -127,25 +130,55 @@
<value>Press any Key to quit.</value>
</data>
<data name="consoleQuit" xml:space="preserve">
<value>E X I T E D .</value>
<value>Shutting down VM...</value>
</data>
<data name="consoleStarting" xml:space="preserve">
<value>S T A R T I N G . . .</value>
<value>Starting up VM...</value>
</data>
<data name="continue" xml:space="preserve">
<value>Continue</value>
</data>
<data name="exit" xml:space="preserve">
<value>Exit</value>
</data>
<data name="fakeDesktopTitle" xml:space="preserve">
<value>Fake Desktop</value>
</data>
<data name="install" xml:space="preserve">
<value>Install</value>
</data>
<data name="langWarning" xml:space="preserve">
<value>WARNING: We recommend you restart your game to apply these changes. Restart?</value>
</data>
<data name="lvPref" xml:space="preserve">
<value>Level</value>
</data>
<data name="optionsWindowCredits" xml:space="preserve">
<value>Credits</value>
</data>
<data name="optionsWindowLSD" xml:space="preserve">
<value>LSD Mode</value>
</data>
<data name="optionsWindowLSDWarning" xml:space="preserve">
<value>Are you SURE?\r\n(This will break EVERYTHING!)</value>
</data>
<data name="optionsWindowQuality1" xml:space="preserve">
<value>Sh*t</value>
</data>
<data name="optionsWindowQuality2" xml:space="preserve">
<value>Default</value>
</data>
<data name="optionsWindowQuality3" xml:space="preserve">
<value>Good</value>
</data>
<data name="optionsWindowReset" xml:space="preserve">
<value>Reset</value>
</data>
<data name="optionsWindowSubs" xml:space="preserve">
<value>Subtitles</value>
</data>
<data name="optionsWindowTitle" xml:space="preserve">
<value>PCOptimizerPro</value>
<value>Options</value>
</data>
<data name="optionsWindowWam" xml:space="preserve">
<value>Dedodated Wam</value>
@ -162,15 +195,18 @@
<data name="resetWarning2" xml:space="preserve">
<value>Are you absolutly sure you want to reset you progress? This is your last chance to turn back!</value>
</data>
<data name="winMenuExit1" xml:space="preserve">
<value>Exit</value>
<data name="skip" xml:space="preserve">
<value>Skip</value>
</data>
<data name="start" xml:space="preserve">
<value>Start</value>
</data>
<data name="tutorialFinish" xml:space="preserve">
<value>Thank you for installing our OS. Please reboot your system to complete the installation!</value>
</data>
<data name="winMenuExit2" xml:space="preserve">
<value>Are you sure?</value>
</data>
<data name="winMenuStart" xml:space="preserve">
<value>Start</value>
</data>
<data name="winMenuText" xml:space="preserve">
<value>Hello and welcome to my game, I hope you'll like it. My name is CreepyCrafter24, btw. (FunFact: This game was originally created as the result of a conversation with a classmate)</value>
</data>

11
LevelTest/App.config Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
</startup>
<runtime>
<!-- AppContextSwitchOverrides values are in the form of 'key1=true|false;key2=true|false -->
<!-- Please note that disabling Switch.UseLegacyAccessibilityFeatures, Switch.UseLegacyAccessibilityFeatures.2 and Switch.UseLegacyAccessibilityFeatures.3 is required to disable Switch.System.Windows.Forms.UseLegacyToolTipDisplay -->
<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false;Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false"/>
</runtime>
</configuration>

65
LevelTest/ArrayDialog.Designer.cs generated Normal file
View File

@ -0,0 +1,65 @@
namespace LevelTest
{
partial class ArrayDialog
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.listBox1 = new System.Windows.Forms.ListBox();
this.SuspendLayout();
//
// listBox1
//
this.listBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.listBox1.FormattingEnabled = true;
this.listBox1.Location = new System.Drawing.Point(0, 0);
this.listBox1.Name = "listBox1";
this.listBox1.Size = new System.Drawing.Size(482, 262);
this.listBox1.TabIndex = 0;
this.listBox1.SelectedIndexChanged += new System.EventHandler(this.ListBox1_SelectedIndexChanged);
//
// ArrayDialog
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(482, 262);
this.Controls.Add(this.listBox1);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "ArrayDialog";
this.ShowIcon = false;
this.Text = "ArrayDialog";
this.TopMost = true;
this.Load += new System.EventHandler(this.ArrayDialog_Load);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.ListBox listBox1;
}
}

32
LevelTest/ArrayDialog.cs Normal file
View File

@ -0,0 +1,32 @@
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 LevelTest
{
public partial class ArrayDialog : Form
{
public int returnIndex;
public ArrayDialog(string[] items, string title = "")
{
InitializeComponent();
listBox1.Items.AddRange(items);
Text = title;
}
private void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
returnIndex = listBox1.SelectedIndex;
DialogResult = DialogResult.OK;
Close();
}
private void ArrayDialog_Load(object sender, EventArgs e) => BringToFront();
}
}

View File

@ -117,7 +117,4 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="minigameClockT.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@ -4,14 +4,15 @@
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{D80DBBF2-307F-40A0-86F1-871C8DAA394B}</ProjectGuid>
<ProjectGuid>{DFD89655-00A7-4DF8-8B2E-17F5BEFE5090}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>SIT</RootNamespace>
<AssemblyName>SIT</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<RootNamespace>LevelTest</RootNamespace>
<AssemblyName>LevelTest</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
@ -46,6 +47,12 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="ArrayDialog.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ArrayDialog.Designer.cs">
<DependentUpon>ArrayDialog.cs</DependentUpon>
</Compile>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
@ -54,6 +61,9 @@
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="ArrayDialog.resx">
<DependentUpon>ArrayDialog.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
@ -65,6 +75,7 @@
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
@ -87,7 +98,7 @@
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>if not exist "$(SolutionDir)tmp3" mkdir "$(SolutionDir)tmp3"
copy "$(TargetPath)" "$(SolutionDir)tmp3"</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -1,4 +1,4 @@
namespace lv3_t
namespace LevelTest
{
partial class MainForm
{
@ -29,27 +29,13 @@
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.button1 = new System.Windows.Forms.Button();
this.minigamePanel = new System.Windows.Forms.Panel();
this.minigameClockT = new System.Windows.Forms.Timer(this.components);
this.minigamePanel.SuspendLayout();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(777, 0);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(23, 23);
this.button1.TabIndex = 0;
this.button1.TabStop = false;
this.button1.Text = "X";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.Button1_Click);
//
// minigamePanel
//
this.minigamePanel.BackColor = System.Drawing.Color.Black;
this.minigamePanel.Controls.Add(this.button1);
this.minigamePanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.minigamePanel.Location = new System.Drawing.Point(0, 0);
this.minigamePanel.Name = "minigamePanel";
@ -68,24 +54,20 @@
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.ControlBox = false;
this.Controls.Add(this.minigamePanel);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "MainForm";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Form1";
this.minigamePanel.ResumeLayout(false);
this.TopMost = true;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
this.Resize += new System.EventHandler(this.MainForm_Resize);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Panel minigamePanel;
private System.Windows.Forms.Timer minigameClockT;
}

66
LevelTest/MainForm.cs Normal file
View File

@ -0,0 +1,66 @@
using LaptopSimulator2015;
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;
using Base;
namespace LevelTest
{
public partial class MainForm : Form
{
Minigame level;
public MainForm(Minigame game)
{
Misc.closeGameWindow = () => { level.initGame(minigamePanel, minigameClockT); };
level = game;
InitializeComponent();
minigameClockT.Interval = level.gameClock;
Text = level.name;
Misc.closeGameWindow.Invoke();
}
uint minigameTime;
uint minigamePrevTime;
private void MinigameClockT_Tick(object sender, EventArgs e)
{
minigameTime++;
minigamePanel.Invalidate();
}
private void MinigamePanel_Paint(object sender, PaintEventArgs e)
{
using (GraphicsWrapper w = new GraphicsWrapper(e.Graphics, level.backColor, new Rectangle(Point.Empty, minigamePanel.Size)))
{
w.Clear();
level.draw(w, minigamePanel, minigameClockT, minigameTime);
if (minigameTime != minigamePrevTime)
{
level.gameTick(w, minigamePanel, minigameClockT, minigameTime);
minigamePrevTime = minigameTime;
}
}
}
bool isFClose = true;
private void MainForm_Resize(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
isFClose = false;
Close();
}
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (isFClose)
Environment.Exit(0);
}
}
}

85
LevelTest/Program.cs Normal file
View File

@ -0,0 +1,85 @@
using LaptopSimulator2015;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LevelTest
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (args != null && args.Length > 0)
{
if (Directory.Exists(args[0].Replace("\"", "")))
Directory.SetCurrentDirectory(args[0].Replace("\"", ""));
else if (File.Exists(args[0].Replace("\"", "")))
Directory.SetCurrentDirectory(Path.GetDirectoryName(args[0].Replace("\"", "")));
else
throw new Exception("Invalid argument");
}
else
{
string[] tmp = Directory.EnumerateFiles(Directory.GetCurrentDirectory(), "*.dll", SearchOption.AllDirectories).Where(s => Path.GetFileName(s) != "Base.dll" && Path.GetFileName(s) != "CC-Functions.W32.dll").ToArray();
if (tmp.Length == 0)
using (FolderBrowserDialog openFileDialog = new FolderBrowserDialog())
{
if (openFileDialog.ShowDialog() == DialogResult.OK)
Directory.SetCurrentDirectory(openFileDialog.SelectedPath);
else
throw new Exception("Please select a folder");
}
}
Minigame[] levels = Directory.EnumerateFiles(Directory.GetCurrentDirectory(), "*.dll", SearchOption.AllDirectories)
.Where(s => Path.GetFileName(s) != "Base.dll" && Path.GetFileName(s) != "CC-Functions.W32.dll").Select(s => File.ReadAllBytes(s))
.Distinct().Select(s => Assembly.Load(s)).Distinct().SelectMany(s => s.GetTypes()).Distinct().Where(p => typeof(Minigame).IsAssignableFrom(p))
.Distinct().Except(new Type[] { typeof(Minigame), typeof(Level), typeof(Goal) }).Select(s => (Minigame)Activator.CreateInstance(s))
.Distinct(new comp()).OrderBy(lv => lv.availableAfter).ToArray();
while (true)
{
Minigame level;
if (levels.Length == 0)
throw new Exception("No Levels found!");
else if (levels.Length == 1)
level = levels[0];
else
{
using (ArrayDialog dialog = new ArrayDialog(levels.Select(s => s.name).ToArray(), "Select a Minigame"))
{
if (dialog.ShowDialog() == DialogResult.OK)
level = levels[dialog.returnIndex];
else
throw new Exception("Please select a folder");
}
}
Application.Run(new MainForm(level));
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
class comp : IEqualityComparer<Minigame>
{
public bool Equals(Minigame x, Minigame y) => x.name == y.name;
public int GetHashCode(Minigame x) => x.name.GetHashCode();
}
}

View File

@ -5,11 +5,11 @@ using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("lv3_t")]
[assembly: AssemblyTitle("LevelTest")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("lv3_t")]
[assembly: AssemblyProduct("LevelTest")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@ -20,7 +20,7 @@ using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("244e68e6-90d2-447d-b380-13ca8dd3d4ec")]
[assembly: Guid("dfd89655-00a7-4df8-8b2e-17f5befe5090")]
// Version information for an assembly consists of the following four values:
//

View File

@ -8,10 +8,10 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace SIT.Properties
{
namespace LevelTest.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
@ -19,44 +19,39 @@ namespace SIT.Properties
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SIT.Properties.Resources", typeof(Resources).Assembly);
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LevelTest.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}

View File

@ -8,19 +8,16 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace lv3_t.Properties
{
namespace LevelTest.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.3.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
public static Settings Default {
get {
return defaultInstance;
}

View File

@ -1,2 +1,4 @@
# LaptopSimulator2015
If you don't have LaptopSimulator2015/Resources/fans.wav , you can replace it with any sound that reminds you of old PCs fans.
If you don't have `LaptopSimulator2015/Resources/fans.wav` , you can replace it with any sound that reminds you of old PCs fans.
# Building
Either run `make full` or build the solution in Visual Studio. You will not be able to use the Designer until the project is built at least once.

View File

@ -1 +1,13 @@
"Boss"-Level after level 3
Maybe Linux builds? (Possible with #if, need a function to check whether a key is down in Linux (see Base/Input))
Ideas for content:
- Goals:
- MS Word = Sentenz
- Powerpoint = WeakClic
- Minecraft = InfiniMined
- The "you win"-button
- Minigames:
- Bullet-Hell
- Mouse-based games?
- Other:
- Possibly secrets and alternate paths?

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

View File

@ -1,94 +0,0 @@
namespace SIT
{
partial class MainForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing & (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.minigamePanel = new System.Windows.Forms.Panel();
this.button1 = new System.Windows.Forms.Button();
this.minigameClockT = new System.Windows.Forms.Timer(this.components);
this.minigamePanel.SuspendLayout();
this.SuspendLayout();
//
// minigamePanel
//
this.minigamePanel.BackColor = System.Drawing.Color.Black;
this.minigamePanel.Controls.Add(this.button1);
this.minigamePanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.minigamePanel.Location = new System.Drawing.Point(0, 0);
this.minigamePanel.Name = "minigamePanel";
this.minigamePanel.Size = new System.Drawing.Size(800, 450);
this.minigamePanel.TabIndex = 0;
this.minigamePanel.Paint += new System.Windows.Forms.PaintEventHandler(this.Panel1_Paint);
//
// button1
//
this.button1.Location = new System.Drawing.Point(777, 0);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(23, 23);
this.button1.TabIndex = 0;
this.button1.TabStop = false;
this.button1.Text = "X";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.Button1_Click);
//
// minigameClockT
//
this.minigameClockT.Enabled = true;
this.minigameClockT.Interval = 17;
this.minigameClockT.Tick += new System.EventHandler(this.Timer1_Tick);
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.Control;
this.ClientSize = new System.Drawing.Size(800, 450);
this.ControlBox = false;
this.Controls.Add(this.minigamePanel);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "MainForm";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Form1";
this.minigamePanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel minigamePanel;
private System.Windows.Forms.Timer minigameClockT;
private System.Windows.Forms.Button button1;
}
}

View File

@ -1,130 +0,0 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using Base;
namespace SIT
{
public partial class MainForm : Form
{
List<Vector2> invadersAliens = new List<Vector2>();
List<Vector2> invadersBullets = new List<Vector2>();
Vector2 invadersPlayer;
uint minigameTime = 0;
uint minigamePrevTime = 0;
double speedMod = 5;
bool invadersCanShoot = true;
public MainForm()
{
InitializeComponent();
invadersPlayer = new Vector2(minigamePanel.Width / 4, minigamePanel.Height / 2);
invadersPlayer.bounds_wrap = true;
invadersPlayer.bounds = new Rectangle(-10, -10, minigamePanel.Width + 10, minigamePanel.Height + 10);
}
private void Panel1_Paint(object sender, PaintEventArgs e)
{
BufferedGraphics buffer = BufferedGraphicsManager.Current.Allocate(e.Graphics, new Rectangle(0, 0, minigamePanel.Width, minigamePanel.Height));
Graphics g = buffer.Graphics;
try
{
g.Clear(Color.Black);
for (int i = 0; i < invadersAliens.Count; i++)
{
g.FillRectangle(new SolidBrush(Color.Red), new Rectangle(invadersAliens[i].toPoint(), new Size(10, 10)));
}
for (int i = 0; i < invadersBullets.Count; i++)
{
g.FillRectangle(new SolidBrush(Color.White), new Rectangle(invadersBullets[i].toPoint(), new Size(5, 5)));
}
g.FillRectangle(new SolidBrush(Color.Green), new Rectangle(invadersPlayer.toPoint(), new Size(10, 10)));
Random random = new Random();
if (minigameTime != minigamePrevTime)
{
minigamePrevTime = minigameTime;
if (random.Next(0, 100000) < minigameTime + 1300)
invadersAliens.Add(new Vector2(minigamePanel.Width, random.Next(minigamePanel.Height - 10)));
for (int i = 0; i < invadersAliens.Count; i++)
{
invadersAliens[i].X -= 1.2;
if (invadersPlayer.distanceFromSquared(invadersAliens[i]) < 100 | invadersAliens[i].X < 0)
{
throw new Exception("The VM was shut down to prevent damage to your Machine.", new Exception("0717750f-3508-4bc2-841e-f3b077c676fe"));
}
}
invadersCanShoot = invadersCanShoot | !Input.Action;
List<Vector2> aliensToRemove = new List<Vector2>();
List<Vector2> bulletsToRemove = new List<Vector2>();
for (int i = 0; i < invadersBullets.Count; i++)
{
invadersBullets[i].X += 4;
for (int j = 0; j < invadersAliens.Count; j++)
{
if (invadersBullets[i].distanceFromSquared(invadersAliens[j] + new Vector2(2.5f, 2.5f)) < 56.25f)
{
aliensToRemove.Add(invadersAliens[j]);
bulletsToRemove.Add(invadersBullets[i]);
}
}
if (invadersBullets[i].X > minigamePanel.Width)
bulletsToRemove.Add(invadersBullets[i]);
}
invadersAliens = invadersAliens.Except(aliensToRemove.Distinct()).Distinct().ToList();
invadersBullets = invadersBullets.Except(bulletsToRemove.Distinct()).Distinct().ToList();
speedMod += 0.1;
speedMod = Math.Max(Math.Min(speedMod, 5), 1);
if (Input.Up)
invadersPlayer.Y -= speedMod;
if (Input.Left)
invadersPlayer.X -= speedMod;
if (Input.Down)
invadersPlayer.Y += speedMod;
if (Input.Right)
invadersPlayer.X += speedMod;
if (Input.Action & invadersCanShoot)
{
invadersBullets.Add(new Vector2(0, 2.5) + invadersPlayer);
invadersCanShoot = false;
speedMod--;
}
}
buffer.Render();
buffer.Dispose();
}
catch (Exception ex) {
if (ex.InnerException?.Message == "0717750f-3508-4bc2-841e-f3b077c676fe")
{
minigameClockT.Enabled = false;
g.Clear(Color.Red);
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
SizeF sLen = g.MeasureString("Lost.", new Font("Tahoma", 20));
RectangleF rectf = new RectangleF(minigamePanel.Width / 2 - sLen.Width / 2, minigamePanel.Height / 2 - sLen.Height / 2, 90, 50);
g.DrawString("Lost.", new Font("Tahoma", 20), Brushes.Black, rectf);
buffer.Render();
buffer.Dispose();
}
else
#if DEBUG
throw;
#else
Console.WriteLine(ex.ToString());
#endif
}
}
private void Timer1_Tick(object sender, EventArgs e)
{
minigameTime++;
minigamePanel.Invalidate();
}
private void Button1_Click(object sender, EventArgs e) => Application.Exit();
}
}

View File

@ -1,28 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SIT
{
static class Program
{
public static bool debug;
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
#if DEBUG
debug = true;
#else
debug = args.Contains("debug");
#endif
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}

View File

@ -1,29 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SIT.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get {
return defaultInstance;
}
}
}
}

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

View File

@ -1,93 +0,0 @@
namespace lv2_t
{
partial class MainForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.minigameClockT = new System.Windows.Forms.Timer(this.components);
this.button1 = new System.Windows.Forms.Button();
this.minigamePanel = new System.Windows.Forms.Panel();
this.minigamePanel.SuspendLayout();
this.SuspendLayout();
//
// minigameClockT
//
this.minigameClockT.Enabled = true;
this.minigameClockT.Interval = 17;
this.minigameClockT.Tick += new System.EventHandler(this.MinigameClockT_Tick);
//
// button1
//
this.button1.Location = new System.Drawing.Point(777, 0);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(23, 23);
this.button1.TabIndex = 0;
this.button1.TabStop = false;
this.button1.Text = "X";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.Button1_Click);
//
// minigamePanel
//
this.minigamePanel.BackColor = System.Drawing.Color.Black;
this.minigamePanel.Controls.Add(this.button1);
this.minigamePanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.minigamePanel.Location = new System.Drawing.Point(0, 0);
this.minigamePanel.Name = "minigamePanel";
this.minigamePanel.Size = new System.Drawing.Size(800, 450);
this.minigamePanel.TabIndex = 1;
this.minigamePanel.Paint += new System.Windows.Forms.PaintEventHandler(this.MinigamePanel_Paint);
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.ControlBox = false;
this.Controls.Add(this.minigamePanel);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "MainForm";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "MainForm";
this.minigamePanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Timer minigameClockT;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Panel minigamePanel;
}
}

View File

@ -1,117 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Base;
namespace lv2_t
{
public partial class MainForm : Form
{
#region FRMBD
uint minigameTime = 0;
uint minigamePrevTime = 0;
public MainForm()
{
InitializeComponent();
player = new Vector2(minigamePanel.Width / 2, minigamePanel.Height / 2);
player.bounds_wrap = true;
player.bounds = new Rectangle(-10, -10, minigamePanel.Width + 10, minigamePanel.Height + 10);
}
private void Button1_Click(object sender, EventArgs e) => Application.Exit();
private void MinigameClockT_Tick(object sender, EventArgs e)
{
minigameTime++;
minigamePanel.Invalidate();
}
#endregion
List<Vector2> enemies = new List<Vector2>();
Vector2 player;
int lives = 3;
private void MinigamePanel_Paint(object sender, PaintEventArgs e)
{
BufferedGraphics buffer = BufferedGraphicsManager.Current.Allocate(e.Graphics, new Rectangle(0, 0, minigamePanel.Width, minigamePanel.Height));
Graphics g = buffer.Graphics;
try
{
for (int i = 0; i < enemies.Count; i++)
g.FillRectangle(new SolidBrush(Color.Red), new Rectangle(enemies[i].toPoint(), new Size(10, 10)));
g.FillRectangle(new SolidBrush(Color.Green), new Rectangle(player.toPoint(), new Size(10, 10)));
g.DrawString(lives.ToString(), new Font("Tahoma", 7), Brushes.White, new Rectangle(player.toPoint(), new Size(10, 10)));
Random random = new Random();
if (minigameTime != minigamePrevTime)
{
minigamePrevTime = minigameTime;
if (random.Next(0, 100000) < minigameTime + 1300)
{
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)
player.Y -= 5;
if (Input.Left)
player.X -= 5;
if (Input.Down)
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)));
if (player.distanceFromSquared(enemies[i]) < 100)
{
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"));
}
for (int j = 0; j < enemies.Count; j++)
{
if (i != j & enemies[i].distanceFromSquared(enemies[j]) < 25)
enemiesToRemove.Add(enemies[i]);
}
}
enemies = enemies.Except(enemiesToRemove.Distinct()).Distinct().ToList();
}
buffer.Render();
buffer.Dispose();
}
catch (Exception ex)
{
if (ex.InnerException?.Message == "0717750f-3508-4bc2-841e-f3b077c676fe")
{
minigameClockT.Enabled = false;
g.Clear(Color.Red);
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
SizeF sLen = g.MeasureString("Lost.", new Font("Tahoma", 20));
RectangleF rectf = new RectangleF(minigamePanel.Width / 2 - sLen.Width / 2, minigamePanel.Height / 2 - sLen.Height / 2, 90, 50);
g.DrawString("Lost.", new Font("Tahoma", 20), Brushes.Black, rectf);
buffer.Render();
}
else
#if DEBUG
throw;
#else
Console.WriteLine(ex.ToString());
#endif
}
}
}
}

View File

@ -1,123 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="minigameClockT.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@ -1,22 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace lv2_t
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}

View File

@ -1,68 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace lv2_t.Properties
{
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get {
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("lv2_t.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

View File

@ -1,117 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1,29 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace lv2_t.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get {
return defaultInstance;
}
}
}
}

View File

@ -1,7 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

View File

@ -1,152 +0,0 @@
using Base;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace lv3_t
{
public partial class MainForm : Form
{
#region FRMBD
uint minigameTime = 0;
uint minigamePrevTime = 0;
public MainForm()
{
InitializeComponent();
cannon = center;
targ = center;
}
private void Button1_Click(object sender, EventArgs e) => Application.Exit();
private void MinigameClockT_Tick(object sender, EventArgs e)
{
minigameTime++;
minigamePanel.Invalidate();
}
#endregion
Vector2 center => new Vector2(minigamePanel.Width / 2, minigamePanel.Height / 2);
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;
private void MinigamePanel_Paint(object sender, PaintEventArgs e)
{
BufferedGraphics buffer = BufferedGraphicsManager.Current.Allocate(e.Graphics, 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);
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;
if (Input.Up)
cannonL += 100 / power;
if (Input.Down)
cannonL -= 100 / power;
if (Input.Right)
playerRot += 80 / power;
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")
{
minigameClockT.Enabled = false;
g.Clear(Color.Red);
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
SizeF sLen = g.MeasureString("Lost.", new Font("Tahoma", 20));
RectangleF rectf = new RectangleF(minigamePanel.Width / 2 - sLen.Width / 2, minigamePanel.Height / 2 - sLen.Height / 2, 90, 50);
g.DrawString("Lost.", new Font("Tahoma", 20), Brushes.Black, rectf);
buffer.Render();
buffer.Dispose();
}
else
#if DEBUG
throw;
#else
Console.WriteLine(ex.ToString());
#endif
}
}
}
}

View File

@ -1,22 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace lv3_t
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}

View File

@ -1,68 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace lv3_t.Properties
{
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get {
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("lv3_t.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

View File

@ -1,117 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1,7 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

View File

@ -1,93 +0,0 @@
namespace lv4_t
{
partial class MainForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.minigameClockT = new System.Windows.Forms.Timer(this.components);
this.button1 = new System.Windows.Forms.Button();
this.minigamePanel = new System.Windows.Forms.Panel();
this.minigamePanel.SuspendLayout();
this.SuspendLayout();
//
// minigameClockT
//
this.minigameClockT.Enabled = true;
this.minigameClockT.Interval = 17;
this.minigameClockT.Tick += new System.EventHandler(this.MinigameClockT_Tick);
//
// button1
//
this.button1.Location = new System.Drawing.Point(777, 0);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(23, 23);
this.button1.TabIndex = 0;
this.button1.TabStop = false;
this.button1.Text = "X";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.Button1_Click);
//
// minigamePanel
//
this.minigamePanel.BackColor = System.Drawing.Color.Black;
this.minigamePanel.Controls.Add(this.button1);
this.minigamePanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.minigamePanel.Location = new System.Drawing.Point(0, 0);
this.minigamePanel.Name = "minigamePanel";
this.minigamePanel.Size = new System.Drawing.Size(800, 450);
this.minigamePanel.TabIndex = 1;
this.minigamePanel.Paint += new System.Windows.Forms.PaintEventHandler(this.MinigamePanel_Paint);
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.ControlBox = false;
this.Controls.Add(this.minigamePanel);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "MainForm";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Form1";
this.minigamePanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Timer minigameClockT;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Panel minigamePanel;
}
}

View File

@ -1,224 +0,0 @@
using Base;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace lv4_t
{
public partial class MainForm : Form
{
#region FRMBD
uint minigameTime = 0;
uint minigamePrevTime = 0;
public MainForm()
{
InitializeComponent();
playerV = new Vector2();
playerV.bounds = new Rectangle(-5, -20, 10, 40);
playerV.bounds_wrap = false;
for (int i = 0; i < 5; i++)
for (int j = 0; j < 2; j++)
platforms.Add(new Vector2(rnd.Next(minigamePanel.Width), i * (minigamePanel.Height / 5)));
player = new Vector2(platforms[0].X, -10);
player.bounds = new Rectangle(-5, 0, minigamePanel.Width + 10, 0);
player.bounds_wrap = true;
lazor = player.X;
lazorTime = 50;
}
private void Button1_Click(object sender, EventArgs e) => Application.Exit();
private void MinigameClockT_Tick(object sender, EventArgs e)
{
minigameTime++;
minigamePanel.Invalidate();
}
#endregion
Random rnd = new Random();
Vector2 player = new Vector2();
Vector2 playerV = new Vector2();
double lazor;
double lazorTime;
int jmpj;
List<Vector2> platforms = new List<Vector2>();
private void MinigamePanel_Paint(object sender, PaintEventArgs e)
{
BufferedGraphics buffer = BufferedGraphicsManager.Current.Allocate(e.Graphics, new Rectangle(0, 0, minigamePanel.Width, minigamePanel.Height));
Graphics g = buffer.Graphics;
try
{
g.Clear(Color.Black);
g.FillRectangle(new SolidBrush(Color.Green), player2rect());
bool onPlatform = false;
for (int i = 0; i < platforms.Count; i++)
{
g.FillRectangle(new SolidBrush(Color.White), plat2rect(i));
onPlatform |= isOnPlatform(i);
}
if (lazorTime >= 0 && lazorTime <= 30)
{
g.FillRectangle(new SolidBrush(Color.DarkGray), new RectangleF((float)lazor - 1, 0, 2, minigamePanel.Height));
g.FillRectangle(new SolidBrush(Color.Red), new RectangleF((float)lazor - 1, 0, 2, minigamePanel.Height - (float)Misc.map(0, 30, 0, minigamePanel.Height, lazorTime)));
}
Random random = new Random();
if (minigameTime != minigamePrevTime)
{
lazorTime -= minigameTime - minigamePrevTime;
minigamePrevTime = minigameTime;
if (lazorTime <= 0)
{
g.FillRectangle(new SolidBrush(Color.Red), new RectangleF((float)lazor - 5, 0, 10, minigamePanel.Height));
if (lazorTime <= -2)
{
lazorTime = 40;
lazor = player.X;
}
else
{
if (player.X >= lazor - 5 && player.X <= lazor + 5)
throw new Exception("The VM was shut down to prevent damage to your Machine.", new Exception("0717750f-3508-4bc2-841e-f3b077c676fe"));
}
}
if (onPlatform)
playerV.Y = Math.Min(playerV.Y, 0);
else
playerV.Y += 1;
playerV.X /= 1.2f;
if (onPlatform)
jmpj = 10;
else
if (!Input.Up)
jmpj = 0;
if ((onPlatform || jmpj > 0) && Input.Up)
{
playerV.Y -= jmpj / 6d + 1.5;
jmpj--;
}
double movementFactor = 15;
if (onPlatform)
movementFactor /= 4;
if (Input.Left)
playerV.X -= movementFactor;
if (Input.Right)
playerV.X += movementFactor;
player.X += playerV.X;
onPlatform = false;
if (playerV.Y < 0)
player.Y += playerV.Y;
else
for (int i = 0; i < playerV.Y / 2; i++)
{
for (int j = 0; j < platforms.Count; j++)
onPlatform |= isOnPlatform(j);
if (!onPlatform)
player.Y += 2;
}
List<Vector2> platformsToRemove = new List<Vector2>();
for (int i = 0; i < platforms.Count; i++)
{
platforms[i].Y += 1.7;
if (platforms[i].Y > minigamePanel.Height)
{
platforms[i].Y = 0;
platforms[i].X = rnd.Next(minigamePanel.Width);
}
}
if (player.Y > minigamePanel.Height)
throw new Exception("The VM was shut down to prevent damage to your Machine.", new Exception("0717750f-3508-4bc2-841e-f3b077c676fe"));
}
buffer.Render();
}
catch (Exception ex)
{
if (ex.InnerException?.Message == "0717750f-3508-4bc2-841e-f3b077c676fe")
{
minigameClockT.Enabled = false;
g.Clear(Color.Red);
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
SizeF sLen = g.MeasureString("Lost.", new Font("Tahoma", 20));
RectangleF rectf = new RectangleF(minigamePanel.Width / 2 - sLen.Width / 2, minigamePanel.Height / 2 - sLen.Height / 2, 90, 50);
g.DrawString("Lost.", new Font("Tahoma", 20), Brushes.Black, rectf);
buffer.Render();
}
else
#if DEBUG
throw;
#else
Console.WriteLine(ex.ToString());
#endif
}
}
RectangleF plat2rect(int platform) => new RectangleF((platforms[platform] - new Vector2(50, 5)).toPointF(), new SizeF(100, 10));
RectangleF player2rect() => new RectangleF((player - new Vector2(5, 5)).toPointF(), new SizeF(10, 10));
bool isOnPlatform(int platform)
{
calcDist(platform);
return ((double)platforms[platform].Tag) <= 20 && RectangleF.Intersect(player2rect(), plat2rect(platform)) != RectangleF.Empty && player.Y < platforms[platform].Y - 8;
}
void calcDist(int platform)
{
RectangleF rect = plat2rect(platform);
if (player.X < rect.X)
{
if (player.Y < rect.Y)
{
Vector2 diff = player - new Vector2(rect.X, rect.Y);
platforms[platform].Tag = diff.magnitude;
}
else if (player.Y > rect.Y + rect.Height)
{
Vector2 diff = player - new Vector2(rect.X, rect.Y + rect.Height);
platforms[platform].Tag = diff.magnitude;
}
else
{
platforms[platform].Tag = rect.X - player.X;
}
}
else if (player.X > rect.X + rect.Width)
{
if (player.Y < rect.Y)
{
Vector2 diff = player - new Vector2(rect.X + rect.Width, rect.Y);
platforms[platform].Tag = diff.magnitude;
}
else if (player.Y > rect.Y + rect.Height)
{
Vector2 diff = player - new Vector2(rect.X + rect.Width, rect.Y + rect.Height);
platforms[platform].Tag = diff.magnitude;
}
else
{
platforms[platform].Tag = player.X - rect.X + rect.Width;
}
}
else
{
if (player.Y < rect.Y)
{
platforms[platform].Tag = rect.Y - player.Y;
}
else if (player.Y > rect.Y + rect.Height)
{
platforms[platform].Tag = player.Y - (rect.Y + rect.Height);
}
else
{
platforms[platform].Tag = 0d;
}
}
}
}
}

View File

@ -1,22 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace lv4_t
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}

View File

@ -1,68 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace lv4_t.Properties
{
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get {
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("lv4_t.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

View File

@ -1,117 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1,29 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace lv4_t.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get {
return defaultInstance;
}
}
}
}

View File

@ -1,7 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

View File

@ -1,94 +0,0 @@
namespace lv_tst_base
{
partial class MainForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing & (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.minigamePanel = new System.Windows.Forms.Panel();
this.button1 = new System.Windows.Forms.Button();
this.minigameClockT = new System.Windows.Forms.Timer(this.components);
this.minigamePanel.SuspendLayout();
this.SuspendLayout();
//
// minigamePanel
//
this.minigamePanel.BackColor = System.Drawing.Color.Black;
this.minigamePanel.Controls.Add(this.button1);
this.minigamePanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.minigamePanel.Location = new System.Drawing.Point(0, 0);
this.minigamePanel.Name = "minigamePanel";
this.minigamePanel.Size = new System.Drawing.Size(800, 450);
this.minigamePanel.TabIndex = 0;
this.minigamePanel.Paint += new System.Windows.Forms.PaintEventHandler(this.MinigamePanel_Paint);
//
// button1
//
this.button1.Location = new System.Drawing.Point(777, 0);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(23, 23);
this.button1.TabIndex = 0;
this.button1.TabStop = false;
this.button1.Text = "X";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.Button1_Click);
//
// minigameClockT
//
this.minigameClockT.Enabled = true;
this.minigameClockT.Interval = 17;
this.minigameClockT.Tick += new System.EventHandler(this.MinigameClockT_Tick);
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.Control;
this.ClientSize = new System.Drawing.Size(800, 450);
this.ControlBox = false;
this.Controls.Add(this.minigamePanel);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "MainForm";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Form1";
this.minigamePanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel minigamePanel;
private System.Windows.Forms.Timer minigameClockT;
private System.Windows.Forms.Button button1;
}
}

View File

@ -1,68 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Base;
namespace lv_tst_base
{
public partial class MainForm : Form
{
#region FRMBD
uint minigameTime = 0;
uint minigamePrevTime = 0;
public MainForm() => InitializeComponent();
private void Button1_Click(object sender, EventArgs e) => Application.Exit();
private void MinigameClockT_Tick(object sender, EventArgs e)
{
minigameTime++;
minigamePanel.Invalidate();
}
#endregion
private void MinigamePanel_Paint(object sender, PaintEventArgs e)
{
BufferedGraphics buffer = BufferedGraphicsManager.Current.Allocate(e.Graphics, new Rectangle(0, 0, minigamePanel.Width, minigamePanel.Height));
Graphics g = buffer.Graphics;
try
{
g.Clear(Color.Black);
//Draw Sprites
Random random = new Random();
if (minigameTime != minigamePrevTime)
{
minigamePrevTime = minigameTime;
//Game Logic
}
buffer.Render();
}
catch (Exception ex)
{
if (ex.InnerException?.Message == "0717750f-3508-4bc2-841e-f3b077c676fe")
{
minigameClockT.Enabled = false;
g.Clear(Color.Red);
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
SizeF sLen = g.MeasureString("Lost.", new Font("Tahoma", 20));
RectangleF rectf = new RectangleF(minigamePanel.Width / 2 - sLen.Width / 2, minigamePanel.Height / 2 - sLen.Height / 2, 90, 50);
g.DrawString("Lost.", new Font("Tahoma", 20), Brushes.Black, rectf);
buffer.Render();
}
else
#if DEBUG
throw;
#else
Console.WriteLine(ex.ToString());
#endif
}
}
}
}

View File

@ -1,123 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="minigameClockT.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@ -1,22 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace lv_tst_base
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}

View File

@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("lv_tst_base")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("lv_tst_base")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("52ce6beb-ec81-4a14-85dd-3f8db8e33202")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -1,68 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace lv_tst_base.Properties
{
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get {
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("lv_tst_base.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

View File

@ -1,117 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1,29 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace lv_tst_base.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get {
return defaultInstance;
}
}
}
}

View File

@ -1,7 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@ -1,89 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{52CE6BEB-EC81-4A14-85DD-3F8DB8E33202}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>lv_tst_base</RootNamespace>
<AssemblyName>lv_tst_base</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Base\Base.csproj">
<Project>{9a9561a7-dd5f-43a5-a3f5-a95f35da204d}</Project>
<Name>Base</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -25,7 +25,7 @@ echo Please wait a bit.
:clean
echo Cleaning...
set tmp=%cd%
if exist ".NETFramework,Version=v4.7.2.AssemblyAttributes.cs" del ".NETFramework,Version=v4.7.2.AssemblyAttributes.cs"
if exist ".NETFramework,Version=v4.8.AssemblyAttributes.cs" del ".NETFramework,Version=v4.8.AssemblyAttributes.cs"
if exist "vs.mcj719337969" rmdir /s /q "vs.mcj719337969"
if exist "tmp" rmdir /s /q "tmp"
if not %full%==4 if exist "BUILD" rmdir /s /q "BUILD"
@ -77,4 +77,5 @@ if %full%==11 (
)
:exit
echo Done
timeout /t 2 /nobreak >nul
timeout /t 2 /nobreak >nul
exit

5
renovate.json Normal file
View File

@ -0,0 +1,5 @@
{
"extends": [
"config:base"
]
}

Some files were not shown because too many files have changed in this diff Show More