version++
[impuzzle] / src / statistics.h
1 /*
2   Image Puzzle - A set your pieces straight game
3   Copyright (C) 2009  Timo Härkönen
4
5   This program is free software: you can redistribute it and/or modify
6   it under the terms of the GNU General Public License as published by
7   the Free Software Foundation, either version 3 of the License, or
8   (at your option) any later version.
9
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU General Public License for more details.
14
15   You should have received a copy of the GNU General Public License
16   along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  */
18
19 #ifndef STATISTICS_H
20 #define STATISTICS_H
21
22 #include <QObject>
23 #include <QList>
24
25 class Statistics : public QObject
26 {
27     Q_OBJECT
28
29 public:
30     enum Difficulty {
31         easyDifficulty = 0,
32         hardDifficulty
33     };
34
35     static Statistics *instance();
36
37     int gameCount(Difficulty difficulty) const;
38
39     int totalGameCount() const;
40
41     qreal averageMoves(Difficulty difficulty) const;
42
43     int minMoves(Difficulty difficulty) const;
44
45     int maxMoves(Difficulty difficulty) const;
46
47 public slots:
48     void addNewScore(int moves, Difficulty difficulty);
49
50     void increaseGameCount(Difficulty difficulty);
51
52     void readFile();
53
54     void saveFile();
55
56     void resetStatistics();
57
58 private:
59     Statistics(QObject *parent = 0);
60
61     static Statistics *instance_;
62
63     QList<int> moves_;
64     QList<int> minMoves_;
65     QList<int> maxMoves_;
66     QList<int> games_;
67 };
68
69 #endif