fixed the right and left button not working (#1595)

This commit is contained in:
Redcamellia
2021-02-20 13:18:43 +03:00
committed by GitHub
parent 2375464213
commit 0a8cb60eee

View File

@@ -15,7 +15,7 @@
#define MAX_COLORS_COUNT 23 // Number of colors available #define MAX_COLORS_COUNT 23 // Number of colors available
int main(void) int main(void)
{ {
// Initialization // Initialization
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
@@ -29,13 +29,13 @@ int main(void)
RAYWHITE, YELLOW, GOLD, ORANGE, PINK, RED, MAROON, GREEN, LIME, DARKGREEN, RAYWHITE, YELLOW, GOLD, ORANGE, PINK, RED, MAROON, GREEN, LIME, DARKGREEN,
SKYBLUE, BLUE, DARKBLUE, PURPLE, VIOLET, DARKPURPLE, BEIGE, BROWN, DARKBROWN, SKYBLUE, BLUE, DARKBLUE, PURPLE, VIOLET, DARKPURPLE, BEIGE, BROWN, DARKBROWN,
LIGHTGRAY, GRAY, DARKGRAY, BLACK }; LIGHTGRAY, GRAY, DARKGRAY, BLACK };
// Define colorsRecs data (for every rectangle) // Define colorsRecs data (for every rectangle)
Rectangle colorsRecs[MAX_COLORS_COUNT] = { 0 }; Rectangle colorsRecs[MAX_COLORS_COUNT] = { 0 };
for (int i = 0; i < MAX_COLORS_COUNT; i++) for (int i = 0; i < MAX_COLORS_COUNT; i++)
{ {
colorsRecs[i].x = 10 + 30*i + 2*i; colorsRecs[i].x = 10 + 30 * i + 2 * i;
colorsRecs[i].y = 10; colorsRecs[i].y = 10;
colorsRecs[i].width = 30; colorsRecs[i].width = 30;
colorsRecs[i].height = 30; colorsRecs[i].height = 30;
@@ -45,7 +45,8 @@ int main(void)
int colorSelectedPrev = colorSelected; int colorSelectedPrev = colorSelected;
int colorMouseHover = 0; int colorMouseHover = 0;
int brushSize = 20; int brushSize = 20;
bool mouseWasPressed = false;
Rectangle btnSaveRec = { 750, 10, 40, 30 }; Rectangle btnSaveRec = { 750, 10, 40, 30 };
bool btnSaveMouseHover = false; bool btnSaveMouseHover = false;
bool showSaveMessage = false; bool showSaveMessage = false;
@@ -68,11 +69,11 @@ int main(void)
// Update // Update
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
Vector2 mousePos = GetMousePosition(); Vector2 mousePos = GetMousePosition();
// Move between colors with keys // Move between colors with keys
if (IsKeyPressed(KEY_RIGHT)) colorSelected++; if (IsKeyPressed(KEY_RIGHT)) colorSelected++;
else if (IsKeyPressed(KEY_LEFT)) colorSelected--; else if (IsKeyPressed(KEY_LEFT)) colorSelected--;
if (colorSelected >= MAX_COLORS_COUNT) colorSelected = MAX_COLORS_COUNT - 1; if (colorSelected >= MAX_COLORS_COUNT) colorSelected = MAX_COLORS_COUNT - 1;
else if (colorSelected < 0) colorSelected = 0; else if (colorSelected < 0) colorSelected = 0;
@@ -86,19 +87,19 @@ int main(void)
} }
else colorMouseHover = -1; else colorMouseHover = -1;
} }
if ((colorMouseHover >= 0) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) if ((colorMouseHover >= 0) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))
{ {
colorSelected = colorMouseHover; colorSelected = colorMouseHover;
colorSelectedPrev = colorSelected; colorSelectedPrev = colorSelected;
} }
// Change brush size // Change brush size
brushSize += GetMouseWheelMove()*5; brushSize += GetMouseWheelMove() * 5;
if (brushSize < 2) brushSize = 2; if (brushSize < 2) brushSize = 2;
if (brushSize > 50) brushSize = 50; if (brushSize > 50) brushSize = 50;
if (IsKeyPressed(KEY_C)) if (IsKeyPressed(KEY_C))
{ {
// Clear render texture to clear color // Clear render texture to clear color
BeginTextureMode(target); BeginTextureMode(target);
@@ -118,19 +119,29 @@ int main(void)
if (IsMouseButtonDown(MOUSE_RIGHT_BUTTON)) if (IsMouseButtonDown(MOUSE_RIGHT_BUTTON))
{ {
colorSelected = 0; if (!mouseWasPressed)
{
colorSelectedPrev = colorSelected;
colorSelected = 0;
}
mouseWasPressed = true;
// Erase circle from render texture // Erase circle from render texture
BeginTextureMode(target); BeginTextureMode(target);
if (mousePos.y > 50) DrawCircle(mousePos.x, mousePos.y, brushSize, colors[0]); if (mousePos.y > 50) DrawCircle(mousePos.x, mousePos.y, brushSize, colors[0]);
EndTextureMode(); EndTextureMode();
} }
else colorSelected = colorSelectedPrev; else if (IsMouseButtonReleased(MOUSE_RIGHT_BUTTON) && mouseWasPressed)
{
colorSelected = colorSelectedPrev;
mouseWasPressed = false;
}
// Check mouse hover save button // Check mouse hover save button
if (CheckCollisionPointRec(mousePos, btnSaveRec)) btnSaveMouseHover = true; if (CheckCollisionPointRec(mousePos, btnSaveRec)) btnSaveMouseHover = true;
else btnSaveMouseHover = false; else btnSaveMouseHover = false;
// Image saving logic // Image saving logic
// NOTE: Saving painted texture to a default named image // NOTE: Saving painted texture to a default named image
if ((btnSaveMouseHover && IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) || IsKeyPressed(KEY_S)) if ((btnSaveMouseHover && IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) || IsKeyPressed(KEY_S))
@@ -141,7 +152,7 @@ int main(void)
UnloadImage(image); UnloadImage(image);
showSaveMessage = true; showSaveMessage = true;
} }
if (showSaveMessage) if (showSaveMessage)
{ {
// On saving, show a full screen message for 2 seconds // On saving, show a full screen message for 2 seconds
@@ -158,42 +169,44 @@ int main(void)
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
BeginDrawing(); BeginDrawing();
ClearBackground(RAYWHITE); ClearBackground(RAYWHITE);
// NOTE: Render texture must be y-flipped due to default OpenGL coordinates (left-bottom) // NOTE: Render texture must be y-flipped due to default OpenGL coordinates (left-bottom)
DrawTextureRec(target.texture, (Rectangle){ 0, 0, target.texture.width, -target.texture.height }, (Vector2){ 0, 0 }, WHITE); DrawTextureRec(target.texture, (Rectangle) { 0, 0, target.texture.width, -target.texture.height }, (Vector2) { 0, 0 }, WHITE);
// Draw drawing circle for reference // Draw drawing circle for reference
if (mousePos.y > 50) if (mousePos.y > 50)
{ {
if (IsMouseButtonDown(MOUSE_RIGHT_BUTTON)) DrawCircleLines(mousePos.x, mousePos.y, brushSize, GRAY); if (IsMouseButtonDown(MOUSE_RIGHT_BUTTON)) DrawCircleLines(mousePos.x, mousePos.y, brushSize, GRAY);
else DrawCircle(GetMouseX(), GetMouseY(), brushSize, colors[colorSelected]); else DrawCircle(GetMouseX(), GetMouseY(), brushSize, colors[colorSelected]);
} }
// Draw top panel
DrawRectangle(0, 0, GetScreenWidth(), 50, RAYWHITE);
DrawLine(0, 50, GetScreenWidth(), 50, LIGHTGRAY);
// Draw color selection rectangles // Draw top panel
for (int i = 0; i < MAX_COLORS_COUNT; i++) DrawRectangleRec(colorsRecs[i], colors[i]); DrawRectangle(0, 0, GetScreenWidth(), 50, RAYWHITE);
DrawRectangleLines(10, 10, 30, 30, LIGHTGRAY); DrawLine(0, 50, GetScreenWidth(), 50, LIGHTGRAY);
if (colorMouseHover >= 0) DrawRectangleRec(colorsRecs[colorMouseHover], Fade(WHITE, 0.6f)); // Draw color selection rectangles
for (int i = 0; i < MAX_COLORS_COUNT; i++) DrawRectangleRec(colorsRecs[i], colors[i]);
DrawRectangleLines(10, 10, 30, 30, LIGHTGRAY);
DrawRectangleLinesEx((Rectangle){ colorsRecs[colorSelected].x - 2, colorsRecs[colorSelected].y - 2, if (colorMouseHover >= 0) DrawRectangleRec(colorsRecs[colorMouseHover], Fade(WHITE, 0.6f));
colorsRecs[colorSelected].width + 4, colorsRecs[colorSelected].height + 4 }, 2, BLACK);
// Draw save image button DrawRectangleLinesEx((Rectangle) {
DrawRectangleLinesEx(btnSaveRec, 2, btnSaveMouseHover? RED : BLACK); colorsRecs[colorSelected].x - 2, colorsRecs[colorSelected].y - 2,
DrawText("SAVE!", 755, 20, 10, btnSaveMouseHover? RED : BLACK); colorsRecs[colorSelected].width + 4, colorsRecs[colorSelected].height + 4
}, 2, BLACK);
// Draw save image message
if (showSaveMessage) // Draw save image button
{ DrawRectangleLinesEx(btnSaveRec, 2, btnSaveMouseHover ? RED : BLACK);
DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), Fade(RAYWHITE, 0.8f)); DrawText("SAVE!", 755, 20, 10, btnSaveMouseHover ? RED : BLACK);
DrawRectangle(0, 150, GetScreenWidth(), 80, BLACK);
DrawText("IMAGE SAVED: my_amazing_texture_painting.png", 150, 180, 20, RAYWHITE); // Draw save image message
} if (showSaveMessage)
{
DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), Fade(RAYWHITE, 0.8f));
DrawRectangle(0, 150, GetScreenWidth(), 80, BLACK);
DrawText("IMAGE SAVED: my_amazing_texture_painting.png", 150, 180, 20, RAYWHITE);
}
EndDrawing(); EndDrawing();
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
@@ -202,7 +215,7 @@ int main(void)
// De-Initialization // De-Initialization
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
UnloadRenderTexture(target); // Unload render texture UnloadRenderTexture(target); // Unload render texture
CloseWindow(); // Close window and OpenGL context CloseWindow(); // Close window and OpenGL context
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------