git repos / blockattack-game

blame: source/code/editor/EditorInterface.cpp

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) 2007 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
    Raevehjvej 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
/*
89c4a3a6 sago007 2008-08-29 14:32 28
TODO: The way we test for 
89c4a3a6 sago007 2008-08-29 14:32 29
89c4a3a6 sago007 2008-08-29 14:32 30
*/
89c4a3a6 sago007 2008-08-29 14:32 31
89c4a3a6 sago007 2008-08-29 14:32 32
#include "EditorInterface.hpp"
89c4a3a6 sago007 2008-08-29 14:32 33
89c4a3a6 sago007 2008-08-29 14:32 34
EditorInterface::EditorInterface()
89c4a3a6 sago007 2008-08-29 14:32 35
{
89c4a3a6 sago007 2008-08-29 14:32 36
    boardActive = -1;
89c4a3a6 sago007 2008-08-29 14:32 37
    saved = true;
89c4a3a6 sago007 2008-08-29 14:32 38
    fileSaved = true;
89c4a3a6 sago007 2008-08-29 14:32 39
    bh.isNull = true;
89c4a3a6 sago007 2008-08-29 14:32 40
}
89c4a3a6 sago007 2008-08-29 14:32 41
89c4a3a6 sago007 2008-08-29 14:32 42
void EditorInterface::getModel(int nr)
89c4a3a6 sago007 2008-08-29 14:32 43
{
89c4a3a6 sago007 2008-08-29 14:32 44
    tb = bh.getModel(nr);
89c4a3a6 sago007 2008-08-29 14:32 45
    saved = true;
89c4a3a6 sago007 2008-08-29 14:32 46
    boardActive = nr;
89c4a3a6 sago007 2008-08-29 14:32 47
}
89c4a3a6 sago007 2008-08-29 14:32 48
89c4a3a6 sago007 2008-08-29 14:32 49
bool EditorInterface::exists()
89c4a3a6 sago007 2008-08-29 14:32 50
{
89c4a3a6 sago007 2008-08-29 14:32 51
    if(bh.isNull)
89c4a3a6 sago007 2008-08-29 14:32 52
        return false;
89c4a3a6 sago007 2008-08-29 14:32 53
    else
89c4a3a6 sago007 2008-08-29 14:32 54
        return true;
89c4a3a6 sago007 2008-08-29 14:32 55
}
89c4a3a6 sago007 2008-08-29 14:32 56
89c4a3a6 sago007 2008-08-29 14:32 57
void EditorInterface::selectColor(int color)
89c4a3a6 sago007 2008-08-29 14:32 58
{
89c4a3a6 sago007 2008-08-29 14:32 59
    colorSelected = color;
89c4a3a6 sago007 2008-08-29 14:32 60
}
89c4a3a6 sago007 2008-08-29 14:32 61
89c4a3a6 sago007 2008-08-29 14:32 62
int EditorInterface::getSelectedColor()
89c4a3a6 sago007 2008-08-29 14:32 63
{
89c4a3a6 sago007 2008-08-29 14:32 64
    return colorSelected;
89c4a3a6 sago007 2008-08-29 14:32 65
}
89c4a3a6 sago007 2008-08-29 14:32 66
89c4a3a6 sago007 2008-08-29 14:32 67
void EditorInterface::drawOnModel(int x, int y)
89c4a3a6 sago007 2008-08-29 14:32 68
{
89c4a3a6 sago007 2008-08-29 14:32 69
    if(boardActive!=-1)
89c4a3a6 sago007 2008-08-29 14:32 70
	{
89c4a3a6 sago007 2008-08-29 14:32 71
		if(colorSelected<7)  //Ordinary thing
89c4a3a6 sago007 2008-08-29 14:32 72
		tb.setBrick(x,y,colorSelected);
89c4a3a6 sago007 2008-08-29 14:32 73
		if(colorSelected==7)
89c4a3a6 sago007 2008-08-29 14:32 74
			tb.moveUp(x,y);
89c4a3a6 sago007 2008-08-29 14:32 75
		if(colorSelected==8)
89c4a3a6 sago007 2008-08-29 14:32 76
			tb.moveDown(x,y);
89c4a3a6 sago007 2008-08-29 14:32 77
		saved = false;
89c4a3a6 sago007 2008-08-29 14:32 78
	}
89c4a3a6 sago007 2008-08-29 14:32 79
}
89c4a3a6 sago007 2008-08-29 14:32 80
89c4a3a6 sago007 2008-08-29 14:32 81
void EditorInterface::moveLeft()
89c4a3a6 sago007 2008-08-29 14:32 82
{
89c4a3a6 sago007 2008-08-29 14:32 83
	if(boardActive!=-1)
89c4a3a6 sago007 2008-08-29 14:32 84
    	tb.moveLeft();
89c4a3a6 sago007 2008-08-29 14:32 85
	saved = false;
89c4a3a6 sago007 2008-08-29 14:32 86
}
89c4a3a6 sago007 2008-08-29 14:32 87
89c4a3a6 sago007 2008-08-29 14:32 88
void EditorInterface::moveRight()
89c4a3a6 sago007 2008-08-29 14:32 89
{
89c4a3a6 sago007 2008-08-29 14:32 90
	if(boardActive!=-1)
89c4a3a6 sago007 2008-08-29 14:32 91
		tb.moveRight();
89c4a3a6 sago007 2008-08-29 14:32 92
	saved = false;
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 EditorInterface::deleteBoard()
89c4a3a6 sago007 2008-08-29 14:32 96
{
89c4a3a6 sago007 2008-08-29 14:32 97
	if(boardActive!=-1)
89c4a3a6 sago007 2008-08-29 14:32 98
	{
89c4a3a6 sago007 2008-08-29 14:32 99
		bh.removeBoard(boardActive);
89c4a3a6 sago007 2008-08-29 14:32 100
		boardActive = -1;
89c4a3a6 sago007 2008-08-29 14:32 101
		saved = true;
89c4a3a6 sago007 2008-08-29 14:32 102
		fileSaved = false;
89c4a3a6 sago007 2008-08-29 14:32 103
	}
89c4a3a6 sago007 2008-08-29 14:32 104
}
89c4a3a6 sago007 2008-08-29 14:32 105
	
89c4a3a6 sago007 2008-08-29 14:32 106
void EditorInterface::moveBoardBack()
89c4a3a6 sago007 2008-08-29 14:32 107
{
89c4a3a6 sago007 2008-08-29 14:32 108
	if(boardActive!=-1)
89c4a3a6 sago007 2008-08-29 14:32 109
	{
89c4a3a6 sago007 2008-08-29 14:32 110
		if(bh.moveBoardBack(boardActive))
89c4a3a6 sago007 2008-08-29 14:32 111
			boardActive--;
89c4a3a6 sago007 2008-08-29 14:32 112
	}
89c4a3a6 sago007 2008-08-29 14:32 113
}
89c4a3a6 sago007 2008-08-29 14:32 114
	
89c4a3a6 sago007 2008-08-29 14:32 115
void EditorInterface::moveBoardForward()
89c4a3a6 sago007 2008-08-29 14:32 116
{
89c4a3a6 sago007 2008-08-29 14:32 117
	if(boardActive!=-1)
89c4a3a6 sago007 2008-08-29 14:32 118
	{
89c4a3a6 sago007 2008-08-29 14:32 119
		if(bh.moveBoardForward(boardActive))
89c4a3a6 sago007 2008-08-29 14:32 120
			boardActive++;
89c4a3a6 sago007 2008-08-29 14:32 121
	}
89c4a3a6 sago007 2008-08-29 14:32 122
}
89c4a3a6 sago007 2008-08-29 14:32 123
	
89c4a3a6 sago007 2008-08-29 14:32 124
void EditorInterface::saveBoard()
89c4a3a6 sago007 2008-08-29 14:32 125
{
89c4a3a6 sago007 2008-08-29 14:32 126
	if(boardActive!=-1)
89c4a3a6 sago007 2008-08-29 14:32 127
	{
89c4a3a6 sago007 2008-08-29 14:32 128
		bh.setModel(boardActive,tb);
89c4a3a6 sago007 2008-08-29 14:32 129
		saved = true;
89c4a3a6 sago007 2008-08-29 14:32 130
		fileSaved = false;
89c4a3a6 sago007 2008-08-29 14:32 131
	}
89c4a3a6 sago007 2008-08-29 14:32 132
}
89c4a3a6 sago007 2008-08-29 14:32 133
	
89c4a3a6 sago007 2008-08-29 14:32 134
bool EditorInterface::saveFile(string filename)
89c4a3a6 sago007 2008-08-29 14:32 135
{
89c4a3a6 sago007 2008-08-29 14:32 136
	if((!bh.isNull)&&(filename!=""))
89c4a3a6 sago007 2008-08-29 14:32 137
	{
89c4a3a6 sago007 2008-08-29 14:32 138
		fileName = filename; 
89c4a3a6 sago007 2008-08-29 14:32 139
		bh.saveBoards(filename);
89c4a3a6 sago007 2008-08-29 14:32 140
		fileSaved = true;
89c4a3a6 sago007 2008-08-29 14:32 141
		return true;
89c4a3a6 sago007 2008-08-29 14:32 142
	}
89c4a3a6 sago007 2008-08-29 14:32 143
	return false;
89c4a3a6 sago007 2008-08-29 14:32 144
}
89c4a3a6 sago007 2008-08-29 14:32 145
	
89c4a3a6 sago007 2008-08-29 14:32 146
bool EditorInterface::saveFile()
89c4a3a6 sago007 2008-08-29 14:32 147
{
89c4a3a6 sago007 2008-08-29 14:32 148
	if((!bh.isNull)&&(fileName!=""))
89c4a3a6 sago007 2008-08-29 14:32 149
	{
89c4a3a6 sago007 2008-08-29 14:32 150
		bh.saveBoards(fileName);
89c4a3a6 sago007 2008-08-29 14:32 151
		fileSaved = true;
89c4a3a6 sago007 2008-08-29 14:32 152
		return true;
89c4a3a6 sago007 2008-08-29 14:32 153
	}
89c4a3a6 sago007 2008-08-29 14:32 154
	return false;
89c4a3a6 sago007 2008-08-29 14:32 155
}
89c4a3a6 sago007 2008-08-29 14:32 156
	
89c4a3a6 sago007 2008-08-29 14:32 157
void EditorInterface::openFile(string filename)
89c4a3a6 sago007 2008-08-29 14:32 158
{
89c4a3a6 sago007 2008-08-29 14:32 159
	fileName = filename;
89c4a3a6 sago007 2008-08-29 14:32 160
	BoardHolder bh2(fileName);
89c4a3a6 sago007 2008-08-29 14:32 161
	bh = bh2;
89c4a3a6 sago007 2008-08-29 14:32 162
	saved = true;
89c4a3a6 sago007 2008-08-29 14:32 163
	fileSaved = true;
89c4a3a6 sago007 2008-08-29 14:32 164
}
89c4a3a6 sago007 2008-08-29 14:32 165
	
89c4a3a6 sago007 2008-08-29 14:32 166
void EditorInterface::newFile()
89c4a3a6 sago007 2008-08-29 14:32 167
{
89c4a3a6 sago007 2008-08-29 14:32 168
	fileName = "";
89c4a3a6 sago007 2008-08-29 14:32 169
	bh = BoardHolder();
89c4a3a6 sago007 2008-08-29 14:32 170
	TheBoard tb2;
89c4a3a6 sago007 2008-08-29 14:32 171
    tb.isNull = true; // = null; What here!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
89c4a3a6 sago007 2008-08-29 14:32 172
	boardActive = -1;
89c4a3a6 sago007 2008-08-29 14:32 173
	saved = true;
89c4a3a6 sago007 2008-08-29 14:32 174
	fileSaved = false;
89c4a3a6 sago007 2008-08-29 14:32 175
}
89c4a3a6 sago007 2008-08-29 14:32 176
	
89c4a3a6 sago007 2008-08-29 14:32 177
int EditorInterface::getColor(int x, int y)
89c4a3a6 sago007 2008-08-29 14:32 178
{
89c4a3a6 sago007 2008-08-29 14:32 179
	if(boardActive==-1)
89c4a3a6 sago007 2008-08-29 14:32 180
		return -1;
89c4a3a6 sago007 2008-08-29 14:32 181
	return tb.getBrick(x,y);
89c4a3a6 sago007 2008-08-29 14:32 182
}
89c4a3a6 sago007 2008-08-29 14:32 183
	
89c4a3a6 sago007 2008-08-29 14:32 184
int EditorInterface::getActiveBoardNr()
89c4a3a6 sago007 2008-08-29 14:32 185
{
89c4a3a6 sago007 2008-08-29 14:32 186
	return boardActive;
89c4a3a6 sago007 2008-08-29 14:32 187
}
89c4a3a6 sago007 2008-08-29 14:32 188
	
89c4a3a6 sago007 2008-08-29 14:32 189
int EditorInterface::getNumberOfMoves()
89c4a3a6 sago007 2008-08-29 14:32 190
{
89c4a3a6 sago007 2008-08-29 14:32 191
	if(!tb.isNull)
89c4a3a6 sago007 2008-08-29 14:32 192
	{
89c4a3a6 sago007 2008-08-29 14:32 193
		return tb.getNumberOfMoves();
89c4a3a6 sago007 2008-08-29 14:32 194
	}
89c4a3a6 sago007 2008-08-29 14:32 195
	return 0;
89c4a3a6 sago007 2008-08-29 14:32 196
}
89c4a3a6 sago007 2008-08-29 14:32 197
	
89c4a3a6 sago007 2008-08-29 14:32 198
bool EditorInterface::newBoard()
89c4a3a6 sago007 2008-08-29 14:32 199
{
89c4a3a6 sago007 2008-08-29 14:32 200
	if(!bh.isNull)
89c4a3a6 sago007 2008-08-29 14:32 201
	{
89c4a3a6 sago007 2008-08-29 14:32 202
		fileSaved = false;
89c4a3a6 sago007 2008-08-29 14:32 203
		return bh.addBoard();
89c4a3a6 sago007 2008-08-29 14:32 204
	}
89c4a3a6 sago007 2008-08-29 14:32 205
	else
89c4a3a6 sago007 2008-08-29 14:32 206
		return false;
89c4a3a6 sago007 2008-08-29 14:32 207
}
89c4a3a6 sago007 2008-08-29 14:32 208
	
89c4a3a6 sago007 2008-08-29 14:32 209
int EditorInterface::getNumberOfBoards()
89c4a3a6 sago007 2008-08-29 14:32 210
{
89c4a3a6 sago007 2008-08-29 14:32 211
	if(!bh.isNull)
89c4a3a6 sago007 2008-08-29 14:32 212
		return bh.getNumberOfBoards();
89c4a3a6 sago007 2008-08-29 14:32 213
	else
89c4a3a6 sago007 2008-08-29 14:32 214
		return 0;
89c4a3a6 sago007 2008-08-29 14:32 215
}
89c4a3a6 sago007 2008-08-29 14:32 216
	
89c4a3a6 sago007 2008-08-29 14:32 217
void EditorInterface::setNumberOfMoves(int moves)
89c4a3a6 sago007 2008-08-29 14:32 218
{
89c4a3a6 sago007 2008-08-29 14:32 219
	if(!tb.isNull)
89c4a3a6 sago007 2008-08-29 14:32 220
	{
89c4a3a6 sago007 2008-08-29 14:32 221
		saved = false;
89c4a3a6 sago007 2008-08-29 14:32 222
		tb.setNumberOfMoves(moves);
89c4a3a6 sago007 2008-08-29 14:32 223
	}
89c4a3a6 sago007 2008-08-29 14:32 224
}
89c4a3a6 sago007 2008-08-29 14:32 225
	
89c4a3a6 sago007 2008-08-29 14:32 226
bool EditorInterface::isSaved()
89c4a3a6 sago007 2008-08-29 14:32 227
{
89c4a3a6 sago007 2008-08-29 14:32 228
	return saved;
89c4a3a6 sago007 2008-08-29 14:32 229
}
89c4a3a6 sago007 2008-08-29 14:32 230
	
89c4a3a6 sago007 2008-08-29 14:32 231
bool EditorInterface::fileIsSaved()
89c4a3a6 sago007 2008-08-29 14:32 232
{
89c4a3a6 sago007 2008-08-29 14:32 233
	return fileSaved;
89c4a3a6 sago007 2008-08-29 14:32 234
}
1970-01-01 00:00 235