Changeset 913 for 2010/24


Ignore:
Timestamp:
2010-06-16 14:59:25 (9 years ago)
Author:
danmarti
Message:

Lisättiin respawn-systeemi ja parannettiin kamerasysteemiä. Helpotettiin mapin tekoa ja kokeiltiin aseita.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2010/24/danmarti/Vantaa 2001/Peli.cs

    r899 r913  
    1717    const int TileWidth = 50; 
    1818    const int TileHeight = 50; 
     19 
     20    Vector RespawnCoord; 
    1921 
    2022    protected override void Begin() 
     
    4244 
    4345 
     46 
    4447    void StartGame() 
    4548    { 
    4649        Gravity = new Vector(0, -1000); 
    4750        CreateLevel(); 
    48         CreatePlayer(10, 0); 
     51        CreatePlayer(); 
    4952        Camera.Follow(Player1); 
    5053 
     
    5760        Gravity = new Vector(0, -1000); 
    5861        CreateLevel(); 
    59         Player1 = CreatePlayer(Level.Left + 100.0, Level.Bottom + 100.0); 
    60         Player2 = CreatePlayer(Level.Left + 200.0, Level.Bottom + 100.0); 
    6162        Add(LifeMeterP1); 
    6263        Add(LifeMeterP2); 
     
    6667    } 
    6768 
    68     PlatformCharacter CreatePlayer(double x, double y) 
     69 
     70 
     71    PlatformCharacter CreatePlayer() 
    6972    { 
    7073        PlatformCharacter Player = new PlatformCharacter(40, 60); 
    7174        Player.Mass = 4.0; 
    7275        Add(Player); 
    73         Player.X = x; 
    74         Player.Y = y; 
    7576        Player.Color = Color.Black; 
    76         Player.KineticFriction = 1.0; 
     77        Player.KineticFriction = 0; 
    7778        Player.StaticFriction = 0; 
     79        Player.LinearDamping = 1; 
     80        LaserGun Weapon = new LaserGun( 20, 5 ); 
     81        PhysicsObject WProjectile = Weapon.Shoot(); 
     82        //Weapon.AttackSound = null; 
     83        Weapon.IsVisible=false; 
     84        Weapon.TimeBetweenUse = new TimeSpan(0,0,0,0,200); 
     85 
     86        Player.Weapon = Weapon; 
    7887        return Player; 
    7988 
    8089    } 
    8190 
    82     void CreateEnemy(double x, double y) 
     91    PhysicsObject CreateEnemy() 
    8392    { 
    8493        PhysicsObject Enemy = new PhysicsObject(40, 65); 
    8594        Enemy.Mass = 3.0; 
    86         Enemy.X = x; 
    87         Enemy.Y = y; 
    8895        Enemy.Color = Color.Red; 
    8996        Enemy.KineticFriction = 0.1; 
     
    9299        Enemy.CanRotate = false; 
    93100        Add(Enemy); 
     101        return Enemy; 
    94102 
    95103    } 
     
    98106    { 
    99107        TileMap Tiles = TileMap.FromFile("BetaMap.txt"); 
    100         Tiles['x'] = CreateFloor; 
     108        Tiles['f'] = CreateFloor; 
     109        Tiles['r'] = CreateRespawn; 
     110        Tiles['e'] = CreateEnemy; 
     111        Tiles['1'] = StartP1; 
     112        Tiles['2'] = StartP2; 
    101113        Tiles.Insert(TileWidth, TileHeight); 
    102         CreateEnemy(Level.Left + 300.0, Level.Bottom + 100.0); 
    103  
    104  
    105  
    106     } 
     114    } 
     115 
     116 
    107117 
    108118    void Controls() 
     
    111121        Keyboard.Listen(Key.D, ButtonState.Down, Walk, "Move right", Player1, Speed); 
    112122        Keyboard.Listen(Key.W, ButtonState.Down, Jump, "Jump", Player1, JumpStr); 
     123        Keyboard.Listen(Key.Space, ButtonState.Down, Player1.Weapon.Use, "Ammu"); 
     124 
    113125 
    114126        Keyboard.Listen(Key.Left, ButtonState.Down, Walk, "Move left", Player2, -Speed); 
     
    127139    } 
    128140 
     141 
     142 
    129143    PhysicsObject CreateFloor() 
    130144    { 
     
    133147    } 
    134148 
     149    PhysicsObject CreateRespawn() 
     150    { 
     151        PhysicsObject Respawn = PhysicsObject.CreateStaticObject(50.0, 100.0); 
     152        Respawn.IgnoresCollisionResponse = true; 
     153        Respawn.IsVisible = false; 
     154        AddCollisionHandler(Respawn, RespawnCollision); 
     155        return Respawn; 
     156    } 
     157 
    135158    void EnemyPlayerCollision(PhysicsObject Enemy, PhysicsObject Target) 
    136159    { 
     
    138161        { 
    139162            // Tarkista onko elämiä jäljellä 
    140             // Aloita kuolemattomuusjakso esim. 5 sekuntia (tarvitaan ajastin) 
    141163            if (Target == Player1) 
    142164            { 
    143165                LifeP1.Value--; 
    144                 if (LifeP1.Value == 0) 
     166                Death(Player1); 
     167                if (Player2.IsDestroyed() == false) 
    145168                { 
    146                     DeathP1(); 
     169                    Camera.Follow(Player2); 
    147170                } 
     171 
    148172            } 
    149173            else if (Target == Player2) 
    150174            { 
    151                  LifeP2.Value--; 
    152                   if (LifeP2.Value == 0) 
    153                   { 
    154                       DeathP2(); 
    155                   } 
    156              } 
     175                LifeP2.Value--; 
     176                Death(Player2); 
     177            } 
    157178          } 
    158179      } 
    159180         
    160181 
    161     void DeathP1() 
    162     { 
    163         Player1.Destroy(); 
    164     } 
    165  
    166     void DeathP2() 
    167     { 
    168         Player2.Destroy(); 
    169  
    170     } 
     182    void Death(PlatformCharacter Player) 
     183    { 
     184        Player.Destroy(); 
     185        if ((Player1.IsDestroyed()) && (Player2.IsDestroyed())) 
     186        { 
     187            RespawnPlayers(RespawnCoord.X, RespawnCoord.Y+10); 
     188        } 
     189         
     190    } 
     191 
     192    void RespawnPlayers(double x, double y) 
     193    { 
     194        if(LifeP1 > 0) 
     195        { 
     196            Player1 = CreatePlayer(); 
     197            Player1.X = x+30; 
     198            Player1.Y = y; 
     199            Camera.Follow(Player1); 
     200        } 
     201        if (LifeP2 > 0) 
     202        { 
     203            Player2 = CreatePlayer(); 
     204            Player2.X = x - 30; 
     205            Player2.Y = y; 
     206            if (LifeP1 == 0) 
     207            { 
     208                Camera.Follow(Player2); 
     209            } 
     210            Controls(); 
     211        } 
     212    } 
     213 
     214    void RespawnCollision(PhysicsObject RespawnLoc, PhysicsObject Player) 
     215    { 
     216        if ((Player == Player1) || (Player == Player2)) 
     217        { 
     218            RespawnCoord = RespawnLoc.Position; 
     219        } 
     220    } 
     221 
     222    PhysicsObject StartP1() 
     223    { 
     224        Player1 = CreatePlayer(); 
     225        return Player1; 
     226    } 
     227 
     228    PhysicsObject StartP2() 
     229    { 
     230        Player2 = CreatePlayer(); 
     231        return Player2; 
     232    } 
     233 
    171234 
    172235} 
Note: See TracChangeset for help on using the changeset viewer.