Changeset 5942


Ignore:
Timestamp:
2015-06-09 14:02:07 (4 years ago)
Author:
taeekotr
Message:
 
Location:
2014/24/EemeliK
Files:
3 added
11 edited

Legend:

Unmodified
Added
Removed
  • 2014/24/EemeliK/Zombieland/Files/ZombieLandV1.0/ZombieLand/ZombieLand/ZombieLand.cs

    r5907 r5942  
    8080    DoubleMeter ElamaLaskuri2; 
    8181    List<Vector> Spawnauspaikat = new List<Vector>(); 
    82     IntMeter zombilaskuri = new IntMeter(0, 0, 10); 
     82    int zombilaskuri = 0; 
     83    const int MAX_ZOMBIEN_MAARA = 10; 
     84    IntMeter BensaLaskuri = new IntMeter(100, 0, 120); 
     85    Timer BensaAjastin = new Timer(); 
     86    bool onkoAutoaKaytetty = false; 
    8387    PhysicsObject pelaaja; 
    8488    PhysicsObject hela; 
     
    122126    private Image[] jalkaKuvat = LoadImages("officer_legs_0001", "officer_legs_0002", "officer_legs_0003", "officer_legs_0004"); 
    123127 
    124     Label pObj = new Label(); 
    125128 
    126129    public override void Begin() 
    127130    { 
    128131        IsFullScreen = false; 
    129         Add(pObj); 
    130132        LuoKentta(); 
    131133        LuoElamaLaskuri(); 
     134        LuoBensaLaskuri(); 
    132135        LuoElamaLaskuri2(); 
    133136        LuoPelaajan2Ase(); 
     
    143146         
    144147        AddCollisionHandler(pelaaja, auto, MeneAutoon); 
     148         
    145149        AddCollisionHandler(pelaaja2, auto, MeneAutoon); 
    146150        AddCollisionHandler(pelaaja, "Ammoboxi", SaaAmmoBoxi); 
     
    152156        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    153157    } 
    154  
    155     protected override void Update(Time time) 
    156     { 
    157         pObj.Text = GetObjects(x => x is PhysicsObject).Count.ToString(); 
    158         base.Update(time); 
     158    void LuoBensaLaskuri() 
     159    { 
     160        BensaAjastin.Interval = 1; 
     161        BensaAjastin.Timeout += delegate { BensaLaskuri.Value--; }; 
     162 
     163        BensaLaskuri.LowerLimit += delegate { auto.LinearDamping = 0.0000001; auto.Mass = 100000; }; 
    159164    } 
    160165 
     
    163168        pelaaja = new PhysicsObject(70, 70); 
    164169        pelaaja.Position = paikka; 
     170        pelaaja.Shape = Shape.FromImage(pelaajanKuva); 
    165171        pelaaja.Color = Color.Blue; 
    166172        pelaaja.Tag = "pelaaja"; 
     
    171177 
    172178        Add(inventory); 
    173  
    174         //  GameObject jalat = new GameObject(50,50); 
    175         //  jalat.Image = jalkaKuvat[0]; 
    176         //  Add(jalat, -1); 
    177         //  Animation kavely = new Animation(jalkaKuvat); 
    178         //  kavely.FPS = 9; 
    179         //  jalat.Animation = kavely; 
    180         //  jalat.Animation.Start(); 
    181         //  Timer kavelyajastin = new Timer(); 
    182         //  kavelyajastin.Interval = 0.01; 
    183         //  kavelyajastin.Timeout += delegate 
    184         //  { 
    185         //      jalat.Position = pelaaja.Position; 
    186         //      jalat.AbsoluteAngle = pelaaja.AbsoluteAngle; 
    187  
    188  
    189         /* 
    190         if (pelaaja.Velocity.Magnitude >= 0.5) 
    191         { 
    192             kavely.FPS = pelaaja.Velocity.Magnitude / 200.0 * 8; 
    193         } 
    194          */ 
    195  
    196         //    if (pelaaja.Velocity.Magnitude >= 0.5 && !kavely.IsPlaying) 
    197         //    { 
    198         //        kavely.Start(); 
    199         //    } 
    200         //    if (pelaaja.Velocity.Magnitude < 0.5 && kavely.IsPlaying) 
    201         //    { 
    202         //        kavely.Stop(); 
    203         //    } 
    204         //}; 
    205         //kavelyajastin.Start(); 
    206179 
    207180        pelaajanase = new AssaultRifle(1, 1); 
     
    224197        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Allah", pelaajanase); 
    225198        Mouse.ListenMovement(0.0, AllahuAkbar, "pommi"); 
    226  
    227  
    228  
     199    } 
     200 
     201    void TuhoaPenkki(PhysicsObject auto, PhysicsObject penkki) 
     202    { 
     203        penkki.Destroy(); 
    229204    } 
    230205 
     
    236211        palikka.Position = paikka; 
    237212        Add(palikka, -1); 
    238  
    239  
    240213    } 
    241214 
     
    252225        level.SetTileMethod('#', LuoLattia); 
    253226        level.SetTileMethod('W', LuoPenkki); 
    254         level.SetTileMethod('Q', LuoPuu); 
     227        // level.SetTileMethod('Q', LuoPuu); 
    255228        level.SetTileMethod('I', ParkkiPaikka); 
    256229        level.SetTileMethod('N', LuoLoottiSpawniLattia); 
     
    258231        level.SetTileMethod('C', LuoKoriPallo); 
    259232        level.SetTileMethod('L', LuoAuto); 
    260         level.SetTileMethod('Z', LuoZombi); 
     233        level.SetTileMethod('Z', delegate(Vector pos, double w, double h) { LuoZombi(pos, w, h, false); }); 
    261234        level.SetTileMethod('M', LuoMagicPalikka); 
    262235        level.SetTileMethod('A', LuoKiviBlock); 
    263236        level.SetTileMethod('K', LuoAutoTieFlipped); 
    264237 
    265         IsFullScreen = true; 
     238        // IsFullScreen = true; 
    266239        level.Execute(40, 40); 
    267240        level.Optimize('G', '#', 'K', 'A', 'M'); 
     
    376349        if(Level.AmbientLight <= 0.5) 
    377350        { 
    378             LuoZombi(RandomGen.SelectOne<Vector>(Spawnauspaikat), 70, 70); 
     351            LuoZombi(RandomGen.SelectOne<Vector>(Spawnauspaikat), 70, 70, false); 
    379352        } 
    380353    } 
     
    556529    void AjaAutoa(Vector vektori, PhysicsObject ajaja) 
    557530    { 
     531        if (!BensaAjastin.Enabled) 
     532        { 
     533            BensaAjastin.Start(); 
     534        } 
     535 
    558536        if (kuski == ajaja) 
    559537        { 
     
    587565    } 
    588566 
    589     void LuoZombi(Vector paikka, double leveys, double korkeus) 
    590     { 
    591         if(zombilaskuri.Value == zombilaskuri.MaxValue) 
    592         { 
    593             return; 
     567    void LuoZombi(Vector paikka, double leveys, double korkeus, bool forceCreation) 
     568    { 
     569        if (!forceCreation) 
     570        { 
     571            if (zombilaskuri >= MAX_ZOMBIEN_MAARA) 
     572            { 
     573                return; 
     574            } 
    594575        } 
    595576 
     
    597578        zombi.Image = zombinkuva; 
    598579        zombi.Position = paikka; 
     580        zombi.CanRotate = false; 
    599581        zombi.Tag = "zombi"; 
    600582        Add(zombi); 
    601583        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200); 
    602584        satunnaisAivot.ChangeMovementSeconds = 3; 
     585        satunnaisAivot.TurnWhileMoving = true; 
    603586 
    604587        AddCollisionHandler(pelaaja, zombi, PelaajatTormaavat); 
     
    613596        seuraajanAivot.TurnWhileMoving = true; 
    614597        zombi.Brain = seuraajanAivot; 
    615         zombilaskuri.Value++; 
    616     } 
     598        zombilaskuri++; 
     599    } 
     600 
    617601    void Tappaa(PhysicsObject kohde) 
    618602    { 
    619603        //kohde.Destroy(); 
    620604    } 
     605 
    621606    void LuoElamaLaskuri() 
    622607    { 
     
    738723        auto.Image = autonKuva; 
    739724        auto.LinearDamping = 0.9; 
     725        AddCollisionHandler(auto, "penkki", TuhoaPenkki); 
    740726        auto.AngularDamping = 0.5; 
    741727        auto.Angle = Angle.FromDegrees(90); 
    742728        auto.CanRotate = true; 
     729        auto.Collided += delegate(IPhysicsObject a, IPhysicsObject kohde) 
     730        { 
     731            const double DMG_FACTOR = 1.0 / 100.0; 
     732 
     733            if (a.Velocity.Magnitude <= 0) return; 
     734 
     735            Vihu v = kohde as Vihu; 
     736            if (v == null) return; 
     737 
     738            // max nopeudessa magnitude about 800 
     739            // vihuilla 9 hp 
     740            // => max vauhdista noin 8 dmg 
     741            v.ElamaLaskuri.Value -= a.Velocity.Magnitude * DMG_FACTOR; 
     742        }; 
     743 
    743744        Add(auto, 1); 
    744745    } 
     
    38383839    void MeneAutoon(PhysicsObject tormaaja, PhysicsObject auto) 
    38393840    { 
     3841        const double CHANCE_TO_SPAWN_ENEMIES = 50.0; 
     3842        const int ZOMBIEN_MAARA = 3; 
     3843        const double MIN_DISTANCE = 200; 
     3844        const double MAX_DISTANCE = 400; 
     3845 
     3846        if (!onkoAutoaKaytetty) 
     3847        { 
     3848            if (RandomGen.NextDouble(0, 100) <= CHANCE_TO_SPAWN_ENEMIES) 
     3849            { 
     3850                // spawnataan zombeja 
     3851                for (int i = 0; i < ZOMBIEN_MAARA; i++) 
     3852                { 
     3853                    LuoZombi(tormaaja.Position + RandomGen.NextVector(MIN_DISTANCE, MAX_DISTANCE), 40.0, 40.0, true); 
     3854                } 
     3855 
     3856                onkoAutoaKaytetty = true; 
     3857                return; 
     3858            } 
     3859        } 
     3860 
     3861        onkoAutoaKaytetty = true; 
    38403862        tormaaja.IsVisible = false; 
    38413863        tormaaja.IgnoresCollisionResponse = true; 
     
    38833905        { 
    38843906            kuski = null; 
     3907            BensaAjastin.Stop(); 
    38853908            Camera.Follow(ajaja, auto); 
    38863909            //Camera.Follow(pelaaja, pelaaja2); 
Note: See TracChangeset for help on using the changeset viewer.