git repos / blockattack-game

blame: source/code/editor/BoardHolder.cpp

normal view · raw

89c4a3a6 sago007 2008-08-29 14:32 1
/*
c53e6443 sago007 2012-04-17 11:04 2
===========================================================================
c53e6443 sago007 2012-04-17 11:04 3
blockattack - Block Attack - Rise of the Blocks
c53e6443 sago007 2012-04-17 11:04 4
Copyright (C) 2005-2012 Poul Sander
c53e6443 sago007 2012-04-17 11:04 5
c53e6443 sago007 2012-04-17 11:04 6
This program is free software: you can redistribute it and/or modify
c53e6443 sago007 2012-04-17 11:04 7
it under the terms of the GNU General Public License as published by
c53e6443 sago007 2012-04-17 11:04 8
the Free Software Foundation, either version 2 of the License, or
c53e6443 sago007 2012-04-17 11:04 9
(at your option) any later version.
c53e6443 sago007 2012-04-17 11:04 10
c53e6443 sago007 2012-04-17 11:04 11
This program is distributed in the hope that it will be useful,
c53e6443 sago007 2012-04-17 11:04 12
but WITHOUT ANY WARRANTY; without even the implied warranty of
c53e6443 sago007 2012-04-17 11:04 13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
c53e6443 sago007 2012-04-17 11:04 14
GNU General Public License for more details.
c53e6443 sago007 2012-04-17 11:04 15
c53e6443 sago007 2012-04-17 11:04 16
You should have received a copy of the GNU General Public License
c53e6443 sago007 2012-04-17 11:04 17
along with this program.  If not, see http://www.gnu.org/licenses/
c53e6443 sago007 2012-04-17 11:04 18
c53e6443 sago007 2012-04-17 11:04 19
Source information and contacts persons can be found at
c53e6443 sago007 2012-04-17 11:04 20
http://blockattack.sf.net
c53e6443 sago007 2012-04-17 11:04 21
===========================================================================
89c4a3a6 sago007 2008-08-29 14:32 22
*/
89c4a3a6 sago007 2008-08-29 14:32 23
89c4a3a6 sago007 2008-08-29 14:32 24
#include "BoardHolder.hpp"
89c4a3a6 sago007 2008-08-29 14:32 25
89c4a3a6 sago007 2008-08-29 14:32 26
BoardHolder::BoardHolder(string filename)
89c4a3a6 sago007 2008-08-29 14:32 27
{
c53e6443 sago007 2012-04-17 11:04 28
	fstream inFile(filename.c_str(),ios::in);
c53e6443 sago007 2012-04-17 11:04 29
	if(inFile)
c53e6443 sago007 2012-04-17 11:04 30
	{
c53e6443 sago007 2012-04-17 11:04 31
		int nrOfBoards;
c53e6443 sago007 2012-04-17 11:04 32
		inFile >> nrOfBoards;
c53e6443 sago007 2012-04-17 11:04 33
		for(int i=0; i<nrOfBoards; i++)
c53e6443 sago007 2012-04-17 11:04 34
		{
c53e6443 sago007 2012-04-17 11:04 35
			TheBoard ourBoard;
c53e6443 sago007 2012-04-17 11:04 36
			int temp;
c53e6443 sago007 2012-04-17 11:04 37
			inFile >> temp;
c53e6443 sago007 2012-04-17 11:04 38
			ourBoard.setNumberOfMoves(temp);
c53e6443 sago007 2012-04-17 11:04 39
			for(int j=0; j<12; j++)
89c4a3a6 sago007 2008-08-29 14:32 40
			{
c53e6443 sago007 2012-04-17 11:04 41
				for(int k=0; k<6; k++)
89c4a3a6 sago007 2008-08-29 14:32 42
				{
c53e6443 sago007 2012-04-17 11:04 43
					inFile >> temp;
c53e6443 sago007 2012-04-17 11:04 44
					ourBoard.setBrick(k,j,temp);
89c4a3a6 sago007 2008-08-29 14:32 45
				}
89c4a3a6 sago007 2008-08-29 14:32 46
			}
c53e6443 sago007 2012-04-17 11:04 47
			theBoards[i] = ourBoard;
c53e6443 sago007 2012-04-17 11:04 48
		}
89c4a3a6 sago007 2008-08-29 14:32 49
		isNull = false;
c53e6443 sago007 2012-04-17 11:04 50
	}
89c4a3a6 sago007 2008-08-29 14:32 51
}
89c4a3a6 sago007 2008-08-29 14:32 52
89c4a3a6 sago007 2008-08-29 14:32 53
BoardHolder::BoardHolder()
89c4a3a6 sago007 2008-08-29 14:32 54
{
c53e6443 sago007 2012-04-17 11:04 55
	isNull = false;
89c4a3a6 sago007 2008-08-29 14:32 56
}
89c4a3a6 sago007 2008-08-29 14:32 57
89c4a3a6 sago007 2008-08-29 14:32 58
bool BoardHolder::saveBoards(string filename)
89c4a3a6 sago007 2008-08-29 14:32 59
{
c53e6443 sago007 2012-04-17 11:04 60
	fstream outFile(filename.c_str(),ios::out);
c53e6443 sago007 2012-04-17 11:04 61
	if(outFile)
c53e6443 sago007 2012-04-17 11:04 62
	{
c53e6443 sago007 2012-04-17 11:04 63
		outFile << getNumberOfBoards() << endl;
c53e6443 sago007 2012-04-17 11:04 64
		for(int i=0; i<getNumberOfBoards(); i++)
c53e6443 sago007 2012-04-17 11:04 65
		{
c53e6443 sago007 2012-04-17 11:04 66
			outFile << theBoards[i].getNumberOfMoves() << endl;
c53e6443 sago007 2012-04-17 11:04 67
			for(int j=0; j<12; j++)
89c4a3a6 sago007 2008-08-29 14:32 68
			{
c53e6443 sago007 2012-04-17 11:04 69
				for(int k=0; k<6; k++)
89c4a3a6 sago007 2008-08-29 14:32 70
				{
c53e6443 sago007 2012-04-17 11:04 71
					outFile << theBoards[i].getBrick(k,j);
c53e6443 sago007 2012-04-17 11:04 72
					if(k<5)
c53e6443 sago007 2012-04-17 11:04 73
						outFile << " ";
c53e6443 sago007 2012-04-17 11:04 74
					else
c53e6443 sago007 2012-04-17 11:04 75
						outFile << endl;
89c4a3a6 sago007 2008-08-29 14:32 76
				}
89c4a3a6 sago007 2008-08-29 14:32 77
			}
c53e6443 sago007 2012-04-17 11:04 78
		}
c53e6443 sago007 2012-04-17 11:04 79
		outFile.close();
c53e6443 sago007 2012-04-17 11:04 80
		return true;
c53e6443 sago007 2012-04-17 11:04 81
	}
c53e6443 sago007 2012-04-17 11:04 82
	else
c53e6443 sago007 2012-04-17 11:04 83
		return false;
89c4a3a6 sago007 2008-08-29 14:32 84
}
89c4a3a6 sago007 2008-08-29 14:32 85
89c4a3a6 sago007 2008-08-29 14:32 86
TheBoard BoardHolder::getModel(int nr)
89c4a3a6 sago007 2008-08-29 14:32 87
{
c53e6443 sago007 2012-04-17 11:04 88
	if(theBoards.size()<nr)
c53e6443 sago007 2012-04-17 11:04 89
	{
c53e6443 sago007 2012-04-17 11:04 90
		//Problem!
c53e6443 sago007 2012-04-17 11:04 91
c53e6443 sago007 2012-04-17 11:04 92
	}
c53e6443 sago007 2012-04-17 11:04 93
	else
c53e6443 sago007 2012-04-17 11:04 94
	{
c53e6443 sago007 2012-04-17 11:04 95
		return theBoards[nr];
c53e6443 sago007 2012-04-17 11:04 96
	}
89c4a3a6 sago007 2008-08-29 14:32 97
}
89c4a3a6 sago007 2008-08-29 14:32 98
89c4a3a6 sago007 2008-08-29 14:32 99
bool BoardHolder::setModel(int nr, TheBoard model)
89c4a3a6 sago007 2008-08-29 14:32 100
{
c53e6443 sago007 2012-04-17 11:04 101
	if((nr>49)||(nr<0))
c53e6443 sago007 2012-04-17 11:04 102
		return false;
c53e6443 sago007 2012-04-17 11:04 103
	theBoards[nr] = model;
c53e6443 sago007 2012-04-17 11:04 104
	return true;
89c4a3a6 sago007 2008-08-29 14:32 105
}
89c4a3a6 sago007 2008-08-29 14:32 106
89c4a3a6 sago007 2008-08-29 14:32 107
int BoardHolder::getNumberOfBoards()
89c4a3a6 sago007 2008-08-29 14:32 108
{
c53e6443 sago007 2012-04-17 11:04 109
	return theBoards.size();
89c4a3a6 sago007 2008-08-29 14:32 110
}
89c4a3a6 sago007 2008-08-29 14:32 111
89c4a3a6 sago007 2008-08-29 14:32 112
bool BoardHolder::addBoard()
89c4a3a6 sago007 2008-08-29 14:32 113
{
c53e6443 sago007 2012-04-17 11:04 114
	if(!(theBoards.size()<49))
c53e6443 sago007 2012-04-17 11:04 115
		return false;
c53e6443 sago007 2012-04-17 11:04 116
	TheBoard tb;
c53e6443 sago007 2012-04-17 11:04 117
	theBoards[theBoards.size()] = tb;
c53e6443 sago007 2012-04-17 11:04 118
	return true;
89c4a3a6 sago007 2008-08-29 14:32 119
}
89c4a3a6 sago007 2008-08-29 14:32 120
89c4a3a6 sago007 2008-08-29 14:32 121
bool BoardHolder::removeBoard(int nr)
89c4a3a6 sago007 2008-08-29 14:32 122
{
c53e6443 sago007 2012-04-17 11:04 123
	vector<TheBoard>::iterator itr;
c53e6443 sago007 2012-04-17 11:04 124
	itr = theBoards.begin();
c53e6443 sago007 2012-04-17 11:04 125
	itr+=nr;
c53e6443 sago007 2012-04-17 11:04 126
	theBoards.erase(itr);
89c4a3a6 sago007 2008-08-29 14:32 127
}
89c4a3a6 sago007 2008-08-29 14:32 128
89c4a3a6 sago007 2008-08-29 14:32 129
bool BoardHolder::moveBoardBack(int nr)
89c4a3a6 sago007 2008-08-29 14:32 130
{
c53e6443 sago007 2012-04-17 11:04 131
	if(nr<1) //We can't move back
c53e6443 sago007 2012-04-17 11:04 132
		return false;
c53e6443 sago007 2012-04-17 11:04 133
	if(nr>getNumberOfBoards())
c53e6443 sago007 2012-04-17 11:04 134
		return false;
c53e6443 sago007 2012-04-17 11:04 135
	TheBoard temp = theBoards[nr];
c53e6443 sago007 2012-04-17 11:04 136
	theBoards[nr] = theBoards[nr-1];
c53e6443 sago007 2012-04-17 11:04 137
	theBoards[nr-1] = temp;
c53e6443 sago007 2012-04-17 11:04 138
	return true;
89c4a3a6 sago007 2008-08-29 14:32 139
}
89c4a3a6 sago007 2008-08-29 14:32 140
89c4a3a6 sago007 2008-08-29 14:32 141
bool BoardHolder::moveBoardForward(int nr)
89c4a3a6 sago007 2008-08-29 14:32 142
{
c53e6443 sago007 2012-04-17 11:04 143
	if(nr>getNumberOfBoards()-2) //We can't move forward
c53e6443 sago007 2012-04-17 11:04 144
		return false;
c53e6443 sago007 2012-04-17 11:04 145
	if(nr<0)
c53e6443 sago007 2012-04-17 11:04 146
		return false;
c53e6443 sago007 2012-04-17 11:04 147
	TheBoard temp = theBoards[nr];
c53e6443 sago007 2012-04-17 11:04 148
	theBoards[nr] = theBoards[nr+1];
c53e6443 sago007 2012-04-17 11:04 149
	theBoards[nr+1] = temp;
c53e6443 sago007 2012-04-17 11:04 150
	return true;
89c4a3a6 sago007 2008-08-29 14:32 151
}
1970-01-01 00:00 152