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