2019-07-27 20:57:23 +02:00
using Base ;
using System ;
using System.Collections.Generic ;
using System.Drawing ;
using System.Globalization ;
using System.IO ;
using System.Linq ;
using System.Text ;
using System.Threading.Tasks ;
using System.Windows.Forms ;
namespace LaptopSimulator2015.Levels
{
class Lvl2 : Level
{
2019-09-15 21:31:36 +02:00
public string name
2019-07-27 20:57:23 +02:00
{
get {
switch ( CultureInfo . CurrentUICulture . Name . Split ( '-' ) [ 0 ] )
{
case "de" :
return "Pentium 2 Download (gratis) (Kein Virus!)" ;
default :
return "Pentium 2 free download (No virus!)" ;
}
}
}
public string installerText
{
get {
switch ( CultureInfo . CurrentUICulture . Name . Split ( '-' ) [ 0 ] )
{
case "de" :
return "Vielen Dank für diesen garantiert sicheren Download.\r\nBitte klicken sie \"Fortfahren\" um mit der Installation ihres Pentium-Prozessors fortzufahren." ;
default :
return "Thank you for downloading this very secure Installer.\r\nPlease click \"Continue\" to continue the Installation of your Pentium 2." ;
}
}
}
static Image _installer ;
2019-09-15 21:31:36 +02:00
public Image icon
2019-07-27 20:57:23 +02:00
{
get {
if ( _installer = = null )
{
string __installer = "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
Stream s = new MemoryStream ( Convert . FromBase64String ( __installer ) ) ;
_installer = Image . FromStream ( s ) ;
s . Close ( ) ;
}
return _installer ;
}
}
2019-09-19 18:51:31 +02:00
public int availableAfter = > 2 ;
2019-07-27 20:57:23 +02:00
public int gameClock = > 17 ;
public Panel desktopIcon { get ; set ; }
public int installerProgressSteps = > 500 ;
2019-09-26 22:24:45 +02:00
public Color backColor = > Color . Black ;
2019-09-29 11:23:07 +02:00
public string [ ] credits = > new string [ ] { "Level2 Icon made by Intel" } ;
2019-10-05 17:49:56 +02:00
public bool isLowQuality = > false ;
2019-09-15 16:21:56 +02:00
List < Vector2 > enemies ;
Vector2 player ;
int lives ;
2019-07-27 20:57:23 +02:00
2019-09-26 20:44:45 +02:00
public void gameTick ( GraphicsWrapper g , Panel minigamePanel , Timer minigameTimer , uint minigameTime )
2019-07-27 20:57:23 +02:00
{
try
{
2019-08-01 22:42:35 +02:00
Random random = new Random ( ) ;
2019-09-26 20:44:45 +02:00
if ( random . Next ( 0 , 100000 ) < minigameTime + 1300 )
2019-07-27 20:57:23 +02:00
{
2019-09-26 20:44:45 +02:00
int tst = random . Next ( minigamePanel . Width * 2 + ( minigamePanel . Height - 10 ) * 2 ) ;
if ( tst < = minigamePanel . Width )
enemies . Add ( new Vector2 ( tst , 0 ) ) ;
else if ( tst < = minigamePanel . Width * 2 )
enemies . Add ( new Vector2 ( tst - minigamePanel . Width , minigamePanel . Height - 10 ) ) ;
else if ( tst < = minigamePanel . Width * 2 + minigamePanel . Height - 10 )
enemies . Add ( new Vector2 ( 0 , tst - minigamePanel . Width * 2 ) ) ;
else
enemies . Add ( new Vector2 ( 0 , tst - minigamePanel . Width * 2 - minigamePanel . Height + 10 ) ) ;
}
if ( Input . Up )
2019-09-26 22:24:45 +02:00
player . Y + = 5 ;
2019-09-26 20:44:45 +02:00
if ( Input . Left )
player . X - = 5 ;
if ( Input . Down )
2019-09-26 22:24:45 +02:00
player . Y - = 5 ;
2019-09-26 20:44:45 +02:00
if ( Input . Right )
player . X + = 5 ;
List < Vector2 > enemiesToRemove = new List < Vector2 > ( ) ;
for ( int i = 0 ; i < enemies . Count ; i + + )
{
enemies [ i ] . moveTowards ( player , Math . Max ( 6 , Math . Sqrt ( minigameTime / 100 + 1 ) ) ) ;
for ( int j = 0 ; j < enemies . Count ; j + + )
2019-07-27 20:57:23 +02:00
{
2019-09-26 20:44:45 +02:00
if ( i ! = j & & enemies [ i ] . distanceFromSquared ( enemies [ j ] ) < 25 & & ! enemiesToRemove . Contains ( enemies [ j ] ) )
enemiesToRemove . Add ( enemies [ i ] ) ;
2019-07-27 20:57:23 +02:00
}
2019-09-26 20:44:45 +02:00
if ( player . distanceFromSquared ( enemies [ i ] ) < 100 & & ! enemiesToRemove . Contains ( enemies [ i ] ) )
2019-07-27 20:57:23 +02:00
{
2019-09-26 20:44:45 +02:00
lives - - ;
enemiesToRemove . Add ( enemies [ i ] ) ;
if ( lives < = 0 )
throw new Exception ( "The VM was shut down to prevent damage to your Machine." , new Exception ( "0717750f-3508-4bc2-841e-f3b077c676fe" ) ) ;
2019-07-27 20:57:23 +02:00
}
}
2019-09-26 20:44:45 +02:00
enemies = enemies . Except ( enemiesToRemove . Distinct ( ) ) . Distinct ( ) . ToList ( ) ;
2019-07-27 20:57:23 +02:00
}
2019-09-14 14:00:28 +02:00
catch ( Exception ex ) { if ( ex . InnerException ? . Message = = "0717750f-3508-4bc2-841e-f3b077c676fe" ) Misc . closeGameWindow . Invoke ( ) ; else Console . WriteLine ( ex . ToString ( ) ) ; }
2019-07-27 20:57:23 +02:00
}
2019-09-26 20:44:45 +02:00
public void initGame ( Panel minigamePanel , Timer minigameTimer )
2019-07-27 20:57:23 +02:00
{
2019-09-15 16:21:56 +02:00
enemies = new List < Vector2 > ( ) ;
2019-07-27 20:57:23 +02:00
player = new Vector2 ( minigamePanel . Width / 2 , minigamePanel . Height / 2 ) ;
player . bounds_wrap = true ;
2019-09-26 22:24:45 +02:00
player . bounds = new Rectangle ( - 5 , - 5 , minigamePanel . Width + 10 , minigamePanel . Height + 10 ) ;
2019-07-27 20:57:23 +02:00
lives = 3 ;
}
2019-09-26 20:44:45 +02:00
public void draw ( GraphicsWrapper g , Panel minigamePanel , Timer minigameTimer , uint minigameTime )
{
for ( int i = 0 ; i < enemies . Count ; i + + )
2019-09-26 22:24:45 +02:00
g . DrawRectangle ( new RectangleF ( enemies [ i ] . toPointF ( ) , new SizeF ( 10 , 10 ) ) , Color . Red ) ;
g . DrawRectangle ( new RectangleF ( player . toPointF ( ) , new SizeF ( 10 , 10 ) ) , Color . Green ) ;
g . DrawSizedString ( lives . ToString ( ) , 7 , player . toPointF ( ) , Brushes . White , true , true ) ;
2019-09-26 20:44:45 +02:00
}
2019-07-27 20:57:23 +02:00
}
}