git repos / blockattack-game

blame: source/code/stageclearhandler.cpp

normal view · raw

ae5d6381 sago007 2015-12-29 13:26 1
/*
ae5d6381 sago007 2015-12-29 13:26 2
 * To change this license header, choose License Headers in Project Properties.
ae5d6381 sago007 2015-12-29 13:26 3
 * To change this template file, choose Tools | Templates
ae5d6381 sago007 2015-12-29 13:26 4
 * and open the template in the editor.
ae5d6381 sago007 2015-12-29 13:26 5
 */
ae5d6381 sago007 2015-12-29 13:26 6
ae5d6381 sago007 2015-12-29 13:26 7
#include "stageclearhandler.hpp"
ae5d6381 sago007 2015-12-29 13:26 8
#include "SDL.h"
ae5d6381 sago007 2015-12-29 13:26 9
#include <fstream>
ae5d6381 sago007 2015-12-29 13:26 10
#include <vector>
ae5d6381 sago007 2015-12-29 13:26 11
#include <iostream>
ae5d6381 sago007 2015-12-29 13:26 12
ae5d6381 sago007 2015-12-29 13:26 13
//paths
ae5d6381 sago007 2015-12-29 13:26 14
std::string stageClearSavePath;
ae5d6381 sago007 2015-12-29 13:26 15
ae5d6381 sago007 2015-12-29 13:26 16
ae5d6381 sago007 2015-12-29 13:26 17
std::vector<bool> stageCleared(nrOfStageLevels);		//vector that tells if a stage is cleared
ae5d6381 sago007 2015-12-29 13:26 18
std::vector<Uint32> stageTimes(nrOfStageLevels);             //For statistical puposes
ae5d6381 sago007 2015-12-29 13:26 19
std::vector<Uint32> stageScores(nrOfStageLevels);            //--||--
ae5d6381 sago007 2015-12-29 13:26 20
Uint32 totalScore = 0;
ae5d6381 sago007 2015-12-29 13:26 21
Uint32 totalTime = 0;
ae5d6381 sago007 2015-12-29 13:26 22
ae5d6381 sago007 2015-12-29 13:26 23
using namespace std;
ae5d6381 sago007 2015-12-29 13:26 24
ae5d6381 sago007 2015-12-29 13:26 25
void StageClearSetClear(int Level, int score, int time) {
ae5d6381 sago007 2015-12-29 13:26 26
	stageCleared[Level] = true;
ae5d6381 sago007 2015-12-29 13:26 27
	int gameEndedAfter = time;
ae5d6381 sago007 2015-12-29 13:26 28
	if (stageScores[Level]<score) {
ae5d6381 sago007 2015-12-29 13:26 29
		stageScores[Level] = score;
ae5d6381 sago007 2015-12-29 13:26 30
		stageTimes[Level] = gameEndedAfter;
ae5d6381 sago007 2015-12-29 13:26 31
	}
ae5d6381 sago007 2015-12-29 13:26 32
ae5d6381 sago007 2015-12-29 13:26 33
	ofstream outfile;
ae5d6381 sago007 2015-12-29 13:26 34
	outfile.open(stageClearSavePath.c_str(), ios::binary |ios::trunc);
ae5d6381 sago007 2015-12-29 13:26 35
	if (!outfile) {
ae5d6381 sago007 2015-12-29 13:26 36
		cerr << "Error writing to file: " << stageClearSavePath << endl;
ae5d6381 sago007 2015-12-29 13:26 37
	}
ae5d6381 sago007 2015-12-29 13:26 38
	else {
ae5d6381 sago007 2015-12-29 13:26 39
		for (int i=0; i<nrOfStageLevels; i++) {
ae5d6381 sago007 2015-12-29 13:26 40
			bool tempBool = stageCleared[i];
ae5d6381 sago007 2015-12-29 13:26 41
			outfile.write(reinterpret_cast<char*>(&tempBool), sizeof(bool));
ae5d6381 sago007 2015-12-29 13:26 42
		}
ae5d6381 sago007 2015-12-29 13:26 43
		for (int i=0; i<nrOfStageLevels; i++) {
ae5d6381 sago007 2015-12-29 13:26 44
			Uint32 tempUInt32 = stageScores[i];
ae5d6381 sago007 2015-12-29 13:26 45
			outfile.write(reinterpret_cast<char*>(&tempUInt32), sizeof(Uint32));
ae5d6381 sago007 2015-12-29 13:26 46
		}
ae5d6381 sago007 2015-12-29 13:26 47
		for (int i=0; i<nrOfStageLevels; i++) {
ae5d6381 sago007 2015-12-29 13:26 48
			Uint32 tempUInt32 = stageTimes[i];
ae5d6381 sago007 2015-12-29 13:26 49
			outfile.write(reinterpret_cast<char*>(&tempUInt32), sizeof(Uint32));
ae5d6381 sago007 2015-12-29 13:26 50
		}
ae5d6381 sago007 2015-12-29 13:26 51
		outfile.close();
ae5d6381 sago007 2015-12-29 13:26 52
	}
ae5d6381 sago007 2015-12-29 13:26 53
}
ae5d6381 sago007 2015-12-29 13:26 54
ae5d6381 sago007 2015-12-29 13:26 55
void LoadStageClearStages() {
ae5d6381 sago007 2015-12-29 13:26 56
	bool tempBool;
ae5d6381 sago007 2015-12-29 13:26 57
	Uint32 tempUInt32;
ae5d6381 sago007 2015-12-29 13:26 58
	ifstream stageFile(stageClearSavePath.c_str(),ios::binary);
ae5d6381 sago007 2015-12-29 13:26 59
	if (stageFile) {
ae5d6381 sago007 2015-12-29 13:26 60
		for (int i = 0; i<nrOfStageLevels; i++) {
ae5d6381 sago007 2015-12-29 13:26 61
			stageFile.read(reinterpret_cast<char*>(&tempBool),sizeof(bool));
ae5d6381 sago007 2015-12-29 13:26 62
			stageCleared[i]=tempBool;
ae5d6381 sago007 2015-12-29 13:26 63
		}
ae5d6381 sago007 2015-12-29 13:26 64
		if (!stageFile.eof()) {
ae5d6381 sago007 2015-12-29 13:26 65
			for (int i=0; i<nrOfStageLevels; i++) {
ae5d6381 sago007 2015-12-29 13:26 66
				tempUInt32 = 0;
ae5d6381 sago007 2015-12-29 13:26 67
				if (!stageFile.eof()) {
ae5d6381 sago007 2015-12-29 13:26 68
					stageFile.read(reinterpret_cast<char*>(&tempUInt32),sizeof(Uint32));
ae5d6381 sago007 2015-12-29 13:26 69
				}
ae5d6381 sago007 2015-12-29 13:26 70
				stageScores[i]=tempUInt32;
ae5d6381 sago007 2015-12-29 13:26 71
				totalScore+=tempUInt32;
ae5d6381 sago007 2015-12-29 13:26 72
			}
ae5d6381 sago007 2015-12-29 13:26 73
			for (int i=0; i<nrOfStageLevels; i++) {
ae5d6381 sago007 2015-12-29 13:26 74
				tempUInt32 = 0;
ae5d6381 sago007 2015-12-29 13:26 75
				if (!stageFile.eof()) {
ae5d6381 sago007 2015-12-29 13:26 76
					stageFile.read(reinterpret_cast<char*>(&tempUInt32),sizeof(Uint32));
ae5d6381 sago007 2015-12-29 13:26 77
				}
ae5d6381 sago007 2015-12-29 13:26 78
				stageTimes[i]=tempUInt32;
ae5d6381 sago007 2015-12-29 13:26 79
				totalTime += tempUInt32;
ae5d6381 sago007 2015-12-29 13:26 80
			}
ae5d6381 sago007 2015-12-29 13:26 81
		}
ae5d6381 sago007 2015-12-29 13:26 82
		else {
ae5d6381 sago007 2015-12-29 13:26 83
			for (int i=0; i<nrOfStageLevels; i++) {
ae5d6381 sago007 2015-12-29 13:26 84
				stageScores[i]=0;
ae5d6381 sago007 2015-12-29 13:26 85
				stageTimes[i]=0;
ae5d6381 sago007 2015-12-29 13:26 86
			}
ae5d6381 sago007 2015-12-29 13:26 87
		}
ae5d6381 sago007 2015-12-29 13:26 88
		stageFile.close();
ae5d6381 sago007 2015-12-29 13:26 89
	}
ae5d6381 sago007 2015-12-29 13:26 90
	else {
ae5d6381 sago007 2015-12-29 13:26 91
		for (int i=0; i<nrOfStageLevels; i++) {
ae5d6381 sago007 2015-12-29 13:26 92
			stageCleared[i]= false;
ae5d6381 sago007 2015-12-29 13:26 93
			stageScores[i]=0;
ae5d6381 sago007 2015-12-29 13:26 94
			stageTimes[i]=0;
ae5d6381 sago007 2015-12-29 13:26 95
		}
ae5d6381 sago007 2015-12-29 13:26 96
	}
ae5d6381 sago007 2015-12-29 13:26 97
}
ae5d6381 sago007 2015-12-29 13:26 98
ae5d6381 sago007 2015-12-29 13:26 99
int GetTotalScore() {
ae5d6381 sago007 2015-12-29 13:26 100
	return totalScore;
ae5d6381 sago007 2015-12-29 13:26 101
}
ae5d6381 sago007 2015-12-29 13:26 102
int GetTotalTime() {
ae5d6381 sago007 2015-12-29 13:26 103
	return totalTime;
ae5d6381 sago007 2015-12-29 13:26 104
}
ae5d6381 sago007 2015-12-29 13:26 105
ae5d6381 sago007 2015-12-29 13:26 106
int GetNrOfLevels() {
ae5d6381 sago007 2015-12-29 13:26 107
	return nrOfStageLevels;
ae5d6381 sago007 2015-12-29 13:26 108
}
ae5d6381 sago007 2015-12-29 13:26 109
ae5d6381 sago007 2015-12-29 13:26 110
bool IsStageCleared(int level) {
ae5d6381 sago007 2015-12-29 13:26 111
	return stageCleared.at(level);
ae5d6381 sago007 2015-12-29 13:26 112
}
ae5d6381 sago007 2015-12-29 13:26 113
ae5d6381 sago007 2015-12-29 13:26 114
ae5d6381 sago007 2015-12-29 13:26 115
int GetStageScores(int level) {
ae5d6381 sago007 2015-12-29 13:26 116
	return stageScores.at(level);
ae5d6381 sago007 2015-12-29 13:26 117
}
ae5d6381 sago007 2015-12-29 13:26 118
ae5d6381 sago007 2015-12-29 13:26 119
int GetStageTime(int level) {
ae5d6381 sago007 2015-12-29 13:26 120
	return stageTimes.at(level);
ae5d6381 sago007 2015-12-29 13:26 121
}