Changeset 5424 for 2014/27


Ignore:
Timestamp:
2014-07-04 11:37:11 (5 years ago)
Author:
mijoliim
Message:
 
Location:
2014/27/MikkoL/LM2/LM2
Files:
24 added
5 edited

Legend:

Unmodified
Added
Removed
  • 2014/27/MikkoL/LM2/LM2/LM2/LM2.cs

    r5376 r5424  
    3434    } 
    3535} 
     36class boss : PhysicsObject 
     37{ 
     38    public IntMeter health = new IntMeter(4000, 0, 4000); 
     39    public IntMeter ScoreValue = new IntMeter(100, 0, int.MaxValue); 
     40    public bool canShoot = false; 
     41    public double explosion_scale = 100; 
     42 
     43    public boss(double width, double height) 
     44        : base(width, height) 
     45    { 
     46        health.LowerLimit += delegate { this.Destroy(); }; 
     47    } 
     48} 
    3649 
    3750class bullet : PhysicsObject 
     
    5770public class LM2 : PhysicsGame 
    5871{ 
    59     player player = new player(5, 5); 
     72    player player = new player(7, 8); 
    6073    PhysicsObject playership = new PhysicsObject(47, 46); 
    6174    double player_speed = 425; 
     
    6679    Image player_ship_01 = LoadImage("player_ship_01"); 
    6780    Image player_ship_02 = LoadImage("player_ship_02"); 
     81    Image hitbox = LoadImage("hitbox"); 
    6882    //Bullets 
    6983    Image bullet_green_laser01 = LoadImage("bullet_green_laser01"); 
     
    7589    Image bullet_enemy_01 = LoadImage("bullet_enemy_01"); 
    7690    Image bullet_enemy_02 = LoadImage("bullet_enemy_02"); 
     91    Image bullet_enemy_03 = LoadImage("bullet_enemy_03"); 
     92    Image bullet_enemy_04 = LoadImage("bullet_enemy_04"); 
     93    Image bullet_enemy_05 = LoadImage("bullet_enemy_05"); 
     94    Image bullet_enemy_06 = LoadImage("bullet_enemy_06"); 
    7795    //Enemies 
    7896    Image enemy_ship_01 = LoadImage("enemy_ship_01"); 
     
    83101    Image enemy_ship_03 = LoadImage("enemy_ship_03"); 
    84102    Image enemy_ship_04 = LoadImage("enemy_ship_04"); 
     103    Image enemy_ship_05 = LoadImage("enemy_ship_05"); 
     104    //Bosses 
     105    Image boss_ship_01 = LoadImage("boss_ship_01"); 
    85106    //Powerups 
    86107    Image powerup_damage = LoadImage("powerup_damage"); 
    87108    Image powerup_spread = LoadImage("powerup_spread"); 
     109    //Borders 
     110    Image border_top = LoadImage("border_bottom"); 
     111    Image border_bottom = LoadImage("border_top"); 
    88112    //Backgrounds 
    89113    Image space_bg = LoadImage("space_bg"); 
     114    Image earth = LoadImage("earth"); 
    90115    //Explosion 
    91116    private Animation explosion_anim; 
     117    //GUI 
     118    Image title = LoadImage("title_screen"); 
     119    Image press_start_img = LoadImage("Press_Start"); 
     120    Image stage_1_clear = LoadImage("stage_1_clear"); 
     121    Image stage_1_start = LoadImage("stage_1_start"); 
     122    Image stage_2_clear = LoadImage("stage_2_clear"); 
     123    Image stage_2_start = LoadImage("stage_2_start"); 
    92124 
    93125    //SFX 
     
    97129    SoundEffect powerupsfx = LoadSoundEffect("powerup"); 
    98130    SoundEffect explosionsfx = LoadSoundEffect("explosion"); 
     131    SoundEffect enemy_shootsfx = LoadSoundEffect("enemy_shoot"); 
    99132 
    100133    //Weapon 
     
    110143    Timer wpn_timer = new Timer(); 
    111144 
     145    bool s001 = false; 
    112146 
    113147    public override void Begin() 
     
    115149        //Load SFX 
    116150        hurtsfx.Play(); 
    117         explosionsfx.Play(); 
    118         hitsfx.Play(); 
    119         shootsfx.Play(); 
    120         powerupsfx.Play(); 
     151        //explosionsfx.Play(); 
     152        //hitsfx.Play(); 
     153        //shootsfx.Play(); 
     154        //powerupsfx.Play(); 
     155        //enemy_shootsfx.Play(); 
     156 
    121157        //Load Anim 
    122158        explosion_anim = LoadAnimation("explosionanim"); 
     159        MediaPlayer.Play("Starmap"); 
     160        MediaPlayer.IsRepeating = true; 
    123161 
    124162        SetWindowSize(1280, 800, false); 
    125163        SmoothTextures = false; 
    126         Level.Size = new Vector(1280, 800); 
    127  
    128         Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    129  
    130         CreateLevel("level_test"); 
    131     } 
    132  
    133     //TODO INTRO 
    134     void introScene() 
    135     { 
    136         introBorders(); 
    137  
    138  
    139     } 
    140     void introBorders() 
    141     { 
    142         PhysicsObject introBorder = new PhysicsObject(Screen.WidthSafe, Screen.HeightSafe / 4); 
    143         introBorder.Shape = Shape.Rectangle; 
    144         introBorder.Color = Color.Black; 
    145         introBorder.IgnoresCollisionResponse = true; 
    146         introBorder.IgnoresPhysicsLogics = true; 
    147         introBorder.Position = new Vector(introBorder.Position.X, Screen.TopSafe - introBorder.Height / 2); 
    148         Add(introBorder); 
    149  
    150         PhysicsObject introBorder2 = new PhysicsObject(Screen.WidthSafe, Screen.HeightSafe / 4); 
    151         introBorder2.Shape = Shape.Rectangle; 
    152         introBorder2.Color = Color.Black; 
    153         introBorder2.IgnoresCollisionResponse = true; 
    154         introBorder2.IgnoresPhysicsLogics = true; 
    155         introBorder2.Position = new Vector(introBorder2.Position.X, Screen.BottomSafe + introBorder2.Height / 2); 
    156         Add(introBorder2); 
     164        //Level.Size = new Vector(1280, 800); 
     165 
     166        GameObject titlescreen = new GameObject(1280, 801); 
     167        titlescreen.Position = Screen.Center; 
     168        titlescreen.Image = title; 
     169        Add(titlescreen); 
     170 
     171        GameObject press_start = new GameObject(215, 59); 
     172        press_start.Position = Screen.Center + new Vector(0, 90); 
     173        press_start.Image = press_start_img; 
     174        Add(press_start); 
     175 
     176        Timer start = new Timer(); 
     177        start.Interval = 0.7; 
     178        start.Timeout += delegate 
     179        { 
     180            if (press_start.IsVisible) press_start.IsVisible = false; 
     181            else press_start.IsVisible = true; 
     182        }; 
     183        start.Start(); 
     184 
     185        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, null); 
     186        ControllerOne.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, null); 
     187        ControllerOne.Listen(Button.Start, ButtonState.Pressed, Start, null); 
     188 
     189 
     190    } 
     191 
     192    void Start() 
     193    { 
     194        ClearAll(); 
     195        MediaPlayer.Stop(); 
     196 
     197        CreateLevel("level_01"); 
     198 
     199        GameObject stage_01_start = new GameObject(405, 39); 
     200        stage_01_start.Position = cntr; 
     201        stage_01_start.Image = stage_1_start; 
     202        Add(stage_01_start); 
     203 
     204        double i = 0; 
     205        Timer start = new Timer(); 
     206        start.Interval = 0.1; 
     207        start.Timeout += delegate 
     208        { 
     209            i++; 
     210            if (i >= 15) stage_01_start.Destroy(); 
     211            if (stage_01_start.IsVisible) stage_01_start.IsVisible = false; 
     212            else stage_01_start.IsVisible = true; 
     213        }; 
     214        start.Start(15); 
     215        Pause(); 
     216        ControllerOne.Listen(Button.Start, ButtonState.Pressed, start_01, null); 
     217         
     218 
     219        setwpn_timer(); 
     220    } 
     221    void start_01() 
     222    { 
     223        if (!s001) 
     224        { 
     225            s001 = true; 
     226            Pause(); 
     227            MediaPlayer.Play("Eladard"); 
     228        } 
    157229    } 
    158230 
    159231    //Stage creation 
    160232    void CreateLevel(string level) 
    161     { 
    162         //Level.Background.CreateStars(); 
    163         
     233    {        
    164234        TileMap lvl = TileMap.FromLevelAsset(level); 
    165235        lvl.SetTileMethod('x', border); 
     236        lvl.SetTileMethod('y', bordertop); 
     237        lvl.SetTileMethod('z', borderbottom); 
    166238        lvl.SetTileMethod('%', frontBorder); 
    167239        lvl.SetTileMethod('&', backBorder); 
     
    175247        lvl.SetTileMethod('4', enemy_ship_4_top); 
    176248        lvl.SetTileMethod('$', enemy_ship_4_bottom); 
     249        lvl.SetTileMethod('5', enemy_ship_5); 
     250        lvl.SetTileMethod('B', boss_ship_1); 
    177251        lvl.Execute(35, 35); 
    178252 
     
    180254        GameObject bg = new GameObject(1280, 800); 
    181255        bg.Position = cntr; 
    182         bg.Image = space_bg; 
    183         bg.MoveTo(cntr - new Vector(1280, 0), 1000); 
     256        bg.Image = earth; 
     257        bg.MoveTo(cntr - new Vector(1280, 0), 900); 
    184258 
    185259        GameObject bg2 = new GameObject(1280, 800); 
    186260        bg2.Position = cntr+new Vector(1280,0); 
    187         bg2.Image = space_bg; 
    188         bg2.MoveTo(cntr,1000); 
     261        bg2.Image = earth; 
     262        bg2.MoveTo(cntr, 900); 
    189263 
    190264        Timer scroll = new Timer(); 
     
    195269            { 
    196270                bg.Position = cntr; 
    197                 bg.MoveTo(cntr - new Vector(1280, 0), 1000); 
     271                bg.MoveTo(cntr - new Vector(1280, 0), 900); 
    198272            }; 
    199273            if (bg2.Position.X <= cntr.X + 1) 
    200274            { 
    201275                bg2.Position = cntr+new Vector(1280,0); 
    202                 bg2.MoveTo(cntr, 1000); 
     276                bg2.MoveTo(cntr, 900); 
    203277            }; 
    204278        }; 
     
    210284        AddControls(); 
    211285        AddHealthbar(); 
    212         setwpn_timer(); 
    213286 
    214287        Camera.Position = player.Position; 
     
    224297        border2.KineticFriction = 0; 
    225298        border2.StaticFriction = 0; 
    226         border2.Color = Color.Lighter(Color.Black, 20); 
     299        border2.Color = Color.Black; 
    227300        border2.Tag = "border"; 
     301        Add(border2, 1); 
     302    } 
     303    void bordertop(Vector position, double width, double height) 
     304    { 
     305        PhysicsObject border2 = PhysicsObject.CreateStaticObject(width * 1.5, height); 
     306        border2.Position = position; 
     307        border2.Restitution = 0; 
     308        border2.KineticFriction = 0; 
     309        border2.StaticFriction = 0; 
     310        border2.Color = Color.Black; 
     311        border2.Tag = "border"; 
     312        border2.Image = border_top; 
     313        Add(border2, 1); 
     314    } 
     315    void borderbottom(Vector position, double width, double height) 
     316    { 
     317        PhysicsObject border2 = PhysicsObject.CreateStaticObject(width * 1.5, height); 
     318        border2.Position = position; 
     319        border2.Restitution = 0; 
     320        border2.KineticFriction = 0; 
     321        border2.StaticFriction = 0; 
     322        border2.Color = Color.Black; 
     323        border2.Tag = "border"; 
     324        border2.Image = border_bottom; 
    228325        Add(border2, 1); 
    229326    } 
     
    257354    { 
    258355        player.health.Value = player.health.Value - player.health.Value; 
     356        hurtsfx.Play(); 
     357        explosionsfx.Play(); 
     358        explosion_animation2(target); 
     359        playership.Destroy(); 
     360 
    259361    } 
    260362    void frontBorderCollisionEnemy(PhysicsObject border, enemy enemy) 
    261363    { 
    262364        enemy.canShoot = true; 
     365 
    263366    } 
    264367    void backBorderCollision(PhysicsObject border, PhysicsObject target) 
    265368    { 
    266369        player.health.Value = player.health.Value - player.health.Value; 
     370        hurtsfx.Play(); 
     371        explosionsfx.Play(); 
     372        explosion_animation2(target); 
     373        playership.Destroy(); 
    267374    } 
    268375    void backBorderCollisionEnemy(PhysicsObject border, enemy enemy) 
    269376    { 
    270377        enemy.Destroy(); 
    271     } 
    272  
    273     void testblock(Vector pos, double width, double height) 
    274     { 
    275         PhysicsObject b = new PhysicsObject(width, height); 
    276         b.Position = pos; 
    277         b.Shape = Shape.Rectangle; 
    278         b.Color = Color.Blue; 
    279         Add(b); 
    280378    } 
    281379 
     
    286384 
    287385        player.Shape = Shape.Circle; 
    288         player.Color = Color.Red; 
    289         player.MomentOfInertia = 10; 
     386        player.Color = Color.Black; 
    290387        player.Restitution = 0; 
     388        player.CanRotate = false; 
    291389        player.Mass = int.MaxValue; 
    292         player.CanRotate = true; 
    293390        player.KineticFriction = 0; 
    294391        player.StaticFriction = 0; 
     392        player.Image = hitbox; 
    295393        player.IgnoresGravity = true; 
    296394        player.Position = pos; 
     
    299397 
    300398        playership.Image = player_ship_02; 
     399        playership.IsVisible = true; 
    301400        playership.IgnoresCollisionResponse = true; 
    302401        playership.IgnoresPhysicsLogics = true; 
     
    304403        playership.CanRotate = false; 
    305404        playership.Tag = "playership"; 
    306         //playership.Parent = player; 
    307405        playership.Position = player.Position; 
    308406 
     
    316414 
    317415        playership.Brain = playershipbrain; 
     416 
    318417        Add(playership, -1); 
    319418    } 
     
    332431 
    333432    { 
    334         ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, null); 
     433        ControllerOne.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, null); 
    335434        ControllerOne.ListenAnalog(AnalogControl.LeftStick, -0.1, move, null); 
    336435 
    337436        ControllerOne.Listen(Button.B, ButtonState.Pressed, shoot, null); 
    338437        ControllerOne.Listen(Button.B, ButtonState.Released, stopShoot, null); 
     438 
     439        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, null); 
    339440 
    340441        //cheat 
    341442        Keyboard.Listen(Key.U, ButtonState.Pressed, cheat_upgrade, null); 
    342443        Keyboard.Listen(Key.I, ButtonState.Pressed, cheat_damage, null); 
     444        Keyboard.Listen(Key.H, ButtonState.Pressed, cheat_fullhp, null); 
     445 
    343446    } 
    344447    void move(AnalogState speed) 
     
    354457    { 
    355458        wpn_damageRatio.Value++; 
     459    } 
     460    void cheat_fullhp() 
     461    { 
     462        player.health.Value = 100; 
     463        //MessageDisplay.Te 
    356464    } 
    357465 
     
    514622        projectile.MaximumLifetime = TimeSpan.FromSeconds(1.57); 
    515623 
    516         //AddCollisionHandler(projectile, "border", destroy); 
    517624        AddCollisionHandler<bullet, frontborder>(projectile, destroy); 
    518625        AddCollisionHandler<bullet, enemy>(projectile, damageEnemy); 
    519626 
    520627        Add(projectile, 0); 
    521         projectile.Hit(vel / 1.5); 
     628        projectile.Hit(vel/1.2); 
    522629        projectile.Angle = projectile.Velocity.Angle; 
    523630    } 
     
    629736        enemyship.IgnoresCollisionResponse = true; 
    630737        enemyship.CollisionIgnoreGroup = 3; 
    631         enemyship.health.MaxValue = 12; 
     738        enemyship.health.MaxValue = 25; 
    632739        enemyship.Image = enemy_ship_02; 
    633740 
     
    650757            UnlimitedAngle angle2; 
    651758 
     759            Timer playsfx = new Timer(); 
     760            playsfx.Interval = 0.05; 
     761            playsfx.Timeout += delegate 
     762            { 
     763                    enemy_shootsfx.Play(); 
     764            }; 
     765 
    652766            Timer shoot = new Timer(); 
    653767            shoot.Interval = 0.01; 
    654768            shoot.Timeout += delegate 
    655769            { 
    656                 if (c >= 200) shoot.Stop(); 
     770                if (c >= 200){ 
     771                    shoot.Stop();  
     772                playsfx.Stop(); 
     773                } 
    657774                else if (c != 200) 
    658775                { 
     
    668785                            ); 
    669786                    } 
    670                     else shoot.Stop(); 
     787                    else 
     788                    { 
     789                        shoot.Stop(); 
     790                        playsfx.Stop(); 
     791                    } 
    671792                }; 
    672793 
     
    677798            wait.Timeout += delegate 
    678799            { 
    679                 if (!enemyship.IsDestroyed) shoot.Start(); 
     800                if (!enemyship.IsDestroyed) 
     801                { 
     802                    shoot.Start(); 
     803                    playsfx.Start(); 
     804                } 
    680805                else wait.Stop(); 
    681806            }; 
     
    690815        enemyship.IgnoresCollisionResponse = true; 
    691816        enemyship.CollisionIgnoreGroup = 3; 
    692         enemyship.health.MaxValue = 40; 
     817        enemyship.health.MaxValue = 50; 
    693818        enemyship.Image = enemy_ship_03; 
    694819        enemyship.explosion_scale = 75; 
     
    710835            int e = 0; 
    711836 
     837            Timer playsfx = new Timer(); 
     838            playsfx.Interval = 0.06; 
     839            playsfx.Timeout += delegate 
     840            { 
     841                enemy_shootsfx.Play(); 
     842            }; 
     843 
    712844            Timer wait = new Timer(); 
    713845 
     
    718850                if (e >= 4) 
    719851                { 
     852 
    720853                    enemy_shoot.Stop(); 
     854                    playsfx.Stop(); 
    721855                    enemyship.Velocity = stagespeed / 3; 
    722856                    enemyship.LifetimeLeft = TimeSpan.FromSeconds(6); 
     
    726860                { 
    727861                    enemy_shoot.Stop(); 
     862                    playsfx.Stop(); 
    728863                    wait.Start(1); 
    729864                    e++; 
    730865                }; 
    731                 if (enemyship.IsDestroyed) enemy_shoot.Stop(); 
    732                 if (e != 4) enemy_shoot_1(enemyship.Position + new Vector(RandomGen.NextDouble(-30, 30), RandomGen.NextDouble(-30, 30))); 
     866                if (enemyship.IsDestroyed) 
     867                { 
     868                    enemy_shoot.Stop(); 
     869                    playsfx.Stop(); 
     870                } 
     871                if (e != 4) 
     872                { 
     873                    enemy_shoot_1(enemyship.Position + new Vector(RandomGen.NextDouble(-30, 30), RandomGen.NextDouble(-30, 30))); 
     874                } 
    733875            }; 
    734876 
     
    739881                i = 0; 
    740882                enemy_shoot.Start(50); 
     883                playsfx.Start(); 
    741884            }; 
    742885 
     
    747890                if (!enemyship.IsDestroyed) 
    748891                { 
     892                    playsfx.Start(); 
    749893                    enemy_shoot.Start(50); 
    750894                    enemyship.Velocity = new Vector(0,0); 
     
    845989        }; 
    846990    } 
    847  
     991    void enemy_ship_5(Vector pos, double width, double height) 
     992    { 
     993        enemy enemyship = new enemy(62, 49); 
     994        enemyship.Shape = Shape.Circle; 
     995        enemyship.Position = pos; 
     996        enemyship.IgnoresCollisionResponse = true; 
     997        enemyship.CollisionIgnoreGroup = 3; 
     998        enemyship.health.MaxValue = 30; 
     999        enemyship.Image = enemy_ship_05; 
     1000        enemyship.explosion_scale = 60; 
     1001 
     1002        Add(enemyship, -1); 
     1003        enemyship.Hit(stagespeed); 
     1004 
     1005        AddCollisionHandler<enemy, frontborder>(enemyship, enemy_ship_5_start_shooting); 
     1006        AddCollisionHandler<enemy, player>(enemyship, damagePlayerEnemyShip2); 
     1007    } 
     1008    void enemy_ship_5_start_shooting(enemy enemyship, frontborder border) 
     1009    { 
     1010        if (!enemyship.canShoot) 
     1011        { 
     1012            enemyship.canShoot = true; 
     1013            enemyship.LifetimeLeft = TimeSpan.FromSeconds(8.4); 
     1014            enemyship.Velocity = enemyship.Velocity / 3; 
     1015 
     1016            UnlimitedAngle angle = UnlimitedAngle.FromDegrees(0); 
     1017            UnlimitedAngle angle2 = UnlimitedAngle.FromDegrees(90); 
     1018            UnlimitedAngle angle3 = UnlimitedAngle.FromDegrees(180); 
     1019            UnlimitedAngle angle4 = UnlimitedAngle.FromDegrees(270); 
     1020            double i = 0; 
     1021 
     1022            Timer shoot = new Timer(); 
     1023            shoot.Interval = 0.06; 
     1024            shoot.Timeout += delegate 
     1025            { 
     1026                if (!enemyship.IsDestroyed) 
     1027                { 
     1028                    i = i + 12; 
     1029                    angle = UnlimitedAngle.FromDegrees(i); 
     1030                    angle2 = UnlimitedAngle.FromDegrees(i + 90); 
     1031                    angle3 = UnlimitedAngle.FromDegrees(i + 180); 
     1032                    angle4 = UnlimitedAngle.FromDegrees(i + 270); 
     1033 
     1034                    enemy_shoot_3(enemyship.Position, angle.GetVector() * 400); 
     1035                    enemy_shoot_3(enemyship.Position, angle2.GetVector() * 400); 
     1036                    enemy_shoot_3(enemyship.Position, angle3.GetVector() * 400); 
     1037                    enemy_shoot_3(enemyship.Position, angle4.GetVector() * 400); 
     1038 
     1039                    enemy_shootsfx.Play(); 
     1040                } 
     1041                else shoot.Stop(); 
     1042            }; 
     1043 
     1044            Timer wait = new Timer(); 
     1045            wait.Interval = 1; 
     1046            wait.Timeout += delegate 
     1047            { 
     1048                if (!enemyship.IsDestroyed) 
     1049                { 
     1050                    shoot.Start(); 
     1051                } 
     1052                else shoot.Stop(); 
     1053            }; 
     1054 
     1055            wait.Start(1); 
     1056        } 
     1057    } 
    8481058 
    8491059    void enemy_shoot_1(Vector pos) 
     
    8541064        enemy_bullet.IgnoresCollisionResponse = true; 
    8551065        enemy_bullet.CollisionIgnoreGroup = 2; 
    856         enemy_bullet.damage = 10; 
     1066        enemy_bullet.damage = 5; 
    8571067        enemy_bullet.MaximumLifetime = TimeSpan.FromSeconds(5); 
    858         enemy_bullet.Image = bullet_enemy_01; 
     1068        enemy_bullet.Image = bullet_enemy_05; 
    8591069 
    8601070        enemy_bullet.Hit((player.Position - enemy_bullet.Position).Normalize() * 300); 
     
    8701080        enemy_bullet.IgnoresCollisionResponse = true; 
    8711081        enemy_bullet.CollisionIgnoreGroup = 2; 
    872         enemy_bullet.damage = 10; 
     1082        enemy_bullet.damage = 5; 
    8731083        enemy_bullet.MaximumLifetime = TimeSpan.FromSeconds(5); 
    8741084        enemy_bullet.Image = bullet_enemy_02; 
     
    8871097    } 
    8881098 
     1099    void enemy_shoot_3(Vector pos, Vector dir) 
     1100    { 
     1101        bullet enemy_bullet = new bullet(27, 27); 
     1102        enemy_bullet.Shape = Shape.Circle; 
     1103        enemy_bullet.Position = pos; 
     1104        enemy_bullet.IgnoresCollisionResponse = true; 
     1105        enemy_bullet.CollisionIgnoreGroup = 2; 
     1106        enemy_bullet.damage = 5; 
     1107        enemy_bullet.MaximumLifetime = TimeSpan.FromSeconds(4); 
     1108        enemy_bullet.Image = bullet_enemy_01; 
     1109 
     1110        Add(enemy_bullet, 0); 
     1111        enemy_bullet.Hit(dir); 
     1112        AddCollisionHandler<bullet, player>(enemy_bullet, damagePlayerBullet); 
     1113 
     1114    } 
     1115 
     1116    //Bosses 
     1117    void boss_ship_1(Vector pos, double width, double height) 
     1118    { 
     1119        boss boss_ship = new boss(196, 124); 
     1120        boss_ship.Shape = Shape.Circle; 
     1121        boss_ship.Position = pos; 
     1122        boss_ship.IgnoresCollisionResponse = true; 
     1123        boss_ship.CollisionIgnoreGroup = 3; 
     1124        boss_ship.Image = boss_ship_01; 
     1125 
     1126        Add(boss_ship, -1); 
     1127        boss_ship.Hit(stagespeed); 
     1128        AddCollisionHandler<boss, frontborder>(boss_ship, boss_01_start); 
     1129        AddCollisionHandler<boss, bullet>(boss_ship, damageBoss); 
     1130        AddCollisionHandler<boss, player>(boss_ship, damagePlayerBossShip); 
     1131    } 
     1132    void boss_01_start(boss boss, frontborder border) 
     1133    { 
     1134        if (!boss.canShoot) 
     1135        { 
     1136            boss.canShoot = true; 
     1137            boss.Velocity = boss.Velocity / 8; 
     1138 
     1139            Timer wait = new Timer(); 
     1140            wait.Interval = 5; 
     1141            wait.Timeout += delegate 
     1142            { 
     1143                MediaPlayer.Play("Andross"); 
     1144                MediaPlayer.Volume = 1; 
     1145                boss.Velocity = new Vector(0, 0); 
     1146                boss.health.Value = boss.health.MaxValue; 
     1147                boss_01_start_shooting(boss); 
     1148            }; 
     1149            wait.Start(1); 
     1150 
     1151            Timer fade_volume = new Timer(); 
     1152            fade_volume.Interval = 0.2; 
     1153            fade_volume.Timeout += delegate 
     1154            { 
     1155                MediaPlayer.Volume = MediaPlayer.Volume - 0.1; 
     1156                if (MediaPlayer.Volume == 0) 
     1157                { 
     1158                    fade_volume.Stop(); 
     1159                } 
     1160            }; 
     1161            fade_volume.Start(); 
     1162 
     1163        } 
     1164    } 
     1165    void boss_01_start_shooting(boss boss) 
     1166    { 
     1167        int i = 0; 
     1168 
     1169        double angle5 = 0; 
     1170        double c = 1; 
     1171        UnlimitedAngle angle05; 
     1172 
     1173        Timer shoot2 = new Timer(); 
     1174        shoot2.Interval = 0.01; 
     1175        shoot2.Timeout += delegate 
     1176        { 
     1177            if (!boss.IsDestroyed) 
     1178            { 
     1179                angle5 = angle5 + c; 
     1180                c = c + 0.1; 
     1181                angle05 = UnlimitedAngle.FromDegrees(angle5); 
     1182                boss_shoot_2(boss.Position, 
     1183 
     1184                    angle05.GetVector() * 500 
     1185                    ); 
     1186            } 
     1187            else 
     1188            { 
     1189                shoot2.Stop(); 
     1190            } 
     1191        }; 
     1192        Timer wait = new Timer(); 
     1193 
     1194        Timer enemy_shoot1 = new Timer(); 
     1195        enemy_shoot1.Interval = 0.02; 
     1196        enemy_shoot1.Timeout += delegate 
     1197        { 
     1198            i++; 
     1199            if (i == 100) 
     1200            { 
     1201                enemy_shoot1.Stop(); 
     1202                shoot2.Start(); 
     1203                wait.Start(1); 
     1204            }; 
     1205            if (boss.IsDestroyed) 
     1206            { 
     1207                enemy_shoot1.Stop(); 
     1208            } 
     1209                boss_shoot_1(boss.Position + new Vector(RandomGen.NextDouble(-50, 50), RandomGen.NextDouble(-50, 50))); 
     1210        }; 
     1211 
     1212        UnlimitedAngle angle = UnlimitedAngle.FromDegrees(0); 
     1213        UnlimitedAngle angle2 = UnlimitedAngle.FromDegrees(90); 
     1214        UnlimitedAngle angle3 = UnlimitedAngle.FromDegrees(180); 
     1215        UnlimitedAngle angle4 = UnlimitedAngle.FromDegrees(270); 
     1216        double b = 0; 
     1217 
     1218        Timer shoot = new Timer(); 
     1219        shoot.Interval = 0.08; 
     1220        shoot.Timeout += delegate 
     1221        { 
     1222            if (!boss.IsDestroyed) 
     1223            { 
     1224                b = b + 12; 
     1225                angle = UnlimitedAngle.FromDegrees(b); 
     1226                angle2 = UnlimitedAngle.FromDegrees(b + 90); 
     1227                angle3 = UnlimitedAngle.FromDegrees(b + 180); 
     1228                angle4 = UnlimitedAngle.FromDegrees(b + 270); 
     1229 
     1230                boss_shoot_3(boss.Position, angle.GetVector() * 400); 
     1231                boss_shoot_3(boss.Position, angle2.GetVector() * 400); 
     1232                boss_shoot_3(boss.Position, angle3.GetVector() * 400); 
     1233                boss_shoot_3(boss.Position, angle4.GetVector() * 400); 
     1234 
     1235                enemy_shootsfx.Play(); 
     1236            } 
     1237            else shoot.Stop(); 
     1238        }; 
     1239 
     1240        wait.Interval = 0.5; 
     1241        wait.Timeout += delegate 
     1242        { 
     1243            if (boss.IsDestroyed) wait.Stop(); 
     1244            i = 0; 
     1245            enemy_shoot1.Start(100); 
     1246            shoot2.Stop(); 
     1247        }; 
     1248 
     1249        enemy_shoot1.Start(); 
     1250        shoot.Start(); 
     1251    } 
     1252 
     1253    void boss_shoot_1(Vector pos) 
     1254    { 
     1255        bullet enemy_bullet = new bullet(27, 27); 
     1256        enemy_bullet.Shape = Shape.Circle; 
     1257        enemy_bullet.Position = pos; 
     1258        enemy_bullet.IgnoresCollisionResponse = true; 
     1259        enemy_bullet.CollisionIgnoreGroup = 2; 
     1260        enemy_bullet.damage = 5; 
     1261        enemy_bullet.MaximumLifetime = TimeSpan.FromSeconds(5); 
     1262        enemy_bullet.Image = bullet_enemy_06; 
     1263 
     1264        enemy_bullet.Hit((player.Position - enemy_bullet.Position).Normalize() * 300); 
     1265        Add(enemy_bullet, 0); 
     1266        AddCollisionHandler<bullet, player>(enemy_bullet, damagePlayerBullet); 
     1267    } 
     1268 
     1269 
     1270    void boss_shoot_2(Vector pos, Vector dir) 
     1271    { 
     1272        bullet enemy_bullet = new bullet(27, 27); 
     1273        enemy_bullet.Shape = Shape.Circle; 
     1274        enemy_bullet.Position = pos; 
     1275        enemy_bullet.IgnoresCollisionResponse = true; 
     1276        enemy_bullet.CollisionIgnoreGroup = 2; 
     1277        enemy_bullet.damage = 5; 
     1278        enemy_bullet.MaximumLifetime = TimeSpan.FromSeconds(5); 
     1279        enemy_bullet.Image = bullet_enemy_06; 
     1280 
     1281        Add(enemy_bullet, 0); 
     1282        enemy_bullet.Hit(dir / 9); 
     1283        AddCollisionHandler<bullet, player>(enemy_bullet, damagePlayerBullet); 
     1284 
     1285        Timer wait = new Timer(); 
     1286        wait.Interval = 0.8; 
     1287        wait.Timeout += delegate 
     1288        { 
     1289            enemy_bullet.Velocity = dir; 
     1290        }; 
     1291        wait.Start(1); 
     1292    } 
     1293 
     1294    void boss_shoot_3(Vector pos, Vector dir) 
     1295    { 
     1296        bullet enemy_bullet = new bullet(27, 27); 
     1297        enemy_bullet.Shape = Shape.Circle; 
     1298        enemy_bullet.Position = pos; 
     1299        enemy_bullet.IgnoresCollisionResponse = true; 
     1300        enemy_bullet.CollisionIgnoreGroup = 2; 
     1301        enemy_bullet.damage = 5; 
     1302        enemy_bullet.MaximumLifetime = TimeSpan.FromSeconds(4); 
     1303        enemy_bullet.Image = bullet_enemy_06; 
     1304 
     1305        Add(enemy_bullet, 0); 
     1306        enemy_bullet.Hit(dir); 
     1307        AddCollisionHandler<bullet, player>(enemy_bullet, damagePlayerBullet); 
     1308 
     1309    } 
     1310 
     1311 
    8891312    //Power-ups 
    8901313    void powerup(Vector pos) 
    8911314    { 
    892         int a = RandomGen.NextInt(1, 20); 
     1315        int a = RandomGen.NextInt(1, 11); 
    8931316        if (a == 1) 
    8941317        { 
     
    8981321    void createPowerup(Vector pos) 
    8991322    { 
    900         int type = RandomGen.NextInt(1, 4); 
     1323        int type = RandomGen.NextInt(1, 12); 
    9011324 
    9021325        PhysicsObject powerup = new PhysicsObject(13, 13); 
     
    9141337        powerup.Brain = powerup_follow; 
    9151338 
    916         if (type <= 2) 
     1339        if (type <= 6) 
    9171340        { 
    9181341            powerup.Image = powerup_damage; 
    9191342            AddCollisionHandler(powerup, "playership", powerupdamage); 
    9201343        } 
    921         else if (type >= 3) 
     1344        else if (type >= 7) 
    9221345        { 
    9231346            powerup.Image = powerup_spread; 
     
    9471370    void damagePlayerEnemyShip(enemy b, player p) 
    9481371    { 
    949         p.health.Value = p.health.Value - 10; 
     1372        p.health.Value = p.health.Value - 5; 
     1373        if (p.health <= 0) 
     1374        { 
     1375            explosionsfx.Play(); 
     1376            explosion_animation2(playership); 
     1377            playership.Destroy(); 
     1378        } 
    9501379        b.Destroy(); 
    9511380        hurtsfx.Play(); 
     
    9551384    void damagePlayerEnemyShip2(enemy b, player p) 
    9561385    { 
    957         p.health.Value = p.health.Value - 10; 
     1386        p.health.Value = p.health.Value - 5; 
     1387        if (p.health <= 0) 
     1388        { 
     1389            explosionsfx.Play(); 
     1390            explosion_animation2(playership); 
     1391            playership.Destroy(); 
     1392        } 
    9581393        hurtsfx.Play(); 
    9591394    } 
     1395    void damagePlayerBossShip(boss b, player p) 
     1396    { 
     1397        p.health.Value = 0; 
     1398        explosionsfx.Play(); 
     1399        explosion_animation2(playership); 
     1400        playership.Destroy(); 
     1401        hurtsfx.Play(); 
     1402    } 
    9601403    void damagePlayerBullet(bullet b, player p) 
    9611404    { 
    9621405        p.health.Value = p.health.Value - b.damage; 
     1406        if (p.health <= 0) 
     1407        { 
     1408            explosion_animation2(playership); 
     1409            playership.Destroy(); 
     1410            explosionsfx.Play(); 
     1411        } 
    9631412        b.Destroy(); 
    9641413        hurtsfx.Play(); 
     
    9761425        b.Destroy(); 
    9771426         
     1427    } 
     1428    void damageBoss(boss b, bullet bullet) 
     1429    { 
     1430        if (bullet.Tag == "player_bullet") 
     1431        { 
     1432            bullet.Destroy(); 
     1433            b.health.Value = b.health.Value - bullet.damage; 
     1434            if (b.health.Value <= 0) 
     1435            { 
     1436                explosion_animation_boss(b); 
     1437 
     1438                Timer fade = new Timer(); 
     1439                fade.Interval = 0.03; 
     1440                fade.Timeout += delegate 
     1441                { 
     1442                    MediaPlayer.Volume = MediaPlayer.Volume - 0.1; 
     1443                    if (MediaPlayer.Volume == 0) 
     1444                    { 
     1445                        fade.Stop(); 
     1446                    } 
     1447                }; 
     1448                fade.Start(); 
     1449 
     1450                GameObject stage_clear = new GameObject(290,39); 
     1451                stage_clear.Image = stage_1_clear; 
     1452                stage_clear.Position = cntr; 
     1453 
     1454                Timer stageclr = new Timer(); 
     1455                stageclr.Interval = 0.8; 
     1456                stageclr.Timeout += delegate 
     1457                { 
     1458                    if (stage_clear.IsVisible) stage_clear.IsVisible = false; 
     1459                    else stage_clear.IsVisible = true; 
     1460                }; 
     1461 
     1462                Timer wait = new Timer(); 
     1463                wait.Interval = 1; 
     1464                wait.Timeout += delegate 
     1465                { 
     1466                    Add(stage_clear,3); 
     1467                    stageclr.Start(); 
     1468                    SoundEffect.MasterVolume = 0.2; 
     1469                    MediaPlayer.Stop(); 
     1470                    MediaPlayer.Volume = 1; 
     1471                    MediaPlayer.IsRepeating = false; 
     1472                    MediaPlayer.Play("Stage Clear"); 
     1473                }; 
     1474 
     1475                wait.Start(1); 
     1476 
     1477            } 
     1478            hitsfx.Play(); 
     1479        } 
    9781480    } 
    9791481    void explosion_animation(enemy enemyship) 
     
    9861488        explosion.Animation.Start(1); 
    9871489    } 
     1490    void explosion_animation_boss(boss enemyship) 
     1491    { 
     1492        GameObject explosion = new GameObject(enemyship.explosion_scale, enemyship.explosion_scale); 
     1493        explosion.Position = enemyship.Position; 
     1494        explosion.Animation = explosion_anim; 
     1495        explosion.MaximumLifetime = TimeSpan.FromSeconds(0.2); 
     1496        Add(explosion, -1); 
     1497        explosion.Animation.Start(1); 
     1498    } 
     1499 
     1500    void explosion_animation2(PhysicsObject plr) 
     1501    { 
     1502        GameObject explosion = new GameObject(80,80); 
     1503        explosion.Position = plr.Position; 
     1504        explosion.Animation = explosion_anim; 
     1505        explosion.MaximumLifetime = TimeSpan.FromSeconds(0.2); 
     1506        Add(explosion, -1); 
     1507        explosion.Animation.Start(1); 
     1508 
     1509        Timer wait = new Timer(); 
     1510        wait.Interval = 1; 
     1511        wait.Timeout += delegate 
     1512        { 
     1513            SoundEffect.MasterVolume = 0.2; 
     1514            MediaPlayer.Volume = 0.2; 
     1515            MultiSelectWindow gameover = new MultiSelectWindow("Game Over", "Quit"); 
     1516            gameover.ItemSelected += select_gameover; 
     1517            Add(gameover); 
     1518        }; 
     1519        wait.Start(1); 
     1520 
     1521    } 
     1522    void select_gameover(int selection) 
     1523    { 
     1524        switch (selection) 
     1525        { 
     1526            case 0: 
     1527                ConfirmExit(); 
     1528                break; 
     1529        } 
     1530    } 
    9881531} 
  • 2014/27/MikkoL/LM2/LM2/LM2Content/LM2Content.contentproj

    r5376 r5424  
    4646  </ItemGroup> 
    4747  <ItemGroup> 
    48     <Compile Include="sprite_a-j.png"> 
    49       <Name>sprite_a-j</Name> 
    50       <Importer>TextureImporter</Importer> 
    51       <Processor>TextureProcessor</Processor> 
    52     </Compile> 
    53   </ItemGroup> 
    54   <ItemGroup> 
    55     <Compile Include="sprite_lentavamothafucka.png"> 
    56       <Name>sprite_lentavamothafucka</Name> 
    57       <Importer>TextureImporter</Importer> 
    58       <Processor>TextureProcessor</Processor> 
    59     </Compile> 
    60   </ItemGroup> 
    61   <ItemGroup> 
    6248    <Compile Include="level_test.txt"> 
    6349      <Name>level_test</Name> 
     
    234220      <Importer>TextureImporter</Importer> 
    235221      <Processor>TextureProcessor</Processor> 
     222    </Compile> 
     223  </ItemGroup> 
     224  <ItemGroup> 
     225    <Compile Include="earth.png"> 
     226      <Name>earth</Name> 
     227      <Importer>TextureImporter</Importer> 
     228      <Processor>TextureProcessor</Processor> 
     229    </Compile> 
     230  </ItemGroup> 
     231  <ItemGroup> 
     232    <Compile Include="Press_Start.png"> 
     233      <Name>Press_Start</Name> 
     234      <Importer>TextureImporter</Importer> 
     235      <Processor>TextureProcessor</Processor> 
     236    </Compile> 
     237  </ItemGroup> 
     238  <ItemGroup> 
     239    <Compile Include="title_screen.png"> 
     240      <Name>title_screen</Name> 
     241      <Importer>TextureImporter</Importer> 
     242      <Processor>TextureProcessor</Processor> 
     243    </Compile> 
     244  </ItemGroup> 
     245  <ItemGroup> 
     246    <Compile Include="Starmap.mp3"> 
     247      <Name>Starmap</Name> 
     248      <Importer>Mp3Importer</Importer> 
     249      <Processor>SongProcessor</Processor> 
     250    </Compile> 
     251  </ItemGroup> 
     252  <ItemGroup> 
     253    <Compile Include="Eladard.mp3"> 
     254      <Name>Eladard</Name> 
     255      <Importer>Mp3Importer</Importer> 
     256      <Processor>SongProcessor</Processor> 
     257    </Compile> 
     258    <Compile Include="Macbeth.mp3"> 
     259      <Name>Macbeth</Name> 
     260      <Importer>Mp3Importer</Importer> 
     261      <Processor>SongProcessor</Processor> 
     262    </Compile> 
     263  </ItemGroup> 
     264  <ItemGroup> 
     265    <Compile Include="Andross.mp3"> 
     266      <Name>Andross</Name> 
     267      <Importer>Mp3Importer</Importer> 
     268      <Processor>SongProcessor</Processor> 
     269    </Compile> 
     270  </ItemGroup> 
     271  <ItemGroup> 
     272    <Compile Include="enemy_shoot.wav"> 
     273      <Name>enemy_shoot</Name> 
     274      <Importer>WavImporter</Importer> 
     275      <Processor>SoundEffectProcessor</Processor> 
     276    </Compile> 
     277  </ItemGroup> 
     278  <ItemGroup> 
     279    <Compile Include="bullet_enemy_03.png"> 
     280      <Name>bullet_enemy_03</Name> 
     281      <Importer>TextureImporter</Importer> 
     282      <Processor>TextureProcessor</Processor> 
     283    </Compile> 
     284    <Compile Include="bullet_enemy_04.png"> 
     285      <Name>bullet_enemy_04</Name> 
     286      <Importer>TextureImporter</Importer> 
     287      <Processor>TextureProcessor</Processor> 
     288    </Compile> 
     289    <Compile Include="bullet_enemy_05.png"> 
     290      <Name>bullet_enemy_05</Name> 
     291      <Importer>TextureImporter</Importer> 
     292      <Processor>TextureProcessor</Processor> 
     293    </Compile> 
     294  </ItemGroup> 
     295  <ItemGroup> 
     296    <Compile Include="hitbox.png"> 
     297      <Name>hitbox</Name> 
     298      <Importer>TextureImporter</Importer> 
     299      <Processor>TextureProcessor</Processor> 
     300    </Compile> 
     301  </ItemGroup> 
     302  <ItemGroup> 
     303    <Compile Include="border_bottom.png"> 
     304      <Name>border_bottom</Name> 
     305      <Importer>TextureImporter</Importer> 
     306      <Processor>TextureProcessor</Processor> 
     307    </Compile> 
     308  </ItemGroup> 
     309  <ItemGroup> 
     310    <Compile Include="border_top.png"> 
     311      <Name>border_top</Name> 
     312      <Importer>TextureImporter</Importer> 
     313      <Processor>TextureProcessor</Processor> 
     314    </Compile> 
     315  </ItemGroup> 
     316  <ItemGroup> 
     317    <Compile Include="Venom.mp3"> 
     318      <Name>Venom</Name> 
     319      <Importer>Mp3Importer</Importer> 
     320      <Processor>SongProcessor</Processor> 
     321    </Compile> 
     322  </ItemGroup> 
     323  <ItemGroup> 
     324    <Compile Include="stage_1_clear.png"> 
     325      <Name>stage_1_clear</Name> 
     326      <Importer>TextureImporter</Importer> 
     327      <Processor>TextureProcessor</Processor> 
     328    </Compile> 
     329    <Compile Include="stage_1_start.png"> 
     330      <Name>stage_1_start</Name> 
     331      <Importer>TextureImporter</Importer> 
     332      <Processor>TextureProcessor</Processor> 
     333    </Compile> 
     334    <Compile Include="stage_2_clear.png"> 
     335      <Name>stage_2_clear</Name> 
     336      <Importer>TextureImporter</Importer> 
     337      <Processor>TextureProcessor</Processor> 
     338    </Compile> 
     339    <Compile Include="stage_2_start.png"> 
     340      <Name>stage_2_start</Name> 
     341      <Importer>TextureImporter</Importer> 
     342      <Processor>TextureProcessor</Processor> 
     343    </Compile> 
     344  </ItemGroup> 
     345  <ItemGroup> 
     346    <Compile Include="level_01.txt"> 
     347      <Name>level_01</Name> 
     348      <Importer>TextFileImporter</Importer> 
     349      <Processor>TextFileContentProcessor</Processor> 
     350    </Compile> 
     351  </ItemGroup> 
     352  <ItemGroup> 
     353    <Compile Include="enemy_ship_05.png"> 
     354      <Name>enemy_ship_05</Name> 
     355      <Importer>TextureImporter</Importer> 
     356      <Processor>TextureProcessor</Processor> 
     357    </Compile> 
     358  </ItemGroup> 
     359  <ItemGroup> 
     360    <Compile Include="boss_ship_01.png"> 
     361      <Name>boss_ship_01</Name> 
     362      <Importer>TextureImporter</Importer> 
     363      <Processor>TextureProcessor</Processor> 
     364    </Compile> 
     365  </ItemGroup> 
     366  <ItemGroup> 
     367    <Compile Include="bullet_enemy_06.png"> 
     368      <Name>bullet_enemy_06</Name> 
     369      <Importer>TextureImporter</Importer> 
     370      <Processor>TextureProcessor</Processor> 
     371    </Compile> 
     372  </ItemGroup> 
     373  <ItemGroup> 
     374    <Compile Include="Stage Clear.mp3"> 
     375      <Name>Stage Clear</Name> 
     376      <Importer>Mp3Importer</Importer> 
     377      <Processor>SongProcessor</Processor> 
    236378    </Compile> 
    237379  </ItemGroup> 
  • 2014/27/MikkoL/LM2/LM2/LM2Content/level_test.txt

    r5376 r5424  
    1212&xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx% 
    1313&xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx% 
    14 &xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx% 
     14&yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy% 
    1515&                                     % 
    1616&                                     % 
     
    2121&                                     % 
    2222&                                     % 
    23 &                  P                  %   3 
     23&                  P                  %                           B 
    2424&                                     % 
    2525&                                     % 
     
    3030&                                     % 
    3131&                                     % 
    32 &xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx% 
     32&zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz% 
    3333&xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx% 
    3434&xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx% 
Note: See TracChangeset for help on using the changeset viewer.