@@ -103,6 +103,29 @@ create_label_sprite(Position pos)
103103 return s ;
104104}
105105
106+ static Sprite *
107+ create_minimap_blank_sprite (SDL_Renderer * renderer )
108+ {
109+ Sprite * sprite = sprite_create ();
110+ Texture * texture = texture_create ();
111+ texture -> dim = (Dimension ) {
112+ RIGHT_GUI_WIDTH ,
113+ MINIMAP_GUI_HEIGHT - 8
114+ };
115+ sprite -> textures [0 ] = texture ;
116+ sprite -> destroyTextures = true;
117+ sprite -> pos = (Position ) { 0 , 4 };
118+ sprite -> dim = (Dimension ) { RIGHT_GUI_WIDTH , MINIMAP_GUI_HEIGHT - 8 };
119+ sprite -> fixed = true;
120+ texture_create_blank (texture ,
121+ SDL_TEXTUREACCESS_TARGET ,
122+ renderer );
123+ texture_set_blend_mode (texture , SDL_BLENDMODE_BLEND );
124+ texture_set_scale_mode (texture , SDL_SCALEMODE_NEAREST );
125+
126+ return sprite ;
127+ }
128+
106129static void
107130init_sprites (Gui * gui , Camera * cam )
108131{
@@ -193,24 +216,8 @@ init_sprites(Gui *gui, Camera *cam)
193216 BOTTOM_GUI_HEIGHT /16 ,
194217 cam );
195218
196- Sprite * minimap = sprite_create ();
197- Texture * texture = texture_create ();
198- texture -> dim = (Dimension ) {
199- RIGHT_GUI_WIDTH ,
200- MINIMAP_GUI_HEIGHT - 8
201- };
202- minimap -> textures [0 ] = texture ;
203- minimap -> destroyTextures = true;
204- minimap -> pos = (Position ) { 0 , 4 };
205- minimap -> dim = (Dimension ) { RIGHT_GUI_WIDTH , MINIMAP_GUI_HEIGHT - 8 };
206- minimap -> fixed = true;
207- texture_create_blank (texture ,
208- SDL_TEXTUREACCESS_TARGET ,
209- cam -> renderer );
210- texture_set_blend_mode (texture , SDL_BLENDMODE_BLEND );
211- texture_set_scale_mode (texture , SDL_SCALEMODE_NEAREST );
212-
213- gui -> miniMap = minimap ;
219+ gui -> miniMap = create_minimap_blank_sprite (cam -> renderer );
220+ gui -> miniMapOverlay = create_minimap_blank_sprite (cam -> renderer );
214221
215222 texture_load_from_text (gui -> labels [KEY_LABEL ]-> textures [0 ], "Keys:" , C_WHITE , C_BLACK , cam -> renderer );
216223 gui -> labels [KEY_LABEL ]-> dim = gui -> labels [KEY_LABEL ]-> textures [0 ]-> dim ;
@@ -533,20 +540,27 @@ gui_update_minimap(Gui *gui, Camera *cam, RoomMatrix *rm)
533540 SDL_RenderFillRect (cam -> renderer , & mod_box );
534541 }
535542
536- SDL_SetRenderTarget (cam -> renderer , NULL );
537- }
543+ SDL_SetRenderTarget (cam -> renderer , gui -> miniMapOverlay -> textures [0 ]-> texture );
544+ SDL_SetRenderDrawColor (cam -> renderer , 0 , 0 , 0 , SDL_ALPHA_TRANSPARENT );
545+ SDL_RenderClear (cam -> renderer );
538546
539- void
540- gui_render_minimap (Gui * gui , Camera * cam , RoomMatrix * rm )
541- {
542- sprite_render (gui -> miniMap , cam );
547+ // Render current room square
543548 const SDL_FRect r = {
544549 (float ) rm -> roomPos .x * MAP_ROOM_WIDTH ,
545- 4.0f + (float ) rm -> roomPos .y * MAP_ROOM_HEIGHT ,
550+ (float ) rm -> roomPos .y * MAP_ROOM_HEIGHT ,
546551 MAP_ROOM_WIDTH ,
547552 MAP_ROOM_HEIGHT };
548- SDL_SetRenderDrawColor (cam -> renderer , 0 , 255 , 255 , 100 );
553+ SDL_SetRenderDrawColor (cam -> renderer , 235 , 235 , 52 , 200 );
549554 SDL_RenderRect (cam -> renderer , & r );
555+
556+ SDL_SetRenderTarget (cam -> renderer , NULL );
557+ }
558+
559+ void
560+ gui_render_minimap (Gui * gui , Camera * cam )
561+ {
562+ sprite_render (gui -> miniMap , cam );
563+ sprite_render (gui -> miniMapOverlay , cam );
550564}
551565
552566void
@@ -556,10 +570,14 @@ gui_render_minimap_overlay(Gui *gui, Camera *cam)
556570 50 , 50 , GAME_VIEW_WIDTH - 100 , GAME_VIEW_HEIGHT - 100
557571 };
558572
573+ // Render map
559574 Texture * texture = gui -> miniMap -> textures [0 ];
560575 texture_set_alpha (texture , 200 );
561576 texture_render_clip_ex (texture , & target_box , NULL , 0.0 , NULL , SDL_FLIP_NONE , cam );
562577 texture_set_alpha (texture , SDL_ALPHA_OPAQUE );
578+
579+ // Render map overlay
580+ texture_render_clip_ex (gui -> miniMapOverlay -> textures [0 ], & target_box , NULL , 0.0 , NULL , SDL_FLIP_NONE , cam );
563581}
564582
565583void
0 commit comments