~flosoft/s25rttr/trunk

« back to all changes in this revision

Viewing changes to src/Minimap.h

  • Committer: FloSoft
  • Date: 2014-04-25 15:35:50 UTC
  • Revision ID: flosoft@siedler25.org-20140425153550-9muu4vodhlqu58m0
committing subversion revision 9357 by FloSoft
astyle

modified:
s25client/trunk/
s25client/trunk/contrib/lua/lin32/include/
s25client/trunk/contrib/lua/lin64/include/
s25client/trunk/contrib/lua/mac/include/
s25client/trunk/contrib/lua/win32/include/
s25client/trunk/contrib/lua/win64/include/
s25client/trunk/driver/audio/SDL/src/
s25client/trunk/driver/src/
s25client/trunk/driver/video/GLFW/src/
s25client/trunk/driver/video/SDL/src/
s25client/trunk/driver/video/WinAPI/src/
s25client/trunk/src/
s25client/trunk/win32/
s25client/trunk/win32/prebuild-mutex/src/

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// $Id: Minimap.h 7521 2011-09-08 20:45:55Z FloSoft $
 
1
// $Id: Minimap.h 9357 2014-04-25 15:35:25Z FloSoft $
2
2
//
3
3
// Copyright (c) 2005 - 2011 Settlers Freaks (sf-team at siedler25.org)
4
4
//
30
30
 
31
31
class Minimap
32
32
{
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;
37
 
protected:
38
 
        /// Breite und H�he der Map (in Knoten)
39
 
        unsigned short map_width, map_height;
40
 
 
41
 
        /// Textur f�r die Map
42
 
        glArchivItem_Bitmap_Direct map;
43
 
 
44
 
        //struct PlayerColor
45
 
        //{
46
 
        //      PlayerColor() { color = 0; }
47
 
        //      unsigned color;
48
 
        //} players_color[MAX_PLAYERS];
49
 
 
50
 
protected:
51
 
 
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;
56
 
 
57
 
public:
58
 
 
59
 
        Minimap() { };
60
 
        Minimap(const unsigned short map_width, const unsigned short map_height);
61
 
        virtual ~Minimap() {}
62
 
 
63
 
        void SetMap(glArchivItem_Map *s2map);
64
 
 
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);
68
 
 
69
 
        /// Gibt Gr��e der Map zur�ck
70
 
        unsigned short GetMapWidth() const { return map_width; }
71
 
        unsigned short GetMapHeight() const { return map_height; }
72
 
 
73
 
protected:
74
 
 
75
 
        /// Erstellt die Textur
76
 
        void CreateMapTexture(const void * param);
77
 
 
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;
 
37
    protected:
 
38
        /// Breite und H�he der Map (in Knoten)
 
39
        unsigned short map_width, map_height;
 
40
 
 
41
        /// Textur f�r die Map
 
42
        glArchivItem_Bitmap_Direct map;
 
43
 
 
44
        //struct PlayerColor
 
45
        //{
 
46
        //  PlayerColor() { color = 0; }
 
47
        //  unsigned color;
 
48
        //} players_color[MAX_PLAYERS];
 
49
 
 
50
    protected:
 
51
 
 
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;
 
56
 
 
57
    public:
 
58
 
 
59
        Minimap() { };
 
60
        Minimap(const unsigned short map_width, const unsigned short map_height);
 
61
        virtual ~Minimap() {}
 
62
 
 
63
        void SetMap(glArchivItem_Map* s2map);
 
64
 
 
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);
 
68
 
 
69
        /// Gibt Gr��e der Map zur�ck
 
70
        unsigned short GetMapWidth() const { return map_width; }
 
71
        unsigned short GetMapHeight() const { return map_height; }
 
72
 
 
73
    protected:
 
74
 
 
75
        /// Erstellt die Textur
 
76
        void CreateMapTexture(const void* param);
 
77
 
 
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;
82
82
};
83
83
 
84
84
class PreviewMinimap : public Minimap
85
85
{
86
 
public:
87
 
        PreviewMinimap(glArchivItem_Map *s2map);
88
 
 
89
 
protected:
90
 
 
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);
 
86
    public:
 
87
        PreviewMinimap(glArchivItem_Map* s2map);
 
88
 
 
89
    protected:
 
90
 
 
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);
93
93
};
94
94
 
95
95
class IngameMinimap : public Minimap
96
96
{
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;
105
 
 
106
 
 
107
 
        /// F�r jeden einzelnen Knoten speichern, welches Objekt hier dominiert, also wessen Pixel angezeigt wird
108
 
        enum DrawnObject
109
 
        {
110
 
                DO_INVALID = 0,
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
115
 
                DO_ROAD /// Stra�e
116
 
        };
117
 
 
118
 
        std::vector<DrawnObject> dos;
119
 
 
120
 
        /// Einzelne Dinge anzeigen oder nicht anzeigen
121
 
        bool territory; /// L�nder der Spieler
122
 
        bool houses; /// H�user
123
 
        bool roads; /// Stra�en
124
 
 
125
 
public:
126
 
        IngameMinimap(const GameWorldViewer& gwv);
127
 
 
128
 
 
129
 
        /// Merkt, vor dass ein bestimmter Punkt aktualisiert werden soll
130
 
        void UpdateNode(const MapCoord x, const MapCoord y);
131
 
 
132
 
        /// Updatet die gesamte Minimap
133
 
        void UpdateAll();
134
 
 
135
 
        
136
 
 
137
 
        /// Die einzelnen Dinge umschalten
138
 
        void ToggleTerritory();
139
 
        void ToggleHouses();
140
 
        void ToggleRoads();
141
 
 
142
 
protected:
143
 
 
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;
 
105
 
 
106
 
 
107
        /// F�r jeden einzelnen Knoten speichern, welches Objekt hier dominiert, also wessen Pixel angezeigt wird
 
108
        enum DrawnObject
 
109
        {
 
110
            DO_INVALID = 0,
 
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
 
115
            DO_ROAD /// Stra�e
 
116
        };
 
117
 
 
118
        std::vector<DrawnObject> dos;
 
119
 
 
120
        /// Einzelne Dinge anzeigen oder nicht anzeigen
 
121
        bool territory; /// L�nder der Spieler
 
122
        bool houses; /// H�user
 
123
        bool roads; /// Stra�en
 
124
 
 
125
    public:
 
126
        IngameMinimap(const GameWorldViewer& gwv);
 
127
 
 
128
 
 
129
        /// Merkt, vor dass ein bestimmter Punkt aktualisiert werden soll
 
130
        void UpdateNode(const MapCoord x, const MapCoord y);
 
131
 
 
132
        /// Updatet die gesamte Minimap
 
133
        void UpdateAll();
 
134
 
 
135
 
 
136
 
 
137
        /// Die einzelnen Dinge umschalten
 
138
        void ToggleTerritory();
 
139
        void ToggleHouses();
 
140
        void ToggleRoads();
 
141
 
 
142
    protected:
 
143
 
 
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);
157
157
};
158
158
 
159
159