Day 36 complete.
This commit is contained in:
+42
@@ -84,6 +84,36 @@ static void DrawRectangle(game_offscreen_buffer *Buffer, F32 RealMinX, F32 RealM
|
||||
}
|
||||
}
|
||||
|
||||
#pragma pack(push, 1)
|
||||
typedef struct bitmap_header {
|
||||
U16 FileType;
|
||||
U32 FileSize;
|
||||
U16 Reserved1;
|
||||
U16 Reserved2;
|
||||
U32 BitmapOffset;
|
||||
U32 Size;
|
||||
S32 Width;
|
||||
S32 Height;
|
||||
U16 Planes;
|
||||
U16 BitsPerPixel;
|
||||
} bitmap_header;
|
||||
#pragma pack(pop)
|
||||
|
||||
static U32 *LoadBMP(thread_context *Thread, debug_read_file_result (*DEBUGPlatformReadEntireFile)(thread_context *Thread, const char *), char *FileName)
|
||||
{
|
||||
U32 *Result = 0;
|
||||
|
||||
debug_read_file_result ReadResult = DEBUGPlatformReadEntireFile(Thread, FileName);
|
||||
if(ReadResult.ContentsSize > 0) {
|
||||
bitmap_header *Header = (bitmap_header *)ReadResult.Contents;
|
||||
|
||||
U32 *Pixels = (U32 *)((U8 *)ReadResult.Contents + Header->BitmapOffset);
|
||||
Result = Pixels;
|
||||
}
|
||||
|
||||
return Result;
|
||||
}
|
||||
|
||||
void UpdateAndRender(thread_context *Thread, game_memory *Memory, game_input *Input, game_offscreen_buffer *Buffer, game_sound_output_buffer *SoundBuffer)
|
||||
{
|
||||
|
||||
@@ -100,6 +130,8 @@ void UpdateAndRender(thread_context *Thread, game_memory *Memory, game_input *In
|
||||
|
||||
GameState = (game_state *)Memory->PermanentStorage;
|
||||
if(!Memory->IsInitialized) {
|
||||
GameState->PixelPointer = LoadBMP(Thread, Memory->DEBUGPlatformReadEntireFile, "data/test_background.bmp");
|
||||
|
||||
GameState->PlayerP.AbsTileX = 2;
|
||||
GameState->PlayerP.AbsTileY = 3;
|
||||
GameState->PlayerP.OffsetX = 5.0f;
|
||||
@@ -341,6 +373,16 @@ void UpdateAndRender(thread_context *Thread, game_memory *Memory, game_input *In
|
||||
F32 PlayerTop = ScreenCenterY - MetersToPixels*PlayerHeight;
|
||||
DrawRectangle(Buffer, PlayerLeft, PlayerTop, PlayerLeft + MetersToPixels*PlayerWidth, PlayerTop + MetersToPixels*PlayerHeight, PlayerR, PlayerG, PlayerB);
|
||||
|
||||
#if 0
|
||||
U32 *Source = GameState->PixelPointer;
|
||||
U32 *Dest = (U32 *)Buffer->Memory;
|
||||
for(S32 Y = 0; Y < Buffer->Height; Y++) {
|
||||
for(S32 X = 0; X < Buffer->Width; X++) {
|
||||
*Dest++ = *Source++;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
GameOutputSound(GameState, SoundBuffer, 400);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user