git repos / blockattack-game

blame: source/code/TextManager.hpp

normal view · raw

c4baf4ba sago007 2017-03-25 15:37 1
/*
c4baf4ba sago007 2017-03-25 15:37 2
===========================================================================
c4baf4ba sago007 2017-03-25 15:37 3
blockattack - Block Attack - Rise of the Blocks
c4baf4ba sago007 2017-03-25 15:37 4
Copyright (C) 2005-2017 Poul Sander
c4baf4ba sago007 2017-03-25 15:37 5
c4baf4ba sago007 2017-03-25 15:37 6
This program is free software: you can redistribute it and/or modify
c4baf4ba sago007 2017-03-25 15:37 7
it under the terms of the GNU General Public License as published by
c4baf4ba sago007 2017-03-25 15:37 8
the Free Software Foundation, either version 2 of the License, or
c4baf4ba sago007 2017-03-25 15:37 9
(at your option) any later version.
c4baf4ba sago007 2017-03-25 15:37 10
c4baf4ba sago007 2017-03-25 15:37 11
This program is distributed in the hope that it will be useful,
c4baf4ba sago007 2017-03-25 15:37 12
but WITHOUT ANY WARRANTY; without even the implied warranty of
c4baf4ba sago007 2017-03-25 15:37 13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
c4baf4ba sago007 2017-03-25 15:37 14
GNU General Public License for more details.
c4baf4ba sago007 2017-03-25 15:37 15
c4baf4ba sago007 2017-03-25 15:37 16
You should have received a copy of the GNU General Public License
c4baf4ba sago007 2017-03-25 15:37 17
along with this program.  If not, see http://www.gnu.org/licenses/
c4baf4ba sago007 2017-03-25 15:37 18
c4baf4ba sago007 2017-03-25 15:37 19
Source information and contacts persons can be found at
c4baf4ba sago007 2017-03-25 15:37 20
http://www.blockattack.net
c4baf4ba sago007 2017-03-25 15:37 21
===========================================================================
c4baf4ba sago007 2017-03-25 15:37 22
*/
c4baf4ba sago007 2017-03-25 15:37 23
c4baf4ba sago007 2017-03-25 15:37 24
#ifndef TEXTMANAGER_HPP
c4baf4ba sago007 2017-03-25 15:37 25
#define TEXTMANAGER_HPP
c4baf4ba sago007 2017-03-25 15:37 26
c4baf4ba sago007 2017-03-25 15:37 27
c4baf4ba sago007 2017-03-25 15:37 28
class TextMessage {
c4baf4ba sago007 2017-03-25 15:37 29
private:
c4baf4ba sago007 2017-03-25 15:37 30
	int x = 0;
c4baf4ba sago007 2017-03-25 15:37 31
	int y = 0;
c4baf4ba sago007 2017-03-25 15:37 32
	string textt;
c4baf4ba sago007 2017-03-25 15:37 33
	unsigned long int time = 0;
c4baf4ba sago007 2017-03-25 15:37 34
	unsigned long int placeTime = 0; //Then the text was placed
c4baf4ba sago007 2017-03-25 15:37 35
public:
c4baf4ba sago007 2017-03-25 15:37 36
c4baf4ba sago007 2017-03-25 15:37 37
	TextMessage() {
c4baf4ba sago007 2017-03-25 15:37 38
	}
c4baf4ba sago007 2017-03-25 15:37 39
c4baf4ba sago007 2017-03-25 15:37 40
	//constructor:
c4baf4ba sago007 2017-03-25 15:37 41
	TextMessage(int X, int Y,const char* Text,unsigned int Time) {
c4baf4ba sago007 2017-03-25 15:37 42
		placeTime = currentTime;
c4baf4ba sago007 2017-03-25 15:37 43
		x = X;
c4baf4ba sago007 2017-03-25 15:37 44
		y = Y;
c4baf4ba sago007 2017-03-25 15:37 45
		textt = Text;
c4baf4ba sago007 2017-03-25 15:37 46
		time = Time;
c4baf4ba sago007 2017-03-25 15:37 47
	}  //constructor
c4baf4ba sago007 2017-03-25 15:37 48
c4baf4ba sago007 2017-03-25 15:37 49
	//true if the text has expired
c4baf4ba sago007 2017-03-25 15:37 50
	bool removeMe() {
c4baf4ba sago007 2017-03-25 15:37 51
		return currentTime-placeTime>time;
c4baf4ba sago007 2017-03-25 15:37 52
	}
c4baf4ba sago007 2017-03-25 15:37 53
c4baf4ba sago007 2017-03-25 15:37 54
	int getX() {
c4baf4ba sago007 2017-03-25 15:37 55
		return x;
c4baf4ba sago007 2017-03-25 15:37 56
	}
c4baf4ba sago007 2017-03-25 15:37 57
c4baf4ba sago007 2017-03-25 15:37 58
	int getY() {
c4baf4ba sago007 2017-03-25 15:37 59
		return y;
c4baf4ba sago007 2017-03-25 15:37 60
	}
c4baf4ba sago007 2017-03-25 15:37 61
c4baf4ba sago007 2017-03-25 15:37 62
	const char* getText() {
c4baf4ba sago007 2017-03-25 15:37 63
		return textt.c_str();
c4baf4ba sago007 2017-03-25 15:37 64
	}
c4baf4ba sago007 2017-03-25 15:37 65
};  //text popup
c4baf4ba sago007 2017-03-25 15:37 66
c4baf4ba sago007 2017-03-25 15:37 67
class TextManager {
c4baf4ba sago007 2017-03-25 15:37 68
	static const int maxNumberOfTexts = 6*12*2*2;
c4baf4ba sago007 2017-03-25 15:37 69
public:
c4baf4ba sago007 2017-03-25 15:37 70
	TextMessage textArray[maxNumberOfTexts];
c4baf4ba sago007 2017-03-25 15:37 71
	bool textUsed[maxNumberOfTexts];
c4baf4ba sago007 2017-03-25 15:37 72
c4baf4ba sago007 2017-03-25 15:37 73
	TextManager() {
c4baf4ba sago007 2017-03-25 15:37 74
		for (int i=0; i<maxNumberOfTexts; i++) {
c4baf4ba sago007 2017-03-25 15:37 75
			textUsed[i] = false;
c4baf4ba sago007 2017-03-25 15:37 76
		}
c4baf4ba sago007 2017-03-25 15:37 77
	}
c4baf4ba sago007 2017-03-25 15:37 78
c4baf4ba sago007 2017-03-25 15:37 79
	int addText(int x, int y,string Text,unsigned int Time) {
c4baf4ba sago007 2017-03-25 15:37 80
		int textNumber = 0;
c4baf4ba sago007 2017-03-25 15:37 81
		while (textNumber<maxNumberOfTexts && textUsed[textNumber]) {
c4baf4ba sago007 2017-03-25 15:37 82
			textNumber++;
c4baf4ba sago007 2017-03-25 15:37 83
		}
c4baf4ba sago007 2017-03-25 15:37 84
		if (textNumber==maxNumberOfTexts) {
c4baf4ba sago007 2017-03-25 15:37 85
			return -1;
c4baf4ba sago007 2017-03-25 15:37 86
		}
c4baf4ba sago007 2017-03-25 15:37 87
		currentTime = SDL_GetTicks();
c4baf4ba sago007 2017-03-25 15:37 88
		textArray[textNumber] = TextMessage(x,y,Text.c_str(),Time);
c4baf4ba sago007 2017-03-25 15:37 89
		textUsed[textNumber] = true;
c4baf4ba sago007 2017-03-25 15:37 90
		return 1;
c4baf4ba sago007 2017-03-25 15:37 91
	}  //addText
c4baf4ba sago007 2017-03-25 15:37 92
c4baf4ba sago007 2017-03-25 15:37 93
	void update() {
c4baf4ba sago007 2017-03-25 15:37 94
		currentTime = SDL_GetTicks();
c4baf4ba sago007 2017-03-25 15:37 95
		for (int i = 0; i<maxNumberOfTexts; i++) {
c4baf4ba sago007 2017-03-25 15:37 96
c4baf4ba sago007 2017-03-25 15:37 97
			if (textUsed[i]) {
c4baf4ba sago007 2017-03-25 15:37 98
				if (textArray[i].removeMe()) {
c4baf4ba sago007 2017-03-25 15:37 99
					textUsed[i] = false;
c4baf4ba sago007 2017-03-25 15:37 100
				}
c4baf4ba sago007 2017-03-25 15:37 101
			}
c4baf4ba sago007 2017-03-25 15:37 102
		}
c4baf4ba sago007 2017-03-25 15:37 103
	} //update
c4baf4ba sago007 2017-03-25 15:37 104
c4baf4ba sago007 2017-03-25 15:37 105
c4baf4ba sago007 2017-03-25 15:37 106
}; //textManager
c4baf4ba sago007 2017-03-25 15:37 107
c4baf4ba sago007 2017-03-25 15:37 108
#endif /* TEXTMANAGER_HPP */
c4baf4ba sago007 2017-03-25 15:37 109
1970-01-01 00:00 110