Changeset 8024 for 2016/27


Ignore:
Timestamp:
2016-07-08 11:18:59 (3 years ago)
Author:
oslahtin
Message:

valmis peli. TODO: uploadaa Githubiin

Location:
2016/27/OskariL
Files:
10 added
11 edited

Legend:

Unmodified
Added
Removed
  • 2016/27/OskariL/Ikaros Project 1/Ikaros Project 1/Ikaros Project 1Content/Ikaros Project 1Content.contentproj

    r7954 r8024  
    7373    </Compile> 
    7474  </ItemGroup> 
     75  <ItemGroup> 
     76    <Compile Include="ammusOsui.wav"> 
     77      <Name>ammusOsui</Name> 
     78      <Importer>WavImporter</Importer> 
     79      <Processor>SoundEffectProcessor</Processor> 
     80    </Compile> 
     81  </ItemGroup> 
     82  <ItemGroup> 
     83    <Compile Include="rajahdysAani.wav"> 
     84      <Name>rajahdysAani</Name> 
     85      <Importer>WavImporter</Importer> 
     86      <Processor>SoundEffectProcessor</Processor> 
     87    </Compile> 
     88  </ItemGroup> 
     89  <ItemGroup> 
     90    <Compile Include="taustamusiikki.mp3"> 
     91      <Name>taustamusiikki</Name> 
     92      <Importer>Mp3Importer</Importer> 
     93      <Processor>SongProcessor</Processor> 
     94    </Compile> 
     95  </ItemGroup> 
    7596  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    7697  <!--  To modify your build process, add your task inside one of the targets below and uncomment it.  
  • 2016/27/OskariL/Ikaros Project 1/Ikaros Project 1/Ikaros_Project_1/Ikaros_Project_1.cs

    r7954 r8024  
    1111    Boolean AlkuvalikkoKayty = false; 
    1212    Boolean isTimerRunning = false; 
     13    Boolean voititPelin = false; 
    1314    Image ikaros = LoadImage("ikaros"); 
    1415    Image siipi = LoadImage("siipi"); 
    1516    Image vihu1 = LoadImage("vihu1"); 
    1617    Image pommi = LoadImage("pommi"); 
     18    SoundEffect ammusOsuu = LoadSoundEffect("ammusOsui"); 
     19    SoundEffect rajahdysAani = LoadSoundEffect("rajahdysAani"); 
    1720    PhysicsObject pelaaja; 
    1821    PhysicsObject ammus; 
     
    5659       } 
    5760       ClearAll(); 
     61       voititPelin = false; 
    5862       isTimerRunning = false; 
    5963       LuoAikaLaskuri(); 
     
    8993        LuoVaakaSeina(-300.0, Level.Bottom - 80); 
    9094        LuoVaakaSeina(-300.0, Level.Top + 90); 
    91         Level.Background.CreateGradient(Color.DarkAzure, Color.Black); 
     95        Level.Background.CreateGradient(Color.Black, Color.DarkAzure); 
    9296        Level.AmbientLight = 0.65; 
    9397        Light valo = new Light(); 
     
    101105        LuoPahis1(); 
    102106        LuoPahis2(Level.Right - 600.0, Level.Top - 250); 
     107        MediaPlayer.Play("taustamusiikki"); 
     108        MediaPlayer.Volume = 1.0; 
     109        MediaPlayer.IsRepeating = true; 
    103110    } 
    104111    void LuoPelaaja() 
     
    170177         
    171178        pikkuPahiksenElama = new Label(); 
    172         pikkuPahiksenElama.Title = "Pienet pahikset:"; 
     179        pikkuPahiksenElama.Title = "Pommin elämät:"; 
    173180        pikkuPahiksenElama.X = pelaaja.X + 600; 
    174181        pikkuPahiksenElama.Y = pelaaja.Y + 90; 
     
    295302        { 
    296303            PelaajanElamat.Value -= 1; 
     304            ammusOsuu.Play(); 
    297305            if (PelaajanElamat == 0) 
    298306            { 
    299307                pelaaja.Destroy(); 
     308                rajahdysAani.Play(); 
    300309                alaspainLaskuri.Stop(); 
    301310                GameOver2 = new MessageWindow("Hävisit pelin!"); 
     
    315324        { 
    316325            pahis.Destroy(); 
     326            voititPelin = true; 
    317327            //YouWon = new MessageWindow("Voitit pelin"); 
    318328            //Add(YouWon); 
     
    362372    void AikaLoppui() 
    363373    { 
    364         pahisVari = RandomGen.NextColor(); 
    365         pahisVari2 = RandomGen.NextColor(); 
    366         pahisVari3 = RandomGen.NextColor(); 
    367         pahisVari4 = RandomGen.NextColor(); 
    368         alaspainLaskuri.Value -= 0.2; 
    369         if (alaspainLaskuri.Value >= 0) 
    370         { 
    371             LuoAmmus(RandomGen.NextDouble(Level.Right - 450, Level.Right + 450), Level.Bottom - 100, RandomGen.SelectOne(Shape.Diamond, Shape.Ellipse, Shape.Hexagon), Color.Cyan, 2, true); 
    372             ammus.Hit(new Vector(0.0, RandomGen.NextDouble(5.0, 50.0))); 
    373             LuoAmmus(RandomGen.NextDouble(Level.Right - 450, Level.Right + 450), Level.Bottom - 100, RandomGen.SelectOne(Shape.Diamond, Shape.Ellipse, Shape.Hexagon), Color.Cyan, 2, true); 
    374             ammus.Hit(new Vector(0.0, RandomGen.NextDouble(5.0, 50.0))); 
    375             LuoAmmus(RandomGen.NextDouble(Level.Left - 450, Level.Left - 150), Level.Bottom - 100, RandomGen.SelectOne(Shape.Diamond, Shape.Ellipse, Shape.Hexagon), Color.Cyan, 2, true); 
    376             ammus.Hit(new Vector(0.0, RandomGen.NextDouble(5.0, 50.0))); 
    377  
    378             LuoAmmus(pelaaja.X, pelaaja.Y + 150, Shape.Star, Color.Azure, 2, false); 
    379             ammus.Hit(RandomGen.NextVector(-100.0, 100.0)); 
    380             if (alaspainLaskuri.Value <= 60 && 3 <= ShieldTimes) 
    381             { 
    382                 LuoAmmus(pahis1.X, pahis1.Y + 50.0, Shape.Circle, Color.Aquamarine, 2, false); 
     374        if (voititPelin == false) 
     375        { 
     376            pahisVari = RandomGen.NextColor(); 
     377            pahisVari2 = RandomGen.NextColor(); 
     378            pahisVari3 = RandomGen.NextColor(); 
     379            pahisVari4 = RandomGen.NextColor(); 
     380            alaspainLaskuri.Value -= 0.2; 
     381            if (alaspainLaskuri.Value >= 0) 
     382            { 
     383                LuoAmmus(RandomGen.NextDouble(Level.Right - 450, Level.Right + 450), Level.Bottom - 100, RandomGen.SelectOne(Shape.Diamond, Shape.Ellipse, Shape.Hexagon), Color.Cyan, 2, true); 
     384                ammus.Hit(new Vector(0.0, RandomGen.NextDouble(5.0, 50.0))); 
     385                LuoAmmus(RandomGen.NextDouble(Level.Right - 450, Level.Right + 450), Level.Bottom - 100, RandomGen.SelectOne(Shape.Diamond, Shape.Ellipse, Shape.Hexagon), Color.Cyan, 2, true); 
     386                ammus.Hit(new Vector(0.0, RandomGen.NextDouble(5.0, 50.0))); 
     387                LuoAmmus(RandomGen.NextDouble(Level.Left - 450, Level.Left - 150), Level.Bottom - 100, RandomGen.SelectOne(Shape.Diamond, Shape.Ellipse, Shape.Hexagon), Color.Cyan, 2, true); 
     388                ammus.Hit(new Vector(0.0, RandomGen.NextDouble(5.0, 50.0))); 
     389 
     390                LuoAmmus(pelaaja.X, pelaaja.Y + 150, Shape.Star, Color.Azure, 2, false); 
     391                ammus.Hit(RandomGen.NextVector(-100.0, 100.0)); 
     392                if (alaspainLaskuri.Value <= 60 && 3 <= ShieldTimes) 
     393                { 
     394                    LuoAmmus(pahis1.X, pahis1.Y + 50.0, Shape.Circle, Color.Aquamarine, 2, false); 
     395                    LuoAmmus(pahis1.X, pahis1.Y - 50.0, Shape.Circle, Color.Aquamarine, 2, false); 
     396                    LuoAmmus(pahis1.X + 20.0, pahis1.Y - 40.0, Shape.Circle, Color.Aquamarine, 2, false); 
     397                    LuoAmmus(pahis1.X - 20.0, pahis1.Y - 40.0, Shape.Circle, Color.Aquamarine, 2, false); 
     398                    LuoAmmus(pahis1.X + 40.0, pahis1.Y - 20.0, Shape.Circle, Color.Aquamarine, 2, false); 
     399                    LuoAmmus(pahis1.X - 40.0, pahis1.Y - 20.0, Shape.Circle, Color.Aquamarine, 2, false); 
     400                    LuoAmmus(pahis1.X + 50.0, pahis1.Y, Shape.Circle, Color.Aquamarine, 2, false); 
     401                    LuoAmmus(pahis1.X - 50.0, pahis1.Y, Shape.Circle, Color.Aquamarine, 2, false); 
     402                    LuoAmmus(pahis1.X + 40.0, pahis1.Y + 20.0, Shape.Circle, Color.Aquamarine, 2, false); 
     403                    LuoAmmus(pahis1.X - 40.0, pahis1.Y + 20.0, Shape.Circle, Color.Aquamarine, 2, false); 
     404                    LuoAmmus(pahis1.X + 20.0, pahis1.Y + 40.0, Shape.Circle, Color.Aquamarine, 2, false); 
     405                    LuoAmmus(pahis1.X - 20.0, pahis1.Y + 40.0, Shape.Circle, Color.Aquamarine, 2, false); 
     406                    ammus.Hit(new Vector(0.0, 5.0)); 
     407                    ShieldTimes++; 
     408                } 
     409            } 
     410            if (30 == alaspainLaskuri.Value) 
     411            { 
     412                LuoPahis2(pelaaja.X, pahis1.Y - 50); 
     413            } 
     414            if (40 >= alaspainLaskuri.Value) 
     415            { 
     416                LuoAmmus(pelaaja.X - 150, pelaaja.Y - 150, Shape.Circle, Color.RosePink, 2, false); 
     417                ammus.Hit(RandomGen.NextVector(-100.0, 100.0)); 
     418                LuoAmmus(pelaaja.X - 150, pelaaja.Y + 150, Shape.Triangle, Color.OrangeRed, 2, false); 
     419                ammus.Hit(RandomGen.NextVector(-100.0, 100.0)); 
     420                LuoAmmus(pelaaja.X + 150, pelaaja.Y - 150, Shape.Hexagon, Color.Olive, 2, false); 
     421                ammus.Hit(RandomGen.NextVector(-100.0, 100.0)); 
     422                LuoAmmus(pelaaja.X + 150, pelaaja.Y + 150, Shape.Star, Color.Azure, 2, false); 
     423                ammus.Hit(RandomGen.NextVector(-100.0, 100.0)); 
     424 
     425                LuoAmmus(pahis1.X, pahis1.Y - 50, Shape.Circle, Color.BrightGreen, 2, false); 
     426                ammus.Hit(new Vector(0.0, -130.0)); 
    383427                LuoAmmus(pahis1.X, pahis1.Y - 50.0, Shape.Circle, Color.Aquamarine, 2, false); 
    384                 LuoAmmus(pahis1.X + 20.0, pahis1.Y - 40.0, Shape.Circle, Color.Aquamarine, 2, false); 
    385                 LuoAmmus(pahis1.X - 20.0, pahis1.Y - 40.0, Shape.Circle, Color.Aquamarine, 2, false); 
    386                 LuoAmmus(pahis1.X + 40.0, pahis1.Y - 20.0, Shape.Circle, Color.Aquamarine, 2, false); 
    387                 LuoAmmus(pahis1.X - 40.0, pahis1.Y - 20.0, Shape.Circle, Color.Aquamarine, 2, false); 
    388                 LuoAmmus(pahis1.X + 50.0, pahis1.Y, Shape.Circle, Color.Aquamarine, 2, false); 
    389                 LuoAmmus(pahis1.X - 50.0, pahis1.Y, Shape.Circle, Color.Aquamarine, 2, false); 
    390                 LuoAmmus(pahis1.X + 40.0, pahis1.Y + 20.0, Shape.Circle, Color.Aquamarine, 2, false); 
    391                 LuoAmmus(pahis1.X - 40.0, pahis1.Y + 20.0, Shape.Circle, Color.Aquamarine, 2, false); 
    392                 LuoAmmus(pahis1.X + 20.0, pahis1.Y + 40.0, Shape.Circle, Color.Aquamarine, 2, false); 
    393                 LuoAmmus(pahis1.X - 20.0, pahis1.Y + 40.0, Shape.Circle, Color.Aquamarine, 2, false); 
    394                 ammus.Hit(new Vector(0.0, 5.0)); 
    395                 ShieldTimes++; 
    396             } 
    397         } 
    398         if (40 >= alaspainLaskuri.Value) 
    399         { 
    400             LuoAmmus(pelaaja.X - 150, pelaaja.Y -150, Shape.Circle, Color.RosePink, 2, false); 
    401             ammus.Hit(RandomGen.NextVector(-100.0, 100.0)); 
    402             LuoAmmus(pelaaja.X - 150, pelaaja.Y + 150, Shape.Triangle, Color.OrangeRed, 2, false); 
    403             ammus.Hit(RandomGen.NextVector(-100.0, 100.0)); 
    404             LuoAmmus(pelaaja.X + 150, pelaaja.Y - 150, Shape.Hexagon, Color.Olive, 2, false); 
    405             ammus.Hit(RandomGen.NextVector(-100.0, 100.0)); 
    406             LuoAmmus(pelaaja.X + 150, pelaaja.Y + 150, Shape.Star, Color.Azure, 2, false); 
    407             ammus.Hit(RandomGen.NextVector(-100.0, 100.0)); 
    408  
    409  
    410             LuoAmmus(pahis1.X, pahis1.Y - 50, Shape.Circle, Color.BrightGreen, 2, false); 
    411             ammus.Hit(new Vector(0.0, -130.0)); 
    412             LuoAmmus(pahis1.X, pahis1.Y - 50.0, Shape.Circle, Color.Aquamarine, 2, false); 
    413             ammus.Hit(new Vector(50.0, -130.0)); 
    414             LuoAmmus(pahis1.X, pahis1.Y - 50.0, Shape.Circle, Color.Aquamarine, 2, false); 
    415             ammus.Hit(new Vector(-50.0, -130.0)); 
    416             LuoAmmus(pahis1.X, pahis1.Y - 50.0, Shape.Circle, Color.BrightGreen, 2, false); 
    417             ammus.Hit(new Vector(100.0, -130.0)); 
    418             LuoAmmus(pahis1.X, pahis1.Y - 50.0, Shape.Circle, Color.BrightGreen, 2, false); 
    419             ammus.Hit(new Vector(-100.0, -130.0)); 
    420  
    421         } 
    422         if (alaspainLaskuri.Value >= 20) 
    423         { 
    424             LuoAmmus(pelaaja.X - 150, pelaaja.Y, Shape.Circle, Color.RosePink, 2, false); 
    425             ammus.Hit(RandomGen.NextVector(-100.0, 100.0)); 
    426             LuoAmmus(pelaaja.X + 150, pelaaja.Y, Shape.Triangle, Color.OrangeRed, 2, false); 
    427             ammus.Hit(RandomGen.NextVector(-100.0, 100.0)); 
    428             LuoAmmus(pelaaja.X, pelaaja.Y - 150, Shape.Hexagon, Color.Olive, 2, false); 
    429             ammus.Hit(RandomGen.NextVector(-100.0, 100.0)); 
    430  
    431         } 
    432         if (alaspainLaskuri.Value <= 0) 
    433         { 
    434             alaspainLaskuri.Stop(); 
    435             isTimerRunning = false; 
    436             GameOver = new MessageWindow("Hävisit pelin"); 
    437             Add(GameOver); 
    438             Exit(); 
    439             //while (i < 10) 
    440             //{ 
    441             //    LuoAmmus(pahis1.X, pahis1.Y - 100, Shape.Circle, pahisVari, 2); 
    442             //    ammus.Hit(RandomGen.NextVector(-30.0, 10.0)); 
    443             //    //LuoAmmus(pahis1.X, pahis1.Y + 100, Shape.Rectangle, pahisVari2, 2); 
    444             //    //ammus.Hit(RandomGen.NextVector(-300.0, 100.0)); 
    445             //    //LuoAmmus(pahis1.X + 100, pahis1.Y, Shape.Triangle, pahisVari3, 2); 
    446             //    //ammus.Hit(RandomGen.NextVector(-300.0, 300.0)); 
    447             //    //LuoAmmus(pahis1.X - 100, pahis1.Y, Shape.Star, pahisVari4, 2); 
    448             //    //ammus.Hit(RandomGen.NextVector(-300.0, 300.0)); 
    449             //    i++; 
    450             //} 
     428                ammus.Hit(new Vector(50.0, -130.0)); 
     429                LuoAmmus(pahis1.X, pahis1.Y - 50.0, Shape.Circle, Color.Aquamarine, 2, false); 
     430                ammus.Hit(new Vector(-50.0, -130.0)); 
     431                LuoAmmus(pahis1.X, pahis1.Y - 50.0, Shape.Circle, Color.BrightGreen, 2, false); 
     432                ammus.Hit(new Vector(100.0, -130.0)); 
     433                LuoAmmus(pahis1.X, pahis1.Y - 50.0, Shape.Circle, Color.BrightGreen, 2, false); 
     434                ammus.Hit(new Vector(-100.0, -130.0)); 
     435            } 
     436            if (alaspainLaskuri.Value >= 20) 
     437            { 
     438                LuoAmmus(pelaaja.X - 150, pelaaja.Y, Shape.Circle, Color.RosePink, 2, false); 
     439                ammus.Hit(RandomGen.NextVector(-100.0, 100.0)); 
     440                LuoAmmus(pelaaja.X + 150, pelaaja.Y, Shape.Triangle, Color.OrangeRed, 2, false); 
     441                ammus.Hit(RandomGen.NextVector(-100.0, 100.0)); 
     442                LuoAmmus(pelaaja.X, pelaaja.Y - 150, Shape.Hexagon, Color.Olive, 2, false); 
     443                ammus.Hit(RandomGen.NextVector(-100.0, 100.0)); 
     444 
     445            } 
     446            if (alaspainLaskuri.Value <= 0) 
     447            { 
     448                alaspainLaskuri.Stop(); 
     449                isTimerRunning = false; 
     450                GameOver = new MessageWindow("Hävisit pelin"); 
     451                Add(GameOver); 
     452                Exit(); 
     453                //while (i < 10) 
     454                //{ 
     455                //    LuoAmmus(pahis1.X, pahis1.Y - 100, Shape.Circle, pahisVari, 2); 
     456                //    ammus.Hit(RandomGen.NextVector(-30.0, 10.0)); 
     457                //    //LuoAmmus(pahis1.X, pahis1.Y + 100, Shape.Rectangle, pahisVari2, 2); 
     458                //    //ammus.Hit(RandomGen.NextVector(-300.0, 100.0)); 
     459                //    //LuoAmmus(pahis1.X + 100, pahis1.Y, Shape.Triangle, pahisVari3, 2); 
     460                //    //ammus.Hit(RandomGen.NextVector(-300.0, 300.0)); 
     461                //    //LuoAmmus(pahis1.X - 100, pahis1.Y, Shape.Star, pahisVari4, 2); 
     462                //    //ammus.Hit(RandomGen.NextVector(-300.0, 300.0)); 
     463                //    i++; 
     464                //} 
     465            } 
    451466        } 
    452467    } 
  • 2016/27/OskariL/Ikaros Project 1/Ikaros Project 1/Ikaros_Project_1/Ikaros_Project_1.csproj.Debug.cachefile

    r7954 r8024  
    33Content\vihu1.xnb 
    44Content\pommi.xnb 
     5Content\ammusOsui.xnb 
     6Content\rajahdysAani.xnb 
     7Content\taustamusiikki.xnb 
     8Content\taustamusiikki.wma 
  • 2016/27/OskariL/Ikaros Project 1/Ikaros Project 1/Ikaros_Project_1/obj/x86/Debug/ContentPipeline-{7420C726-1CE8-4AAD-880B-4E5D6E4E44DB}.xml

    r7954 r8024  
    3737      <Output>C:\MyTemp\OskariL\Ikaros Project 1\Ikaros Project 1\Ikaros_Project_1\bin\x86\Debug\Content\pommi.xnb</Output> 
    3838      <Time>2016-07-07T13:32:26.9298657+03:00</Time> 
     39    </Item> 
     40    <Item> 
     41      <Source>ammusOsui.wav</Source> 
     42      <Name>ammusOsui</Name> 
     43      <Importer>WavImporter</Importer> 
     44      <Processor>SoundEffectProcessor</Processor> 
     45      <Options>None</Options> 
     46      <Output>C:\MyTemp\OskariL\Ikaros Project 1\Ikaros Project 1\Ikaros_Project_1\bin\x86\Debug\Content\ammusOsui.xnb</Output> 
     47      <Time>2016-07-08T09:48:51.59466+03:00</Time> 
     48    </Item> 
     49    <Item> 
     50      <Source>rajahdysAani.wav</Source> 
     51      <Name>rajahdysAani</Name> 
     52      <Importer>WavImporter</Importer> 
     53      <Processor>SoundEffectProcessor</Processor> 
     54      <Options>None</Options> 
     55      <Output>C:\MyTemp\OskariL\Ikaros Project 1\Ikaros Project 1\Ikaros_Project_1\bin\x86\Debug\Content\rajahdysAani.xnb</Output> 
     56      <Time>2016-07-08T09:50:14.45266+03:00</Time> 
     57    </Item> 
     58    <Item> 
     59      <Source>taustamusiikki.mp3</Source> 
     60      <Name>taustamusiikki</Name> 
     61      <Importer>Mp3Importer</Importer> 
     62      <Processor>SongProcessor</Processor> 
     63      <Options>None</Options> 
     64      <Output>C:\MyTemp\OskariL\Ikaros Project 1\Ikaros Project 1\Ikaros_Project_1\bin\x86\Debug\Content\taustamusiikki.xnb</Output> 
     65      <Extra>C:\MyTemp\OskariL\Ikaros Project 1\Ikaros Project 1\Ikaros_Project_1\bin\x86\Debug\Content\taustamusiikki.wma</Extra> 
     66      <Time>2016-07-08T10:25:00.05766+03:00</Time> 
    3967    </Item> 
    4068    <BuildSuccessful>true</BuildSuccessful> 
  • 2016/27/OskariL/Ikaros Project 1/Ikaros Project 1/Ikaros_Project_1/obj/x86/Debug/Ikaros_Project_1.csproj.FileListAbsolute.txt

    r7954 r8024  
    1111C:\MyTemp\OskariL\Ikaros Project 1\Ikaros Project 1\Ikaros_Project_1\bin\x86\Debug\Content\vihu1.xnb 
    1212C:\MyTemp\OskariL\Ikaros Project 1\Ikaros Project 1\Ikaros_Project_1\bin\x86\Debug\Content\pommi.xnb 
     13C:\MyTemp\OskariL\Ikaros Project 1\Ikaros Project 1\Ikaros_Project_1\bin\x86\Debug\Content\ammusOsui.xnb 
     14C:\MyTemp\OskariL\Ikaros Project 1\Ikaros Project 1\Ikaros_Project_1\bin\x86\Debug\Content\rajahdysAani.xnb 
     15C:\MyTemp\OskariL\Ikaros Project 1\Ikaros Project 1\Ikaros_Project_1\bin\x86\Debug\Content\taustamusiikki.xnb 
     16C:\MyTemp\OskariL\Ikaros Project 1\Ikaros Project 1\Ikaros_Project_1\bin\x86\Debug\Content\taustamusiikki.wma 
  • 2016/27/OskariL/Ikaros Project 1/Ikaros Project 1/Ikaros_Project_1/obj/x86/Debug/cachefile-{7420C726-1CE8-4AAD-880B-4E5D6E4E44DB}-targetpath.txt

    r7954 r8024  
    33Content\vihu1.xnb 
    44Content\pommi.xnb 
     5Content\ammusOsui.xnb 
     6Content\rajahdysAani.xnb 
     7Content\taustamusiikki.xnb 
     8Content\taustamusiikki.wma 
Note: See TracChangeset for help on using the changeset viewer.