Compare commits
21 Commits
Author | SHA1 | Date |
---|---|---|
J. Fronny | a42306b0b1 | |
J. Fronny | b7a29ce224 | |
Renovate Bot | dc46269b4f | |
CreepyCrafter24 | 739a35d00f | |
CreepyCrafter24 | a0da4df4e3 | |
CreepyCrafter24 | 2c949a745c | |
CreepyCrafter24 | 1aebfb2ccf | |
CreepyCrafter24 | 148c1f9b83 | |
CreepyCrafter24 | 6c8cdd2af2 | |
CreepyCrafter24 | 35ecfcd98b | |
CreepyCrafter24 | 9f054ccdc4 | |
CreepyCrafter24 | 4bf91056ff | |
CreepyCrafter24 | 0bcc3c08b5 | |
CreepyCrafter24 | 4ecf0b122a | |
CreepyCrafter24 | d3494903b8 | |
CreepyCrafter24 | 91c4e4a898 | |
CreepyCrafter24 | 21c3ba85db | |
CreepyCrafter24 | 1fca2fe8d2 | |
CreepyCrafter24 | 8549ee0da8 | |
CreepyCrafter24 | 9645a01445 | |
CreepyCrafter24 | b4439c4708 |
|
@ -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
|
||||
|
|
114
1/1.cs
114
1/1.cs
|
@ -53,14 +53,13 @@ namespace LaptopSimulator2015.Levels
|
|||
}
|
||||
}
|
||||
|
||||
public int levelNumber => 1;
|
||||
|
||||
public int availableAfter => 1;
|
||||
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[] { "Level1 Icon made by Oliver Scholtz from www.iconfinder.com" };
|
||||
public bool isLowQuality => false;
|
||||
|
||||
List<Vector2> enemies;
|
||||
List<Vector2> bullets;
|
||||
|
@ -68,79 +67,61 @@ namespace LaptopSimulator2015.Levels
|
|||
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);
|
||||
Random random = new Random();
|
||||
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++)
|
||||
{
|
||||
g.FillRectangle(new SolidBrush(Color.Red), new Rectangle(enemies[i].toPoint(), new Size(10, 10)));
|
||||
enemies[i].X -= 1.2;
|
||||
if (player.distanceFromSquared(enemies[i]) < 100 | enemies[i].X < 0)
|
||||
{
|
||||
throw new Exception("The VM was shut down to prevent damage to your Machine.", new Exception("0717750f-3508-4bc2-841e-f3b077c676fe"));
|
||||
}
|
||||
}
|
||||
enemiesCanShoot = enemiesCanShoot | !Input.Action;
|
||||
List<Vector2> enemiesToRemove = new List<Vector2>();
|
||||
List<Vector2> bulletsToRemove = new List<Vector2>();
|
||||
for (int i = 0; i < bullets.Count; i++)
|
||||
{
|
||||
g.FillRectangle(new SolidBrush(Color.White), new Rectangle(bullets[i].toPoint(), new Size(5, 5)));
|
||||
}
|
||||
g.FillRectangle(new SolidBrush(Color.Green), new Rectangle(player.toPoint(), new Size(10, 10)));
|
||||
Random random = new Random();
|
||||
if (minigameTime != minigamePrevTime)
|
||||
{
|
||||
minigamePrevTime = minigameTime;
|
||||
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++)
|
||||
bullets[i].X += 4;
|
||||
for (int j = 0; j < enemies.Count; j++)
|
||||
{
|
||||
enemies[i].X -= 1.2;
|
||||
if (player.distanceFromSquared(enemies[i]) < 100 | enemies[i].X < 0)
|
||||
if (bullets[i].distanceFromSquared(enemies[j]) < 56.25f)
|
||||
{
|
||||
throw new Exception("The VM was shut down to prevent damage to your Machine.", new Exception("0717750f-3508-4bc2-841e-f3b077c676fe"));
|
||||
}
|
||||
}
|
||||
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] + new Vector2(2.5f, 2.5f)) < 56.25f)
|
||||
{
|
||||
enemiesToRemove.Add(enemies[j]);
|
||||
bulletsToRemove.Add(bullets[i]);
|
||||
}
|
||||
}
|
||||
if (bullets[i].X > minigamePanel.Width)
|
||||
enemiesToRemove.Add(enemies[j]);
|
||||
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(0, 2.5) + player);
|
||||
enemiesCanShoot = false;
|
||||
speedMod--;
|
||||
}
|
||||
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--;
|
||||
}
|
||||
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)
|
||||
{
|
||||
enemies = new List<Vector2>();
|
||||
bullets = new List<Vector2>();
|
||||
|
@ -148,7 +129,16 @@ namespace LaptopSimulator2015.Levels
|
|||
enemiesCanShoot = true;
|
||||
player = new Vector2(minigamePanel.Width / 4, minigamePanel.Height / 2);
|
||||
player.bounds_wrap = true;
|
||||
player.bounds = new Rectangle(-10, -10, minigamePanel.Width + 10, minigamePanel.Height + 10);
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>
|
||||
|
|
107
2/2.cs
107
2/2.cs
|
@ -54,85 +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;
|
||||
uint minigamePrevTime = 0;
|
||||
public Color backColor => Color.Black;
|
||||
public string[] credits => new string[] { "Level2 Icon made by Intel" };
|
||||
public bool isLowQuality => false;
|
||||
|
||||
List<Vector2> enemies;
|
||||
Vector2 player;
|
||||
int lives;
|
||||
|
||||
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
|
||||
{
|
||||
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)));
|
||||
Drawing.DrawSizedString(g, lives.ToString(), 7, (player + new PointF(5, 5)).toPointF(), Brushes.White, true);
|
||||
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)));
|
||||
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();
|
||||
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);
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
147
3/3.cs
147
3/3.cs
|
@ -54,114 +54,87 @@ 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;
|
||||
Rectangle player => new Rectangle(center.toPoint().X - 5, center.toPoint().Y - 5, 10, 10);
|
||||
double playerRot;
|
||||
double cannonL;
|
||||
double power;
|
||||
bool firing;
|
||||
uint lastTarget;
|
||||
|
||||
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);
|
||||
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 = new Vector2(center);
|
||||
|
@ -173,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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
89
3g/3.cs
89
3g/3.cs
|
@ -32,14 +32,10 @@ namespace LaptopSimulator2015.Goals
|
|||
}
|
||||
}
|
||||
|
||||
public int levelNumber => 0;
|
||||
|
||||
public int availableAfter => 0;
|
||||
public int gameClock => 300;
|
||||
|
||||
public Panel desktopIcon { get; set; }
|
||||
|
||||
public int playableAfter => 4;
|
||||
|
||||
public string[] availableText
|
||||
{
|
||||
get {
|
||||
|
@ -79,8 +75,10 @@ namespace LaptopSimulator2015.Goals
|
|||
}
|
||||
}
|
||||
|
||||
public static uint minigamePrevTime;
|
||||
|
||||
public Color backColor => Color.Black;
|
||||
public string[] credits => new string[]{ "Testexetrisathlon Icon made by Freepik from www.flaticon.com" };
|
||||
public bool isLowQuality => true;
|
||||
|
||||
public static int[,] grid = new int[23, 10];
|
||||
public static int[,] droppedtetrominoeLocationGrid = new int[23, 10];
|
||||
public static bool isDropped = false;
|
||||
|
@ -88,57 +86,32 @@ namespace LaptopSimulator2015.Goals
|
|||
static Tetrominoe nexttet;
|
||||
public static int linesCleared = 0, score = 0, level = 1;
|
||||
public static Random rnd;
|
||||
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 y = 0; y < 23; ++y)
|
||||
{
|
||||
for (int x = 0; x < 10; x++)
|
||||
{
|
||||
if (grid[y, x] == 1 | droppedtetrominoeLocationGrid[y, x] == 1)
|
||||
g.FillRectangle(Brushes.White, new Rectangle(x * 10, y * 10, 10, 10));
|
||||
}
|
||||
g.DrawLine(new Pen(Color.DarkGray), new Point(0, (y + 1) * 10), new Point(10 * 10, (y + 1) * 10));
|
||||
}
|
||||
for (int x = 0; x < 10; x++)
|
||||
{
|
||||
g.DrawLine(new Pen(Color.DarkGray), new Point((x + 1) * 10, 0), new Point((x + 1) * 10, 23 * 10));
|
||||
}
|
||||
Drawing.DrawSizedString(g, "Level " + level, 10, new PointF(150, 10), Brushes.White);
|
||||
Drawing.DrawSizedString(g, "Score " + score, 10, new PointF(150, 30), Brushes.White);
|
||||
Drawing.DrawSizedString(g, "LinesCleared " + linesCleared, 10, new PointF(150, 50), Brushes.White);
|
||||
Random random = new Random();
|
||||
if (minigameTime != minigamePrevTime)
|
||||
tet.Drop();
|
||||
if (isDropped == true)
|
||||
{
|
||||
minigamePrevTime = minigameTime;
|
||||
tet.Drop();
|
||||
if (isDropped == true)
|
||||
{
|
||||
tet = nexttet;
|
||||
nexttet = new Tetrominoe();
|
||||
tet.Spawn();
|
||||
isDropped = false;
|
||||
score += 10;
|
||||
}
|
||||
int j; for (j = 0; j < 10; j++)
|
||||
{
|
||||
if (droppedtetrominoeLocationGrid[0, j] == 1)
|
||||
Misc.closeGameWindow.Invoke();
|
||||
}
|
||||
Input();
|
||||
ClearBlock();
|
||||
tet = nexttet;
|
||||
nexttet = new Tetrominoe();
|
||||
tet.Spawn();
|
||||
isDropped = false;
|
||||
score += 10;
|
||||
}
|
||||
buffer.Render();
|
||||
buffer.Dispose();
|
||||
int j; for (j = 0; j < 10; j++)
|
||||
{
|
||||
if (droppedtetrominoeLocationGrid[0, j] == 1)
|
||||
Misc.closeGameWindow.Invoke();
|
||||
}
|
||||
Input();
|
||||
ClearBlock();
|
||||
}
|
||||
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();
|
||||
grid = new int[23, 10];
|
||||
|
@ -222,6 +195,26 @@ namespace LaptopSimulator2015.Goals
|
|||
}
|
||||
}
|
||||
|
||||
public void draw(GraphicsWrapper g, Panel minigamePanel, Timer minigameTimer, uint minigameTime)
|
||||
{
|
||||
for (int y = 0; y < 23; ++y)
|
||||
{
|
||||
for (int x = 0; x < 10; x++)
|
||||
{
|
||||
if (grid[y, x] == 1 | droppedtetrominoeLocationGrid[y, x] == 1)
|
||||
g.DrawRectangle(new RectangleF(x * 10, y * 10, 10, 10), Color.White, false, false);
|
||||
}
|
||||
g.DrawLine(new Point(0, (y + 1) * 10), new Point(10 * 10, (y + 1) * 10), Color.DarkGray, 1, false);
|
||||
}
|
||||
for (int x = 0; x < 10; x++)
|
||||
{
|
||||
g.DrawLine(new Point((x + 1) * 10, 0), new Point((x + 1) * 10, 23 * 10), Color.DarkGray, 1, false);
|
||||
}
|
||||
g.DrawSizedString("Level " + level, 10, new PointF(150, 10), Brushes.White, false);
|
||||
g.DrawSizedString("Score " + score, 10, new PointF(150, 30), Brushes.White, false);
|
||||
g.DrawSizedString("LinesCleared " + linesCleared, 10, new PointF(150, 50), Brushes.White, false);
|
||||
}
|
||||
|
||||
public class Tetrominoe
|
||||
{
|
||||
public static int[,] I = new int[1, 4] { { 1, 1, 1, 1 } };
|
||||
|
|
|
@ -9,9 +9,10 @@
|
|||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>LaptopSimulator2015.Levels</RootNamespace>
|
||||
<AssemblyName>3g</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>
|
||||
|
|
206
4/4.cs
206
4/4.cs
|
@ -51,11 +51,13 @@ 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;
|
||||
public Color backColor => Color.Black;
|
||||
public bool isLowQuality => false;
|
||||
public string[] credits => new string[] { "Level4 Icon made by Microsoft" };
|
||||
|
||||
Random rnd;
|
||||
Vector2 player;
|
||||
|
@ -66,105 +68,88 @@ namespace LaptopSimulator2015.Levels
|
|||
int jmpj;
|
||||
bool wasOnPlatform;
|
||||
List<Vector2> platforms;
|
||||
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);
|
||||
g.FillRectangle(new SolidBrush(Color.Green), player2rect());
|
||||
if (lazorTime >= 0 && lazorTime <= 80)
|
||||
{
|
||||
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, 80, 0, minigamePanel.Height, lazorTime)));
|
||||
}
|
||||
for (int i = 0; i < platforms.Count; i++)
|
||||
g.FillRectangle(new SolidBrush(Color.White), plat2rect(i));
|
||||
Random random = new Random();
|
||||
if (minigameTime != minigamePrevTime)
|
||||
speed = Math.Min(minigameTime / 200d, 2) + 0.5;
|
||||
lazorTime -= Math.Min(minigameTime / 800, 2.5) + 0.5;
|
||||
if (lazorTime <= 0)
|
||||
{
|
||||
speed = Math.Min(minigameTime / 200d, 2) + 0.5;
|
||||
lazorTime -= Math.Min(minigameTime / 800, 2.5) + 0.5;
|
||||
minigamePrevTime = minigameTime;
|
||||
if (lazorTime <= 0)
|
||||
g.DrawRectangle(new RectangleF((float)lazor, minigamePanel.Height / 2, 10, minigamePanel.Height), Color.Red);
|
||||
if (lazorTime <= -2)
|
||||
{
|
||||
g.FillRectangle(new SolidBrush(Color.Red), new RectangleF((float)lazor - 5, 0, 10, minigamePanel.Height));
|
||||
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++)
|
||||
{
|
||||
platforms[i].Y += speed;
|
||||
if (platforms[i].Y > minigamePanel.Height)
|
||||
{
|
||||
platforms[i].Y = 0;
|
||||
platforms[i].X = rnd.Next(minigamePanel.Width);
|
||||
}
|
||||
}
|
||||
double movementFactor;
|
||||
if (wasOnPlatform)
|
||||
{
|
||||
movementFactor = 2;
|
||||
playerV.X *= 0.7;
|
||||
playerV.Y = Math.Min(playerV.Y, 0);
|
||||
lazorTime = 100;
|
||||
lazor = player.X;
|
||||
}
|
||||
else
|
||||
{
|
||||
movementFactor = 5;
|
||||
playerV.X *= 0.9;
|
||||
playerV.Y += 1;
|
||||
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"));
|
||||
}
|
||||
if (Input.Up)
|
||||
{
|
||||
if (wasOnPlatform || jmpj > 0)
|
||||
{
|
||||
playerV.Y -= jmpj / 6d + 1.5;
|
||||
jmpj--;
|
||||
}
|
||||
}
|
||||
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 > minigamePanel.Height)
|
||||
throw new Exception("The VM was shut down to prevent damage to your Machine.", new Exception("0717750f-3508-4bc2-841e-f3b077c676fe"));
|
||||
wasOnPlatform = onPlatform;
|
||||
}
|
||||
buffer.Render();
|
||||
buffer.Dispose();
|
||||
player.Y -= speed;
|
||||
for (int i = 0; i < platforms.Count; i++)
|
||||
{
|
||||
platforms[i].Y -= speed;
|
||||
if (platforms[i].Y < 0)
|
||||
{
|
||||
platforms[i].Y = minigamePanel.Height;
|
||||
platforms[i].X = rnd.Next(minigamePanel.Width);
|
||||
}
|
||||
}
|
||||
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;
|
||||
jmpj--;
|
||||
}
|
||||
}
|
||||
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();
|
||||
|
@ -176,7 +161,7 @@ namespace LaptopSimulator2015.Levels
|
|||
{
|
||||
platforms.Add(new Vector2(rnd.Next(minigamePanel.Width - 100) + 50, i * (minigamePanel.Height / 5)));
|
||||
}
|
||||
player = new Vector2(platforms[platforms.Count / 2].X, -10);
|
||||
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;
|
||||
|
@ -190,41 +175,26 @@ namespace LaptopSimulator2015.Levels
|
|||
get {
|
||||
for (int i = 0; i < platforms.Count; i++)
|
||||
{
|
||||
RectangleF rect = plat2rect(i);
|
||||
if (player.X < rect.X)
|
||||
{
|
||||
if (player.Y < rect.Y)
|
||||
platforms[i].Tag = (player - new PointF(rect.X, rect.Y)).magnitude;
|
||||
else if (player.Y > rect.Y + rect.Height)
|
||||
platforms[i].Tag = (player - new PointF(rect.X, rect.Y + rect.Height)).magnitude;
|
||||
else
|
||||
platforms[i].Tag = rect.X - player.X;
|
||||
}
|
||||
else if (player.X > rect.X + rect.Width)
|
||||
{
|
||||
if (player.Y < rect.Y)
|
||||
platforms[i].Tag = (player - new PointF(rect.X + rect.Width, rect.Y)).magnitude;
|
||||
else if (player.Y > rect.Y + rect.Height)
|
||||
platforms[i].Tag = (player - new PointF(rect.X + rect.Width, rect.Y + rect.Height)).magnitude;
|
||||
else
|
||||
platforms[i].Tag = player.X - rect.X + rect.Width;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (player.Y < rect.Y)
|
||||
platforms[i].Tag = rect.Y - player.Y;
|
||||
else if (player.Y > rect.Y + rect.Height)
|
||||
platforms[i].Tag = player.Y - (rect.Y + rect.Height);
|
||||
else
|
||||
platforms[i].Tag = 0d;
|
||||
}
|
||||
if (((double)platforms[i].Tag) <= 20 && RectangleF.Intersect(player2rect(), rect) != RectangleF.Empty && player.Y < platforms[i].Y - 8)
|
||||
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;
|
||||
}
|
||||
}
|
||||
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));
|
||||
|
||||
public void draw(GraphicsWrapper g, Panel minigamePanel, Timer minigameTimer, uint minigameTime)
|
||||
{
|
||||
g.DrawRectangle(new Rect(player, new Vector2(10, 10), true), Color.Green);
|
||||
if (lazorTime >= 0 && lazorTime <= 80)
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
@ -44,10 +45,12 @@
|
|||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Drawing.cs" />
|
||||
<Compile Include="Glitch.cs" />
|
||||
<Compile Include="Input.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" />
|
||||
|
|
155
Base/Drawing.cs
155
Base/Drawing.cs
|
@ -8,26 +8,163 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace Base
|
||||
{
|
||||
public static class Drawing
|
||||
public sealed class GraphicsWrapper : IDisposable
|
||||
{
|
||||
public static void DrawSizedString(Graphics g, string s, int size, PointF location, Brush brush, bool isLocationCentered = false)
|
||||
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;
|
||||
SizeF sLen = g.MeasureString(s, new Font("Tahoma", size));
|
||||
RectangleF rectf;
|
||||
if (isLocationCentered)
|
||||
rectf = new RectangleF(location.X - sLen.Width / 2, location.Y - sLen.Height / 2, sLen.Width, sLen.Height);
|
||||
else
|
||||
rectf = new RectangleF(location, sLen);
|
||||
g.DrawString(s, new Font("Tahoma", size), brush, rectf);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using Base;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
|
@ -10,24 +11,90 @@ 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; }
|
||||
int levelNumber { 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; }
|
||||
void initGame(Graphics g, Panel minigamePanel, Timer minigameTimer);
|
||||
void gameTick(Graphics g, Panel minigamePanel, Timer minigameTimer, uint minigameTime);
|
||||
/// <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; }
|
||||
}
|
||||
}
|
||||
|
|
52
Base/Misc.cs
52
Base/Misc.cs
|
@ -10,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);
|
||||
|
@ -21,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);
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
165
Base/Vector2.cs
165
Base/Vector2.cs
|
@ -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;
|
||||
|
@ -56,6 +61,9 @@ namespace Base
|
|||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// X-Coordinate of the Vector
|
||||
/// </summary>
|
||||
public double X
|
||||
{
|
||||
get {
|
||||
|
@ -67,6 +75,9 @@ namespace Base
|
|||
check();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Y-Coordinate of the Vector
|
||||
/// </summary>
|
||||
public double Y
|
||||
{
|
||||
get {
|
||||
|
@ -78,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;
|
||||
|
@ -110,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);
|
||||
|
@ -142,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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>{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>
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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_Double")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("lv2_t")]
|
||||
[assembly: AssemblyProduct("CaptchaGlitch_Double")]
|
||||
[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("b97a24f8-8027-471a-b688-8bc5d49b21d7")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
|
@ -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>{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>
|
|
@ -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("lv3g_t")]
|
||||
[assembly: AssemblyTitle("CaptchaGlitch_Rand")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("lv3g_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("e6bf80e0-8848-4a6f-b114-fec5055e1d9e")]
|
||||
[assembly: Guid("72bbb6b8-5da3-4ff1-8fa6-75256637f931")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
|
@ -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)];
|
||||
}
|
||||
}
|
|
@ -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.
|
|
@ -8,36 +8,32 @@ 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
|
||||
|
@ -45,7 +41,24 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Goals", "Goals", "{7D9F2BFD
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "3g", "3g\3g.csproj", "{E61E2797-62B4-471C-ACBF-31EAB7C746CF}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "lv3g_t", "lv3g_t\lv3g_t.csproj", "{E6BF80E0-8848-4A6F-B114-FEC5055E1D9E}"
|
||||
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
|
||||
|
@ -65,34 +78,14 @@ 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
|
||||
|
@ -101,26 +94,40 @@ Global
|
|||
{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
|
||||
{E6BF80E0-8848-4A6F-B114-FEC5055E1D9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E6BF80E0-8848-4A6F-B114-FEC5055E1D9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E6BF80E0-8848-4A6F-B114-FEC5055E1D9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E6BF80E0-8848-4A6F-B114-FEC5055E1D9E}.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
|
||||
{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}
|
||||
{E6BF80E0-8848-4A6F-B114-FEC5055E1D9E} = {69DC5824-3F89-4B47-BF1A-F25942094195}
|
||||
{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}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -51,7 +51,7 @@ namespace LaptopSimulator2015
|
|||
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();
|
||||
|
@ -71,6 +71,8 @@ namespace LaptopSimulator2015
|
|||
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();
|
||||
|
@ -84,6 +86,19 @@ namespace LaptopSimulator2015
|
|||
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();
|
||||
|
@ -98,6 +113,8 @@ namespace LaptopSimulator2015
|
|||
this.optionsWindow.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.optionsWindowWam)).BeginInit();
|
||||
this.optionsWindowHeader.SuspendLayout();
|
||||
this.devWindow.SuspendLayout();
|
||||
this.devWindowHeader.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// winKey
|
||||
|
@ -266,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);
|
||||
|
@ -277,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;
|
||||
|
@ -289,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;
|
||||
//
|
||||
|
@ -311,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;
|
||||
//
|
||||
|
@ -326,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
|
||||
|
@ -351,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;
|
||||
//
|
||||
|
@ -400,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
|
||||
//
|
||||
|
@ -409,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
|
||||
//
|
||||
|
@ -456,7 +478,7 @@ namespace LaptopSimulator2015
|
|||
this.minigameClose.Text = "r";
|
||||
this.minigameClose.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
this.minigameClose.Visible = false;
|
||||
this.minigameClose.Click += new System.EventHandler(this.MinigameClose_Click);
|
||||
this.minigameClose.Click += new System.EventHandler(this.CloseMinigame);
|
||||
//
|
||||
// minigameClockT
|
||||
//
|
||||
|
@ -466,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);
|
||||
|
@ -476,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(355, 64);
|
||||
this.optionsWindowReset.Location = new System.Drawing.Point(378, 60);
|
||||
this.optionsWindowReset.Name = "optionsWindowReset";
|
||||
this.optionsWindowReset.Size = new System.Drawing.Size(93, 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);
|
||||
|
@ -497,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(454, 64);
|
||||
this.optionsWindowExit.Location = new System.Drawing.Point(458, 60);
|
||||
this.optionsWindowExit.Name = "optionsWindowExit";
|
||||
this.optionsWindowExit.Size = new System.Drawing.Size(34, 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);
|
||||
|
@ -531,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);
|
||||
|
@ -548,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
|
||||
|
@ -561,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);
|
||||
|
@ -572,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;
|
||||
|
@ -588,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
|
||||
//
|
||||
|
@ -597,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);
|
||||
|
@ -610,6 +827,7 @@ 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);
|
||||
|
@ -624,6 +842,7 @@ namespace LaptopSimulator2015
|
|||
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();
|
||||
|
@ -644,6 +863,10 @@ namespace LaptopSimulator2015
|
|||
((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);
|
||||
|
||||
}
|
||||
|
@ -663,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;
|
||||
|
@ -697,5 +920,20 @@ namespace LaptopSimulator2015
|
|||
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;
|
||||
}
|
||||
}
|
|
@ -19,9 +19,9 @@ namespace LaptopSimulator2015
|
|||
{
|
||||
#region Base
|
||||
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 = "";
|
||||
|
@ -47,6 +47,12 @@ namespace LaptopSimulator2015
|
|||
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;
|
||||
|
@ -66,23 +72,23 @@ namespace LaptopSimulator2015
|
|||
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("Goals"))
|
||||
Directory.CreateDirectory("Goals");
|
||||
if (!Directory.Exists("Content"))
|
||||
Directory.CreateDirectory("Content");
|
||||
InitializeComponent();
|
||||
toolTip.SetToolTip(options_2, strings.optionsWindowTitle);
|
||||
levelWindowContents.ItemSize = new Size(0, 1);
|
||||
#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);
|
||||
|
@ -90,10 +96,7 @@ 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.ToString("hh:mm:ss", Settings.lang);
|
||||
fans = new SoundPlayer(Resources.fans);
|
||||
|
@ -101,27 +104,36 @@ namespace LaptopSimulator2015
|
|||
Control[] controls = getControls(ignore: new List<Control> { minigamePanel }).ToArray();
|
||||
for (int i = 0; i < controls.Length; i++)
|
||||
controls[i].Paint += Control_Paint;
|
||||
levels = Directory.GetFiles("Levels").Concat(Directory.GetFiles("Goals")).Where(s => Path.GetExtension(s) == ".dll").Select(s => Assembly.LoadFrom(s))
|
||||
.SelectMany(s => s.GetTypes()).Where(p => typeof(Minigame).IsAssignableFrom(p) && p != typeof(Minigame) && p != typeof(Level) && p != typeof(Goal)).Distinct()
|
||||
.Select(s => (Minigame)Activator.CreateInstance(s)).OrderBy(lv => lv.levelNumber).ToList();
|
||||
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[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].icon;
|
||||
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;
|
||||
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;
|
||||
|
@ -154,13 +166,11 @@ namespace LaptopSimulator2015
|
|||
Goal goal = ((Goal)levels[levelInd]);
|
||||
if (goal.playableAfter <= Settings.level)
|
||||
{
|
||||
Graphics g = minigamePanel.CreateGraphics();
|
||||
levels[levelInd].initGame(g, minigamePanel, minigameClockT);
|
||||
levels[levelInd].initGame(minigamePanel, minigameClockT);
|
||||
minigamePanel.Visible = true;
|
||||
minigamePanel.Enabled = true;
|
||||
minigameClockT.Enabled = true;
|
||||
minigameClose.Visible = true;
|
||||
g.Flush();
|
||||
Misc.closeGameWindow = new Action(() => {
|
||||
base.BackColor = Color.FromArgb(100, 0, 255);
|
||||
minigamePanel.Visible = false;
|
||||
|
@ -176,7 +186,7 @@ namespace LaptopSimulator2015
|
|||
else
|
||||
{
|
||||
base.BackColor = Color.FromArgb(100, 0, 255);
|
||||
if (levels[levelInd].levelNumber == Settings.level)
|
||||
if (levels[levelInd].availableAfter == Settings.level)
|
||||
{
|
||||
playDialog(goal.incompleteText);
|
||||
incrementLevel();
|
||||
|
@ -188,52 +198,63 @@ namespace LaptopSimulator2015
|
|||
}
|
||||
};
|
||||
toolTip.SetToolTip(tmp1, strings.lvPref + " " + (i + 1).ToString() + ": " + levels[i].name);
|
||||
|
||||
levels[i].desktopIcon.Controls.Add(tmp1);
|
||||
winDesktop.Controls.Add(levels[i].desktopIcon);
|
||||
}
|
||||
GC.Collect();
|
||||
}
|
||||
|
||||
private void FakeDesktop_Load(object sender, EventArgs e)
|
||||
{
|
||||
mode = Mode.mainMenu;
|
||||
Program.splash.Close();
|
||||
GC.Collect();
|
||||
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].levelNumber <= Settings.level) || (levels[i].levelNumber == 0 && Settings.level == 0)))
|
||||
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(() =>
|
||||
{
|
||||
Invoke((MethodInvoker)delegate () { winDesktop.Enabled = false; });
|
||||
playDialog(at).Join();
|
||||
Invoke((MethodInvoker)delegate ()
|
||||
try
|
||||
{
|
||||
winDesktop.Enabled = true;
|
||||
updateIconVisibility(true);
|
||||
});
|
||||
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].levelNumber <= Settings.level;
|
||||
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(() =>
|
||||
{
|
||||
for (int i = 0; i < lines.Length; i++)
|
||||
try
|
||||
{
|
||||
Invoke((MethodInvoker)delegate () { subsLabel.Text = lines[i]; });
|
||||
Thread.Sleep(2000);
|
||||
for (int i = 0; i < lines.Length; i++)
|
||||
{
|
||||
Invoke((MethodInvoker)delegate () { subsLabel.Text = lines[i]; });
|
||||
Thread.Sleep(2000);
|
||||
}
|
||||
Invoke((MethodInvoker)delegate () { subsLabel.Text = ""; });
|
||||
}
|
||||
Invoke((MethodInvoker)delegate () { subsLabel.Text = ""; });
|
||||
catch (InvalidOperationException) { }
|
||||
});
|
||||
tmp.Start();
|
||||
return tmp;
|
||||
|
@ -243,8 +264,8 @@ namespace LaptopSimulator2015
|
|||
{
|
||||
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 (levels[i].availableAfter < closest & levels[i].availableAfter > levels[levelInd].availableAfter)
|
||||
closest = levels[i].availableAfter;
|
||||
if (closest != int.MaxValue)
|
||||
Settings.level = closest;
|
||||
Settings.Save();
|
||||
|
@ -291,7 +312,7 @@ namespace LaptopSimulator2015
|
|||
else
|
||||
{
|
||||
if (levelWindow.Visible)
|
||||
LevelWindowHeaderExit_Click(sender, new EventArgs());
|
||||
Misc.closeGameWindow.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -301,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)
|
||||
|
@ -349,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)
|
||||
|
@ -357,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);
|
||||
|
@ -377,8 +397,8 @@ namespace LaptopSimulator2015
|
|||
}
|
||||
break;
|
||||
case 2:
|
||||
LevelWindowHeaderExit_Click(sender, e);
|
||||
if (levels[levelInd].levelNumber >= Settings.level)
|
||||
Misc.closeGameWindow.Invoke();
|
||||
if (levels[levelInd].availableAfter >= Settings.level)
|
||||
{
|
||||
incrementLevel();
|
||||
mode = Mode.game;
|
||||
|
@ -400,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;
|
||||
}
|
||||
}
|
||||
|
@ -418,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));
|
||||
|
@ -426,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));
|
||||
|
@ -444,12 +478,24 @@ namespace LaptopSimulator2015
|
|||
}
|
||||
}
|
||||
|
||||
private void LevelWindowHeaderExit_Click(object sender, EventArgs e) => Misc.closeGameWindow.Invoke();
|
||||
private void MinigameClose_Click(object sender, EventArgs e) => Misc.closeGameWindow.Invoke();
|
||||
private void CloseMinigame(object sender, EventArgs e) => Misc.closeGameWindow.Invoke();
|
||||
|
||||
#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)
|
||||
{
|
||||
|
@ -495,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);
|
||||
|
@ -612,6 +659,66 @@ namespace LaptopSimulator2015
|
|||
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
|
||||
}
|
||||
}
|
|
@ -293,4 +293,87 @@
|
|||
<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>
|
|
@ -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,14 +145,21 @@
|
|||
</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"
|
||||
<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)Goals" mkdir "$(TargetDir)Goals"
|
||||
if exist "$(SolutionDir)tmp1" copy $(SolutionDir)tmp1\* "$(TargetDir)Goals"
|
||||
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>
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -13,6 +13,7 @@ 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);
|
||||
}
|
||||
|
@ -24,7 +25,8 @@ namespace LaptopSimulator2015 {
|
|||
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", 0));
|
||||
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);
|
||||
}
|
||||
|
@ -33,12 +35,14 @@ namespace LaptopSimulator2015 {
|
|||
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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>
|
||||
|
@ -141,6 +168,15 @@ namespace LaptopSimulator2015 {
|
|||
}
|
||||
}
|
||||
|
||||
/// <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>
|
||||
|
@ -159,6 +195,33 @@ namespace LaptopSimulator2015 {
|
|||
}
|
||||
}
|
||||
|
||||
/// <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>
|
||||
|
@ -232,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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -249,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'll like it. My name is CreepyCrafter24, btw. (FunFact: This game was originally created as the result of a conversation with a classmate).
|
||||
/// </summary>
|
||||
|
|
|
@ -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,29 +130,47 @@
|
|||
<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>
|
||||
|
@ -174,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>
|
||||
|
|
|
@ -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,29 +130,47 @@
|
|||
<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>
|
||||
|
@ -174,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>
|
||||
|
|
|
@ -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>
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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>
|
|
@ -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>
|
|
@ -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;
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -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("LevelTest")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("SIT")]
|
||||
[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("d80dbbf2-307f-40a0-86f1-871c8daa394b")]
|
||||
[assembly: Guid("dfd89655-00a7-4df8-8b2e-17f5befe5090")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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.
|
14
ToDo.txt
14
ToDo.txt
|
@ -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?
|
|
@ -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>
|
|
@ -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.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;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,140 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using Base;
|
||||
|
||||
namespace SIT
|
||||
{
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
#region FRMBD
|
||||
uint minigameTime;
|
||||
uint minigamePrevTime;
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
_initGame();
|
||||
}
|
||||
|
||||
private void Button1_Click(object sender, EventArgs e) => Application.Exit();
|
||||
private void MinigameClockT_Tick(object sender, EventArgs e)
|
||||
{
|
||||
minigameTime++;
|
||||
minigamePanel.Invalidate();
|
||||
}
|
||||
|
||||
private void _initGame()
|
||||
{
|
||||
minigameTime = 0;
|
||||
minigamePrevTime = 0;
|
||||
initGame();
|
||||
}
|
||||
#endregion
|
||||
List<Vector2> enemies;
|
||||
List<Vector2> bullets;
|
||||
Vector2 player;
|
||||
double speedMod;
|
||||
bool enemiesCanShoot;
|
||||
private void initGame()
|
||||
{
|
||||
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(-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 < enemies.Count; i++)
|
||||
{
|
||||
g.FillRectangle(new SolidBrush(Color.Red), new Rectangle(enemies[i].toPoint(), new Size(10, 10)));
|
||||
}
|
||||
for (int i = 0; i < bullets.Count; i++)
|
||||
{
|
||||
g.FillRectangle(new SolidBrush(Color.White), new Rectangle(bullets[i].toPoint(), new Size(5, 5)));
|
||||
}
|
||||
g.FillRectangle(new SolidBrush(Color.Green), new Rectangle(player.toPoint(), new Size(10, 10)));
|
||||
Random random = new Random();
|
||||
if (minigameTime != minigamePrevTime)
|
||||
{
|
||||
minigamePrevTime = minigameTime;
|
||||
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++)
|
||||
{
|
||||
enemies[i].X -= 1.2;
|
||||
if (player.distanceFromSquared(enemies[i]) < 100 | enemies[i].X < 0)
|
||||
{
|
||||
throw new Exception("The VM was shut down to prevent damage to your Machine.", new Exception("0717750f-3508-4bc2-841e-f3b077c676fe"));
|
||||
}
|
||||
}
|
||||
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] + new Vector2(2.5f, 2.5f)) < 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(0, 2.5) + player);
|
||||
enemiesCanShoot = false;
|
||||
speedMod--;
|
||||
}
|
||||
}
|
||||
buffer.Render();
|
||||
buffer.Dispose();
|
||||
}
|
||||
catch (Exception ex) {
|
||||
if (ex.InnerException?.Message == "0717750f-3508-4bc2-841e-f3b077c676fe")
|
||||
{
|
||||
g.Clear(Color.Red);
|
||||
Drawing.DrawSizedString(g, "Lost.", 20, new PointF(minigamePanel.Width / 2, minigamePanel.Height / 2), Brushes.Black, true);
|
||||
buffer.Render();
|
||||
Thread.Sleep(500);
|
||||
_initGame();
|
||||
}
|
||||
else
|
||||
#if DEBUG
|
||||
throw;
|
||||
#else
|
||||
Console.WriteLine(ex.ToString());
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,124 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using Base;
|
||||
|
||||
namespace lv2_t
|
||||
{
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
#region FRMBD
|
||||
uint minigameTime;
|
||||
uint minigamePrevTime;
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
_initGame();
|
||||
}
|
||||
|
||||
private void Button1_Click(object sender, EventArgs e) => Application.Exit();
|
||||
private void MinigameClockT_Tick(object sender, EventArgs e)
|
||||
{
|
||||
minigameTime++;
|
||||
minigamePanel.Invalidate();
|
||||
}
|
||||
|
||||
private void _initGame()
|
||||
{
|
||||
minigameTime = 0;
|
||||
minigamePrevTime = 0;
|
||||
initGame();
|
||||
}
|
||||
#endregion
|
||||
List<Vector2> enemies;
|
||||
Vector2 player;
|
||||
int lives;
|
||||
private void initGame()
|
||||
{
|
||||
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);
|
||||
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)));
|
||||
Drawing.DrawSizedString(g, lives.ToString(), 7, (player + new PointF(5, 5)).toPointF(), Brushes.White, true);
|
||||
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)));
|
||||
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();
|
||||
}
|
||||
buffer.Render();
|
||||
buffer.Dispose();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (ex.InnerException?.Message == "0717750f-3508-4bc2-841e-f3b077c676fe")
|
||||
{
|
||||
g.Clear(Color.Red);
|
||||
Drawing.DrawSizedString(g, "Lost.", 20, new PointF(minigamePanel.Width / 2, minigamePanel.Height / 2), Brushes.Black, true);
|
||||
buffer.Render();
|
||||
Thread.Sleep(500);
|
||||
_initGame();
|
||||
}
|
||||
else
|
||||
#if DEBUG
|
||||
throw;
|
||||
#else
|
||||
Console.WriteLine(ex.ToString());
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>
|
|
@ -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>
|
|
@ -1,166 +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;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace lv3_t
|
||||
{
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
#region FRMBD
|
||||
uint minigameTime;
|
||||
uint minigamePrevTime;
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
_initGame();
|
||||
}
|
||||
|
||||
private void Button1_Click(object sender, EventArgs e) => Application.Exit();
|
||||
private void MinigameClockT_Tick(object sender, EventArgs e)
|
||||
{
|
||||
minigameTime++;
|
||||
minigamePanel.Invalidate();
|
||||
}
|
||||
|
||||
private void _initGame()
|
||||
{
|
||||
minigameTime = 0;
|
||||
minigamePrevTime = 0;
|
||||
initGame();
|
||||
}
|
||||
#endregion
|
||||
Vector2 center;
|
||||
Vector2 cannon;
|
||||
Vector2 targ;
|
||||
List<Vector2> targets;
|
||||
Rectangle player => new Rectangle(center.toPoint().X - 5, center.toPoint().Y - 5, 10, 10);
|
||||
double playerRot;
|
||||
double cannonL;
|
||||
double power;
|
||||
bool firing;
|
||||
uint lastTarget;
|
||||
private void initGame()
|
||||
{
|
||||
center = new Vector2(minigamePanel.Width / 2, minigamePanel.Height / 2);
|
||||
cannon = new Vector2(center);
|
||||
targ = new Vector2(center);
|
||||
targets = new List<Vector2>();
|
||||
playerRot = 0;
|
||||
cannonL = 30;
|
||||
power = 10;
|
||||
firing = false;
|
||||
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")
|
||||
{
|
||||
g.Clear(Color.Red);
|
||||
Drawing.DrawSizedString(g, "Lost.", 20, new PointF(minigamePanel.Width / 2, minigamePanel.Height / 2), Brushes.Black, true);
|
||||
buffer.Render();
|
||||
Thread.Sleep(500);
|
||||
_initGame();
|
||||
}
|
||||
else
|
||||
#if DEBUG
|
||||
throw;
|
||||
#else
|
||||
Console.WriteLine(ex.ToString());
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -1,93 +0,0 @@
|
|||
namespace lv3g_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 = 300;
|
||||
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 = 2;
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,467 +0,0 @@
|
|||
using Base;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace lv3g_t
|
||||
{
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
#region FRMBD
|
||||
uint minigameTime;
|
||||
uint minigamePrevTime;
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
_initGame();
|
||||
}
|
||||
|
||||
private void Button1_Click(object sender, EventArgs e) => Application.Exit();
|
||||
private void MinigameClockT_Tick(object sender, EventArgs e)
|
||||
{
|
||||
minigameTime++;
|
||||
minigamePanel.Invalidate();
|
||||
}
|
||||
|
||||
private void _initGame()
|
||||
{
|
||||
minigameTime = 0;
|
||||
minigamePrevTime = 0;
|
||||
initGame();
|
||||
}
|
||||
#endregion
|
||||
public static int[,] grid = new int[23, 10];
|
||||
public static int[,] droppedtetrominoeLocationGrid = new int[23, 10];
|
||||
public static bool isDropped = false;
|
||||
static Tetrominoe tet;
|
||||
static Tetrominoe nexttet;
|
||||
public static int linesCleared = 0, score = 0, level = 1;
|
||||
public static Random rnd;
|
||||
private void initGame()
|
||||
{
|
||||
rnd = new Random();
|
||||
grid = new int[23, 10];
|
||||
droppedtetrominoeLocationGrid = new int[23, 10];
|
||||
isDropped = false;
|
||||
linesCleared = 0;
|
||||
score = 0;
|
||||
level = 1;
|
||||
nexttet = new Tetrominoe();
|
||||
tet = nexttet;
|
||||
tet.Spawn();
|
||||
nexttet = new Tetrominoe();
|
||||
}
|
||||
|
||||
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);
|
||||
for (int y = 0; y < 23; ++y)
|
||||
{
|
||||
for (int x = 0; x < 10; x++)
|
||||
{
|
||||
if (grid[y, x] == 1 | droppedtetrominoeLocationGrid[y, x] == 1)
|
||||
g.FillRectangle(Brushes.White, new Rectangle(x * 10, y * 10, 10, 10));
|
||||
}
|
||||
g.DrawLine(new Pen(Color.DarkGray), new Point(0, (y + 1) * 10), new Point(10 * 10, (y + 1) * 10));
|
||||
}
|
||||
for (int x = 0; x < 10; x++)
|
||||
{
|
||||
g.DrawLine(new Pen(Color.DarkGray), new Point((x + 1) * 10, 0), new Point((x + 1) * 10, 23 * 10));
|
||||
}
|
||||
Drawing.DrawSizedString(g, "Level " + level, 10, new PointF(150, 10), Brushes.White);
|
||||
Drawing.DrawSizedString(g, "Score " + score, 10, new PointF(150, 30), Brushes.White);
|
||||
Drawing.DrawSizedString(g, "LinesCleared " + linesCleared, 10, new PointF(150, 50), Brushes.White);
|
||||
Random random = new Random();
|
||||
if (minigameTime != minigamePrevTime)
|
||||
{
|
||||
minigamePrevTime = minigameTime;
|
||||
tet.Drop();
|
||||
if (isDropped == true)
|
||||
{
|
||||
tet = nexttet;
|
||||
nexttet = new Tetrominoe();
|
||||
tet.Spawn();
|
||||
isDropped = false;
|
||||
score += 10;
|
||||
}
|
||||
int j; for (j = 0; j < 10; j++)
|
||||
{
|
||||
if (droppedtetrominoeLocationGrid[0, j] == 1)
|
||||
_initGame();
|
||||
}
|
||||
Input();
|
||||
ClearBlock();
|
||||
}
|
||||
buffer.Render();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
#if DEBUG
|
||||
throw;
|
||||
#else
|
||||
Console.WriteLine(ex.ToString());
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
private static void ClearBlock()
|
||||
{
|
||||
int combo = 0;
|
||||
for (int i = 0; i < 23; i++)
|
||||
{
|
||||
int j; for (j = 0; j < 10; j++)
|
||||
{
|
||||
if (droppedtetrominoeLocationGrid[i, j] == 0)
|
||||
break;
|
||||
}
|
||||
if (j == 10)
|
||||
{
|
||||
linesCleared++;
|
||||
combo++;
|
||||
Console.Beep(400, 200);
|
||||
for (j = 0; j < 10; j++)
|
||||
{
|
||||
droppedtetrominoeLocationGrid[i, j] = 0;
|
||||
}
|
||||
int[,] newdroppedtetrominoeLocationGrid = new int[23, 10];
|
||||
for (int k = 1; k < i; k++)
|
||||
{
|
||||
for (int l = 0; l < 10; l++)
|
||||
{
|
||||
newdroppedtetrominoeLocationGrid[k + 1, l] = droppedtetrominoeLocationGrid[k, l];
|
||||
}
|
||||
}
|
||||
for (int k = 1; k < i; k++)
|
||||
{
|
||||
for (int l = 0; l < 10; l++)
|
||||
{
|
||||
droppedtetrominoeLocationGrid[k, l] = 0;
|
||||
}
|
||||
}
|
||||
for (int k = 0; k < 23; k++)
|
||||
for (int l = 0; l < 10; l++)
|
||||
if (newdroppedtetrominoeLocationGrid[k, l] == 1)
|
||||
droppedtetrominoeLocationGrid[k, l] = 1;
|
||||
}
|
||||
}
|
||||
score += (int)Math.Round(Math.Sqrt(Math.Max(combo * 50 - 50, 0)) * 5);
|
||||
level = (int)Math.Round(Math.Sqrt(score * 0.01)) + 1;
|
||||
}
|
||||
private static void Input()
|
||||
{
|
||||
if (Base.Input.Left & !tet.isSomethingLeft())
|
||||
{
|
||||
for (int i = 0; i < 4; i++)
|
||||
tet.location[i][1] -= 1;
|
||||
tet.Update();
|
||||
}
|
||||
else if (Base.Input.Right & !tet.isSomethingRight())
|
||||
{
|
||||
for (int i = 0; i < 4; i++)
|
||||
tet.location[i][1] += 1;
|
||||
tet.Update();
|
||||
}
|
||||
if (Base.Input.Down)
|
||||
tet.Drop();
|
||||
if (Base.Input.Up)
|
||||
for (; tet.isSomethingBelow() != true;)
|
||||
tet.Drop();
|
||||
if (Base.Input.Action)
|
||||
{
|
||||
tet.Rotate();
|
||||
tet.Update();
|
||||
}
|
||||
}
|
||||
|
||||
public class Tetrominoe
|
||||
{
|
||||
public static int[,] I = new int[1, 4] { { 1, 1, 1, 1 } };
|
||||
|
||||
public static int[,] O = new int[2, 2] { { 1, 1 },
|
||||
{ 1, 1 } };
|
||||
|
||||
public static int[,] T = new int[2, 3] { { 0, 1, 0 },
|
||||
{ 1, 1, 1 } };
|
||||
|
||||
public static int[,] S = new int[2, 3] { { 0, 1, 1 },
|
||||
{ 1, 1, 0 } };
|
||||
|
||||
public static int[,] Z = new int[2, 3] { { 1, 1, 0 },
|
||||
{ 0, 1, 1 } };
|
||||
|
||||
public static int[,] J = new int[2, 3] { { 1, 0, 0 },
|
||||
{ 1, 1, 1 } };
|
||||
|
||||
public static int[,] L = new int[2, 3] { { 0, 0, 1 },
|
||||
{ 1, 1, 1 } };
|
||||
public static List<int[,]> tetrominoes = new List<int[,]>() { I, O, T, S, Z, J, L };
|
||||
private readonly int[,] shape;
|
||||
public List<int[]> location = new List<int[]>();
|
||||
public Tetrominoe()
|
||||
{
|
||||
shape = tetrominoes[rnd.Next(0, tetrominoes.Count)];
|
||||
}
|
||||
public void Spawn()
|
||||
{
|
||||
for (int i = 0; i < shape.GetLength(0); i++)
|
||||
{
|
||||
for (int j = 0; j < shape.GetLength(1); j++)
|
||||
{
|
||||
if (shape[i, j] == 1)
|
||||
{
|
||||
location.Add(new int[] { i, (10 - shape.GetLength(1)) / 2 + j });
|
||||
}
|
||||
}
|
||||
}
|
||||
Update();
|
||||
}
|
||||
public void Drop()
|
||||
{
|
||||
if (isSomethingBelow())
|
||||
{
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
droppedtetrominoeLocationGrid[location[i][0], location[i][1]] = 1;
|
||||
}
|
||||
isDropped = true;
|
||||
Console.Beep(800, 200);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int numCount = 0; numCount < 4; numCount++)
|
||||
{
|
||||
location[numCount][0] += 1;
|
||||
}
|
||||
Update();
|
||||
}
|
||||
}
|
||||
public void Rotate()
|
||||
{
|
||||
List<int[]> templocation = new List<int[]>();
|
||||
for (int i = 0; i < shape.GetLength(0); i++)
|
||||
{
|
||||
for (int j = 0; j < shape.GetLength(1); j++)
|
||||
{
|
||||
if (shape[i, j] == 1)
|
||||
{
|
||||
templocation.Add(new int[] { i, (10 - shape.GetLength(1)) / 2 + j });
|
||||
}
|
||||
}
|
||||
}
|
||||
if (shape == tetrominoes[0])
|
||||
{
|
||||
for (int i = 0; i < location.Count; i++)
|
||||
{
|
||||
templocation[i] = TransformMatrix(location[i], location[2]);
|
||||
}
|
||||
}
|
||||
else if (shape == tetrominoes[3])
|
||||
{
|
||||
for (int i = 0; i < location.Count; i++)
|
||||
{
|
||||
templocation[i] = TransformMatrix(location[i], location[3]);
|
||||
}
|
||||
}
|
||||
else if (shape == tetrominoes[1])
|
||||
return;
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < location.Count; i++)
|
||||
{
|
||||
templocation[i] = TransformMatrix(location[i], location[2]);
|
||||
}
|
||||
}
|
||||
for (int count = 0; isOverlayLeft(templocation) != false | isOverlayRight(templocation) != false | isOverlayBelow(templocation) != false; count++)
|
||||
{
|
||||
if (isOverlayLeft(templocation) == true)
|
||||
{
|
||||
for (int i = 0; i < location.Count; i++)
|
||||
{
|
||||
templocation[i][1] += 1;
|
||||
}
|
||||
}
|
||||
if (isOverlayRight(templocation) == true)
|
||||
{
|
||||
for (int i = 0; i < location.Count; i++)
|
||||
{
|
||||
templocation[i][1] -= 1;
|
||||
}
|
||||
}
|
||||
if (isOverlayBelow(templocation) == true)
|
||||
{
|
||||
for (int i = 0; i < location.Count; i++)
|
||||
{
|
||||
templocation[i][0] -= 1;
|
||||
}
|
||||
}
|
||||
if (count == 3)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
location = templocation;
|
||||
}
|
||||
public bool notFalse(bool? inp) => (inp ?? true);
|
||||
public int[] TransformMatrix(int[] coord, int[] axis) => new int[] { axis[0] - axis[1] + coord[1], axis[0] + axis[1] - coord[0] };
|
||||
public bool isSomethingBelow()
|
||||
{
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
if (location[i][0] + 1 >= 23)
|
||||
return true;
|
||||
if (location[i][0] + 1 < 23 & droppedtetrominoeLocationGrid[location[i][0] + 1, location[i][1]] == 1)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public bool? isOverlayBelow(List<int[]> location)
|
||||
{
|
||||
List<int> ycoords = new List<int>();
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
ycoords.Add(location[i][0]);
|
||||
if (location[i][0] >= 23)
|
||||
return true;
|
||||
if (location[i][0] < 0 | location[i][1] < 0 | location[i][1] > 9)
|
||||
return null;
|
||||
}
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
if (ycoords.Max() - ycoords.Min() == 3)
|
||||
{
|
||||
if ((ycoords.Max() == location[i][0] | ycoords.Max() - 1 == location[i][0]) & (droppedtetrominoeLocationGrid[location[i][0], location[i][1]] == 1))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((ycoords.Max() == location[i][0]) & (droppedtetrominoeLocationGrid[location[i][0], location[i][1]] == 1))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public bool isSomethingLeft()
|
||||
{
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
if (location[i][1] == 0)
|
||||
return true;
|
||||
else if (droppedtetrominoeLocationGrid[location[i][0], location[i][1] - 1] == 1)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public bool? isOverlayLeft(List<int[]> location)
|
||||
{
|
||||
List<int> xcoords = new List<int>();
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
xcoords.Add(location[i][1]);
|
||||
if (location[i][1] < 0)
|
||||
return true;
|
||||
if (location[i][1] > 9)
|
||||
return false;
|
||||
if (location[i][0] >= 23 | location[i][0] < 0)
|
||||
return null;
|
||||
}
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
if (xcoords.Max() - xcoords.Min() == 3)
|
||||
{
|
||||
if (xcoords.Min() == location[i][1] | xcoords.Min() + 1 == location[i][1])
|
||||
{
|
||||
if (droppedtetrominoeLocationGrid[location[i][0], location[i][1]] == 1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (xcoords.Min() == location[i][1])
|
||||
{
|
||||
if (droppedtetrominoeLocationGrid[location[i][0], location[i][1]] == 1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public bool isSomethingRight()
|
||||
{
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
if (location[i][1] == 9)
|
||||
return true;
|
||||
else if (droppedtetrominoeLocationGrid[location[i][0], location[i][1] + 1] == 1)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public bool? isOverlayRight(List<int[]> location)
|
||||
{
|
||||
List<int> xcoords = new List<int>();
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
xcoords.Add(location[i][1]);
|
||||
if (location[i][1] > 9)
|
||||
return true;
|
||||
if (location[i][1] < 0)
|
||||
return false;
|
||||
if (location[i][0] >= 23 | location[i][0] < 0)
|
||||
return null;
|
||||
}
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
if (xcoords.Max() - xcoords.Min() == 3)
|
||||
{
|
||||
if ((xcoords.Max() == location[i][1] | xcoords.Max() - 1 == location[i][1]) & droppedtetrominoeLocationGrid[location[i][0], location[i][1]] == 1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (xcoords.Max() == location[i][1] & droppedtetrominoeLocationGrid[location[i][0], location[i][1]] == 1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public void Update()
|
||||
{
|
||||
for (int i = 0; i < 23; i++)
|
||||
{
|
||||
for (int j = 0; j < 10; j++)
|
||||
{
|
||||
grid[i, j] = 0;
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
grid[location[i][0], location[i][1]] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace lv3g_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());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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 lv3g_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("lv3g_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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>
|
|
@ -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 lv3g_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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>
|
|
@ -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>{E6BF80E0-8848-4A6F-B114-FEC5055E1D9E}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>lv3g_t</RootNamespace>
|
||||
<AssemblyName>lv3g_t</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>
|
|
@ -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>
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,220 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using Base;
|
||||
|
||||
namespace lv4_t
|
||||
{
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
#region FRMBD
|
||||
uint minigameTime = 0;
|
||||
uint minigamePrevTime = 0;
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
_initGame();
|
||||
}
|
||||
|
||||
private void Button1_Click(object sender, EventArgs e) => Application.Exit();
|
||||
private void MinigameClockT_Tick(object sender, EventArgs e)
|
||||
{
|
||||
minigameTime++;
|
||||
minigamePanel.Invalidate();
|
||||
}
|
||||
|
||||
private void _initGame()
|
||||
{
|
||||
minigameTime = 0;
|
||||
minigamePrevTime = 0;
|
||||
initGame();
|
||||
}
|
||||
#endregion
|
||||
Random rnd;
|
||||
Vector2 player;
|
||||
Vector2 playerV;
|
||||
double lazor;
|
||||
double lazorTime;
|
||||
double speed;
|
||||
int jmpj;
|
||||
bool wasOnPlatform;
|
||||
List<Vector2> platforms;
|
||||
private void initGame()
|
||||
{
|
||||
rnd = new Random();
|
||||
playerV = new Vector2();
|
||||
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 - 100) + 50, i * (minigamePanel.Height / 5)));
|
||||
}
|
||||
player = new Vector2(platforms[platforms.Count / 2].X, -10);
|
||||
player.bounds = new Rectangle(-5, 0, minigamePanel.Width + 10, 0);
|
||||
player.bounds_wrap = true;
|
||||
lazor = player.X;
|
||||
lazorTime = 100;
|
||||
speed = 1;
|
||||
wasOnPlatform = true;
|
||||
}
|
||||
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());
|
||||
if (lazorTime >= 0 && lazorTime <= 80)
|
||||
{
|
||||
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, 80, 0, minigamePanel.Height, lazorTime)));
|
||||
}
|
||||
for (int i = 0; i < platforms.Count; i++)
|
||||
g.FillRectangle(new SolidBrush(Color.White), plat2rect(i));
|
||||
Random random = new Random();
|
||||
if (minigameTime != minigamePrevTime)
|
||||
{
|
||||
speed = Math.Min(minigameTime / 200d, 2) + 0.5;
|
||||
lazorTime -= Math.Min(minigameTime / 800, 2.5) + 0.5;
|
||||
minigamePrevTime = minigameTime;
|
||||
if (lazorTime <= 0)
|
||||
{
|
||||
g.FillRectangle(new SolidBrush(Color.Red), new RectangleF((float)lazor - 5, 0, 10, minigamePanel.Height));
|
||||
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++)
|
||||
{
|
||||
platforms[i].Y += speed;
|
||||
if (platforms[i].Y > minigamePanel.Height)
|
||||
{
|
||||
platforms[i].Y = 0;
|
||||
platforms[i].X = rnd.Next(minigamePanel.Width);
|
||||
}
|
||||
}
|
||||
double movementFactor;
|
||||
if (wasOnPlatform)
|
||||
{
|
||||
movementFactor = 2;
|
||||
playerV.X *= 0.7;
|
||||
playerV.Y = Math.Min(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;
|
||||
jmpj--;
|
||||
}
|
||||
}
|
||||
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 > minigamePanel.Height)
|
||||
throw new Exception("The VM was shut down to prevent damage to your Machine.", new Exception("0717750f-3508-4bc2-841e-f3b077c676fe"));
|
||||
wasOnPlatform = onPlatform;
|
||||
}
|
||||
buffer.Render();
|
||||
buffer.Dispose();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (ex.InnerException?.Message == "0717750f-3508-4bc2-841e-f3b077c676fe")
|
||||
{
|
||||
g.Clear(Color.Red);
|
||||
Drawing.DrawSizedString(g, "Lost.", 20, new PointF(minigamePanel.Width / 2, minigamePanel.Height / 2), Brushes.Black, true);
|
||||
buffer.Render();
|
||||
Thread.Sleep(500);
|
||||
_initGame();
|
||||
}
|
||||
else
|
||||
#if DEBUG
|
||||
throw;
|
||||
#else
|
||||
Console.WriteLine(ex.ToString());
|
||||
#endif
|
||||
}
|
||||
}
|
||||
bool onPlatform
|
||||
{
|
||||
get {
|
||||
for (int i = 0; i < platforms.Count; i++)
|
||||
{
|
||||
RectangleF rect = plat2rect(i);
|
||||
if (player.X < rect.X)
|
||||
{
|
||||
if (player.Y < rect.Y)
|
||||
platforms[i].Tag = (player - new PointF(rect.X, rect.Y)).magnitude;
|
||||
else if (player.Y > rect.Y + rect.Height)
|
||||
platforms[i].Tag = (player - new PointF(rect.X, rect.Y + rect.Height)).magnitude;
|
||||
else
|
||||
platforms[i].Tag = rect.X - player.X;
|
||||
}
|
||||
else if (player.X > rect.X + rect.Width)
|
||||
{
|
||||
if (player.Y < rect.Y)
|
||||
platforms[i].Tag = (player - new PointF(rect.X + rect.Width, rect.Y)).magnitude;
|
||||
else if (player.Y > rect.Y + rect.Height)
|
||||
platforms[i].Tag = (player - new PointF(rect.X + rect.Width, rect.Y + rect.Height)).magnitude;
|
||||
else
|
||||
platforms[i].Tag = player.X - rect.X + rect.Width;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (player.Y < rect.Y)
|
||||
platforms[i].Tag = rect.Y - player.Y;
|
||||
else if (player.Y > rect.Y + rect.Height)
|
||||
platforms[i].Tag = player.Y - (rect.Y + rect.Height);
|
||||
else
|
||||
platforms[i].Tag = 0d;
|
||||
}
|
||||
if (((double)platforms[i].Tag) <= 20 && RectangleF.Intersect(player2rect(), rect) != RectangleF.Empty && player.Y < platforms[i].Y - 8)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
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));
|
||||
}
|
||||
}
|
|
@ -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>
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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("lv4_t")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("lv4_t")]
|
||||
[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("22d618c0-f0a4-417f-a815-c760bf4376b2")]
|
||||
|
||||
// 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")]
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>
|
|
@ -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>
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,77 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using Base;
|
||||
|
||||
namespace lv_tst_base
|
||||
{
|
||||
public partial class MainForm : Form
|
||||
{
|
||||
#region FRMBD
|
||||
uint minigameTime;
|
||||
uint minigamePrevTime;
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
_initGame();
|
||||
}
|
||||
|
||||
private void Button1_Click(object sender, EventArgs e) => Application.Exit();
|
||||
private void MinigameClockT_Tick(object sender, EventArgs e)
|
||||
{
|
||||
minigameTime++;
|
||||
minigamePanel.Invalidate();
|
||||
}
|
||||
|
||||
private void _initGame()
|
||||
{
|
||||
minigameTime = 0;
|
||||
minigamePrevTime = 0;
|
||||
initGame();
|
||||
}
|
||||
#endregion
|
||||
private void initGame()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
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")
|
||||
{
|
||||
g.Clear(Color.Red);
|
||||
Drawing.DrawSizedString(g, "Lost.", 20, new PointF(minigamePanel.Width / 2, minigamePanel.Height / 2), Brushes.Black, true);
|
||||
buffer.Render();
|
||||
Thread.Sleep(500);
|
||||
_initGame();
|
||||
}
|
||||
else
|
||||
#if DEBUG
|
||||
throw;
|
||||
#else
|
||||
Console.WriteLine(ex.ToString());
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue