Changeset 6762 for 2015/27


Ignore:
Timestamp:
2015-07-02 14:57:08 (4 years ago)
Author:
aaelruut
Message:
 
Location:
2015/27/AakeR/IMBT
Files:
15 added
30 edited

Legend:

Unmodified
Added
Removed
  • 2015/27/AakeR/IMBT/IMBT/IMBT/IMBT.cs

    r6689 r6762  
    1010{ 
    1111    public DoubleMeter healthit; 
    12  
     12    public bool savuttaa = false; 
     13    public bool boosti = true; 
    1314    public AssaultRifle Ase; 
    14      
    15     public Pelaaja(double leveys, double korkeus, Image pelaajanKuva, Image tykkiTorninKuva) : base(leveys, korkeus) 
    16     { 
     15    public bool telaJaljetLimit; 
     16 
     17    public Pelaaja(double leveys, double korkeus, Image pelaajanKuva, Image tykkiTorninKuva, Image rajahdysKuva, Image liekkiKuva) 
     18        : base(leveys, korkeus) 
     19    { 
     20 
    1721        this.Image = pelaajanKuva; 
    1822        this.healthit = new DoubleMeter(100, 0, 100); 
    1923        this.LinearDamping = 0.95; 
    20         this.healthit.LowerLimit += delegate() {  
    21              
     24        this.telaJaljetLimit = true; 
     25        this.Tag = "pelaaja"; 
     26        this.healthit.LowerLimit += delegate() 
     27        { 
     28 
    2229            Explosion rajahdys = new Explosion(200); 
     30            rajahdys.ShockwaveReachesObject += delegate(IPhysicsObject pelaajaJohonPaineaaltoOsui, Vector voima)  
     31            { 
     32                if (pelaajaJohonPaineaaltoOsui.Tag.Equals("pelaaja")) 
     33                { 
     34                    (pelaajaJohonPaineaaltoOsui as Pelaaja).healthit.Value -= 1000; 
     35                    SavuLiekki(); 
     36                } 
     37            }; 
     38            rajahdys.Image = rajahdysKuva; 
     39            rajahdys.Tag = "rajahdys"; 
    2340            rajahdys.Position = this.Position; 
    2441            ((IMBT)Game.Instance).Add(rajahdys); 
     
    2946        }; 
    3047 
    31         ((IMBT)Game.Instance).AddCollisionHandler(this, "ammus", delegate(PhysicsObject a, PhysicsObject b) 
    32         { 
    33             this.healthit.Value -= 5000; 
     48        ((IMBT)Game.Instance).AddCollisionHandler(this, "perusAmmus", delegate(PhysicsObject a, PhysicsObject b) 
     49        { 
     50            this.healthit.Value -= 4; 
     51            SavuLiekki(); 
     52        }); 
     53        ((IMBT)Game.Instance).AddCollisionHandler(this, "raketti", delegate(PhysicsObject a, PhysicsObject b) 
     54        { 
     55            this.healthit.Value -= 4; 
     56            SavuLiekki(); 
     57        }); 
     58        ((IMBT)Game.Instance).AddCollisionHandler(this, "pallo", delegate(PhysicsObject a, PhysicsObject b) 
     59        { 
     60            this.healthit.Value -= 20; 
     61            SavuLiekki(); 
     62        }); 
     63        ((IMBT)Game.Instance).AddCollisionHandler(this, "rajahdys", delegate(PhysicsObject a, PhysicsObject b) 
     64        { 
     65            this.healthit.Value -= 1000; 
     66            SavuLiekki(); 
    3467        }); 
    3568 
    3669        this.Ase = new AssaultRifle(30, 30); 
    3770        this.Ase.Image = tykkiTorninKuva; 
    38         this.Add(this.Ase); 
    39  
     71 
     72        Game.Instance.Add(Ase, 1); 
     73 
     74        Timer ajastin = new Timer(); 
     75        ajastin.Interval = 0.01; 
     76        ajastin.Timeout += delegate 
     77        { 
     78            Ase.Position = this.Position; 
     79        }; 
     80        ajastin.Start(); 
     81 
     82 
     83    } 
     84 
     85    public void SavuLiekki() 
     86    { 
     87        if (this.healthit.Value < this.healthit.MaxValue / 2) 
     88        { 
     89            if (this.savuttaa == false) 
     90            { 
     91                Smoke savu = new Smoke(); 
     92                Game.Instance.Add(savu); 
     93                savu.Position = this.Position; 
     94                Timer seuraajaAjastin = new Timer(); 
     95                seuraajaAjastin.Interval = 0.1; 
     96                seuraajaAjastin.Timeout += delegate 
     97                { 
     98                    savu.Position = this.Position; 
     99                }; 
     100                seuraajaAjastin.Start(); 
     101                this.savuttaa = true; 
     102            } 
     103        } 
     104 
     105        if (this.healthit.Value < this.healthit.MaxValue / 4) 
     106        { 
     107 
     108            Flame liekki = new Flame(((IMBT)Game.Instance).liekkiKuva); 
     109            Game.Instance.Add(liekki); 
     110            liekki.Position = this.Position; 
     111            Timer seuraajaAjastin = new Timer(); 
     112            seuraajaAjastin.Interval = 0.1; 
     113            seuraajaAjastin.Timeout += delegate 
     114            { 
     115                liekki.Position = this.Position; 
     116            }; 
     117            seuraajaAjastin.Start(); 
     118            this.savuttaa = true; 
     119 
     120        } 
    40121 
    41122    } 
     
    58139    Image pelaaja1Kone1Tykki = LoadImage("Pelaaja1Kone1Tykki"); 
    59140    Image perusAmmus = LoadImage("Kone1PerusAmmus"); 
     141    Image rakettiKuva = LoadImage("Raketti"); 
     142    Image palloKuva = LoadImage("KimpoilevaPallo"); 
     143    Image telaJaljetKuva = LoadImage("RenkaidenJäljet"); 
     144    Image rajahdysKuva = LoadImage("Rajahdys"); 
     145    public Image liekkiKuva = LoadImage("Liekki"); 
    60146    SoundEffect ammusAani = LoadSoundEffect("AmmusÄäni"); 
     147    SoundEffect raketinAani = LoadSoundEffect("RakettiAani"); 
     148    SoundEffect palloAani = LoadSoundEffect("PalloAani"); 
    61149    Pelaaja pelaaja1; 
    62150    double maxNopeus = 1000.0; 
     151 
     152    //TODO Alkuvalikko 
     153    //TODO Boosti 
    63154 
    64155    public override void Begin() 
     
    73164        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kenttä1"); 
    74165 
    75          
     166 
    76167        ruudut.SetTileMethod(Color.FromHexCode("0026FF"), LuoPelaaja1); 
    77168        ruudut.SetTileMethod(Color.Cyan, LuoPelaaja2); 
     
    80171        ruudut.SetTileMethod(Color.Black, LuoPalikka); 
    81172        Level.Background.Color = Color.Silver; 
    82          
     173 
    83174        ruudut.Execute(80, 80); 
    84175        Camera.ZoomToLevel(); 
     
    87178    void LuoPelaaja1(Vector paikka, double leveys, double korkeus) 
    88179    { 
    89         pelaaja1 = new Pelaaja(leveys * 0.8, korkeus * 0.8, pelaaja1Kone1, pelaaja1Kone1Tykki); 
     180        pelaaja1 = new Pelaaja(leveys * 0.8, korkeus * 0.8, pelaaja1Kone1, pelaaja1Kone1Tykki, rajahdysKuva, liekkiKuva); 
    90181        pelaaja1.AngularDamping = 0.95; 
    91182        pelaaja1.Position = paikka; 
     
    93184        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.0, KaannaPelaajaa, "", pelaaja1); 
    94185        ControllerOne.ListenAnalog(AnalogControl.RightStick, 0.0, KaannaTykkia, "", pelaaja1); 
    95         ControllerOne.Listen(Button.RightTrigger, ButtonState.Pressed, Ammu, "", pelaaja1); 
     186        ControllerOne.Listen(Button.RightTrigger, ButtonState.Down, Ammu, "", pelaaja1, "perus"); 
     187        ControllerOne.Listen(Button.LeftTrigger, ButtonState.Pressed, Ammu, "", pelaaja1, "raketti"); 
     188        ControllerOne.Listen(Button.RightShoulder, ButtonState.Pressed, Ammu, "", pelaaja1, "pallo"); 
     189        ControllerOne.Listen(Button.LeftShoulder, ButtonState.Pressed, Boosti, "", pelaaja1); 
    96190        Add(pelaaja1); 
    97         LuoElamaLaskuri(pelaaja1); 
    98191    } 
    99192 
     
    110203    void LuoPelaaja2(Vector paikka, double leveys, double korkeus) 
    111204    { 
    112         Pelaaja pelaaja2 = new Pelaaja(leveys * 0.8, korkeus * 0.8, pelaaja2Kone1, pelaaja2Kone1Tykki); 
     205        Pelaaja pelaaja2 = new Pelaaja(leveys * 0.8, korkeus * 0.8, pelaaja2Kone1, pelaaja2Kone1Tykki, rajahdysKuva, liekkiKuva); 
    113206        pelaaja2.AngularDamping = 0.1; 
    114207        pelaaja2.Position = paikka; 
    115208        ControllerTwo.ListenAnalog(AnalogControl.LeftStick, 0.0, KaannaPelaajaa, "", pelaaja2); 
    116209        ControllerTwo.ListenAnalog(AnalogControl.RightStick, 0.0, KaannaTykkia, "", pelaaja2); 
    117         ControllerTwo.Listen(Button.RightTrigger, ButtonState.Pressed, Ammu, "", pelaaja2); 
     210        ControllerTwo.Listen(Button.RightTrigger, ButtonState.Down, Ammu, "", pelaaja2, "perus"); 
     211        ControllerTwo.Listen(Button.LeftTrigger, ButtonState.Pressed, Ammu, "", pelaaja2, "raketti"); 
     212        ControllerTwo.Listen(Button.RightShoulder, ButtonState.Pressed, Ammu, "", pelaaja2, "pallo"); 
     213        ControllerTwo.Listen(Button.LeftShoulder, ButtonState.Pressed, Boosti, "", pelaaja2); 
    118214        Add(pelaaja2); 
    119         LuoElamaLaskuri(pelaaja2); 
    120215    } 
    121216 
    122217    void LuoPelaaja3(Vector paikka, double leveys, double korkeus) 
    123218    { 
    124         Pelaaja pelaaja3 = new Pelaaja(leveys * 0.8, korkeus * 0.8, pelaaja3Kone1, pelaaja3Kone1Tykki); 
     219        Pelaaja pelaaja3 = new Pelaaja(leveys * 0.8, korkeus * 0.8, pelaaja3Kone1, pelaaja3Kone1Tykki, rajahdysKuva, liekkiKuva); 
    125220        pelaaja3.AngularDamping = 0.95; 
    126221        pelaaja3.Position = paikka; 
    127222        ControllerThree.ListenAnalog(AnalogControl.LeftStick, 0.0, KaannaPelaajaa, "", pelaaja3); 
    128223        ControllerThree.ListenAnalog(AnalogControl.RightStick, 0.0, KaannaTykkia, "", pelaaja3); 
    129         ControllerThree.Listen(Button.RightTrigger, ButtonState.Pressed, Ammu, "", pelaaja3); 
     224        ControllerThree.Listen(Button.RightTrigger, ButtonState.Down, Ammu, "", pelaaja3, "perus"); 
     225        ControllerThree.Listen(Button.LeftTrigger, ButtonState.Pressed, Ammu, "", pelaaja3, "raketti"); 
     226        ControllerThree.Listen(Button.RightShoulder, ButtonState.Down, Ammu, "", pelaaja3, "pallo"); 
     227        ControllerThree.Listen(Button.LeftShoulder, ButtonState.Pressed, Boosti, "", pelaaja3); 
    130228        Add(pelaaja3); 
    131229    } 
     
    133231    void LuoPelaaja4(Vector paikka, double leveys, double korkeus) 
    134232    { 
    135         Pelaaja pelaaja4 = new Pelaaja(leveys * 0.8, korkeus *0.8, pelaaja4Kone1, pelaaja4Kone1Tykki); 
     233        Pelaaja pelaaja4 = new Pelaaja(leveys * 0.8, korkeus * 0.8, pelaaja4Kone1, pelaaja4Kone1Tykki, rajahdysKuva, liekkiKuva); 
    136234        pelaaja4.AngularDamping = 0.95; 
    137235        pelaaja4.Position = paikka; 
    138236        ControllerFour.ListenAnalog(AnalogControl.LeftStick, 0.0, KaannaPelaajaa, "", pelaaja4); 
    139237        ControllerFour.ListenAnalog(AnalogControl.RightStick, 0.0, KaannaTykkia, "", pelaaja4); 
    140         ControllerFour.Listen(Button.RightTrigger, ButtonState.Pressed, Ammu, "", pelaaja4); 
     238        ControllerFour.Listen(Button.RightTrigger, ButtonState.Down, Ammu, "", pelaaja4, "perus"); 
     239        ControllerFour.Listen(Button.LeftTrigger, ButtonState.Pressed, Ammu, "", pelaaja4, "raketti"); 
     240        ControllerFour.Listen(Button.RightShoulder, ButtonState.Pressed, Ammu, "", pelaaja4, "pallo"); 
     241        ControllerFour.Listen(Button.LeftShoulder, ButtonState.Pressed, Boosti, "", pelaaja4); 
    141242        Add(pelaaja4); 
    142243    } 
     
    146247        ProgressBar elamaPalkki = new ProgressBar(150, 20); 
    147248        elamaPalkki.BindTo(pelaaja.healthit); 
    148          
     249 
    149250        Timer ajastin = new Timer(); 
    150251        ajastin.Interval = 0.01; 
     
    155256 
    156257        ajastin.Start(); 
    157         //Add(elamaPalkki); 
    158     } 
    159  
    160  
    161     void LiikutaPelaajaa(Vector vektori, PhysicsObject pelaaja) 
    162     { 
    163         pelaaja.Push(vektori); 
    164258    } 
    165259 
     
    168262        Angle vanhaKulma = pelaaja.Angle; 
    169263        pelaaja.Angle = tatinTila.StateVector.Angle; 
     264 
     265        Angle kulmanMuutos = pelaaja.Angle - vanhaKulma; 
     266 
     267        if (pelaaja.telaJaljetLimit) 
     268        { 
     269            pelaaja.telaJaljetLimit = false; 
     270 
     271            GameObject telaJaljet = new GameObject(telaJaljetKuva); 
     272            telaJaljet.Angle = pelaaja.Angle; 
     273            telaJaljet.Position = pelaaja.Position; 
     274            Add(telaJaljet, -1); 
     275 
     276            Timer.SingleShot(0.05, delegate { pelaaja.telaJaljetLimit = true; }); 
     277 
     278            Timer.SingleShot(RandomGen.NextDouble(2.0, 20.0), delegate { telaJaljet.Destroy(); }); 
     279        } 
     280 
     281        pelaaja.Push(tatinTila.StateVector * maxNopeus); 
     282 
     283    } 
     284 
     285    void KaannaTykkia(AnalogState tatinTila, Pelaaja pelaaja) 
     286    { 
     287        pelaaja.Ase.AbsoluteAngle = tatinTila.StateVector.Angle; 
     288    } 
     289 
     290    void Ammu(Pelaaja pelaaja, String ammusTyyppi) 
     291    { 
     292 
     293        PhysicsObject ammus = pelaaja.Ase.Shoot(); 
     294        if (ammus != null) 
     295        { 
     296            switch (ammusTyyppi) 
     297            { 
     298                case "perus": 
     299                    ammusAani.Play(); 
     300                    ammus.Image = perusAmmus; 
     301                    ammus.Tag = "perusAmmus"; 
     302                    AddCollisionHandler(ammus, delegate(PhysicsObject a, PhysicsObject b) 
     303                    { 
     304                        a.Destroy(); 
     305                    }); 
     306                    pelaaja.Ase.FireRate = 10; 
     307                    break; 
     308                case "raketti": 
     309                    raketinAani.Play(); 
     310                    ammus.Image = rakettiKuva; 
     311                    ammus.Tag = "raketti"; 
     312                    ammus.Size *= 2; 
     313                    AddCollisionHandler(ammus, delegate(PhysicsObject a, PhysicsObject b) 
     314                    { 
     315                        a.Destroy(); 
     316                        Explosion rajahdys = new Explosion(140); 
     317                        rajahdys.Position = a.Position; 
     318                        rajahdys.ShockwaveReachesObject += RajahdysOsuu; 
     319                        Add(rajahdys); 
     320                        raketinAani.Stop(); 
     321                    }); 
     322                    pelaaja.Ase.FireRate = 1; 
     323                    break; 
     324                case "pallo": 
     325                    palloAani.Play(); 
     326                    ammus.Image = palloKuva; 
     327                    ammus.Tag = "pallo"; 
     328                    ammus.Size *= 4; 
     329                    ammus.MaximumLifetime = new TimeSpan(0, 0, 4); 
     330                    pelaaja.Ase.FireRate = 0.5; 
     331                    break; 
     332                default: 
     333                    break; 
     334            } 
     335 
     336            ammus.Position += pelaaja.Ase.Angle.GetVector() * 70; 
     337 
     338 
     339        } 
     340 
     341    } 
     342 
     343    void RajahdysOsuu(IPhysicsObject olio, Vector suunta) 
     344    { 
     345        if (olio.Tag.Equals("pelaaja")) 
     346        { 
     347            ((Pelaaja)olio).healthit.Value -= 12; 
     348            ((Pelaaja)olio).SavuLiekki(); 
     349        } 
     350    } 
     351 
     352    void Boosti(Pelaaja pelaaja) 
     353    { 
     354        if (pelaaja.boosti) 
     355        { 
     356            pelaaja.boosti = false; 
     357            pelaaja.Hit(pelaaja.Angle.GetVector() * 1000); 
     358            Timer.SingleShot(5, delegate 
     359            { 
     360                pelaaja.boosti = true; 
     361            }); 
     362        } 
    170363         
    171         Angle kulmanMuutos = pelaaja.Angle - vanhaKulma; 
    172  
    173         pelaaja.Ase.AbsoluteAngle -= kulmanMuutos;  
    174         //pelaaja.elamaPalkki.AbsoluteAngle; 
    175      
    176         pelaaja.Push(tatinTila.StateVector * maxNopeus); 
    177  
    178     } 
    179  
    180     void KaannaTykkia(AnalogState tatinTila, Pelaaja pelaaja) 
    181     { 
    182         pelaaja.Ase.AbsoluteAngle = tatinTila.StateVector.Angle; 
    183     } 
    184  
    185     void Ammu(Pelaaja pelaaja) 
    186     { 
    187          
    188         PhysicsObject ammus = pelaaja.Ase.Shoot(); 
    189         if (ammus!=null) 
    190         { 
    191             ammusAani.Play(); 
    192             ammus.Image = perusAmmus; 
    193             ammus.Tag = "ammus"; 
    194             AddCollisionHandler(ammus, delegate(PhysicsObject a, PhysicsObject b) 
    195             { 
    196                 a.Destroy(); 
    197             }); 
    198         } 
    199  
    200364    } 
    201365} 
  • 2015/27/AakeR/IMBT/IMBT/IMBT/IMBT.csproj.Debug.cachefile

    r6657 r6762  
    1010Content\Pelaaja3Kone1Tykki.xnb 
    1111Content\Pelaaja4Kone1Tykki.xnb 
     12Content\Kone1PerusAmmus.xnb 
    1213Content\AmmusÄÀni.xnb 
    13 Content\Kone1PerusAmmus.xnb 
     14Content\KimpoilevaPallo.xnb 
     15Content\Raketti.xnb 
     16Content\RenkaidenJÀljet.xnb 
     17Content\Rajahdys.xnb 
     18Content\Liekki.xnb 
     19Content\RakettiAani.xnb 
     20Content\PalloAani.xnb 
  • 2015/27/AakeR/IMBT/IMBT/IMBT/obj/x86/Debug/IMBT.csproj.FileListAbsolute.txt

    r6657 r6762  
    2020C:\MyTemp\AakeR\IMBT\IMBT\IMBT\bin\x86\Debug\Content\AmmusÄÀni.xnb 
    2121C:\MyTemp\AakeR\IMBT\IMBT\IMBT\bin\x86\Debug\Content\Kone1PerusAmmus.xnb 
     22C:\MyTemp\AakeR\IMBT\IMBT\IMBT\bin\x86\Debug\Content\KimpoilevaPallo.xnb 
     23C:\MyTemp\AakeR\IMBT\IMBT\IMBT\bin\x86\Debug\Content\Raketti.xnb 
     24C:\MyTemp\AakeR\IMBT\IMBT\IMBT\bin\x86\Debug\Content\RenkaidenJÀljet.xnb 
     25C:\MyTemp\AakeR\IMBT\IMBT\IMBT\bin\x86\Debug\Content\Rajahdys.xnb 
     26C:\MyTemp\AakeR\IMBT\IMBT\IMBT\bin\x86\Debug\Content\Liekki.xnb 
     27C:\MyTemp\AakeR\IMBT\IMBT\IMBT\bin\x86\Debug\Content\RakettiAani.xnb 
     28C:\MyTemp\AakeR\IMBT\IMBT\IMBT\bin\x86\Debug\Content\PalloAani.xnb 
  • 2015/27/AakeR/IMBT/IMBT/IMBT/obj/x86/Debug/cachefile-{B6A1F4C9-F2E2-4290-A5B5-3717058CC989}-targetpath.txt

    r6657 r6762  
    1010Content\Pelaaja3Kone1Tykki.xnb 
    1111Content\Pelaaja4Kone1Tykki.xnb 
     12Content\Kone1PerusAmmus.xnb 
    1213Content\AmmusÄÀni.xnb 
    13 Content\Kone1PerusAmmus.xnb 
     14Content\KimpoilevaPallo.xnb 
     15Content\Raketti.xnb 
     16Content\RenkaidenJÀljet.xnb 
     17Content\Rajahdys.xnb 
     18Content\Liekki.xnb 
     19Content\RakettiAani.xnb 
     20Content\PalloAani.xnb 
  • 2015/27/AakeR/IMBT/IMBT/IMBTContent/IMBTContent.contentproj

    r6657 r6762  
    124124    </Compile> 
    125125  </ItemGroup> 
     126  <ItemGroup> 
     127    <Compile Include="KimpoilevaPallo.png"> 
     128      <Name>KimpoilevaPallo</Name> 
     129      <Importer>TextureImporter</Importer> 
     130      <Processor>TextureProcessor</Processor> 
     131    </Compile> 
     132    <Compile Include="Raketti.png"> 
     133      <Name>Raketti</Name> 
     134      <Importer>TextureImporter</Importer> 
     135      <Processor>TextureProcessor</Processor> 
     136    </Compile> 
     137  </ItemGroup> 
     138  <ItemGroup> 
     139    <Compile Include="RenkaidenJäljet.png"> 
     140      <Name>RenkaidenJäljet</Name> 
     141      <Importer>TextureImporter</Importer> 
     142      <Processor>TextureProcessor</Processor> 
     143    </Compile> 
     144  </ItemGroup> 
     145  <ItemGroup> 
     146    <Compile Include="Rajahdys.png"> 
     147      <Name>Rajahdys</Name> 
     148      <Importer>TextureImporter</Importer> 
     149      <Processor>TextureProcessor</Processor> 
     150    </Compile> 
     151  </ItemGroup> 
     152  <ItemGroup> 
     153    <Compile Include="Liekki.png"> 
     154      <Name>Liekki</Name> 
     155      <Importer>TextureImporter</Importer> 
     156      <Processor>TextureProcessor</Processor> 
     157    </Compile> 
     158  </ItemGroup> 
     159  <ItemGroup> 
     160    <Compile Include="RakettiAani.wav"> 
     161      <Name>RakettiAani</Name> 
     162      <Importer>WavImporter</Importer> 
     163      <Processor>SoundEffectProcessor</Processor> 
     164    </Compile> 
     165  </ItemGroup> 
     166  <ItemGroup> 
     167    <Compile Include="PalloAani.wav"> 
     168      <Name>PalloAani</Name> 
     169      <Importer>WavImporter</Importer> 
     170      <Processor>SoundEffectProcessor</Processor> 
     171    </Compile> 
     172  </ItemGroup> 
    126173  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    127174  <!--  To modify your build process, add your task inside one of the targets below and uncomment it.  
Note: See TracChangeset for help on using the changeset viewer.