Changeset 7981 for 2016/27


Ignore:
Timestamp:
2016-07-07 17:50:23 (3 years ago)
Author:
sieerinn
Message:

Pelaajille Die-metodi ja pelaajat hajoaa palasiksi kuollessaan

Location:
2016/27/ohjaajat/VenienteFragore
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • 2016/27/ohjaajat/VenienteFragore/SimplePhysics/Game.cs

    r7873 r7981  
    142142            } 
    143143 
    144             // Tarkistetaan törmäykset muiden objektien kanssa. 
    145             foreach (var other in objectList) 
    146             { 
    147                 if (other != obj && !noCollision(other)) 
    148                 { 
    149                     collisionList.Add(other); 
    150  
    151                     if (shortCircuit) 
     144            if (!obj.CollideOnlyWithTiles) 
     145            { 
     146                // Tarkistetaan törmäykset muiden objektien kanssa. 
     147                foreach (var other in objectList) 
     148                { 
     149                    if (other != obj && !noCollision(other) && !other.CollideOnlyWithTiles) 
    152150                    { 
    153                         obj.Position = originalPosition; 
    154                         return collisionList; 
     151                        collisionList.Add(other); 
     152 
     153                        if (shortCircuit) 
     154                        { 
     155                            obj.Position = originalPosition; 
     156                            return collisionList; 
     157                        } 
    155158                    } 
    156                 } 
     159                }    
    157160            } 
    158161 
  • 2016/27/ohjaajat/VenienteFragore/SimplePhysics/Object.cs

    r7653 r7981  
    5151        /// </summary> 
    5252        public bool IgnoresCollisionResponse { get; set; } 
     53 
     54        /// <summary> 
     55        /// Törmääkö objekti vain tiilien kanssa. 
     56        /// </summary> 
     57        public bool CollideOnlyWithTiles { get; set; } 
    5358 
    5459        /// <summary> 
  • 2016/27/ohjaajat/VenienteFragore/VenienteFragore/VenienteFragore/LevelCreationMethods.cs

    r7977 r7981  
    4242        private void MakeGoomba(Vector position, Image[] animImages, bool fallsOff) 
    4343        { 
    44             var goomba = new GoombaEnemy(TileSize*0.96, TileSize*0.96); 
     44            var goomba = new GoombaEnemy(TileSize * 0.96, TileSize * 0.96); 
    4545            goomba.Position = position; 
    4646            goomba.Color = Color.Pink; 
     
    4848            goomba.Speed = 100; 
    4949            goomba.FallOffPlatforms = fallsOff; 
    50             goomba.Animation = new Animation(animImages) {FPS = 10}; 
     50            goomba.Animation = new Animation(animImages) { FPS = 10 }; 
    5151            goomba.Animation.Start(); 
    5252            Add(goomba); 
     
    6060                    player.Velocity = new Vector(player.Velocity.X, 400); 
    6161 
    62                     var corpse = new GameObject(goomba.Width, goomba.Height*0.2); 
     62                    var corpse = new GameObject(goomba.Width, goomba.Height * 0.2); 
    6363                    corpse.TextureWrapSize = goomba.TextureWrapSize; 
    6464                    corpse.Image = animImages[0]; 
     
    7171                { 
    7272                    // Tappaa pelaajan jos osutaan sivulta päin. 
    73                     player.Destroy(); 
     73                    ((Player)player).Die(); 
    7474                } 
    7575            }); 
     
    8787            if (advenae.Count > 0 && !advenae[0].IsVisible) { advenae[0].Reappear(); return advenae[0]; }; 
    8888 
    89             var advenA = MakePlayer(position, width, height, 1, new List<Key> { Key.Up, Key.Down, Key.Left, Key.Right, Key.Enter }); 
     89            var advenA = MakePlayer(position, width, height, 1, new List<Key> { Key.Up, Key.Down, Key.Left, Key.Right, Key.Enter }, advenaBlob); 
    9090            advenA.Color = Color.HotPink; 
    9191            advenA.AnimWalk = new Animation(advenaImages); 
     
    9696            return advenA; 
    9797        } 
    98          
     98 
    9999        private Player CreatePlayer2(Vector position, double width, double height) 
    100100        { 
    101101            if (advenae.Count > 1 && !advenae[1].IsVisible) { advenae[1].Reappear(); return advenae[1]; }; 
    102102 
    103             var advenB = MakePlayer(position, width, height, 2, new List<Key> { Key.W, Key.S, Key.A, Key.D, Key.E }); 
     103            var advenB = MakePlayer(position, width, height, 2, new List<Key> { Key.W, Key.S, Key.A, Key.D, Key.E }, advenbBlob); 
    104104            advenB.Color = Color.Harlequin; 
    105105            advenB.AnimWalk = new Animation(advenbImages); 
     
    111111        } 
    112112 
    113         private Player MakePlayer(Vector position, double width, double height, int playerNum, List<Key> keys) 
     113        private Player MakePlayer(Vector position, double width, double height, int playerNum, List<Key> keys, Image blobImage) 
    114114        { 
    115115            var adven = new Player(TileSize * 0.99, TileSize * 1.96); 
     
    124124            Add(adven); 
    125125 
    126             adven.AddCollisionHandler("death", (a, b) => adven.Destroy()); 
     126            adven.AddCollisionHandler("death", (a, b) => adven.Die()); 
     127 
     128            adven.Died += () => 
     129            { 
     130                for (int i = 0; i < 15; i++) 
     131                { 
     132                    var blob = new SimplePhysics.Object(15, 15) 
     133                    { 
     134                        Image = blobImage, 
     135                        Position = adven.Position, 
     136                        RestitutionX = 0.7, 
     137                        RestitutionY = 0.7, 
     138                        Friction = 0.2, 
     139                        LifetimeLeft = TimeSpan.FromSeconds(RandomGen.NextDouble(3.0, 6.0)), 
     140                        CollideOnlyWithTiles = true, 
     141                        Velocity = RandomGen.NextVector(300, 800) 
     142                    }; 
     143                    Add(blob, 1); 
     144                    var updateTimer = new Timer { Interval = 0.02 }; 
     145                    updateTimer.Timeout += () => blob.Size *= 0.99; 
     146                    updateTimer.Start(); 
     147                    blob.Destroyed += updateTimer.Stop; 
     148                } 
     149            }; 
    127150 
    128151            SetMovementKeys(adven, keys); 
  • 2016/27/ohjaajat/VenienteFragore/VenienteFragore/VenienteFragore/Player.cs

    r7976 r7981  
    2626        private double jumpForce; 
    2727 
     28        public event Action Died; 
     29 
    2830        public Player(double width, double height) : base(width, height) 
    2931        { 
     
    4648            IgnoresGravity = true; 
    4749            Position = new Vector(double.MinValue, double.MinValue); 
     50        } 
     51 
     52        public void Die() 
     53        { 
     54            Died?.Invoke(); 
     55            Destroy(); 
    4856        } 
    4957 
  • 2016/27/ohjaajat/VenienteFragore/VenienteFragore/VenienteFragore/VenienteFragore.cs

    r7979 r7981  
    2020        private readonly Image[] advenaImages = LoadImages("advenawalk\\advenawalk00", 1, 49, true); 
    2121        private readonly Image[] advenbImages = LoadImages("advenbwalk\\advenb00", 1, 49, true); 
     22 
     23        private Image advenaBlob = LoadImage("advenaBlob"); 
     24        private Image advenbBlob = LoadImage("advenbBlob"); 
    2225 
    2326        private readonly Image advenaCrouch = LoadImage("advenacrouch"); 
  • 2016/27/ohjaajat/VenienteFragore/VenienteFragore/VenienteFragoreContent/VenienteFragoreContent.contentproj

    r7977 r7981  
    614614    </Compile> 
    615615  </ItemGroup> 
    616   <ItemGroup /> 
     616  <ItemGroup> 
     617    <Compile Include="advenaBlob.png"> 
     618      <Name>advenaBlob</Name> 
     619      <Importer>TextureImporter</Importer> 
     620      <Processor>TextureProcessor</Processor> 
     621    </Compile> 
     622    <Compile Include="advenbBlob.png"> 
     623      <Name>advenbBlob</Name> 
     624      <Importer>TextureImporter</Importer> 
     625      <Processor>TextureProcessor</Processor> 
     626    </Compile> 
     627  </ItemGroup> 
    617628  <ItemGroup> 
    618629    <Compile Include="minimiinii2anim\anim1.png"> 
Note: See TracChangeset for help on using the changeset viewer.