33
///// Breite und H�he (Pixel) der Bounding Box, in die die Map zentriert wird
34
//unsigned short width,height;
35
///// Breite und H�he (Pixel) der angezeigten Map
36
//unsigned short width_show, height_show;
38
/// Breite und H�he der Map (in Knoten)
39
unsigned short map_width, map_height;
41
/// Textur f�r die Map
42
glArchivItem_Bitmap_Direct map;
46
// PlayerColor() { color = 0; }
48
//} players_color[MAX_PLAYERS];
52
/// Zus�tzliche Dinge, die die einzelnen Maps vor dem Zeichenvorgang zu tun haben
53
virtual void BeforeDrawing();
54
/// Variiert die �bergebene Farbe zuf�llig in der Helligkeit
55
unsigned VaryBrightness(const unsigned color, const int range) const;
60
Minimap(const unsigned short map_width, const unsigned short map_height);
63
void SetMap(glArchivItem_Map *s2map);
65
/// Zeichnet die Minimap zentriert in die entsprechende Bounding-Box
66
/// (x und y bezieht sich auf obere linke Ecke der Bounding Box)
67
void Draw(const unsigned short x, const unsigned short y, const unsigned short width, const unsigned short height);
69
/// Gibt Gr��e der Map zur�ck
70
unsigned short GetMapWidth() const { return map_width; }
71
unsigned short GetMapHeight() const { return map_height; }
75
/// Erstellt die Textur
76
void CreateMapTexture(const void * param);
78
/// Berechnet einen bestimmten Punkt neu
79
void RecalcNode(const void * param, const MapCoord x, const MapCoord y);
80
/// Berechnet die Farbe eines Pixels
81
virtual unsigned CalcPixelColor(const void * param, const MapCoord x, const MapCoord y, const unsigned t) = 0;
33
///// Breite und H�he (Pixel) der Bounding Box, in die die Map zentriert wird
34
//unsigned short width,height;
35
///// Breite und H�he (Pixel) der angezeigten Map
36
//unsigned short width_show, height_show;
38
/// Breite und H�he der Map (in Knoten)
39
unsigned short map_width, map_height;
41
/// Textur f�r die Map
42
glArchivItem_Bitmap_Direct map;
46
// PlayerColor() { color = 0; }
48
//} players_color[MAX_PLAYERS];
52
/// Zus�tzliche Dinge, die die einzelnen Maps vor dem Zeichenvorgang zu tun haben
53
virtual void BeforeDrawing();
54
/// Variiert die �bergebene Farbe zuf�llig in der Helligkeit
55
unsigned VaryBrightness(const unsigned color, const int range) const;
60
Minimap(const unsigned short map_width, const unsigned short map_height);
63
void SetMap(glArchivItem_Map* s2map);
65
/// Zeichnet die Minimap zentriert in die entsprechende Bounding-Box
66
/// (x und y bezieht sich auf obere linke Ecke der Bounding Box)
67
void Draw(const unsigned short x, const unsigned short y, const unsigned short width, const unsigned short height);
69
/// Gibt Gr��e der Map zur�ck
70
unsigned short GetMapWidth() const { return map_width; }
71
unsigned short GetMapHeight() const { return map_height; }
75
/// Erstellt die Textur
76
void CreateMapTexture(const void* param);
78
/// Berechnet einen bestimmten Punkt neu
79
void RecalcNode(const void* param, const MapCoord x, const MapCoord y);
80
/// Berechnet die Farbe eines Pixels
81
virtual unsigned CalcPixelColor(const void* param, const MapCoord x, const MapCoord y, const unsigned t) = 0;
84
84
class PreviewMinimap : public Minimap
87
PreviewMinimap(glArchivItem_Map *s2map);
91
/// Berechnet die Farbe f�r einen bestimmten Pixel der Minimap (t = Terrain1 oder 2)
92
unsigned CalcPixelColor(const void * param, const MapCoord x, const MapCoord y, const unsigned t);
87
PreviewMinimap(glArchivItem_Map* s2map);
91
/// Berechnet die Farbe f�r einen bestimmten Pixel der Minimap (t = Terrain1 oder 2)
92
unsigned CalcPixelColor(const void* param, const MapCoord x, const MapCoord y, const unsigned t);
95
95
class IngameMinimap : public Minimap
97
/// Referenz auf den GameWorldViewer
98
const GameWorldViewer& gwv;
99
/// Speichert die einzelnen Ver�nderungen eines jeden Mappunktes, damit nicht unn�tigerweise
100
/// in einem GF mehrmals der Mappunkt ver�ndert wird
101
std::vector<bool> nodes_updated;
102
/// Liste mit allen Punkten, die ge�ndert werden m�ssen
103
struct Node { MapCoord x, y; };
104
list<Node> nodes_updated_list;
107
/// F�r jeden einzelnen Knoten speichern, welches Objekt hier dominiert, also wessen Pixel angezeigt wird
111
DO_INVISIBLE, /// im im vollst�ndigem Dunklen
112
DO_TERRAIN, /// Nur Terrain oder Baum und Granit ohne irgendwas
113
DO_PLAYER, /// Nur Terrain oder Baum und Granit mit Spielerterritorium dazu
114
DO_BUILDING, /// Geb�ude
118
std::vector<DrawnObject> dos;
120
/// Einzelne Dinge anzeigen oder nicht anzeigen
121
bool territory; /// L�nder der Spieler
122
bool houses; /// H�user
123
bool roads; /// Stra�en
126
IngameMinimap(const GameWorldViewer& gwv);
129
/// Merkt, vor dass ein bestimmter Punkt aktualisiert werden soll
130
void UpdateNode(const MapCoord x, const MapCoord y);
132
/// Updatet die gesamte Minimap
137
/// Die einzelnen Dinge umschalten
138
void ToggleTerritory();
144
/// Berechnet die Farbe f�r einen bestimmten Pixel der Minimap (t = Terrain1 oder 2)
145
unsigned CalcPixelColor(const void * param, const MapCoord x, const MapCoord y, const unsigned t);
146
/// Berechnet f�r einen bestimmten Punkt und ein Dreieck die normale Terrainfarbe
147
unsigned CalcTerrainColor(const MapCoord x, const MapCoord y, const unsigned t);
148
/// Pr�ft ob an einer Stelle eine Stra�e gezeichnet werden muss
149
bool IsRoad(const MapCoord x, const MapCoord y, const Visibility visibility);
150
/// Berechnet Spielerfarbe mit in eine gegebene Farbe mit ein (player muss mit +1 gegeben sein!)
151
unsigned CombineWithPlayerColor(const unsigned color, const unsigned char player) const;
152
/// Zus�tzliche Dinge, die die einzelnen Maps vor dem Zeichenvorgang zu tun haben
153
/// in dem Falle: Karte aktualisieren
154
void BeforeDrawing();
155
/// Alle Punkte Updaten, bei denen das DrawnObject gleich dem �bergebenen drawn_object ist
156
void UpdateAll(const DrawnObject drawn_object);
97
/// Referenz auf den GameWorldViewer
98
const GameWorldViewer& gwv;
99
/// Speichert die einzelnen Ver�nderungen eines jeden Mappunktes, damit nicht unn�tigerweise
100
/// in einem GF mehrmals der Mappunkt ver�ndert wird
101
std::vector<bool> nodes_updated;
102
/// Liste mit allen Punkten, die ge�ndert werden m�ssen
103
struct Node { MapCoord x, y; };
104
list<Node> nodes_updated_list;
107
/// F�r jeden einzelnen Knoten speichern, welches Objekt hier dominiert, also wessen Pixel angezeigt wird
111
DO_INVISIBLE, /// im im vollst�ndigem Dunklen
112
DO_TERRAIN, /// Nur Terrain oder Baum und Granit ohne irgendwas
113
DO_PLAYER, /// Nur Terrain oder Baum und Granit mit Spielerterritorium dazu
114
DO_BUILDING, /// Geb�ude
118
std::vector<DrawnObject> dos;
120
/// Einzelne Dinge anzeigen oder nicht anzeigen
121
bool territory; /// L�nder der Spieler
122
bool houses; /// H�user
123
bool roads; /// Stra�en
126
IngameMinimap(const GameWorldViewer& gwv);
129
/// Merkt, vor dass ein bestimmter Punkt aktualisiert werden soll
130
void UpdateNode(const MapCoord x, const MapCoord y);
132
/// Updatet die gesamte Minimap
137
/// Die einzelnen Dinge umschalten
138
void ToggleTerritory();
144
/// Berechnet die Farbe f�r einen bestimmten Pixel der Minimap (t = Terrain1 oder 2)
145
unsigned CalcPixelColor(const void* param, const MapCoord x, const MapCoord y, const unsigned t);
146
/// Berechnet f�r einen bestimmten Punkt und ein Dreieck die normale Terrainfarbe
147
unsigned CalcTerrainColor(const MapCoord x, const MapCoord y, const unsigned t);
148
/// Pr�ft ob an einer Stelle eine Stra�e gezeichnet werden muss
149
bool IsRoad(const MapCoord x, const MapCoord y, const Visibility visibility);
150
/// Berechnet Spielerfarbe mit in eine gegebene Farbe mit ein (player muss mit +1 gegeben sein!)
151
unsigned CombineWithPlayerColor(const unsigned color, const unsigned char player) const;
152
/// Zus�tzliche Dinge, die die einzelnen Maps vor dem Zeichenvorgang zu tun haben
153
/// in dem Falle: Karte aktualisieren
154
void BeforeDrawing();
155
/// Alle Punkte Updaten, bei denen das DrawnObject gleich dem �bergebenen drawn_object ist
156
void UpdateAll(const DrawnObject drawn_object);