Changeset 6291


Ignore:
Timestamp:
2015-06-24 21:42:10 (4 years ago)
Author:
empaheik
Message:

Tapettava tulimaagi + liekit, joiden läpi voi kävellä + liekkien tekeminen (kenties tarpeettomasti) sovitettuna vain yhteen aliohjelmaan.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2015/26/ohjaajat/HillbillyRun/HillbillyRun/HillbillyRun/HillbillyRun/HillbillyRun.cs

    r6288 r6291  
    5353    { 
    5454        HillbillyRun game = this.Game as HillbillyRun; 
     55        Owner.PlayAnimation(Animations[1]); 
    5556        game.CreateMilkParticles(this.Owner); 
     57         
    5658    } 
    5759 
     
    9092        if (Animation != improvement.Animations[1]) 
    9193        { 
    92             this.PlayAnimation(improvement.Animations[1], improvement.DoTheThing); 
     94             improvement.DoTheThing(); 
    9395        } 
    9496    } 
     
    364366        level.SetTileMethod(Color.Gray, CreateCrawly); 
    365367        level.SetTileMethod(Color.Red, CreateFireMage); 
    366         level.SetTileMethod(Color.Rose, CreateFlame); 
     368        level.SetTileMethod(Color.Rose, CreateFlame, true); 
    367369        //level.SetTileMethod(Color.Azure, CreateDummy, Color.Azure);   //TODO: CreateSmoke 
    368370        //level.SetTileMethod(Color.Orange, CreateDummy, Color.Orange); //TODO: CreateTombstone 
     
    371373    } 
    372374 
    373     void CreateFlame(Vector position, double width, double height) 
    374     { 
    375         PhysicsObject flame = PhysicsObject.CreateStaticObject(width, height * 2); 
     375    void CreateFlame(Vector position, double width, double height, bool suuri) 
     376    { 
     377        PhysicsObject flame = new PhysicsObject(width, height * 2); 
    376378        //flame.Image = flameImage; 
    377379        flame.Color = Color.Red; 
     
    383385        flame.Animation.Step(RandomGen.NextInt(0, 12)); 
    384386        flame.Animation.Resume(); 
     387        flame.CanRotate = false; 
    385388        Add(flame); 
    386389 
    387390        Smoke savu = new Smoke(); 
    388         savu.ParticleImage = smokeImage1; 
    389         savu.OuterParticleImage = smokeImage2; 
    390         savu.MaxLifetime = 1.0; 
    391         savu.MaxScale = 200; 
    392         savu.MinScale = 10; 
    393         savu.Position = flame.Position; 
    394         Wind = new Vector(-10, 0); 
    395         Add(savu); 
     391        if (suuri) 
     392        { 
     393            flame.IgnoresCollisionResponse = true; 
     394 
     395            savu.ParticleImage = smokeImage1; 
     396            savu.OuterParticleImage = smokeImage2; 
     397            savu.MaxLifetime = 1.0; 
     398            savu.MaxScale = 200; 
     399            savu.MinScale = 10; 
     400            savu.Position = flame.Position; 
     401            Wind = new Vector(-10, 0); 
     402            Add(savu); 
     403            flame.MakeStatic(); 
     404        } 
    396405 
    397406        AddCollisionHandler(flame, "milkparticle", delegate(PhysicsObject c, PhysicsObject particle) 
     
    399408            particle.Destroy(); 
    400409            flame.Destroy(); 
    401             savu.Destroy(); 
     410             
     411                savu.Destroy(); 
     412             
    402413        }); 
    403414    } 
     
    491502        mage.Y += mage.Height / 2.0; 
    492503        mage.Tag = "burn"; 
     504        mage.Tag += "fireMage"; 
    493505        mage.AnimWalk = new Animation(firemageAnimation); 
    494506        mage.CollisionIgnoreGroup = 3; 
    495507        Add(mage, 1); 
     508        bool immune = false; 
    496509 
    497510        // Pään päällä oleva liekki (taitaa olla vähän huonossa kohtaa tällä hetkellä) 
    498         GameObject flame = new GameObject(width * 1.4, height * 2); 
     511        PhysicsObject flame = new PhysicsObject(width * 1.4, height * 2); 
    499512        flame.Y += mage.Height * 0.65; 
     513        //flame.Y = mage.Y +  mage.Height; 
    500514        flame.Animation = new Animation(blaze); 
     515        flame.IgnoresPhysicsLogics = true; 
    501516        flame.Animation.Start(); 
    502517        mage.Add(flame); 
     
    507522        mage.Brain = brain; 
    508523 
    509         // TODO: Noita kuolee kun on loiskuteltu tarpeeksi maitoa sen päälle. Vain yläpuolelta tulevat maitopartikkelit vahingoittaa sitä. 
    510  
    511         // TODO: Tulta pitäisi taikoa vain kun pelaajat on lähellä. 
     524        PhysicsObject trigger = PhysicsObject.CreateStaticObject(10, Level.Height); //A truly cool and efficient way to make the boogeyman react only to our closeness 
     525        trigger.Position = mage.Position - new Vector(Window.Width / 2, 0); 
     526        //trigger.Color = Color.Red; 
     527        trigger.IsVisible = false; 
     528        trigger.IgnoresCollisionResponse = true; 
     529        Add(trigger); 
    512530 
    513531        // Taiotaan tulta välillä. 
     
    518536            mage.PlayAnimation(firemageCastAnimation); 
    519537 
    520             for (int i = 0; i < 6; i++) 
     538            Timer.SingleShot(1.5,  
     539                delegate  
     540                { 
     541                    for (int i = 0; i < 6; i++) 
     542                    { 
     543                        CreateFlame(new Vector(mage.X + RandomGen.NextDouble(-300, 300), mage.Y + mage.Height * 1.5), 30, 60, false); 
     544 
     545                        //PhysicsObject fire = new PhysicsObject(30, 60); 
     546                        //fire.CanRotate = false; 
     547                        //fire.Tag = "burn"; 
     548                        //fire.Animation = new Animation(blaze) { FPS = RandomGen.NextInt(20, 26) }; 
     549                        //fire.Animation.Step(RandomGen.NextInt(0, 12)); 
     550                        //fire.Animation.Resume(); 
     551                        //fire.X = mage.X + RandomGen.NextDouble(-300, 300); 
     552                        //fire.Y = mage.Y + mage.Height * 1.5; 
     553                        //fire.CollisionIgnoreGroup = 3; 
     554                        //Add(fire); 
     555 
     556                        //AddCollisionHandler(fire, "milkparticle", delegate(PhysicsObject c, PhysicsObject particle) 
     557                        //{ 
     558                        //    particle.Destroy(); 
     559                        //    fire.Destroy(); 
     560                        //}); 
     561                    } 
     562                }); 
     563             
     564        }; 
     565        //castTimer.Start(); 
     566 
     567        AddCollisionHandler(mage, "milkparticle", delegate(PhysicsObject fireMage, PhysicsObject milk) 
     568        { 
     569            if (milk.Y > fireMage.Y + fireMage.Height * 0.15 && !immune) 
    521570            { 
    522                 PhysicsObject fire = new PhysicsObject(30, 60); 
    523                 fire.CanRotate = false; 
    524                 fire.Tag = "fire"; 
    525                 fire.Animation = new Animation(blaze) { FPS = RandomGen.NextInt(20, 26) }; 
    526                 fire.Animation.Step(RandomGen.NextInt(0, 12)); 
    527                 fire.Animation.Resume(); 
    528                 fire.X = mage.X + RandomGen.NextDouble(-300, 300); 
    529                 fire.Y = mage.Y + mage.Height * 1.5; 
    530                 fire.CollisionIgnoreGroup = 3; 
    531                 Add(fire); 
    532  
    533                 AddCollisionHandler(fire, "milkparticle", delegate(PhysicsObject c, PhysicsObject particle) 
     571                flame.Size *= 0.9; 
     572                immune = true; 
     573                if (flame.Height < height) 
    534574                { 
    535                     particle.Destroy(); 
    536                     fire.Destroy(); 
    537                 }); 
     575                    mage.Destroy(); 
     576                    castTimer.Stop(); 
     577                    //NextLevel();  
     578                } 
     579                Timer.SingleShot(0.5, delegate { immune = false; }); 
     580 
    538581            } 
    539         }; 
    540         castTimer.Start(); 
     582        }); 
     583 
     584        AddCollisionHandler(trigger, "player", delegate(PhysicsObject a, PhysicsObject b){ castTimer.Start(); }); 
    541585    } 
    542586 
     
    607651        players.Add(player); 
    608652        startingPlayers.Add(player); 
     653        player.Tag = "player"; 
    609654        Add(player); 
    610655        AddCollisionHandler(player, "burn", delegate(PhysicsObject p, PhysicsObject t) 
     
    698743 
    699744            // Väri muuttuu läpinäkyväksi. 
    700             var fadeTimer = new Timer { Interval = 0.05 }; 
     745            var fadeTimer = new Timer { Interval = 0.07 }; 
    701746            fadeTimer.Timeout += delegate 
    702747            { 
Note: See TracChangeset for help on using the changeset viewer.