source: 2013/30/MiskaK/MW2(My Warfare 2)/Paranneltu Jypeli/Widgets/EasyHighScore.cs @ 4507

Revision 4507, 4.8 KB checked in by anlakane, 6 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Reflection;
6using System.ComponentModel;
7
8namespace Jypeli.Widgets
9{
10    /// <summary>
11    /// Helpompikäyttöinen parhaiden pisteiden lista.
12    /// </summary>
13    public class EasyHighScore
14    {
15        HighScoreWindow _hsWindow;
16        ScoreList score;
17        string fileName;
18
19        /// <summary>
20        /// Listaikkuna.
21        /// </summary>
22        public HighScoreWindow HighScoreWindow
23        {
24            get { return _hsWindow; }
25        }
26
27        /// <summary>
28        /// Nimensyöttöikkuna.
29        /// </summary>
30        public InputWindow NameInputWindow
31        {
32            get { return _hsWindow.NameInputWindow; }
33        }
34
35        /// <summary>
36        /// Pisin sallittu nimen pituus.
37        /// </summary>
38        public int MaxNameLength
39        {
40            get { return _hsWindow.MaxNameLength; }
41            set { _hsWindow.MaxNameLength = value; }
42        }
43
44        /// <summary>
45        /// Pisteikkunan teksti.
46        /// </summary>
47        public string Text
48        {
49            get { return _hsWindow.Message; }
50            set { _hsWindow.Message = value; }
51        }
52
53        /// <summary>
54        /// Nimensyöttöikkunan teksti.
55        /// </summary>
56        public string EnterText
57        {
58            get { return _hsWindow.NameInputWindow.Message.Text; }
59            set { _hsWindow.NameInputWindow.Message.Text = value; }
60        }
61
62        /// <summary>
63        /// Listaikkunan väri.
64        /// </summary>
65        public Color Color
66        {
67            get
68            {
69                return _hsWindow.Color;
70            }
71            set
72            {
73                _hsWindow.Color = value;
74            }
75        }
76
77        /// <summary>
78        /// Luo uuden parhaiden pisteiden ikkunan.
79        /// </summary>
80        /// <param name="fileName">Tiedoston nimi</param>
81        /// <param name="places">Pistesijojen lukumäärä</param>
82        /// <param name="defaultName">Oletusnimi tyhjille paikoille.</param>
83        public EasyHighScore(string fileName, int places, string defaultName)
84        {
85            this.score = new ScoreList(places, false, 0, defaultName);
86            this.fileName = fileName;
87            Game.AssertInitialized( LoadData );
88            Game.AssertInitialized( InitHSWindow );
89        }
90
91        /// <summary>
92        /// Luo uuden parhaiden pisteiden ikkunan.
93        /// </summary>
94        /// <param name="fileName">Tiedoston nimi</param>
95        /// <param name="places">Pistesijojen lukumäärä</param>
96        public EasyHighScore(string fileName, int places)
97        {
98            this.score = new ScoreList(places, false, 0);
99            this.fileName = fileName;
100            Game.AssertInitialized( LoadData );
101            Game.AssertInitialized( InitHSWindow );
102        }
103
104        /// <summary>
105        /// Luo uuden parhaiden pisteiden ikkunan.
106        /// </summary>
107        /// <param name="places">Pistesijojen lukumäärä</param>
108        public EasyHighScore(int places)
109            : this(Game.Name + "_score.xml", places)
110        {
111        }
112
113        /// <summary>
114        /// Luo uuden parhaiden pisteiden ikkunan kymmenellä pistesijalla.
115        /// </summary>
116        public EasyHighScore()
117            : this(Game.Name + "_score.xml", 10)
118        {
119        }
120
121        void InitHSWindow()
122        {
123            _hsWindow = new HighScoreWindow( "High score", score );
124        }
125
126        /// <summary>
127        /// Näyttää parhaat pisteet.
128        /// </summary>
129        public void Show()
130        {
131            Game.Instance.Add( HighScoreWindow );
132        }
133
134        /// <summary>
135        /// Tyhjentää parhaat pisteet.
136        /// </summary>
137        public void Clear()
138        {
139            score = new ScoreList( score._scores.Length, score.Reverse, 0 );
140            Game.DataStorage.Save<ScoreList>( score, fileName );
141        }
142
143        /// <summary>
144        /// Näyttää parhaat pisteet, ja jos annetut pisteet riittävät, antaa syöttää nimen listalle.
145        /// Lista tallennetaan automaattisesti.
146        /// </summary>
147        /// <param name="newScore"></param>
148        public void EnterAndShow(double newScore)
149        {
150            HighScoreWindow.NameInputWindow.Closed += SaveData;
151            HighScoreWindow.ShowNameInput( newScore );
152            Game.Instance.Add( HighScoreWindow );
153        }
154
155        private void SaveData(Window sender)
156        {
157            HighScoreWindow.NameInputWindow.Closed -= SaveData;
158            Game.DataStorage.Save<ScoreList>(score, fileName);
159        }
160
161        private void LoadData()
162        {
163            score = Game.DataStorage.TryLoad<ScoreList>(score, fileName);
164        }
165    }
166}
Note: See TracBrowser for help on using the repository browser.