X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fvideo%2Fdrawing_context.hpp;h=4839239dc52d6c97ddacc9581fb82329abb488c0;hb=6cd71a8644049d1951b5a9702a57ad02a7971c1e;hp=df312256d12de341fcea650b9ddcaa5225e43764;hpb=a113d3bd1feddd510e3b2852b0d42522735eee40;p=supertux.git diff --git a/src/video/drawing_context.hpp b/src/video/drawing_context.hpp index df312256d..4839239dc 100644 --- a/src/video/drawing_context.hpp +++ b/src/video/drawing_context.hpp @@ -49,7 +49,8 @@ enum { LAYER_FOREGROUNDTILES = 200, LAYER_FOREGROUND0 = 300, LAYER_FOREGROUND1 = 400, - LAYER_GUI = 500 + LAYER_HUD = 500, + LAYER_GUI = 600 }; class Blend @@ -124,6 +125,9 @@ public: /// return currently set alpha float get_alpha() const; + /// on next update, set color to lightmap's color at position + void get_light(const Vector& position, Color* color ); + enum Target { NORMAL, LIGHTMAP }; @@ -131,6 +135,8 @@ public: void pop_target(); void set_target(Target target); + void set_ambient_color( Color new_color ); + private: class Transform { @@ -159,7 +165,7 @@ private: enum RequestType { - SURFACE, SURFACE_PART, TEXT, GRADIENT, FILLRECT + SURFACE, SURFACE_PART, TEXT, GRADIENT, FILLRECT, LIGHTMAPREQUEST, GETLIGHT }; struct SurfacePartRequest @@ -212,6 +218,11 @@ private: } }; + struct GetLightRequest + { + Color* color_ptr; + }; + typedef std::vector DrawingRequests; void handle_drawing_requests(DrawingRequests& requests); @@ -220,11 +231,14 @@ private: void draw_text_center(DrawingRequest& request); void draw_gradient(DrawingRequest& request); void draw_filled_rect(DrawingRequest& request); + void draw_lightmap(DrawingRequest& request); + void get_light(DrawingRequest& request); DrawingRequests drawing_requests; DrawingRequests lightmap_requests; DrawingRequests* requests; + Color ambient_color; SDL_Surface* screen; Target target;