extra/patches/right_click_for_flip.patch
raw ·
blame ·
history
diff --git a/src/PuzzleSingleImageState.cpp b/src/PuzzleSingleImageState.cpp
index 600ec68..8d730df 100644
--- a/src/PuzzleSingleImageState.cpp
+++ b/src/PuzzleSingleImageState.cpp
@@ -149,22 +149,36 @@ void PuzzleSingleImageState::Update() {
globalData.mouseUp=true;
}
+ if ( !(SDL_GetMouseState(nullptr, nullptr)&SDL_BUTTON(3)) ) {
+ globalData.mouseRightUp=true;
+ }
+
+ bool leftClicked = false;
+ bool rightClicked = false;
if (SDL_GetMouseState(nullptr,nullptr)&SDL_BUTTON(1) && globalData.mouseUp) {
+ leftClicked = true;
globalData.mouseUp = false;
-
+ }
+
+ if (SDL_GetMouseState(nullptr,nullptr)&SDL_BUTTON(3) && globalData.mouseRightUp) {
+ rightClicked = true;
+ globalData.mouseRightUp = false;
+ }
+
+ if (leftClicked || rightClicked) {
SDL_Rect rect;
rect.x = globalData.xsize/2-resized_image_physical_width/2;
- rect.y = globalData.ysize/2-resized_image_physical_height/2;;
+ rect.y = globalData.ysize/2-resized_image_physical_height/2;
rect.h = resized_image_physical_height;
rect.w = resized_image_physical_width;
for (size_t i = 0; i< pieces_physical.size(); ++i) {
const SDL_Rect& piece = pieces_physical[i];
bool clicked = (globalData.mousex > rect.x+piece.x && globalData.mousex < rect.x+piece.x + piece.w && globalData.mousey > rect.y+piece.y && globalData.mousey < rect.y+piece.y + piece.h);
if (clicked) {
- if (flipMode) {
+ if (rightClicked && flipMode) {
rotated_pieces[i] = (rotated_pieces[i]+1)%4;
}
- else {
+ if (leftClicked && !flipMode) {
if (i != marked_piece && marked_piece > -1 && marked_piece < pieces_physical.size()) {
std::swap(shuffeled_pieces[i], shuffeled_pieces[marked_piece]);
marked_piece = -1;
@@ -180,6 +194,11 @@ void PuzzleSingleImageState::Update() {
}
CheckSolved();
}
+
+ if (SDL_GetMouseState(nullptr,nullptr)&SDL_BUTTON(2) && globalData.mouseRightUp) {
+ globalData.mouseRightUp = false;
+ marked_piece = -1;
+ }
}
void PuzzleSingleImageState::CreatePhysicalPieces() {
diff --git a/src/globals.hpp b/src/globals.hpp
index fa6c6e7..a31d084 100644
--- a/src/globals.hpp
+++ b/src/globals.hpp
@@ -42,6 +42,7 @@ struct GlobalData {
int mousex = 0;
int mousey = 0;
bool mouseUp = false;
+ bool mouseRightUp = false;
int xsize = 1366;
int ysize = 768;
};