Ignore:
Timestamp:
2012-06-13 21:27:16 (8 years ago)
Author:
mijoliim
Message:
 
Location:
2012/24/MikkoL/JormaKalevi
Files:
10 added
15 edited

Legend:

Unmodified
Added
Removed
  • 2012/24/MikkoL/JormaKalevi/JormaKalevi/JormaKalevi/JormaKalevi.cs

    r3008 r3012  
    1515    PlatformCharacter jorma; 
    1616 
     17    bool onkoFullscreen = new bool(); 
     18 
    1719    //Kenttanumero 
    1820    int kentanNumero = 1; 
     
    2931    List<Label> valikko1 = new List<Label>(); 
    3032 
    31     //TODO: Vaihda pelaajan ja piikkien kuva 
    32     Image pelaajanKuva = LoadImage("norsu"); 
    33     Image piikkiKuva = LoadImage("tahti"); 
     33    //TODO: Kuvat  
     34        //Pelaaja 
     35        Image pelaajanKuva = LoadImage("norsu"); 
     36 
     37        //Hazardit 
     38        Image piikkiKuva = LoadImage("tahti"); 
     39 
     40        //Elamamittari 
     41        Image rastiKuva = LoadImage("rasti"); 
     42        Image sydanKuva = LoadImage("sydan"); 
    3443 
    3544    //TODO: Musiikit 
    3645 
    3746    //TODO: Aaniefektit 
     47    SoundEffect lisariAani = LoadSoundEffect("1-up"); 
     48    SoundEffect rajahdysAani = LoadSoundEffect("explosion"); 
     49    SoundEffect osumaAani = LoadSoundEffect("hurt"); 
    3850 
    3951    public override void Begin() 
    4052    { 
     53        SetWindowSize(640, 640, false); 
     54        onkoFullscreen = false; 
    4155        alkuvalikko(); 
    4256    } 
     
    5064        Level.Background.CreateGradient(Color.Blue, Color.DarkBlue); 
    5165 
    52         Label kohta1 = new Label("Play"); 
     66        Label kohta1 = new Label("Pelaa"); 
    5367        kohta1.Position = new Vector(0, 40); 
    5468        kohta1.Font = Font.DefaultLargeBold; 
    5569        valikko1.Add(kohta1); 
    5670 
    57         Label kohta2 = new Label("Exit"); 
     71        Label kohta2 = new Label("Poistu"); 
    5872        kohta2.Position = new Vector(0, -40); 
    5973        kohta2.Font = Font.DefaultLargeBold; 
     
    7488    void gameover() 
    7589    { 
    76         //TODO 
     90        Label game_over = new Label(150,50); 
     91        game_over.Text = "Game Over"; 
     92        game_over.TextColor = Color.White; 
     93        game_over.BorderColor = Color.Transparent; 
     94        game_over.Color = Color.Black; 
     95        Add(game_over); 
     96        Timer.SingleShot(4, uusiPeli); 
     97    } 
     98    void uusiPeli() 
     99    { 
     100        MultiSelectWindow valikko = new MultiSelectWindow("Game Over","Uusi peli", "Takaisin päävalikkoon"); 
     101        valikko.DefaultCancel = 1; 
     102        valikko.ItemSelected += uusiPeliToiminta; 
     103        Add(valikko); 
     104    } 
     105    void uusiPeliToiminta(int valinta) 
     106    { 
     107        switch (valinta) 
     108        { 
     109            case 0: 
     110                Alku(); 
     111                break; 
     112            case 1: 
     113                alkuvalikko(); 
     114                break; 
     115        }  
     116    } 
     117    void takaisinValikkoon() 
     118    { 
     119        MultiSelectWindow valikko = new MultiSelectWindow("Pause", "Jatka peliä", "Takaisin päävalikkoon"); 
     120        valikko.ItemSelected += takaisinValikkoonToiminta; 
     121        Add(valikko); 
     122    } 
     123    void takaisinValikkoonToiminta(int valinta) 
     124    { 
     125        switch (valinta) 
     126        { 
     127            case 0: 
     128                //Ei mitaan 
     129                break; 
     130            case 1: 
     131                alkuvalikko(); 
     132                break; 
     133        }  
    77134    } 
    78135 
     
    100157        ClearControls(); 
    101158        ClearWidgets(); 
    102  
    103         //RandomPainovoima(); 
     159        kentanNumero = 1; 
     160 
    104161        Gravity = new Vector(0, -240); 
    105162 
     
    109166 
    110167        Camera.Follow(jorma); 
    111         Camera.ZoomFactor = 1.2; 
     168        Camera.ZoomFactor = 6; 
    112169        Camera.StayInLevel = true; 
    113170    } 
     
    122179        kentta.SetTileMethod('|', liikkuvaTaso2); 
    123180        kentta.SetTileMethod('M', maali); 
     181        kentta.SetTileMethod('1', lisari); 
    124182        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO); 
    125183        Level.CreateBorders(); 
     
    137195 
    138196        Camera.Follow(jorma); 
    139         Camera.ZoomFactor = 1.2; 
     197        Camera.ZoomFactor = 6; 
    140198        Camera.StayInLevel = true; 
    141199    } 
     
    153211    void lisaaTaso(Vector paikka, double leveys, double korkeus) 
    154212    { 
    155         PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus); 
    156         taso.Position = paikka; 
    157         taso.Color = Color.Green; 
    158         taso.Tag = "taso"; 
    159         Add(taso); 
     213        luoPerusTaso(paikka, leveys, korkeus, "taso", null); 
    160214    } 
    161215    void tippuvaTaso(Vector paikka, double leveys, double korkeus) 
    162216    { 
    163         PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, 7.9); 
    164         taso.Position = paikka; 
    165         taso.Color = Color.Black; 
    166         AddCollisionHandler(taso, tippuvaTasoTormays); 
    167         taso.Tag = "tippuvaTaso"; 
    168         Add(taso); 
     217        luoTippuvaTaso(paikka, leveys, korkeus, "tippuvaTaso", null); 
    169218    } 
    170219    void liikkuvaTaso(Vector paikka, double leveys, double korkeus) 
    171220    { 
    172         luoLiikkuvaTaso(paikka, leveys, korkeus, "liikkuvaTaso", 15, 0); 
     221        luoLiikkuvaTaso(paikka, leveys, korkeus, "liikkuvaTaso", 15, 0, null); 
    173222    } 
    174223    void liikkuvaTaso2(Vector paikka, double leveys, double korkeus) 
    175224    { 
    176         luoLiikkuvaTaso(paikka, leveys, korkeus, "liikkuvaTaso2", 0, 15); 
     225        luoLiikkuvaTaso(paikka, leveys, korkeus, "liikkuvaTaso2", 0, 15, null); 
    177226    } 
    178227    void maali(Vector paikka, double leveys, double korkeus) 
     
    205254    } 
    206255 
    207     //Pelaajan ja nappainten lisäys, pelaajan liikkuminen ja tormays 
     256    //Lisäri 
     257    void lisari(Vector paikka, double leveys, double korkeus) 
     258    { 
     259        PhysicsObject lisari = PhysicsObject.CreateStaticObject(7, 7); 
     260        lisari.IgnoresCollisionResponse = true; 
     261        lisari.Position = paikka; 
     262        lisari.Color = Color.LightGreen; 
     263        lisari.Tag = "1-Up"; 
     264        AddCollisionHandler(lisari, lisarinSaanti); 
     265        Add(lisari); 
     266    } 
     267    void lisarinSaanti(IPhysicsObject lisari, PhysicsObject kohde) 
     268    { 
     269        if (kohde.Tag.ToString() == "") 
     270        { 
     271            lisariAani.Play(); 
     272            pelaajanElamat.Value = pelaajanElamat.Value + 1; 
     273            lisari.Destroy(); 
     274        } 
     275    } 
     276 
     277    //Pelaajan ja nappainten lisäys, pelaajan liikkuminen ja tormays, pelaajan muut ominaisuudet 
    208278    void lisaaPelaaja(Vector paikka, double leveys, double korkeus) 
    209279    { 
    210         jorma = new PlatformCharacter(6, korkeus); 
     280        jorma = new PlatformCharacter(leveys, korkeus); 
    211281        jorma.Position = paikka; 
    212282        jorma.Restitution = 0; 
     
    216286         
    217287        AddCollisionHandler(jorma, kasittelePelaajanTormays); 
    218         Add(jorma); 
     288        Add(jorma, -1); 
    219289    } 
    220290    void lisaaNappaimet() 
     
    222292        //Pelaajan ohjaus 
    223293        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
    224         Keyboard.Listen(Key.Escape, ButtonState.Pressed, alkuvalikko, "Palaa valikkoon"); 
     294        Keyboard.Listen(Key.F12, ButtonState.Pressed, fullscreen, "Fullscreen"); 
     295        Keyboard.Listen(Key.Escape, ButtonState.Pressed, takaisinValikkoon, "Pause"); 
    225296 
    226297        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", jorma, -nopeus); 
     
    230301        //Aseen kontrollointi 
    231302        Keyboard.Listen(Key.X, ButtonState.Pressed, Ammu, "Ammu"); 
     303        Keyboard.Listen(Key.Up, ButtonState.Down, aseenSuuntaylos, "Tähtää ylös"); 
     304        Keyboard.Listen(Key.Down, ButtonState.Down, aseenSuuntaalas, "Tähtää alas"); 
    232305        Keyboard.Listen(Key.Right, ButtonState.Down, aseenSuuntaoikea, "Tähtää oikealle"); 
    233306        Keyboard.Listen(Key.Left, ButtonState.Down, aseenSuuntavasen, "Tähtää vasemmalle"); 
    234         Keyboard.Listen(Key.Down, ButtonState.Down, aseenSuuntaalas, "Tähtää alas"); 
    235         Keyboard.Listen(Key.Up, ButtonState.Down, aseenSuuntaylos, "Tähtää ylös"); 
    236307 
    237308        //Reset 
     
    248319    void reset() 
    249320    { 
     321        kuolema(); 
     322    } 
     323    void kuolema() 
     324    { 
     325        rajahdysAani.Play(); 
     326        ClearControls(); 
    250327        jorma.Destroy(); 
    251328        pelaajanElamat.Value = pelaajanElamat - 1; 
    252         Timer.SingleShot(2, kentanLataus); 
     329        if (pelaajanElamat.Value == 0) 
     330        { 
     331            Timer.SingleShot(4, gameover); 
     332        } 
     333        else Timer.SingleShot(4, kentanLataus); 
     334        kuolinAnimaatio(new Vector(jorma.Position.X, jorma.Position.Y), new Vector(25, 0)); 
     335        kuolinAnimaatio(new Vector(jorma.Position.X, jorma.Position.Y), new Vector(-25, 0)); 
     336        kuolinAnimaatio(new Vector(jorma.Position.X, jorma.Position.Y), new Vector(0, 25)); 
     337        kuolinAnimaatio(new Vector(jorma.Position.X, jorma.Position.Y), new Vector(0, -25)); 
     338 
     339        kuolinAnimaatio(new Vector(jorma.Position.X + 20, jorma.Position.Y), new Vector(25, 0)); 
     340        kuolinAnimaatio(new Vector(jorma.Position.X -20, jorma.Position.Y), new Vector(-25, 0)); 
     341        kuolinAnimaatio(new Vector(jorma.Position.X, jorma.Position.Y + 20), new Vector(0, 25)); 
     342        kuolinAnimaatio(new Vector(jorma.Position.X, jorma.Position.Y - 20), new Vector(0, -25)); 
     343        kuolinAnimaatio(new Vector(jorma.Position.X + 10, jorma.Position.Y + 10), new Vector(20, 20)); 
     344        kuolinAnimaatio(new Vector(jorma.Position.X - 10, jorma.Position.Y - 10), new Vector(-20, -20)); 
     345        kuolinAnimaatio(new Vector(jorma.Position.X - 10, jorma.Position.Y + 10), new Vector(-20, 20)); 
     346        kuolinAnimaatio(new Vector(jorma.Position.X + 10, jorma.Position.Y - 10), new Vector(20, -20)); 
    253347    } 
    254348    void kasittelePelaajanTormays(PhysicsObject hahmo, PhysicsObject kohde) 
     
    256350        if (kohde.Tag.ToString() == "hazardi") 
    257351        { 
    258             hahmo.Destroy(); 
    259             pelaajanElamat.Value = pelaajanElamat - 1; 
    260             Timer.SingleShot(2, kentanLataus); 
     352            kuolema(); 
    261353        } 
    262354    } 
     
    300392 
    301393    //Objektien luonti 
    302     void luoLiikkuvaTaso(Vector paikka, double leveys, double korkeus, string tag,double x, double y) 
     394    void luoLiikkuvaTaso(Vector paikka, double leveys, double korkeus, string tag,double x, double y, Image kuva) 
    303395    { 
    304396        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus); 
    305397        taso.Position = paikka; 
    306398        taso.Color = Color.DarkGray; 
     399        taso.Image = kuva; 
    307400        taso.Tag = tag; 
    308401        Add(taso); 
     
    313406        ajastin.Start(); 
    314407    } //Paljon parametreja :O 
     408    void luoPerusTaso(Vector paikka, double leveys, double korkeus, string tag, Image kuva) 
     409    { 
     410        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     411        taso.Position = paikka; 
     412        taso.Color = Color.Green; 
     413        taso.Image = kuva; 
     414        taso.Tag = tag; 
     415        Add(taso); 
     416    } 
     417    void luoTippuvaTaso(Vector paikka, double leveys, double korkeus, string tag, Image kuva) 
     418    { 
     419        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     420        taso.Position = paikka; 
     421        taso.Color = Color.Black; 
     422        taso.Image = kuva; 
     423        AddCollisionHandler(taso, tippuvaTasoTormays); 
     424        taso.Tag = tag; 
     425        Add(taso, -1);  
     426    } 
     427    void kuolinAnimaatio(Vector paikka, Vector nopeus) 
     428    { 
     429        PhysicsObject pallo = PhysicsObject.CreateStaticObject(7,7, Shape.Circle); 
     430        pallo.Position = paikka; 
     431        pallo.Velocity = nopeus; 
     432        pallo.Color = Color.White; 
     433        Timer ajastin = new Timer(); 
     434        ajastin.Interval = 0.001; 
     435        ajastin.Timeout += delegate { kuolinAnimaatio2(pallo); }; 
     436        ajastin.Start(); 
     437        Add(pallo, 3); 
     438    } 
     439    void kuolinAnimaatio2(PhysicsObject pallo) 
     440    { 
     441        if (pallo.Color == Color.White) pallo.Color = Color.Transparent; 
     442        else if (pallo.Color == Color.Transparent) pallo.Color = Color.White; 
     443    } 
    315444 
    316445    //Aseen toiminta 
     
    336465        ammus.Hit(aseenSuunta); 
    337466        AddCollisionHandler(ammus, aseTormays); 
    338         Add(ammus); 
     467        Add(ammus, -1); 
    339468    } 
    340469    void aseenSuuntaylos() 
     
    371500    { 
    372501        pelaajanElamat = elamaLaskuri(); 
     502        rastiSydan(16, 16, rastiKuva, 67, 38.5); //Rasti 
     503        rastiSydan(20, 20, sydanKuva, 48, 38.5); //Sydan 
    373504    } 
    374505    IntMeter elamaLaskuri() 
    375506    { 
    376         IntMeter elamat = new IntMeter(1000); 
    377         elamat.MaxValue = 1000; 
     507        IntMeter elamat = new IntMeter(100); 
     508        elamat.MaxValue = 999; 
    378509        Label naytto = new Label(); 
    379510        naytto.BindTo(elamat); 
    380         naytto.Position = new Vector(Screen.Left + 150, Screen.Top - 50); 
     511        naytto.Position = new Vector(Screen.Left + 97, Screen.Top - 40); 
    381512        naytto.TextColor = Color.White; 
    382513        naytto.Color = Color.Transparent; 
     
    385516        return elamat; 
    386517    } 
    387  
    388     //Troll 
    389     //void RandomPainovoima() 
    390     //{ 
    391     //    Timer ajastin = new Timer(); 
    392     //    ajastin.Interval = 0.01; 
    393     //    ajastin.Timeout += delegate { troll(); }; 
    394     //    ajastin.Start(); 
    395     //} 
    396     //void troll() 
    397     //{ 
    398     //    double x; 
    399     //    double y; 
    400     //    x = RandomGen.NextDouble(-1000,1000); 
    401     //    y = RandomGen.NextDouble(-1000,1000); 
    402     //    Gravity = new Vector(x, y); 
    403     //} 
     518    void rastiSydan(double x, double y, Image kuva, double x2, double y2) 
     519    { 
     520        Label rs = new Label(x,y); 
     521        rs.Image = kuva; 
     522        rs.Text = ""; 
     523        rs.Position = new Vector(Screen.Left + x2, Screen.Top - y2); 
     524        Add(rs); 
     525    } 
     526 
     527    //Fullscreen 
     528    void fullscreen() 
     529    { 
     530        ClearControls(); 
     531        ClearGameObjects(); 
     532        ClearWidgets(); 
     533 
     534        if (onkoFullscreen == false) 
     535        { 
     536            SetWindowSize(640,640, true); 
     537            onkoFullscreen = true; 
     538        } 
     539        else if (onkoFullscreen == true) 
     540        { 
     541            SetWindowSize(640,640, false); 
     542            onkoFullscreen = false; 
     543        } 
     544 
     545        kentanLataus(); 
     546    } 
    404547} 
  • 2012/24/MikkoL/JormaKalevi/JormaKalevi/JormaKalevi/JormaKalevi.csproj.Debug.cachefile

    r3008 r3012  
    44Content\debug2.xnb 
    55Content\debug3.xnb 
     6Content\rasti.xnb 
     7Content\sydan.xnb 
     8Content\1-up.xnb 
     9Content\explosion.xnb 
     10Content\hurt.xnb 
    611Content\debug.txt 
    712Content\debug2.txt 
  • 2012/24/MikkoL/JormaKalevi/JormaKalevi/JormaKalevi/bin/x86/Debug/Content/debug.txt

    r3008 r3012  
    88     ##  ##  ##                  # 
    99                                       
    10                                                               # 
     10               1                                              # 
    1111   ##  ##  ##  ##  _____________                                  
    1212                                                                                            ################         
  • 2012/24/MikkoL/JormaKalevi/JormaKalevi/JormaKalevi/obj/x86/Debug/JormaKalevi.csproj.FileListAbsolute.txt

    r3008 r3012  
    99C:\MyTemp\MikkoL\JormaKalevi\JormaKalevi\JormaKalevi\obj\x86\Debug\JormaKalevi.exe 
    1010C:\MyTemp\MikkoL\JormaKalevi\JormaKalevi\JormaKalevi\obj\x86\Debug\JormaKalevi.pdb 
    11 C:\Users\testata\Desktop\Oma Peli\MikkoL\JormaKalevi\JormaKalevi\JormaKalevi\bin\x86\Debug\kentta1.txt 
    1211C:\Users\testata\Desktop\Oma Peli\MikkoL\JormaKalevi\JormaKalevi\JormaKalevi\bin\x86\Debug\Content\norsu.xnb 
    1312C:\Users\testata\Desktop\Oma Peli\MikkoL\JormaKalevi\JormaKalevi\JormaKalevi\bin\x86\Debug\Content\tahti.xnb 
     
    2524C:\MyTemp\MikkoL\JormaKalevi\JormaKalevi\JormaKalevi\bin\x86\Debug\Content\debug3.xnb 
    2625C:\MyTemp\MikkoL\JormaKalevi\JormaKalevi\JormaKalevi\bin\x86\Debug\Content\debug3.txt 
     26C:\Users\testata\Desktop\Oma Peli\MikkoL\JormaKalevi\JormaKalevi\JormaKalevi\bin\x86\Debug\Content\debug.xnb 
     27C:\Users\testata\Desktop\Oma Peli\MikkoL\JormaKalevi\JormaKalevi\JormaKalevi\bin\x86\Debug\Content\debug2.xnb 
     28C:\Users\testata\Desktop\Oma Peli\MikkoL\JormaKalevi\JormaKalevi\JormaKalevi\bin\x86\Debug\Content\debug3.xnb 
     29C:\Users\testata\Desktop\Oma Peli\MikkoL\JormaKalevi\JormaKalevi\JormaKalevi\bin\x86\Debug\Content\debug.txt 
     30C:\Users\testata\Desktop\Oma Peli\MikkoL\JormaKalevi\JormaKalevi\JormaKalevi\bin\x86\Debug\Content\debug2.txt 
     31C:\Users\testata\Desktop\Oma Peli\MikkoL\JormaKalevi\JormaKalevi\JormaKalevi\bin\x86\Debug\Content\debug3.txt 
     32C:\Users\testata\Desktop\Oma Peli\MikkoL\JormaKalevi\JormaKalevi\JormaKalevi\bin\x86\Debug\Content\rasti.xnb 
     33C:\Users\testata\Desktop\Oma Peli\MikkoL\JormaKalevi\JormaKalevi\JormaKalevi\bin\x86\Debug\Content\sydan.xnb 
     34C:\Users\testata\Desktop\Oma Peli\MikkoL\JormaKalevi\JormaKalevi\JormaKalevi\bin\x86\Debug\Content\1-up.xnb 
     35C:\Users\testata\Desktop\Oma Peli\MikkoL\JormaKalevi\JormaKalevi\JormaKalevi\bin\x86\Debug\Content\explosion.xnb 
     36C:\Users\testata\Desktop\Oma Peli\MikkoL\JormaKalevi\JormaKalevi\JormaKalevi\bin\x86\Debug\Content\hurt.xnb 
  • 2012/24/MikkoL/JormaKalevi/JormaKalevi/JormaKalevi/obj/x86/Debug/cachefile-{FC6498A4-F2EA-4F49-9C7B-A5CBA6BB10CA}-targetpath.txt

    r3008 r3012  
    44Content\debug2.xnb 
    55Content\debug3.xnb 
     6Content\rasti.xnb 
     7Content\sydan.xnb 
     8Content\1-up.xnb 
     9Content\explosion.xnb 
     10Content\hurt.xnb 
    611Content\debug.txt 
    712Content\debug2.txt 
  • 2012/24/MikkoL/JormaKalevi/JormaKalevi/JormaKaleviContent/JormaKaleviContent.contentproj

    r3008 r3012  
    8080    </Compile> 
    8181  </ItemGroup> 
     82  <ItemGroup> 
     83    <Compile Include="rasti.png"> 
     84      <Name>rasti</Name> 
     85      <Importer>TextureImporter</Importer> 
     86      <Processor>TextureProcessor</Processor> 
     87    </Compile> 
     88  </ItemGroup> 
     89  <ItemGroup> 
     90    <Compile Include="sydan.png"> 
     91      <Name>sydan</Name> 
     92      <Importer>TextureImporter</Importer> 
     93      <Processor>TextureProcessor</Processor> 
     94    </Compile> 
     95  </ItemGroup> 
     96  <ItemGroup> 
     97    <Compile Include="1-up.wav"> 
     98      <Name>1-up</Name> 
     99      <Importer>WavImporter</Importer> 
     100      <Processor>SoundEffectProcessor</Processor> 
     101    </Compile> 
     102    <Compile Include="explosion.wav"> 
     103      <Name>explosion</Name> 
     104      <Importer>WavImporter</Importer> 
     105      <Processor>SoundEffectProcessor</Processor> 
     106    </Compile> 
     107    <Compile Include="hurt.wav"> 
     108      <Name>hurt</Name> 
     109      <Importer>WavImporter</Importer> 
     110      <Processor>SoundEffectProcessor</Processor> 
     111    </Compile> 
     112  </ItemGroup> 
    82113  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    83114  <!--  To modify your build process, add your task inside one of the targets below and uncomment it.  
  • 2012/24/MikkoL/JormaKalevi/JormaKalevi/JormaKaleviContent/debug.txt

    r3008 r3012  
    88     ##  ##  ##                  # 
    99                                       
    10                                                               # 
     10               1                                              # 
    1111   ##  ##  ##  ##  _____________                                  
    1212                                                                                            ################         
Note: See TracChangeset for help on using the changeset viewer.