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

Esine-valikko.

File:
1 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 
Note: See TracChangeset for help on using the changeset viewer.