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
c310f8a5 sago007 2017-03-25 16:05 27
#include <string>
c4baf4ba sago007 2017-03-25 15:37 28
c4baf4ba sago007 2017-03-25 15:37 29
class TextMessage {
c4baf4ba sago007 2017-03-25 15:37 30
private:
c4baf4ba sago007 2017-03-25 15:37 31
	int x = 0;
c4baf4ba sago007 2017-03-25 15:37 32
	int y = 0;
c310f8a5 sago007 2017-03-25 16:05 33
	std::string textt;
c4baf4ba sago007 2017-03-25 15:37 34
	unsigned long int time = 0;
c4baf4ba sago007 2017-03-25 15:37 35
	unsigned long int placeTime = 0; //Then the text was placed
c4baf4ba sago007 2017-03-25 15:37 36
public:
c4baf4ba sago007 2017-03-25 15:37 37
c4baf4ba sago007 2017-03-25 15:37 38
	TextMessage() {
c4baf4ba sago007 2017-03-25 15:37 39
	}
c4baf4ba sago007 2017-03-25 15:37 40
c4baf4ba sago007 2017-03-25 15:37 41
	//constructor:
c4baf4ba sago007 2017-03-25 15:37 42
	TextMessage(int X, int Y,const char* Text,unsigned int Time) {
c310f8a5 sago007 2017-03-25 16:05 43
		placeTime = SDL_GetTicks();
c4baf4ba sago007 2017-03-25 15:37 44
		x = X;
c4baf4ba sago007 2017-03-25 15:37 45
		y = Y;
c4baf4ba sago007 2017-03-25 15:37 46
		textt = Text;
c4baf4ba sago007 2017-03-25 15:37 47
		time = Time;
c4baf4ba sago007 2017-03-25 15:37 48
	}  //constructor
c4baf4ba sago007 2017-03-25 15:37 49
c4baf4ba sago007 2017-03-25 15:37 50
	//true if the text has expired
c4baf4ba sago007 2017-03-25 15:37 51
	bool removeMe() {
c310f8a5 sago007 2017-03-25 16:05 52
		return SDL_GetTicks()-placeTime>time;
c4baf4ba sago007 2017-03-25 15:37 53
	}
c4baf4ba sago007 2017-03-25 15:37 54
c4baf4ba sago007 2017-03-25 15:37 55
	int getX() {
c4baf4ba sago007 2017-03-25 15:37 56
		return x;
c4baf4ba sago007 2017-03-25 15:37 57
	}
c4baf4ba sago007 2017-03-25 15:37 58
c4baf4ba sago007 2017-03-25 15:37 59
	int getY() {
c4baf4ba sago007 2017-03-25 15:37 60
		return y;
c4baf4ba sago007 2017-03-25 15:37 61
	}
c4baf4ba sago007 2017-03-25 15:37 62
c4baf4ba sago007 2017-03-25 15:37 63
	const char* getText() {
c4baf4ba sago007 2017-03-25 15:37 64
		return textt.c_str();
c4baf4ba sago007 2017-03-25 15:37 65
	}
c4baf4ba sago007 2017-03-25 15:37 66
};  //text popup
c4baf4ba sago007 2017-03-25 15:37 67
c4baf4ba sago007 2017-03-25 15:37 68
class TextManager {
c4baf4ba sago007 2017-03-25 15:37 69
public:
c310f8a5 sago007 2017-03-25 16:05 70
	static const int maxNumberOfTexts = 6*12*2*2;
c4baf4ba sago007 2017-03-25 15:37 71
	TextMessage textArray[maxNumberOfTexts];
c4baf4ba sago007 2017-03-25 15:37 72
	bool textUsed[maxNumberOfTexts];
c4baf4ba sago007 2017-03-25 15:37 73
c4baf4ba sago007 2017-03-25 15:37 74
	TextManager() {
c4baf4ba sago007 2017-03-25 15:37 75
		for (int i=0; i<maxNumberOfTexts; i++) {
c4baf4ba sago007 2017-03-25 15:37 76
			textUsed[i] = false;
c4baf4ba sago007 2017-03-25 15:37 77
		}
c4baf4ba sago007 2017-03-25 15:37 78
	}
c4baf4ba sago007 2017-03-25 15:37 79
c310f8a5 sago007 2017-03-25 16:05 80
	int addText(int x, int y, const std::string& Text,unsigned int Time) {
c4baf4ba sago007 2017-03-25 15:37 81
		int textNumber = 0;
c4baf4ba sago007 2017-03-25 15:37 82
		while (textNumber<maxNumberOfTexts && textUsed[textNumber]) {
c4baf4ba sago007 2017-03-25 15:37 83
			textNumber++;
c4baf4ba sago007 2017-03-25 15:37 84
		}
c4baf4ba sago007 2017-03-25 15:37 85
		if (textNumber==maxNumberOfTexts) {
c4baf4ba sago007 2017-03-25 15:37 86
			return -1;
c4baf4ba sago007 2017-03-25 15:37 87
		}
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
		for (int i = 0; i<maxNumberOfTexts; i++) {
c4baf4ba sago007 2017-03-25 15:37 95
c4baf4ba sago007 2017-03-25 15:37 96
			if (textUsed[i]) {
c4baf4ba sago007 2017-03-25 15:37 97
				if (textArray[i].removeMe()) {
c4baf4ba sago007 2017-03-25 15:37 98
					textUsed[i] = false;
c4baf4ba sago007 2017-03-25 15:37 99
				}
c4baf4ba sago007 2017-03-25 15:37 100
			}
c4baf4ba sago007 2017-03-25 15:37 101
		}
c4baf4ba sago007 2017-03-25 15:37 102
	} //update
c4baf4ba sago007 2017-03-25 15:37 103
c4baf4ba sago007 2017-03-25 15:37 104
c4baf4ba sago007 2017-03-25 15:37 105
}; //textManager
c4baf4ba sago007 2017-03-25 15:37 106
c4baf4ba sago007 2017-03-25 15:37 107
#endif /* TEXTMANAGER_HPP */
c4baf4ba sago007 2017-03-25 15:37 108
1970-01-01 00:00 109