git repos / blockattack-game

blame: source/code/stats.cc

normal view · raw

89c4a3a6 sago007 2008-08-29 14:32 1
/*
89c4a3a6 sago007 2008-08-29 14:32 2
Block Attack - Rise of the Blocks, SDL game, besed on Nintendo's Tetris Attack
89c4a3a6 sago007 2008-08-29 14:32 3
Copyright (C) 2008 Poul Sander
89c4a3a6 sago007 2008-08-29 14:32 4
89c4a3a6 sago007 2008-08-29 14:32 5
    This program is free software; you can redistribute it and/or modify
89c4a3a6 sago007 2008-08-29 14:32 6
    it under the terms of the GNU General Public License as published by
89c4a3a6 sago007 2008-08-29 14:32 7
    the Free Software Foundation; either version 2 of the License, or
89c4a3a6 sago007 2008-08-29 14:32 8
    (at your option) any later version.
89c4a3a6 sago007 2008-08-29 14:32 9
89c4a3a6 sago007 2008-08-29 14:32 10
    This program is distributed in the hope that it will be useful,
89c4a3a6 sago007 2008-08-29 14:32 11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
89c4a3a6 sago007 2008-08-29 14:32 12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
89c4a3a6 sago007 2008-08-29 14:32 13
    GNU General Public License for more details.
89c4a3a6 sago007 2008-08-29 14:32 14
89c4a3a6 sago007 2008-08-29 14:32 15
    You should have received a copy of the GNU General Public License
89c4a3a6 sago007 2008-08-29 14:32 16
    along with this program; if not, write to the Free Software
89c4a3a6 sago007 2008-08-29 14:32 17
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
89c4a3a6 sago007 2008-08-29 14:32 18
89c4a3a6 sago007 2008-08-29 14:32 19
    Poul Sander
89c4a3a6 sago007 2008-08-29 14:32 20
    R�vehjvej 36, V. 1111
89c4a3a6 sago007 2008-08-29 14:32 21
    2800 Kgs. Lyngby
89c4a3a6 sago007 2008-08-29 14:32 22
    DENMARK
89c4a3a6 sago007 2008-08-29 14:32 23
    blockattack@poulsander.com
89c4a3a6 sago007 2008-08-29 14:32 24
    http://blockattack.sf.net
89c4a3a6 sago007 2008-08-29 14:32 25
*/
89c4a3a6 sago007 2008-08-29 14:32 26
89c4a3a6 sago007 2008-08-29 14:32 27
#include "stats.h"
89c4a3a6 sago007 2008-08-29 14:32 28
#include "common.h"
89c4a3a6 sago007 2008-08-29 14:32 29
89c4a3a6 sago007 2008-08-29 14:32 30
Stats* Stats::instance = 0;
89c4a3a6 sago007 2008-08-29 14:32 31
89c4a3a6 sago007 2008-08-29 14:32 32
Stats::Stats()
89c4a3a6 sago007 2008-08-29 14:32 33
{
89c4a3a6 sago007 2008-08-29 14:32 34
    statMap.clear();
89c4a3a6 sago007 2008-08-29 14:32 35
    load();
89c4a3a6 sago007 2008-08-29 14:32 36
}
89c4a3a6 sago007 2008-08-29 14:32 37
89c4a3a6 sago007 2008-08-29 14:32 38
void Stats::load()
89c4a3a6 sago007 2008-08-29 14:32 39
{
89c4a3a6 sago007 2008-08-29 14:32 40
    string filename = getPathToSaveFiles()+"/statsFile";
89c4a3a6 sago007 2008-08-29 14:32 41
    ifstream inFile(filename.c_str());
89c4a3a6 sago007 2008-08-29 14:32 42
    string key;
89c4a3a6 sago007 2008-08-29 14:32 43
    unsigned int value;
89c4a3a6 sago007 2008-08-29 14:32 44
    if(inFile)
89c4a3a6 sago007 2008-08-29 14:32 45
    {
89c4a3a6 sago007 2008-08-29 14:32 46
        //int antal;
89c4a3a6 sago007 2008-08-29 14:32 47
        //inFile >> antal;
89c4a3a6 sago007 2008-08-29 14:32 48
        //for(int i = 0;i<antal;i++)
89c4a3a6 sago007 2008-08-29 14:32 49
        while(!inFile.eof())
89c4a3a6 sago007 2008-08-29 14:32 50
        {
89c4a3a6 sago007 2008-08-29 14:32 51
            inFile >> key;
89c4a3a6 sago007 2008-08-29 14:32 52
            inFile >> value;
89c4a3a6 sago007 2008-08-29 14:32 53
            statMap[key] = value;
89c4a3a6 sago007 2008-08-29 14:32 54
        }
89c4a3a6 sago007 2008-08-29 14:32 55
        inFile.close();
89c4a3a6 sago007 2008-08-29 14:32 56
    }
89c4a3a6 sago007 2008-08-29 14:32 57
}
89c4a3a6 sago007 2008-08-29 14:32 58
89c4a3a6 sago007 2008-08-29 14:32 59
Stats* Stats::getInstance()
89c4a3a6 sago007 2008-08-29 14:32 60
{
89c4a3a6 sago007 2008-08-29 14:32 61
    if(Stats::instance==0)
89c4a3a6 sago007 2008-08-29 14:32 62
    {
89c4a3a6 sago007 2008-08-29 14:32 63
        Stats::instance = new Stats();
89c4a3a6 sago007 2008-08-29 14:32 64
        
89c4a3a6 sago007 2008-08-29 14:32 65
    }
89c4a3a6 sago007 2008-08-29 14:32 66
    return Stats::instance; 
89c4a3a6 sago007 2008-08-29 14:32 67
}
89c4a3a6 sago007 2008-08-29 14:32 68
89c4a3a6 sago007 2008-08-29 14:32 69
void Stats::save()
89c4a3a6 sago007 2008-08-29 14:32 70
{
89c4a3a6 sago007 2008-08-29 14:32 71
    string filename = getPathToSaveFiles()+"/statsFile";
89c4a3a6 sago007 2008-08-29 14:32 72
    ofstream outFile(filename.c_str(),ios::trunc);
89c4a3a6 sago007 2008-08-29 14:32 73
    
89c4a3a6 sago007 2008-08-29 14:32 74
    if(outFile)
89c4a3a6 sago007 2008-08-29 14:32 75
    {
89c4a3a6 sago007 2008-08-29 14:32 76
        //outFile << statMap.size() << endl;
89c4a3a6 sago007 2008-08-29 14:32 77
        map<string,unsigned int>::iterator iter;
89c4a3a6 sago007 2008-08-29 14:32 78
        for(iter = statMap.begin(); iter != statMap.end(); iter++)
89c4a3a6 sago007 2008-08-29 14:32 79
        {
89c4a3a6 sago007 2008-08-29 14:32 80
            outFile << iter->first << " " << iter->second << endl;
89c4a3a6 sago007 2008-08-29 14:32 81
        }
89c4a3a6 sago007 2008-08-29 14:32 82
    }
89c4a3a6 sago007 2008-08-29 14:32 83
}
89c4a3a6 sago007 2008-08-29 14:32 84
89c4a3a6 sago007 2008-08-29 14:32 85
unsigned int Stats::getNumberOf(string statName)
89c4a3a6 sago007 2008-08-29 14:32 86
{
89c4a3a6 sago007 2008-08-29 14:32 87
    if(exists(statName))
89c4a3a6 sago007 2008-08-29 14:32 88
    {
89c4a3a6 sago007 2008-08-29 14:32 89
        return statMap[statName];
89c4a3a6 sago007 2008-08-29 14:32 90
    }
89c4a3a6 sago007 2008-08-29 14:32 91
    else
89c4a3a6 sago007 2008-08-29 14:32 92
        return 0;
89c4a3a6 sago007 2008-08-29 14:32 93
}
89c4a3a6 sago007 2008-08-29 14:32 94
89c4a3a6 sago007 2008-08-29 14:32 95
void Stats::addOne(string statName)
89c4a3a6 sago007 2008-08-29 14:32 96
{
89c4a3a6 sago007 2008-08-29 14:32 97
    map<string,unsigned int>::iterator iter = statMap.find(statName);
89c4a3a6 sago007 2008-08-29 14:32 98
    if(iter == statMap.end())
89c4a3a6 sago007 2008-08-29 14:32 99
    {
89c4a3a6 sago007 2008-08-29 14:32 100
        statMap[statName] = 1;
89c4a3a6 sago007 2008-08-29 14:32 101
    }
89c4a3a6 sago007 2008-08-29 14:32 102
    else
89c4a3a6 sago007 2008-08-29 14:32 103
    {
89c4a3a6 sago007 2008-08-29 14:32 104
        iter->second++;
89c4a3a6 sago007 2008-08-29 14:32 105
    }
89c4a3a6 sago007 2008-08-29 14:32 106
}
89c4a3a6 sago007 2008-08-29 14:32 107
89c4a3a6 sago007 2008-08-29 14:32 108
bool Stats::exists(string statName)
89c4a3a6 sago007 2008-08-29 14:32 109
{
89c4a3a6 sago007 2008-08-29 14:32 110
    //Using that find returns an iterator to the end of the map if not found
89c4a3a6 sago007 2008-08-29 14:32 111
    return statMap.find(statName) != statMap.end();
89c4a3a6 sago007 2008-08-29 14:32 112
}
1970-01-01 00:00 113