Changeset 5454 for 2014/27


Ignore:
Timestamp:
2014-07-04 13:01:15 (5 years ago)
Author:
jumaalku
Message:
 
Location:
2014/27/JuhanaK/Avaruuspeli/Avaruuspeli/Avaruuspeli
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • 2014/27/JuhanaK/Avaruuspeli/Avaruuspeli/Avaruuspeli/Avaruuspeli.cs

    r5440 r5454  
    1818    { 
    1919        elamaLaskuri = new IntMeter(elama, 0, elama); 
    20          
     20 
    2121    } 
    2222} 
     
    6666    private IntMeter elamaLaskuri; 
    6767    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } } 
    68       
     68 
    6969    public Tykki(double leveys, double korkeus, int elama) 
    7070        : base(leveys, korkeus) 
     
    9393    private const int MAX_KIERROSAIKA = 300; 
    9494 
    95     Timer aseidenAjastin; 
     95    List<Timer> aseidenAjastimet = new List<Timer>(); 
    9696 
    9797    List<Vihu> vihut = new List<Vihu>(); 
     
    109109    Image Orkkikuva = LoadImage("Orkki"); 
    110110    Image monsteri = LoadImage("Monsteri"); 
    111     Image flamerkuva= LoadImage("Flamer"); 
     111    Image flamerkuva = LoadImage("Flamer"); 
    112112    Image Estekuva = LoadImage("Este"); 
    113113    Image Automaattikuva = LoadImage("Automaattitykki"); 
     
    164164            seurattava.IgnoresCollisionResponse = false; 
    165165            (seurattava as Tykki).ase = ase; 
    166             aseidenAjastin = new Timer(); 
    167             aseidenAjastin.Interval = 0.1; 
    168             aseidenAjastin.Timeout += delegate 
     166            if (seurattava.Tag.Equals("flamer")) 
    169167            { 
    170                  
    171  
    172                 //List<GameObject> vihut = GetObjectsWithTag("vihollinen"); 
    173                 //var vihut = vihulista; 
    174                 //if (vihut == null || vihut.Count == 0) return; 
    175                 // 
    176                 //double etäisyys = Vector.Distance(ase.AbsolutePosition, vihut[0].Position); 
    177                 //if (etäisyys > 400) return; 
    178                 // 
    179                 ////vihut.Sort((a, b) => Vector.Distance(a.Position, ase.AbsolutePosition) > Vector.Distance(b.Position, ase.AbsolutePosition) ? 1 : -1); 
    180                 //vihut.Sort((a, b) => JarjestaVihut(ase, a, b)); 
    181                 //ase.Angle = (vihut[0].Position - ase.AbsolutePosition).Angle; 
    182                 PhysicsObject ammus = ase.Shoot(); 
    183  
    184                 if (ammus != null) 
     168                Timer aseenAjastin = new Timer(); 
     169                aseenAjastin.Interval = 0.1; 
     170                aseenAjastin.Timeout += delegate 
    185171                { 
    186                     if (ase.Parent != null && ase.Parent.Tag.Equals("flamer")) 
     172 
     173 
     174                    //List<GameObject> vihut = GetObjectsWithTag("vihollinen"); 
     175                    //var vihut = vihulista; 
     176                    //if (vihut == null || vihut.Count == 0) return; 
     177                    // 
     178                    //double etäisyys = Vector.Distance(ase.AbsolutePosition, vihut[0].Position); 
     179                    //if (etäisyys > 400) return; 
     180                    // 
     181                    ////vihut.Sort((a, b) => Vector.Distance(a.Position, ase.AbsolutePosition) > Vector.Distance(b.Position, ase.AbsolutePosition) ? 1 : -1); 
     182                    //vihut.Sort((a, b) => JarjestaVihut(ase, a, b)); 
     183                    //ase.Angle = (vihut[0].Position - ase.AbsolutePosition).Angle; 
     184 
     185 
     186                    PhysicsObject ammus = ase.Shoot(); 
     187 
     188                    if (ammus != null) 
    187189                    { 
    188190                        ammus.Image = Tulikuva; 
    189191                        ammus.Size *= 3; 
    190192                        ammus.CollisionIgnoreGroup = 3; 
     193                         
     194                        //ammus.Image = cannonballKuva; 
     195                        ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0); 
    191196                    } 
    192                     else 
     197 
     198                    if (ase.Parent != null && ase.Parent.IsDestroyed) 
     199                        aseenAjastin.Stop(); 
     200                }; 
     201                aseenAjastin.Start(); 
     202 
     203                aseidenAjastimet.Add(aseenAjastin); 
     204 
     205                ollaanRakentamassa = false; 
     206                seurattava = null; 
     207            } 
     208 
     209 
     210 
     211            else if (seurattava.Tag.Equals("automaattiTykki")) 
     212            { 
     213                Timer aseenAjastin = new Timer(); 
     214                aseenAjastin.Interval = 0.5; 
     215                aseenAjastin.Timeout += delegate 
     216                { 
     217 
     218 
     219                    //List<GameObject> vihut = GetObjectsWithTag("vihollinen"); 
     220                    //var vihut = vihulista; 
     221                    //if (vihut == null || vihut.Count == 0) return; 
     222                    // 
     223                    //double etäisyys = Vector.Distance(ase.AbsolutePosition, vihut[0].Position); 
     224                    //if (etäisyys > 400) return; 
     225                    // 
     226                    ////vihut.Sort((a, b) => Vector.Distance(a.Position, ase.AbsolutePosition) > Vector.Distance(b.Position, ase.AbsolutePosition) ? 1 : -1); 
     227                    //vihut.Sort((a, b) => JarjestaVihut(ase, a, b)); 
     228                    //ase.Angle = (vihut[0].Position - ase.AbsolutePosition).Angle; 
     229                    PhysicsObject ammus = ase.Shoot(); 
     230 
     231                    if (ammus != null) 
    193232                    { 
    194233                        ammus.Size *= 0.5; 
    195234                        ammus.CollisionIgnoreGroup = 3; 
     235                         
     236                        //ammus.Image = cannonballKuva; 
     237                        ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0); 
    196238                    } 
    197                     //ammus.Image = cannonballKuva; 
    198                     ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0); 
    199                 } 
    200  
    201                 if (ase.Parent != null && ase.Parent.IsDestroyed) 
    202                     aseidenAjastin.Stop(); 
    203             }; 
    204             aseidenAjastin.Start(); 
    205  
    206             ollaanRakentamassa = false; 
    207             seurattava = null; 
    208         } 
    209         /* 
    210         else 
    211         { 
    212             List<Tykki> tornit = GetObjectsWithTag("torni").Cast<Tykki>().ToList(); 
    213             foreach (Tykki torni in tornit) 
    214             { 
    215                 int hinta = 40 + 20 * torni.taso; 
    216                 if (Mouse.IsCursorOn(torni) && torni.taso < Tornikuvat.Length) 
    217                 { 
    218                     if (rahalaskuri.Value >= hinta) 
    219                     { 
    220  
    221  
    222                         torni.taso += 1; 
    223                         torni.ase.FireRate = 1 + torni.taso; 
    224                         rahalaskuri.Value -= hinta; 
    225                         torni.Image = Tornikuvat[torni.taso - 1]; 
    226                     } 
    227                     else 
    228                     { 
    229                         MessageDisplay.Add("Ei tarpeeksi rahaa. Päivitys maksaa " + hinta); 
    230  
    231                     } 
    232                 } 
    233  
     239 
     240                    if (ase.Parent != null && ase.Parent.IsDestroyed) 
     241                        aseenAjastin.Stop(); 
     242                }; 
     243                aseenAjastin.Start(); 
     244 
     245                aseidenAjastimet.Add(aseenAjastin); 
     246 
     247                ollaanRakentamassa = false; 
     248                seurattava = null; 
    234249            } 
    235250        } 
    236          */ 
     251 
    237252    } 
    238253 
     
    295310            ); 
    296311    } 
    297      
     312 
    298313    int JarjestaVihut(AssaultRifle ase, GameObject a, GameObject b) 
    299314    { 
     
    308323        menuNappi.Clicked += new Action(() => AnnaAse(rakennusKoko, rakennusKoko, hinta, rakennusKuva, "flamer")); 
    309324        Add(menuNappi); 
    310         Mouse.ListenMovement(1.0, delegate { 
     325        Mouse.ListenMovement(1.0, delegate 
     326        { 
    311327            if (Mouse.IsCursorOn(menuNappi)) 
    312328            { 
     
    332348        Gravity = new Vector(0, -1000); 
    333349        SmoothTextures = false; 
    334          
     350 
    335351 
    336352        if (pelaajienLkm == 1) 
     
    352368        LuoAseNappula(new Vector(80, (Screen.Bottom + 35)), 40, 40, flamerkuva, 200, 100); 
    353369        LuoTykkiNappula(new Vector(-80, (Screen.Bottom + 35)), 40, 40, Automaattikuva, 300, 100); 
    354          
     370 
    355371        Camera.Follow(pelaaja1); 
    356372        Camera.ZoomFactor = 1.2; 
     
    365381                menuHelperNaytto.IsVisible = false; 
    366382 
    367         //    List<Torni> tornit = GetObjectsWithTag("torni").Cast<Torni>().ToList(); 
    368         //    foreach (Torni torni in tornit) 
    369         //    { 
    370         //        if (Mouse.IsCursorOn(torni)) 
    371         //        { 
    372         //            menuHelperNaytto.IsVisible = true; 
    373         //            menuHelperNaytto.Text = "Torni, " + torni.taso; 
    374         //            menuHelperNaytto.Position = Mouse.PositionOnScreen + new Vector(menuHelperNaytto.Width / 2 + 10, 0); 
    375         //        } 
    376         //    } 
     383            //    List<Torni> tornit = GetObjectsWithTag("torni").Cast<Torni>().ToList(); 
     384            //    foreach (Torni torni in tornit) 
     385            //    { 
     386            //        if (Mouse.IsCursorOn(torni)) 
     387            //        { 
     388            //            menuHelperNaytto.IsVisible = true; 
     389            //            menuHelperNaytto.Text = "Torni, " + torni.taso; 
     390            //            menuHelperNaytto.Position = Mouse.PositionOnScreen + new Vector(menuHelperNaytto.Width / 2 + 10, 0); 
     391            //        } 
     392            //    } 
    377393        }, null); 
    378394    } 
     
    432448        AddCollisionHandler(pelaaja1, "vihollinen", Tormaaviholliseen); 
    433449 
     450        pelaaja1.CollisionIgnoreGroup = 3; 
     451 
    434452        pelaaja1.AnimWalk = new Animation(Avaruuskävely); 
    435453        pelaaja1.AnimIdle = new Animation(pelaajanKuva); 
     
    459477        AddCollisionHandler(pelaaja2, "vihollinen", Tormaaviholliseen); 
    460478 
     479        pelaaja2.CollisionIgnoreGroup = 3; 
     480 
    461481        pelaaja2.AnimWalk = new Animation(Avaruuskävely); 
    462482        pelaaja2.AnimIdle = new Animation(pelaajanKuva); 
     
    475495            (kohde as Vihu).ElamaLaskuri.Value--; 
    476496            osumisaani.Play(); 
    477              
     497 
    478498        } 
    479499    } 
     
    489509                //ammus.Size *= 3; 
    490510                //ammus.Image = ... 
     511                ammus.CollisionIgnoreGroup = 3; 
    491512                ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0); 
    492513            } 
     
    528549        hahmo.Walk(nopeus); 
    529550    } 
    530      
     551 
    531552 
    532553 
     
    554575    void LuoAlien() 
    555576    { 
    556         Vihu vihollinen = new Vihu(20, 100, 150); 
     577        Vihu vihollinen = new Vihu(20, 100, 120); 
    557578        vihollinen.ElamaLaskuri.LowerLimit += delegate 
    558579        { 
     
    565586        vihollinen.X = Level.Right - 100; 
    566587        vihollinen.Tag = "vihollinen"; 
    567         Add(vihollinen,3); 
     588        Add(vihollinen, 3); 
    568589 
    569590        vihut.Add(vihollinen); 
     
    586607    void LuoOrkki() 
    587608    { 
    588         Vihu vihollinen = new Vihu(10, 200, 200); 
     609        Vihu vihollinen = new Vihu(12, 200, 200); 
    589610        vihollinen.ElamaLaskuri.LowerLimit += delegate 
    590611        { 
     
    616637    void Luovihollinen() 
    617638    { 
    618         Vihu vihollinen = new Vihu(3, 100, 100); 
    619         vihollinen.ElamaLaskuri.LowerLimit += delegate { 
     639        Vihu vihollinen = new Vihu(6, 100, 100); 
     640        vihollinen.ElamaLaskuri.LowerLimit += delegate 
     641        { 
    620642            vihollinen.Destroy(); 
    621643            vihut.Remove(vihollinen as Vihu); 
     
    697719    void AloitaAalto() 
    698720    { 
    699         //int kier = 20 / kieorrokset; 
    700         //if (aseidenAjastin != null) aseidenAjastin. 
     721        foreach (Timer aika in aseidenAjastimet) 
     722        { 
     723            aika.Start(); 
     724        } 
    701725 
    702726        Timer ajastin = new Timer(); 
     
    715739        ajastin3.Start(); 
    716740 
    717         if (alaspainLaskuri==null) LuoAaltoAikaLaskuri(); 
     741        if (alaspainLaskuri == null) LuoAaltoAikaLaskuri(); 
    718742        else 
    719743        { 
     
    781805    void AaltoLoppui() 
    782806    { 
    783         //if (aseidenAjastin != null) aseidenAjastin.Interval = 10; 
     807        foreach (Timer ajastin in aseidenAjastimet) 
     808        { 
     809            ajastin.Pause(); 
     810        } 
     811 
    784812        kieorrokset--; 
    785813        aaltoPalkki.Value = 20; 
Note: See TracChangeset for help on using the changeset viewer.