git repos / blockattack-game

blame: source/code/BlockGameSdl.inc

normal view · raw

8b1ab1cb sago007 2016-04-04 17:51 1
8b1ab1cb sago007 2016-04-04 17:51 2
class BlockGameSdl : public BlockGame {
8b1ab1cb sago007 2016-04-04 17:51 3
public:
8b1ab1cb sago007 2016-04-04 17:51 4
	BlockGameSdl(int tx, int ty) {
8b1ab1cb sago007 2016-04-04 17:51 5
		topx = tx;
8b1ab1cb sago007 2016-04-04 17:51 6
		topy = ty;
8b1ab1cb sago007 2016-04-04 17:51 7
	}
8b1ab1cb sago007 2016-04-04 17:51 8
8b1ab1cb sago007 2016-04-04 17:51 9
	void DrawImgBoard(const sago::SagoSprite& img, int x, int y) const {
8b1ab1cb sago007 2016-04-04 17:51 10
		DrawIMG(img, screen, x+topx, y+topy);
8b1ab1cb sago007 2016-04-04 17:51 11
	}
8b1ab1cb sago007 2016-04-04 17:51 12
8b1ab1cb sago007 2016-04-04 17:51 13
	void DrawImgBoardBounded(const sago::SagoSprite& img, int x, int y) const {
8b1ab1cb sago007 2016-04-04 17:51 14
		DrawIMG_Bounded(img, screen, x+topx, y+topy, topx, topy, topx + backBoard.GetWidth(), topy + backBoard.GetHeight());
8b1ab1cb sago007 2016-04-04 17:51 15
	}
8b1ab1cb sago007 2016-04-04 17:51 16
8b1ab1cb sago007 2016-04-04 17:51 17
	void PrintTextCenteredBoard(int x, int y, const char* text) {
8b1ab1cb sago007 2016-04-04 17:51 18
		nf_button_font.draw(screen, x+topx+60, y+topy+10, NFont::CENTER, "%s", text);
8b1ab1cb sago007 2016-04-04 17:51 19
	}
8b1ab1cb sago007 2016-04-04 17:51 20
8b1ab1cb sago007 2016-04-04 17:51 21
	int GetTopX() const {
8b1ab1cb sago007 2016-04-04 17:51 22
		return topx;
8b1ab1cb sago007 2016-04-04 17:51 23
	}
8b1ab1cb sago007 2016-04-04 17:51 24
	int GetTopY() const {
8b1ab1cb sago007 2016-04-04 17:51 25
		return topy;
8b1ab1cb sago007 2016-04-04 17:51 26
	}
8b1ab1cb sago007 2016-04-04 17:51 27
	
8b1ab1cb sago007 2016-04-04 17:51 28
	/**
8b1ab1cb sago007 2016-04-04 17:51 29
	 * Retrives the coordinate to a given brick based on mouse input.
8b1ab1cb sago007 2016-04-04 17:51 30
	 * @param match true if the coordinate are within borders
8b1ab1cb sago007 2016-04-04 17:51 31
	 * @param mousex mouse coordinate input
8b1ab1cb sago007 2016-04-04 17:51 32
	 * @param mousey mouse coordiante input
8b1ab1cb sago007 2016-04-04 17:51 33
	 * @param x brick x. Unchanged if outside border
8b1ab1cb sago007 2016-04-04 17:51 34
	 * @param y brick y. Unchanged if outside border
8b1ab1cb sago007 2016-04-04 17:51 35
	 */
8b1ab1cb sago007 2016-04-04 17:51 36
	void GetBrickCoordinateFromMouse(bool& match, int mousex, int mousey, int& x, int& y) const {
8b1ab1cb sago007 2016-04-04 17:51 37
		if (mousex < topx || mousex > topx+50*6 || mousey < topy || mousey > topy+50*12) {
8b1ab1cb sago007 2016-04-04 17:51 38
			match = false;
8b1ab1cb sago007 2016-04-04 17:51 39
			return;
8b1ab1cb sago007 2016-04-04 17:51 40
		}
8b1ab1cb sago007 2016-04-04 17:51 41
		match = true;
8b1ab1cb sago007 2016-04-04 17:51 42
		x = (mousex-topx) / 50;
8b1ab1cb sago007 2016-04-04 17:51 43
		y = (50*12+topy-mousey-pixels) / 50;
8b1ab1cb sago007 2016-04-04 17:51 44
	}
8b1ab1cb sago007 2016-04-04 17:51 45
8b1ab1cb sago007 2016-04-04 17:51 46
	void AddText(int x, int y, const std::string& text, int time) const override {
8b1ab1cb sago007 2016-04-04 17:51 47
		theTextManager.addText(topx-10+x*bsize, topy+12*bsize-y*bsize, text, time);
8b1ab1cb sago007 2016-04-04 17:51 48
	}
8b1ab1cb sago007 2016-04-04 17:51 49
8b1ab1cb sago007 2016-04-04 17:51 50
	void AddBall(int x, int y, bool right, int color) const  override {
8b1ab1cb sago007 2016-04-04 17:51 51
		theBallManager.addBall(topx+40+x*bsize, topy+bsize*12-y*bsize, right, color);
8b1ab1cb sago007 2016-04-04 17:51 52
	}
8b1ab1cb sago007 2016-04-04 17:51 53
8b1ab1cb sago007 2016-04-04 17:51 54
	void AddExplosion(int x, int y) const  override {
8b1ab1cb sago007 2016-04-04 17:51 55
		theExplosionManager.addExplosion(topx-10+x*bsize, topy+bsize*12-10-y*bsize);
8b1ab1cb sago007 2016-04-04 17:51 56
	}
8b1ab1cb sago007 2016-04-04 17:51 57
8b1ab1cb sago007 2016-04-04 17:51 58
	void PlayerWonEvent() const  override {
8b1ab1cb sago007 2016-04-04 17:51 59
		if (!SoundEnabled) {
8b1ab1cb sago007 2016-04-04 17:51 60
			return;
8b1ab1cb sago007 2016-04-04 17:51 61
		}
8b1ab1cb sago007 2016-04-04 17:51 62
		Mix_PlayChannel(1, applause, 0);
8b1ab1cb sago007 2016-04-04 17:51 63
	}
8b1ab1cb sago007 2016-04-04 17:51 64
8b1ab1cb sago007 2016-04-04 17:51 65
	void DrawEvent() const override {
8b1ab1cb sago007 2016-04-04 17:51 66
		Mix_HaltChannel(1);
8b1ab1cb sago007 2016-04-04 17:51 67
	}
8b1ab1cb sago007 2016-04-04 17:51 68
8b1ab1cb sago007 2016-04-04 17:51 69
	void BlockPopEvent() const  override {
8b1ab1cb sago007 2016-04-04 17:51 70
		if (!SoundEnabled) {
8b1ab1cb sago007 2016-04-04 17:51 71
			return;
8b1ab1cb sago007 2016-04-04 17:51 72
		}
8b1ab1cb sago007 2016-04-04 17:51 73
		Mix_PlayChannel(0, boing, 0);
8b1ab1cb sago007 2016-04-04 17:51 74
	}
8b1ab1cb sago007 2016-04-04 17:51 75
8b1ab1cb sago007 2016-04-04 17:51 76
	void LongChainDoneEvent() const  override {
8b1ab1cb sago007 2016-04-04 17:51 77
		if (!SoundEnabled) {
8b1ab1cb sago007 2016-04-04 17:51 78
			return;
8b1ab1cb sago007 2016-04-04 17:51 79
		}
8b1ab1cb sago007 2016-04-04 17:51 80
		Mix_PlayChannel(1, applause, 0);
8b1ab1cb sago007 2016-04-04 17:51 81
	}
8b1ab1cb sago007 2016-04-04 17:51 82
8b1ab1cb sago007 2016-04-04 17:51 83
	void TimeTrialEndEvent() const  override {
8b1ab1cb sago007 2016-04-04 17:51 84
		if (!NoSound && SoundEnabled) {
8b1ab1cb sago007 2016-04-04 17:51 85
			Mix_PlayChannel(1,counterFinalChunk,0);
8b1ab1cb sago007 2016-04-04 17:51 86
		}
8b1ab1cb sago007 2016-04-04 17:51 87
	}
8b1ab1cb sago007 2016-04-04 17:51 88
8b1ab1cb sago007 2016-04-04 17:51 89
	void EndlessHighscoreEvent() const  override {
8b1ab1cb sago007 2016-04-04 17:51 90
		if (!SoundEnabled) {
8b1ab1cb sago007 2016-04-04 17:51 91
			return;
8b1ab1cb sago007 2016-04-04 17:51 92
		}
8b1ab1cb sago007 2016-04-04 17:51 93
		Mix_PlayChannel(1, applause, 0);
8b1ab1cb sago007 2016-04-04 17:51 94
	}
8b1ab1cb sago007 2016-04-04 17:51 95
private:
8b1ab1cb sago007 2016-04-04 17:51 96
	//Draws all the bricks to the board (including garbage)
8b1ab1cb sago007 2016-04-04 17:51 97
	void PaintBricks() const {
8b1ab1cb sago007 2016-04-04 17:51 98
		for (int i=0; ((i<13)&&(i<30)); i++) {
8b1ab1cb sago007 2016-04-04 17:51 99
			for (int j=0; j<6; j++) {
8b1ab1cb sago007 2016-04-04 17:51 100
				int basicBrick = board[j][i]%10; //The basic brick, stored on the least significant digit
8b1ab1cb sago007 2016-04-04 17:51 101
				if ((basicBrick > -1) && (basicBrick < 7) && ((board[j][i]/1000000)%10==0)) {
8b1ab1cb sago007 2016-04-04 17:51 102
					DrawImgBoardBounded(bricks[basicBrick],  j*bsize, bsize*12-i*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 103
					if ((board[j][i]/BLOCKWAIT)%10==1) {
8b1ab1cb sago007 2016-04-04 17:51 104
						DrawImgBoard(bomb,  j*bsize, bsize*12-i*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 105
					}
8b1ab1cb sago007 2016-04-04 17:51 106
					if ((board[j][i]/BLOCKHANG)%10==1) {
8b1ab1cb sago007 2016-04-04 17:51 107
						DrawImgBoardBounded(ready,  j*bsize, bsize*12-i*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 108
					}
8b1ab1cb sago007 2016-04-04 17:51 109
8b1ab1cb sago007 2016-04-04 17:51 110
				}
8b1ab1cb sago007 2016-04-04 17:51 111
				if ((board[j][i]/1000000)%10==1) {
8b1ab1cb sago007 2016-04-04 17:51 112
					int left, right, over, under;
8b1ab1cb sago007 2016-04-04 17:51 113
					int number = board[j][i];
8b1ab1cb sago007 2016-04-04 17:51 114
					if (j<1) {
8b1ab1cb sago007 2016-04-04 17:51 115
						left = -1;
8b1ab1cb sago007 2016-04-04 17:51 116
					}
8b1ab1cb sago007 2016-04-04 17:51 117
					else {
8b1ab1cb sago007 2016-04-04 17:51 118
						left = board[j-1][i];
8b1ab1cb sago007 2016-04-04 17:51 119
					}
8b1ab1cb sago007 2016-04-04 17:51 120
					if (j>=5) {
8b1ab1cb sago007 2016-04-04 17:51 121
						right = -1;
8b1ab1cb sago007 2016-04-04 17:51 122
					}
8b1ab1cb sago007 2016-04-04 17:51 123
					else {
8b1ab1cb sago007 2016-04-04 17:51 124
						right = board[j+1][i];
8b1ab1cb sago007 2016-04-04 17:51 125
					}
8b1ab1cb sago007 2016-04-04 17:51 126
					if (i>28) {
8b1ab1cb sago007 2016-04-04 17:51 127
						over = -1;
8b1ab1cb sago007 2016-04-04 17:51 128
					}
8b1ab1cb sago007 2016-04-04 17:51 129
					else {
8b1ab1cb sago007 2016-04-04 17:51 130
						over = board[j][i+1];
8b1ab1cb sago007 2016-04-04 17:51 131
					}
8b1ab1cb sago007 2016-04-04 17:51 132
					if (i<1) {
8b1ab1cb sago007 2016-04-04 17:51 133
						under = -1;
8b1ab1cb sago007 2016-04-04 17:51 134
					}
8b1ab1cb sago007 2016-04-04 17:51 135
					else {
8b1ab1cb sago007 2016-04-04 17:51 136
						under = board[j][i-1];
8b1ab1cb sago007 2016-04-04 17:51 137
					}
8b1ab1cb sago007 2016-04-04 17:51 138
					if ((left == number)&&(right == number)&&(over == number)&&(under == number)) {
8b1ab1cb sago007 2016-04-04 17:51 139
						DrawImgBoardBounded(garbageFill,  j*bsize, bsize*12-i*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 140
					}
8b1ab1cb sago007 2016-04-04 17:51 141
					if ((left != number)&&(right == number)&&(over == number)&&(under == number)) {
8b1ab1cb sago007 2016-04-04 17:51 142
						DrawImgBoardBounded(garbageL,  j*bsize, bsize*12-i*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 143
					}
8b1ab1cb sago007 2016-04-04 17:51 144
					if ((left == number)&&(right != number)&&(over == number)&&(under == number)) {
8b1ab1cb sago007 2016-04-04 17:51 145
						DrawImgBoardBounded(garbageR,  j*bsize, bsize*12-i*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 146
					}
8b1ab1cb sago007 2016-04-04 17:51 147
					if ((left == number)&&(right == number)&&(over != number)&&(under == number)) {
8b1ab1cb sago007 2016-04-04 17:51 148
						DrawImgBoardBounded(garbageT,  j*bsize, bsize*12-i*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 149
					}
8b1ab1cb sago007 2016-04-04 17:51 150
					if ((left == number)&&(right == number)&&(over == number)&&(under != number)) {
8b1ab1cb sago007 2016-04-04 17:51 151
						DrawImgBoardBounded(garbageB,  j*bsize, bsize*12-i*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 152
					}
8b1ab1cb sago007 2016-04-04 17:51 153
					if ((left != number)&&(right == number)&&(over != number)&&(under == number)) {
8b1ab1cb sago007 2016-04-04 17:51 154
						DrawImgBoardBounded(garbageTL,  j*bsize, bsize*12-i*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 155
					}
8b1ab1cb sago007 2016-04-04 17:51 156
					if ((left != number)&&(right == number)&&(over == number)&&(under != number)) {
8b1ab1cb sago007 2016-04-04 17:51 157
						DrawImgBoardBounded(garbageBL,  j*bsize, bsize*12-i*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 158
					}
8b1ab1cb sago007 2016-04-04 17:51 159
					if ((left == number)&&(right != number)&&(over != number)&&(under == number)) {
8b1ab1cb sago007 2016-04-04 17:51 160
						DrawImgBoardBounded(garbageTR,  j*bsize, bsize*12-i*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 161
					}
8b1ab1cb sago007 2016-04-04 17:51 162
					if ((left == number)&&(right != number)&&(over == number)&&(under != number)) {
8b1ab1cb sago007 2016-04-04 17:51 163
						DrawImgBoardBounded(garbageBR,  j*bsize, bsize*12-i*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 164
					}
8b1ab1cb sago007 2016-04-04 17:51 165
					if ((left == number)&&(right != number)&&(over != number)&&(under != number)) {
8b1ab1cb sago007 2016-04-04 17:51 166
						DrawImgBoardBounded(garbageMR,  j*bsize, bsize*12-i*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 167
					}
8b1ab1cb sago007 2016-04-04 17:51 168
					if ((left == number)&&(right == number)&&(over != number)&&(under != number)) {
8b1ab1cb sago007 2016-04-04 17:51 169
						DrawImgBoardBounded(garbageM,  j*bsize, bsize*12-i*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 170
					}
8b1ab1cb sago007 2016-04-04 17:51 171
					if ((left != number)&&(right == number)&&(over != number)&&(under != number)) {
8b1ab1cb sago007 2016-04-04 17:51 172
						DrawImgBoardBounded(garbageML,  j*bsize, bsize*12-i*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 173
					}
8b1ab1cb sago007 2016-04-04 17:51 174
				}
8b1ab1cb sago007 2016-04-04 17:51 175
				if ((board[j][i]/1000000)%10==2) {
8b1ab1cb sago007 2016-04-04 17:51 176
					if (j==0) {
8b1ab1cb sago007 2016-04-04 17:51 177
						DrawImgBoardBounded(garbageGML,  j*bsize, bsize*12-i*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 178
					}
8b1ab1cb sago007 2016-04-04 17:51 179
					else if (j==5) {
8b1ab1cb sago007 2016-04-04 17:51 180
						DrawImgBoardBounded(garbageGMR,  j*bsize, bsize*12-i*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 181
					}
8b1ab1cb sago007 2016-04-04 17:51 182
					else {
8b1ab1cb sago007 2016-04-04 17:51 183
						DrawImgBoardBounded(garbageGM,  j*bsize, bsize*12-i*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 184
					}
8b1ab1cb sago007 2016-04-04 17:51 185
				}
8b1ab1cb sago007 2016-04-04 17:51 186
			}
8b1ab1cb sago007 2016-04-04 17:51 187
		}
8b1ab1cb sago007 2016-04-04 17:51 188
		const int j = 0;
8b1ab1cb sago007 2016-04-04 17:51 189
8b1ab1cb sago007 2016-04-04 17:51 190
		int garbageSize=0;
8b1ab1cb sago007 2016-04-04 17:51 191
		for (int i=0; i<20; i++) {
8b1ab1cb sago007 2016-04-04 17:51 192
			if ((board[j][i]/1000000)%10==1) {
8b1ab1cb sago007 2016-04-04 17:51 193
				int left, right, over, under;
8b1ab1cb sago007 2016-04-04 17:51 194
				int number = board[j][i];
8b1ab1cb sago007 2016-04-04 17:51 195
				if (j<1) {
8b1ab1cb sago007 2016-04-04 17:51 196
					left = -1;
8b1ab1cb sago007 2016-04-04 17:51 197
				}
8b1ab1cb sago007 2016-04-04 17:51 198
				else {
8b1ab1cb sago007 2016-04-04 17:51 199
					left = board[j-1][i];
8b1ab1cb sago007 2016-04-04 17:51 200
				}
8b1ab1cb sago007 2016-04-04 17:51 201
				if (j>5) {
8b1ab1cb sago007 2016-04-04 17:51 202
					right = -1;
8b1ab1cb sago007 2016-04-04 17:51 203
				}
8b1ab1cb sago007 2016-04-04 17:51 204
				else {
8b1ab1cb sago007 2016-04-04 17:51 205
					right = board[j+1][i];
8b1ab1cb sago007 2016-04-04 17:51 206
				}
8b1ab1cb sago007 2016-04-04 17:51 207
				if (i>28) {
8b1ab1cb sago007 2016-04-04 17:51 208
					over = -1;
8b1ab1cb sago007 2016-04-04 17:51 209
				}
8b1ab1cb sago007 2016-04-04 17:51 210
				else {
8b1ab1cb sago007 2016-04-04 17:51 211
					over = board[j][i+1];
8b1ab1cb sago007 2016-04-04 17:51 212
				}
8b1ab1cb sago007 2016-04-04 17:51 213
				if (i<1) {
8b1ab1cb sago007 2016-04-04 17:51 214
					under = -1;
8b1ab1cb sago007 2016-04-04 17:51 215
				}
8b1ab1cb sago007 2016-04-04 17:51 216
				else {
8b1ab1cb sago007 2016-04-04 17:51 217
					under = board[j][i-1];
8b1ab1cb sago007 2016-04-04 17:51 218
				}
8b1ab1cb sago007 2016-04-04 17:51 219
				if (((left != number)&&(right == number)&&(over != number)&&(under == number))&&(garbageSize>0)) {
8b1ab1cb sago007 2016-04-04 17:51 220
					DrawImgBoardBounded(smiley[board[j][i]%4],  2*bsize, 12*bsize-i*bsize-pixels+(bsize/2)*garbageSize);
8b1ab1cb sago007 2016-04-04 17:51 221
				}
8b1ab1cb sago007 2016-04-04 17:51 222
				if (!((left != number)&&(right == number)&&(over == number)&&(under == number))) { //not in garbage
8b1ab1cb sago007 2016-04-04 17:51 223
					garbageSize=0;
8b1ab1cb sago007 2016-04-04 17:51 224
				}
8b1ab1cb sago007 2016-04-04 17:51 225
				else {
8b1ab1cb sago007 2016-04-04 17:51 226
					garbageSize++;
8b1ab1cb sago007 2016-04-04 17:51 227
				}
8b1ab1cb sago007 2016-04-04 17:51 228
8b1ab1cb sago007 2016-04-04 17:51 229
			}
8b1ab1cb sago007 2016-04-04 17:51 230
		}
8b1ab1cb sago007 2016-04-04 17:51 231
		for (int i=0; i<6; i++) {
8b1ab1cb sago007 2016-04-04 17:51 232
			if (board[i][0]!=-1) {
8b1ab1cb sago007 2016-04-04 17:51 233
				DrawImgBoardBounded(transCover,  i*bsize, 12*bsize-pixels);    //Make the appering blocks transperant
8b1ab1cb sago007 2016-04-04 17:51 234
			}
8b1ab1cb sago007 2016-04-04 17:51 235
		}
8b1ab1cb sago007 2016-04-04 17:51 236
8b1ab1cb sago007 2016-04-04 17:51 237
	}
8b1ab1cb sago007 2016-04-04 17:51 238
public:
8b1ab1cb sago007 2016-04-04 17:51 239
	//Draws everything
8b1ab1cb sago007 2016-04-04 17:51 240
	void DoPaintJob() {
8b1ab1cb sago007 2016-04-04 17:51 241
		DrawIMG(boardBackBack,screen,this->GetTopX()-60,this->GetTopY()-68);
8b1ab1cb sago007 2016-04-04 17:51 242
8b1ab1cb sago007 2016-04-04 17:51 243
		nf_scoreboard_font.draw(screen, this->GetTopX()+310,this->GetTopY()-68+148,_("Score:") );
8b1ab1cb sago007 2016-04-04 17:51 244
		nf_scoreboard_font.draw(screen, this->GetTopX()+310,this->GetTopY()-68+197,_("Time:") );
8b1ab1cb sago007 2016-04-04 17:51 245
		nf_scoreboard_font.draw(screen, this->GetTopX()+310,this->GetTopY()-68+246,_("Chain:") );
8b1ab1cb sago007 2016-04-04 17:51 246
		nf_scoreboard_font.draw(screen, this->GetTopX()+310,this->GetTopY()-68+295,_("Speed:") );
8b1ab1cb sago007 2016-04-04 17:51 247
		DrawImgBoard(backBoard,  0, 0);
8b1ab1cb sago007 2016-04-04 17:51 248
8b1ab1cb sago007 2016-04-04 17:51 249
		PaintBricks();
8b1ab1cb sago007 2016-04-04 17:51 250
		if (stageClear) {
8b1ab1cb sago007 2016-04-04 17:51 251
			DrawImgBoard(blackLine,  0, bsize*(12+2)+bsize*(stageClearLimit-linesCleared)-pixels-1);
8b1ab1cb sago007 2016-04-04 17:51 252
		}
8b1ab1cb sago007 2016-04-04 17:51 253
		if (puzzleMode&&(!bGameOver)) {
8b1ab1cb sago007 2016-04-04 17:51 254
			//We need to write nr. of moves left!
8b1ab1cb sago007 2016-04-04 17:51 255
			strHolder = _("Moves left: ") + itoa(MovesLeft);
8b1ab1cb sago007 2016-04-04 17:51 256
			nf_standard_blue_font.draw(screen, topx+5, topy+5, "%s",strHolder.c_str());
8b1ab1cb sago007 2016-04-04 17:51 257
8b1ab1cb sago007 2016-04-04 17:51 258
		}
8b1ab1cb sago007 2016-04-04 17:51 259
		if (puzzleMode && stageButtonStatus == SBpuzzleMode) {
8b1ab1cb sago007 2016-04-04 17:51 260
			DrawImgBoard(bRetry, cordRetryButton.x, cordRetryButton.y);
8b1ab1cb sago007 2016-04-04 17:51 261
			PrintTextCenteredBoard(cordRetryButton.x, cordRetryButton.y, _("Retry"));
8b1ab1cb sago007 2016-04-04 17:51 262
			if (getLevel()<PuzzleGetNumberOfPuzzles()-1) {
8b1ab1cb sago007 2016-04-04 17:51 263
				if (hasWonTheGame) {
8b1ab1cb sago007 2016-04-04 17:51 264
					DrawImgBoard(bNext,cordNextButton.x, cordNextButton.y);
8b1ab1cb sago007 2016-04-04 17:51 265
					PrintTextCenteredBoard(cordNextButton.x, cordNextButton.y, _("Next"));
8b1ab1cb sago007 2016-04-04 17:51 266
				}
8b1ab1cb sago007 2016-04-04 17:51 267
				else {
8b1ab1cb sago007 2016-04-04 17:51 268
					DrawImgBoard(bSkip,cordNextButton.x, cordNextButton.y);
8b1ab1cb sago007 2016-04-04 17:51 269
					PrintTextCenteredBoard(cordNextButton.x, cordNextButton.y, _("Skip"));
8b1ab1cb sago007 2016-04-04 17:51 270
				}
8b1ab1cb sago007 2016-04-04 17:51 271
			}
8b1ab1cb sago007 2016-04-04 17:51 272
			else {
8b1ab1cb sago007 2016-04-04 17:51 273
				strHolder = "Last puzzle";
8b1ab1cb sago007 2016-04-04 17:51 274
				nf_standard_blue_font.draw(screen, topx+5, topy+5, "%s",strHolder.c_str());
8b1ab1cb sago007 2016-04-04 17:51 275
			}
8b1ab1cb sago007 2016-04-04 17:51 276
		}
8b1ab1cb sago007 2016-04-04 17:51 277
		if (stageClear && stageButtonStatus == SBstageClear) {
8b1ab1cb sago007 2016-04-04 17:51 278
			DrawImgBoard(bRetry, cordRetryButton.x, cordRetryButton.y);
8b1ab1cb sago007 2016-04-04 17:51 279
			PrintTextCenteredBoard(cordRetryButton.x, cordRetryButton.y, _("Retry"));
8b1ab1cb sago007 2016-04-04 17:51 280
			if (getLevel()<50-1) {
8b1ab1cb sago007 2016-04-04 17:51 281
				if (hasWonTheGame) {
8b1ab1cb sago007 2016-04-04 17:51 282
					DrawImgBoard(bNext,cordNextButton.x, cordNextButton.y);
8b1ab1cb sago007 2016-04-04 17:51 283
					PrintTextCenteredBoard(cordNextButton.x, cordNextButton.y, _("Next"));
8b1ab1cb sago007 2016-04-04 17:51 284
				}
8b1ab1cb sago007 2016-04-04 17:51 285
				else {
8b1ab1cb sago007 2016-04-04 17:51 286
					DrawImgBoard(bSkip,cordNextButton.x, cordNextButton.y);
8b1ab1cb sago007 2016-04-04 17:51 287
					PrintTextCenteredBoard(cordNextButton.x, cordNextButton.y, _("Skip"));
8b1ab1cb sago007 2016-04-04 17:51 288
				}
8b1ab1cb sago007 2016-04-04 17:51 289
			}
8b1ab1cb sago007 2016-04-04 17:51 290
			else {
8b1ab1cb sago007 2016-04-04 17:51 291
				strHolder = "Last stage";
8b1ab1cb sago007 2016-04-04 17:51 292
				nf_standard_blue_font.draw(screen, topx+5, topy+5, "%s",strHolder.c_str());
8b1ab1cb sago007 2016-04-04 17:51 293
			}
8b1ab1cb sago007 2016-04-04 17:51 294
		}
8b1ab1cb sago007 2016-04-04 17:51 295
8b1ab1cb sago007 2016-04-04 17:51 296
#if DEBUG
8b1ab1cb sago007 2016-04-04 17:51 297
		if (AI_Enabled&&(!bGameOver)) {
8b1ab1cb sago007 2016-04-04 17:51 298
			strHolder = "AI_status: " + itoa(AIstatus)+ ", "+ itoa(AIlineToClear);
8b1ab1cb sago007 2016-04-04 17:51 299
			//NFont_Write(   5, 5, strHolder.c_str());
8b1ab1cb sago007 2016-04-04 17:51 300
			nf_standard_blue_font.draw(screen, topx+5, topy+5, "%s",strHolder.c_str());
8b1ab1cb sago007 2016-04-04 17:51 301
		}
8b1ab1cb sago007 2016-04-04 17:51 302
#endif
8b1ab1cb sago007 2016-04-04 17:51 303
		if (!bGameOver) {
8b1ab1cb sago007 2016-04-04 17:51 304
			bool touched = false;
8b1ab1cb sago007 2016-04-04 17:51 305
			int mx = 0;
8b1ab1cb sago007 2016-04-04 17:51 306
			int my = 0;
8b1ab1cb sago007 2016-04-04 17:51 307
			this->GetMouseCursor(touched, mx, my);
8b1ab1cb sago007 2016-04-04 17:51 308
			if (touched) {
8b1ab1cb sago007 2016-04-04 17:51 309
				DrawImgBoard(spriteHolder->GetSprite("touchcursor"),mx*bsize, 11*bsize-my*bsize-pixels);
8b1ab1cb sago007 2016-04-04 17:51 310
			}
8b1ab1cb sago007 2016-04-04 17:51 311
			else {
8b1ab1cb sago007 2016-04-04 17:51 312
				DrawImgBoard(cursor,cursorx*bsize-4,11*bsize-cursory*bsize-pixels-4);
8b1ab1cb sago007 2016-04-04 17:51 313
			}
8b1ab1cb sago007 2016-04-04 17:51 314
		}
8b1ab1cb sago007 2016-04-04 17:51 315
		if (ticks<gameStartedAt) {
8b1ab1cb sago007 2016-04-04 17:51 316
			int currentCounter = abs((int)ticks-(int)gameStartedAt)/1000;
8b1ab1cb sago007 2016-04-04 17:51 317
			if ( (currentCounter!=lastCounter) && (SoundEnabled)&&(!NoSound)) {
8b1ab1cb sago007 2016-04-04 17:51 318
				Mix_PlayChannel(1,counterChunk,0);
8b1ab1cb sago007 2016-04-04 17:51 319
			}
8b1ab1cb sago007 2016-04-04 17:51 320
			lastCounter = currentCounter;
8b1ab1cb sago007 2016-04-04 17:51 321
			switch (currentCounter) {
8b1ab1cb sago007 2016-04-04 17:51 322
			case 2:
8b1ab1cb sago007 2016-04-04 17:51 323
				DrawImgBoard(counter[2],  2*bsize, 5*bsize);
8b1ab1cb sago007 2016-04-04 17:51 324
				break;
8b1ab1cb sago007 2016-04-04 17:51 325
			case 1:
8b1ab1cb sago007 2016-04-04 17:51 326
				DrawImgBoard(counter[1],  2*bsize, 5*bsize);
8b1ab1cb sago007 2016-04-04 17:51 327
				break;
8b1ab1cb sago007 2016-04-04 17:51 328
			case 0:
8b1ab1cb sago007 2016-04-04 17:51 329
				DrawImgBoard(counter[0],  2*bsize, 5*bsize);
8b1ab1cb sago007 2016-04-04 17:51 330
				break;
8b1ab1cb sago007 2016-04-04 17:51 331
			default:
8b1ab1cb sago007 2016-04-04 17:51 332
				break;
8b1ab1cb sago007 2016-04-04 17:51 333
			}
8b1ab1cb sago007 2016-04-04 17:51 334
		}
8b1ab1cb sago007 2016-04-04 17:51 335
		else {
8b1ab1cb sago007 2016-04-04 17:51 336
			if (SoundEnabled&&(!NoSound)&&(timetrial)&&(ticks>gameStartedAt+10000)&&(!bGameOver)) {
8b1ab1cb sago007 2016-04-04 17:51 337
				int currentCounter = (ticks-(int)gameStartedAt)/1000;
8b1ab1cb sago007 2016-04-04 17:51 338
				if (currentCounter!=lastCounter) {
8b1ab1cb sago007 2016-04-04 17:51 339
					if (currentCounter>115 && currentCounter<120) {
8b1ab1cb sago007 2016-04-04 17:51 340
						Mix_PlayChannel(1,counterChunk,0);
8b1ab1cb sago007 2016-04-04 17:51 341
					}
8b1ab1cb sago007 2016-04-04 17:51 342
				}
8b1ab1cb sago007 2016-04-04 17:51 343
				lastCounter = currentCounter;
8b1ab1cb sago007 2016-04-04 17:51 344
			}
8b1ab1cb sago007 2016-04-04 17:51 345
			else {
8b1ab1cb sago007 2016-04-04 17:51 346
				if ( (0==lastCounter) && (SoundEnabled)&&(!NoSound)) {
8b1ab1cb sago007 2016-04-04 17:51 347
					Mix_PlayChannel(1,counterFinalChunk,0);
8b1ab1cb sago007 2016-04-04 17:51 348
				}
8b1ab1cb sago007 2016-04-04 17:51 349
				lastCounter = -1;
8b1ab1cb sago007 2016-04-04 17:51 350
			}
8b1ab1cb sago007 2016-04-04 17:51 351
		}
8b1ab1cb sago007 2016-04-04 17:51 352
8b1ab1cb sago007 2016-04-04 17:51 353
		if ((bGameOver)&&(!editorMode)) {
8b1ab1cb sago007 2016-04-04 17:51 354
			if (hasWonTheGame) {
8b1ab1cb sago007 2016-04-04 17:51 355
				DrawImgBoard(iWinner,  0, 5*bsize);
8b1ab1cb sago007 2016-04-04 17:51 356
			}
8b1ab1cb sago007 2016-04-04 17:51 357
			else {
8b1ab1cb sago007 2016-04-04 17:51 358
				if (bDraw) {
8b1ab1cb sago007 2016-04-04 17:51 359
					DrawImgBoard(iDraw,  0, 5*bsize);
8b1ab1cb sago007 2016-04-04 17:51 360
				}
8b1ab1cb sago007 2016-04-04 17:51 361
				else {
8b1ab1cb sago007 2016-04-04 17:51 362
					DrawImgBoard(iGameOver,  0, 5*bsize);
8b1ab1cb sago007 2016-04-04 17:51 363
				}
8b1ab1cb sago007 2016-04-04 17:51 364
			}
8b1ab1cb sago007 2016-04-04 17:51 365
		}
8b1ab1cb sago007 2016-04-04 17:51 366
	}
8b1ab1cb sago007 2016-04-04 17:51 367
8b1ab1cb sago007 2016-04-04 17:51 368
private:
8b1ab1cb sago007 2016-04-04 17:51 369
	int topx, topy;
8b1ab1cb sago007 2016-04-04 17:51 370
};
8b1ab1cb sago007 2016-04-04 17:51 371
8b1ab1cb sago007 2016-04-04 17:51 372
1970-01-01 00:00 373