diff --git a/handmade.c b/handmade.c index 7e67557..a4999b5 100644 --- a/handmade.c +++ b/handmade.c @@ -383,6 +383,8 @@ void UpdateAndRender(thread_context *Thread, game_memory *Memory, game_input *In } #endif + DrawRectangle(Buffer, (F32)Input->MouseX-14.0f, (F32)Input->MouseY-14.0f, (F32)(Input->MouseX)+2.0f, (F32)(Input->MouseY)+2.0f, 1.0f, 0.0f, 0.0f); + GameOutputSound(GameState, SoundBuffer, 400); } diff --git a/sdl_handmade.c b/sdl_handmade.c index 42f6de0..e67d4b2 100644 --- a/sdl_handmade.c +++ b/sdl_handmade.c @@ -634,7 +634,7 @@ S32 main(S32 argc, char *argv[]) game_input *NewInput = &Input[0]; game_input *OldInput = &Input[1]; - memset(&Input, 0, sizeof(Input)); + memset(Input, 0, sizeof(Input)); GlobalPerfCountFrequency = SDL_GetPerformanceFrequency(); @@ -658,13 +658,21 @@ S32 main(S32 argc, char *argv[]) Game = SDLLoadGameCode(SDLState.DLLPath); } - U32 SDLMouseButtons = SDL_GetMouseState(&(NewInput->MouseX), &(NewInput->MouseY)); + S32 MouseX, MouseY; + SDL_GetGlobalMouseState(&MouseX, &MouseY); + + S32 WindowX, WindowY; + SDL_GetWindowPosition(Window, &WindowX, &WindowY); + + NewInput->MouseX = MouseX - WindowX; + NewInput->MouseY = MouseY - WindowY; + + U32 SDLMouseButtons = SDL_GetMouseState(NULL, NULL); NewInput->MouseZ = 0; /* TODO: Support mouse wheel? */ SDLProcessKeyboardMessage(&(NewInput->MouseButtons[0]), SDL_BUTTON_LMASK & SDLMouseButtons); SDLProcessKeyboardMessage(&(NewInput->MouseButtons[1]), SDL_BUTTON_MMASK & SDLMouseButtons); SDLProcessKeyboardMessage(&(NewInput->MouseButtons[2]), SDL_BUTTON_RMASK & SDLMouseButtons); - /* WARNING: TODO: SDL_BUTTON_X1MASK and SDL_BUTTON_X2MASK cannot be on at the - * same time for some reason. */ + /* WARNING: TODO: SDL_BUTTON_X1MASK and SDL_BUTTON_X2MASK cannot be on at the same time for some reason. */ SDLProcessKeyboardMessage(&(NewInput->MouseButtons[3]), SDL_BUTTON_X1MASK & SDLMouseButtons); SDLProcessKeyboardMessage(&(NewInput->MouseButtons[4]), SDL_BUTTON_X2MASK & SDLMouseButtons); @@ -741,15 +749,11 @@ S32 main(S32 argc, char *argv[]) } } - S32 TargetQueueBytes = SoundOutput.LatencySampleCount * - SoundOutput.BytesPerSample; - S32 BytesToWrite = - TargetQueueBytes - SDL_GetQueuedAudioSize(1); + S32 TargetQueueBytes = SoundOutput.LatencySampleCount * SoundOutput.BytesPerSample; + S32 BytesToWrite = TargetQueueBytes - SDL_GetQueuedAudioSize(1); game_sound_output_buffer SoundBuffer; - SoundBuffer.SamplesPerSecond = - SoundOutput.SamplesPerSecond; - SoundBuffer.SampleCount = - BytesToWrite / SoundOutput.BytesPerSample; + SoundBuffer.SamplesPerSecond = SoundOutput.SamplesPerSecond; + SoundBuffer.SampleCount = BytesToWrite / SoundOutput.BytesPerSample; SoundBuffer.Samples = (short *)SoundOutput.Samples; thread_context Context; @@ -763,25 +767,19 @@ S32 main(S32 argc, char *argv[]) Buffer.Pitch = GlobalBackbuffer.Pitch; if(Game.UpdateAndRender) { - Game.UpdateAndRender(&Context, &GameMemory, - NewInput, &Buffer, - &SoundBuffer); + Game.UpdateAndRender(&Context, &GameMemory, NewInput, &Buffer, &SoundBuffer); } SDLFillSoundBuffer(&SoundOutput, BytesToWrite); U64 WorkCounter = SDLGetWallClock(); - F32 WorkSecondsElapsed = - SDLGetSecondsElapsed(LastCounter, WorkCounter); + F32 WorkSecondsElapsed = SDLGetSecondsElapsed(LastCounter, WorkCounter); F32 SecondsElapsedForFrame = WorkSecondsElapsed; if(SecondsElapsedForFrame < TargetSecondsPerFrame) { while(SecondsElapsedForFrame < TargetSecondsPerFrame) { - SecondsElapsedForFrame = - SDLGetSecondsElapsed(LastCounter, - SDLGetWallClock()); - SDL_Delay((U32)((TargetSecondsPerFrame - - SecondsElapsedForFrame) * 1000.0)); + SecondsElapsedForFrame = SDLGetSecondsElapsed(LastCounter, SDLGetWallClock()); + SDL_Delay((U32)((TargetSecondsPerFrame - SecondsElapsedForFrame) * 1000.0)); } } else { /* TODO: Missed frame rate! */ @@ -790,11 +788,9 @@ S32 main(S32 argc, char *argv[]) U64 EndCounter = SDLGetWallClock(); - SDLDisplayBufferInWindow(GlobalBackbuffer, Window, - Renderer); + SDLDisplayBufferInWindow(GlobalBackbuffer, Window, Renderer); - F64 MSPerFrame = 1000.0 * - SDLGetSecondsElapsed(LastCounter, EndCounter); + F64 MSPerFrame = 1000.0 * SDLGetSecondsElapsed(LastCounter, EndCounter); F64 FPS = 0.0; LastCounter = EndCounter; @@ -808,7 +804,7 @@ S32 main(S32 argc, char *argv[]) LastCycleCount = EndCycleCount; #endif - SWAP(game_input *, NewInput, OldInput); + SWAP(game_input *, OldInput, NewInput); } } else { /* TODO: Failed to allocate Samples and Sound memory . . . */