2019-07-23 14:54:05 +02:00
using Base ;
using System ;
using System.Collections.Generic ;
using System.Drawing ;
using System.Drawing.Drawing2D ;
using System.IO ;
using System.Linq ;
using System.Windows.Forms ;
using System.Globalization ;
namespace LaptopSimulator2015.Levels
{
class Lvl1 : Level
{
static Image _installer ;
2019-09-15 21:31:36 +02:00
public string name
2019-07-23 14:54:05 +02:00
{
get {
switch ( CultureInfo . CurrentUICulture . Name . Split ( '-' ) [ 0 ] )
{
case "de" :
return "Speichererweiterer 2.0" ;
default :
return "RAM Installer 2.0" ;
}
}
}
public string installerText
{
get {
switch ( CultureInfo . CurrentUICulture . Name . Split ( '-' ) [ 0 ] )
{
case "de" :
return "Vielen Dank dass sie sich entschieden haben, mit unserem super sicherem Speichererweiterer ihren RAM zu erweitern.\r\n\r\nIhr Computer wird es ihnen danken!" ;
default :
return "Thank you for deciding to download RAM Installer 2.0 from our secure download servers. Please wait a second while we install your RAM.\r\n\r\nYour Computer is about to run a whole lot smoother!" ;
}
}
}
2019-09-15 21:31:36 +02:00
public Image icon
2019-07-23 14:54:05 +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 = > 1 ;
2019-07-23 14:54:05 +02:00
public int gameClock = > 17 ;
public Panel desktopIcon { get ; set ; }
2019-07-27 20:57:23 +02:00
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 [ ] { "Level1 Icon made by Oliver Scholtz from www.iconfinder.com" } ;
2019-10-05 17:49:56 +02:00
public bool isLowQuality = > false ;
2019-09-29 11:23:07 +02:00
2019-09-15 16:21:56 +02:00
List < Vector2 > enemies ;
List < Vector2 > bullets ;
Vector2 player ;
double speedMod ;
bool enemiesCanShoot ;
2019-07-23 14:54:05 +02:00
2019-09-26 20:44:45 +02:00
public void gameTick ( GraphicsWrapper g , Panel minigamePanel , Timer minigameTimer , uint minigameTime )
2019-07-23 14:54:05 +02:00
{
try
{
2019-09-26 20:44:45 +02:00
Random random = new Random ( ) ;
if ( random . Next ( 0 , 100000 ) < minigameTime + 1300 )
enemies . Add ( new Vector2 ( minigamePanel . Width , random . Next ( minigamePanel . Height - 10 ) ) ) ;
2019-09-15 16:21:56 +02:00
for ( int i = 0 ; i < enemies . Count ; i + + )
2019-07-23 14:54:05 +02:00
{
2019-09-26 20:44:45 +02:00
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" ) ) ;
}
2019-07-23 14:54:05 +02:00
}
2019-09-26 20:44:45 +02:00
enemiesCanShoot = enemiesCanShoot | ! Input . Action ;
List < Vector2 > enemiesToRemove = new List < Vector2 > ( ) ;
List < Vector2 > bulletsToRemove = new List < Vector2 > ( ) ;
2019-09-15 16:21:56 +02:00
for ( int i = 0 ; i < bullets . Count ; i + + )
2019-07-23 14:54:05 +02:00
{
2019-09-26 20:44:45 +02:00
bullets [ i ] . X + = 4 ;
for ( int j = 0 ; j < enemies . Count ; j + + )
2019-07-23 14:54:05 +02:00
{
2019-09-26 22:24:45 +02:00
if ( bullets [ i ] . distanceFromSquared ( enemies [ j ] ) < 56.25f )
2019-07-23 14:54:05 +02:00
{
2019-09-26 20:44:45 +02:00
enemiesToRemove . Add ( enemies [ j ] ) ;
2019-09-15 16:21:56 +02:00
bulletsToRemove . Add ( bullets [ i ] ) ;
2019-09-26 20:44:45 +02:00
}
2019-07-23 14:54:05 +02:00
}
2019-09-26 20:44:45 +02:00
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 )
2019-09-26 22:24:45 +02:00
player . Y + = speedMod ;
2019-09-26 20:44:45 +02:00
if ( Input . Left )
player . X - = speedMod ;
if ( Input . Down )
2019-09-26 22:24:45 +02:00
player . Y - = speedMod ;
2019-09-26 20:44:45 +02:00
if ( Input . Right )
player . X + = speedMod ;
if ( Input . Action & enemiesCanShoot )
{
2019-09-26 22:24:45 +02:00
bullets . Add ( new Vector2 ( player ) ) ;
2019-09-26 20:44:45 +02:00
enemiesCanShoot = false ;
speedMod - - ;
2019-07-23 14:54:05 +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-23 14:54:05 +02:00
}
2019-09-26 20:44:45 +02:00
public void initGame ( Panel minigamePanel , Timer minigameTimer )
2019-07-23 14:54:05 +02:00
{
2019-09-15 16:21:56 +02:00
enemies = new List < Vector2 > ( ) ;
bullets = new List < Vector2 > ( ) ;
2019-08-01 22:42:35 +02:00
speedMod = 5 ;
2019-09-15 16:21:56 +02:00
enemiesCanShoot = true ;
player = new Vector2 ( minigamePanel . Width / 4 , 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-23 14:54:05 +02:00
}
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 ) ;
2019-09-26 20:44:45 +02:00
for ( int i = 0 ; i < bullets . Count ; i + + )
2019-09-26 22:24:45 +02:00
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 ) ;
2019-09-26 20:44:45 +02:00
}
2019-07-23 14:54:05 +02:00
}
}