Changeset 1346 for 2010/30


Ignore:
Timestamp:
2010-07-27 21:02:46 (9 years ago)
Author:
tekrjant
Message:

Esine-valikko.

Location:
2010/30/tekrjant/Seikkailu
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • 2010/30/tekrjant/Seikkailu/HUD.cs

    r1265 r1346  
    2424 
    2525using System; 
     26using System.Collections.Generic; 
    2627using Jypeli; 
    2728using Jypeli.Widgets; 
     29 
     30 
     31class EsineValikko : Widget 
     32{ 
     33    class Valinta : Widget 
     34    { 
     35        public Esine Esine; 
     36 
     37        public Valinta( double width, double height, Esine e ) 
     38            : base( width, height ) 
     39        { 
     40            this.Esine = e; 
     41            Image = e.Image; 
     42        } 
     43    } 
     44 
     45 
     46    double esineenLeveys; 
     47    Widget vaakaValikko; 
     48    Widget valintaNuoli; 
     49    List<Valinta> esineet = new List<Valinta>(); 
     50    int valittuIndeksi = 0; 
     51 
     52    public Esine ValittuEsine 
     53    { 
     54        get 
     55        { 
     56            if ( esineet.Count == 0 ) 
     57                return null; 
     58            return esineet[valittuIndeksi].Esine; 
     59        } 
     60    } 
     61 
     62 
     63    public EsineValikko( double leveys, double korkeus ) 
     64        : base( leveys, korkeus ) 
     65    { 
     66        IsVisible = false; 
     67        Color = Color.TransparentBlack; 
     68        esineenLeveys = korkeus / 2; 
     69 
     70        vaakaValikko = new Widget( new HorizontalLayout() ); 
     71        vaakaValikko.Height = korkeus / 2; 
     72        vaakaValikko.X = 0; 
     73        vaakaValikko.Y = -korkeus / 4; 
     74        vaakaValikko.Color = new Color( 150, 100, 10, 100 ); 
     75        Add( vaakaValikko ); 
     76 
     77        valintaNuoli = new Widget( esineenLeveys * 0.9, korkeus * 0.4, Shapes.Triangle ); 
     78        valintaNuoli.Color = Color.Red; 
     79        valintaNuoli.Angle = Angle.Degrees( 180 ); 
     80        valintaNuoli.X = 0; 
     81        valintaNuoli.Y = korkeus / 4; 
     82        Add( valintaNuoli ); 
     83    } 
     84 
     85    public void Vasemmalle() 
     86    { 
     87        if ( esineet.Count == 0 ) 
     88            return; 
     89 
     90        if ( valittuIndeksi > 0 ) 
     91            valittuIndeksi--; 
     92        else 
     93            valittuIndeksi = esineet.Count - 1; 
     94 
     95        PaivitaNuoli(); 
     96    } 
     97 
     98    public void Oikealle() 
     99    { 
     100        if ( esineet.Count == 0 ) 
     101            return; 
     102 
     103        if ( valittuIndeksi < ( esineet.Count - 1 ) ) 
     104            valittuIndeksi++; 
     105        else 
     106            valittuIndeksi = 0; 
     107 
     108        PaivitaNuoli(); 
     109    } 
     110 
     111    void PaivitaNuoli() 
     112    { 
     113        valintaNuoli.X = Left + ( valittuIndeksi * esineenLeveys ) + esineenLeveys / 2; 
     114    } 
     115 
     116    public void Add( Esine e ) 
     117    { 
     118        Valinta v = new Valinta( esineenLeveys, Height, e ); 
     119        vaakaValikko.Add( v ); 
     120        esineet.Add( v ); 
     121        double uusiLeveys = esineet.Count * esineenLeveys; 
     122        this.Width = uusiLeveys; 
     123        vaakaValikko.Width = uusiLeveys; 
     124        IsVisible = true; 
     125 
     126        if ( esineet.Count == 1 ) 
     127            valittuIndeksi = 0; 
     128        PaivitaNuoli(); 
     129    } 
     130} 
     131 
    28132 
    29133class EsineRuutu : Widget 
  • 2010/30/tekrjant/Seikkailu/Peli.cs

    r1269 r1346  
    3636 
    3737    EsineRuutu esineRuutu; 
     38    EsineValikko esineValikko; 
    3839 
    3940    PhysicsObject pelaaja; 
    40     List<Esine> pelaajanTavarat = new List<Esine>(); 
    4141    Esine viimeksiKoskettuEsine; 
    4242 
     
    6767        esineRuutu.Y = Screen.Top - esineRuutu.Height / 2; 
    6868        Add( esineRuutu ); 
     69 
     70        esineValikko = new EsineValikko( 100, 100 ); 
     71        esineValikko.X = 0; 
     72        esineValikko.Y = Screen.Bottom + esineValikko.Height / 2; 
     73        Add( esineValikko ); 
    6974    } 
    7075 
     
    222227        Keyboard.Listen( Key.Right, ButtonState.Released, EiKaanny, null ); 
    223228 
     229        Keyboard.Listen( Key.Q, ButtonState.Pressed, esineValikko.Vasemmalle, null ); 
     230        Keyboard.Listen( Key.W, ButtonState.Pressed, esineValikko.Oikealle, null ); 
     231        Keyboard.Listen( Key.Space, ButtonState.Pressed, KaytaValittuaEsinetta, null ); 
     232 
    224233        Keyboard.Listen( Key.P, ButtonState.Pressed, Keraa, null ); 
    225  
    226         Keyboard.Listen( Key.Z, ButtonState.Pressed, KaytaTaikaSauvaa, null ); 
    227         Keyboard.Disable( Key.Z ); 
    228  
    229         Keyboard.Listen( Key.L, ButtonState.Pressed, KaytaLamppua, null ); 
    230         Keyboard.Disable( Key.L ); 
     234    } 
     235 
     236    void KaytaValittuaEsinetta() 
     237    { 
     238        Esine valittu = esineValikko.ValittuEsine; 
     239 
     240        switch ( valittu.Tyyppi ) 
     241        { 
     242            case EsineenTyyppi.Taikasauva: 
     243                KaytaTaikaSauvaa(); 
     244                break; 
     245            case EsineenTyyppi.Lyhty: 
     246                KaytaLamppua(); 
     247                break; 
     248            case EsineenTyyppi.Timantti: 
     249                break; 
     250            default: 
     251                break; 
     252        } 
    231253    } 
    232254 
     
    246268            return; 
    247269 
     270        Remove( viimeksiKoskettuEsine ); 
     271        esineValikko.Add( viimeksiKoskettuEsine ); 
     272 
    248273        switch ( viimeksiKoskettuEsine.Tyyppi ) 
    249274        { 
    250275            case EsineenTyyppi.Taikasauva: 
    251                 viimeksiKoskettuEsine.Destroy(); 
    252                 GameObject taikaSauva = new GameObject( viimeksiKoskettuEsine.Width, viimeksiKoskettuEsine.Height ); 
    253                 taikaSauva.Color = viimeksiKoskettuEsine.Color; 
    254                 pelaaja.Add( taikaSauva ); 
    255                 taikaSauva.X = pelaaja.Width / 2 + taikaSauva.Width / 4; 
    256                 Keyboard.Enable( Key.Z ); 
    257                 viimeksiKoskettuEsine = null; 
     276                GameObject klooni = new GameObject( viimeksiKoskettuEsine.Width, viimeksiKoskettuEsine.Height ); 
     277                klooni.Color = viimeksiKoskettuEsine.Color; 
     278                pelaaja.Add( klooni ); 
     279                klooni.X = pelaaja.Width / 2 + klooni.Width / 4; 
    258280                break; 
    259281            case EsineenTyyppi.Lyhty: 
    260                 Remove( viimeksiKoskettuEsine ); 
    261                 pelaajanTavarat.Add( viimeksiKoskettuEsine ); 
    262                 Keyboard.Enable( Key.L ); 
    263                 viimeksiKoskettuEsine = null; 
    264282                break; 
    265283            case EsineenTyyppi.Timantti: 
     
    272290                break; 
    273291        } 
     292 
     293        viimeksiKoskettuEsine = null; 
    274294    } 
    275295 
Note: See TracChangeset for help on using the changeset viewer.