diff --git a/resources.qrc b/resources.qrc index 2de6e21e..33608756 100644 --- a/resources.qrc +++ b/resources.qrc @@ -28,5 +28,6 @@ icons/Undo.png icons/find.png icons/cloud.png + icons/branch_spritesheet.png diff --git a/src/drivers/Qt/TasEditor/branches.cpp b/src/drivers/Qt/TasEditor/branches.cpp index 4015c860..1c575668 100644 --- a/src/drivers/Qt/TasEditor/branches.cpp +++ b/src/drivers/Qt/TasEditor/branches.cpp @@ -97,6 +97,8 @@ void BRANCHES::calcFontData(void) pxBoxWidth = pxLineSpacing; pxBoxHeight = pxLineSpacing; + pxSelWidth = (pxBoxWidth * 7) / 8; + pxSelHeight = (pxBoxHeight * 7) / 8; } void BRANCHES::init() @@ -550,11 +552,94 @@ void BRANCHES::redrawBranchesBitmap() QWidget::update(); } +void BRANCHES::mousePressEvent(QMouseEvent * event) +{ + int item = findItemUnderMouse( event->pos().x(), event->pos().y() ); + + bookmarks->itemUnderMouse = item; + + if (event->button() & Qt::LeftButton) + { + // single click on Branches Tree = send Playback to the Bookmark + int branchUnderMouse = item; + if (branchUnderMouse == ITEM_UNDER_MOUSE_CLOUD) + { + playback->jump(0); + } + else if ( (branchUnderMouse >= 0) && (branchUnderMouse < TOTAL_BOOKMARKS) && bookmarks->bookmarksArray[branchUnderMouse].notEmpty) + { + bookmarks->command(COMMAND_JUMP, branchUnderMouse); + } + else if (branchUnderMouse == ITEM_UNDER_MOUSE_FIREBALL) + { + playback->jump(currMovieData.getNumRecords() - 1); + } + + // double click on Branches Tree = deploy the Branch +// int branchUnderMouse = bookmarks.itemUnderMouse; +// if (branchUnderMouse == ITEM_UNDER_MOUSE_CLOUD) +// { +// playback->jump(0); +// } else if (branchUnderMouse >= 0 && branchUnderMouse < TOTAL_BOOKMARKS && bookmarks.bookmarksArray[branchUnderMouse].notEmpty) +// { +// bookmarks->command(COMMAND_DEPLOY, branchUnderMouse); +// } else if (branchUnderMouse == ITEM_UNDER_MOUSE_FIREBALL) +// { +// playback->jump(currMovieData.getNumRecords() - 1); +// } + + } + else if (event->button() & Qt::RightButton) + { + branchRightclicked = item; + //if (branches.branchRightclicked >= 0 && branches.branchRightclicked < TOTAL_BOOKMARKS) + + } +} + +void BRANCHES::mouseReleaseEvent(QMouseEvent * event) +{ + int item = findItemUnderMouse( event->pos().x(), event->pos().y() ); + + bookmarks->itemUnderMouse = item; + + if (event->button() & Qt::LeftButton) + { + + } + else if (event->button() & Qt::RightButton) + { + if ( (branchRightclicked >= 0) && (branchRightclicked < TOTAL_BOOKMARKS) && (branchRightclicked == item) ) + { + bookmarks->command(COMMAND_SET, branchRightclicked); + } + //ReleaseCapture(); + branchRightclicked = ITEM_UNDER_MOUSE_NONE; + } +} + +void BRANCHES::mouseMoveEvent(QMouseEvent * event) +{ + int item = findItemUnderMouse( event->pos().x(), event->pos().y() ); + + bookmarks->itemUnderMouse = item; + + //if (event->button() & Qt::LeftButton) + //{ + + //} + //else if (event->button() & Qt::RightButton) + //{ + + //} + +} + void BRANCHES::paintEvent(QPaintEvent *event) { int x,y; char txt[4]; - QPixmap cloud(":/icons/cloud.png"); + QPixmap spriteSheet(":/icons/branch_spritesheet.png"); QPainter painter(this); @@ -692,7 +777,9 @@ void BRANCHES::paintEvent(QPaintEvent *event) } // // cloud // TransparentBlt(hBitmapDC, cloudCurrentX - BRANCHES_CLOUD_HALFWIDTH, BRANCHES_CLOUD_Y - BRANCHES_CLOUD_HALFHEIGHT, BRANCHES_CLOUD_WIDTH, BRANCHES_CLOUD_HEIGHT, hSpritesheetDC, BRANCHES_CLOUD_SPRITESHEET_X, BRANCHES_CLOUD_SPRITESHEET_Y, BRANCHES_CLOUD_WIDTH, BRANCHES_CLOUD_HEIGHT, 0x00FF00); - painter.drawPixmap( cloudCurrentX - BRANCHES_CLOUD_HALFWIDTH, BRANCHES_CLOUD_Y - BRANCHES_CLOUD_HALFHEIGHT, BRANCHES_CLOUD_WIDTH, BRANCHES_CLOUD_HEIGHT, cloud ); + //painter.drawPixmap( cloudCurrentX - BRANCHES_CLOUD_HALFWIDTH, BRANCHES_CLOUD_Y - BRANCHES_CLOUD_HALFHEIGHT, BRANCHES_CLOUD_WIDTH, BRANCHES_CLOUD_HEIGHT, cloud ); + painter.drawPixmap( cloudCurrentX - BRANCHES_CLOUD_HALFWIDTH, BRANCHES_CLOUD_Y - BRANCHES_CLOUD_HALFHEIGHT, BRANCHES_CLOUD_WIDTH, BRANCHES_CLOUD_HEIGHT, + spriteSheet, BRANCHES_CLOUD_SPRITESHEET_X, BRANCHES_CLOUD_SPRITESHEET_Y, BRANCHES_CLOUD_WIDTH, BRANCHES_CLOUD_HEIGHT ); // // branches rectangles for (int i = 0; i < TOTAL_BOOKMARKS; ++i) @@ -703,6 +790,7 @@ void BRANCHES::paintEvent(QPaintEvent *event) //tempRect.bottom = tempRect.top + DIGIT_RECT_HEIGHT; if (!bookmarks->bookmarksArray[i].notEmpty && bookmarks->bookmarksArray[i].floatingPhase > 0) { + x += bookmarks->bookmarksArray[i].floatingPhase; //tempRect.left += bookmarks->bookmarksArray[i].floatingPhase; //tempRect.right += bookmarks->bookmarksArray[i].floatingPhase; } @@ -828,31 +916,50 @@ void BRANCHES::paintEvent(QPaintEvent *event) painter.setPen( pen ); } + // fireball + if (fireballSize) + { + tempBranchX = branchCurrentX[ITEM_UNDER_MOUSE_FIREBALL] - BRANCHES_FIREBALL_HALFWIDTH; + tempBranchY = branchCurrentY[ITEM_UNDER_MOUSE_FIREBALL] - BRANCHES_FIREBALL_HALFHEIGHT; + if (fireballSize >= BRANCHES_FIREBALL_MAX_SIZE) + { + painter.drawPixmap( tempBranchX, tempBranchY, BRANCHES_FIREBALL_WIDTH, BRANCHES_FIREBALL_HEIGHT, + spriteSheet, currentAnimationFrame * BRANCHES_FIREBALL_WIDTH + BRANCHES_FIREBALL_SPRITESHEET_X, BRANCHES_FIREBALL_SPRITESHEET_Y, BRANCHES_FIREBALL_WIDTH, BRANCHES_FIREBALL_HEIGHT ); + //TransparentBlt(hBufferDC, tempBranchX, tempBranchY, BRANCHES_FIREBALL_WIDTH, BRANCHES_FIREBALL_HEIGHT, hSpritesheetDC, currentAnimationFrame * BRANCHES_FIREBALL_WIDTH + BRANCHES_FIREBALL_SPRITESHEET_X, BRANCHES_FIREBALL_SPRITESHEET_Y, BRANCHES_FIREBALL_WIDTH, BRANCHES_FIREBALL_HEIGHT, 0x00FF00); + } + else + { + painter.drawPixmap( tempBranchX, tempBranchY, BRANCHES_FIREBALL_WIDTH, BRANCHES_FIREBALL_HEIGHT, + spriteSheet, BRANCHES_FIREBALL_SPRITESHEET_END_X - fireballSize * BRANCHES_FIREBALL_WIDTH, BRANCHES_FIREBALL_SPRITESHEET_Y, BRANCHES_FIREBALL_WIDTH, BRANCHES_FIREBALL_HEIGHT ); + //TransparentBlt(hBufferDC, tempBranchX, tempBranchY, BRANCHES_FIREBALL_WIDTH, BRANCHES_FIREBALL_HEIGHT, hSpritesheetDC, BRANCHES_FIREBALL_SPRITESHEET_END_X - fireballSize * BRANCHES_FIREBALL_WIDTH, BRANCHES_FIREBALL_SPRITESHEET_Y, BRANCHES_FIREBALL_WIDTH, BRANCHES_FIREBALL_HEIGHT, 0x00FF00); + } + } + // corners cursor painter.setPen( QColor( 0x0, 0x0, 0x0 ) ); int current_corners_cursor_shift = corners_cursor_shift[currentAnimationFrame]; int corner_x, corner_y; // upper left - corner_x = cornersCursorX - current_corners_cursor_shift - pxBoxWidth; - corner_y = cornersCursorY - current_corners_cursor_shift - pxBoxHeight; + corner_x = cornersCursorX - current_corners_cursor_shift - pxSelWidth; + corner_y = cornersCursorY - current_corners_cursor_shift - pxSelHeight; painter.drawLine( corner_x, corner_y, corner_x , corner_y+BRANCHES_CORNER_HEIGHT ); painter.drawLine( corner_x, corner_y, corner_x+BRANCHES_CORNER_WIDTH, corner_y ); //TransparentBlt(hBufferDC, corner_x, corner_y, BRANCHES_CORNER_WIDTH, BRANCHES_CORNER_HEIGHT, hSpritesheetDC, BRANCHES_CORNER1_SPRITESHEET_X, BRANCHES_CORNER1_SPRITESHEET_Y, BRANCHES_CORNER_WIDTH, BRANCHES_CORNER_HEIGHT, 0x00FF00); // upper right - corner_x = cornersCursorX + current_corners_cursor_shift + pxBoxWidth; - corner_y = cornersCursorY - current_corners_cursor_shift - pxBoxHeight; + corner_x = cornersCursorX + current_corners_cursor_shift + pxSelWidth; + corner_y = cornersCursorY - current_corners_cursor_shift - pxSelHeight; painter.drawLine( corner_x, corner_y, corner_x , corner_y+BRANCHES_CORNER_HEIGHT ); painter.drawLine( corner_x, corner_y, corner_x-BRANCHES_CORNER_WIDTH, corner_y ); //TransparentBlt(hBufferDC, corner_x, corner_y, BRANCHES_CORNER_WIDTH, BRANCHES_CORNER_HEIGHT, hSpritesheetDC, BRANCHES_CORNER2_SPRITESHEET_X, BRANCHES_CORNER2_SPRITESHEET_Y, BRANCHES_CORNER_WIDTH, BRANCHES_CORNER_HEIGHT, 0x00FF00); // lower left - corner_x = cornersCursorX - current_corners_cursor_shift - pxBoxWidth; - corner_y = cornersCursorY + current_corners_cursor_shift + pxBoxHeight; + corner_x = cornersCursorX - current_corners_cursor_shift - pxSelWidth; + corner_y = cornersCursorY + current_corners_cursor_shift + pxSelHeight; painter.drawLine( corner_x, corner_y, corner_x , corner_y-BRANCHES_CORNER_HEIGHT ); painter.drawLine( corner_x, corner_y, corner_x+BRANCHES_CORNER_WIDTH, corner_y ); //TransparentBlt(hBufferDC, corner_x, corner_y, BRANCHES_CORNER_WIDTH, BRANCHES_CORNER_HEIGHT, hSpritesheetDC, BRANCHES_CORNER3_SPRITESHEET_X, BRANCHES_CORNER3_SPRITESHEET_Y, BRANCHES_CORNER_WIDTH, BRANCHES_CORNER_HEIGHT, 0x00FF00); // lower right - corner_x = cornersCursorX + current_corners_cursor_shift + pxBoxWidth; - corner_y = cornersCursorY + current_corners_cursor_shift + pxBoxHeight; + corner_x = cornersCursorX + current_corners_cursor_shift + pxSelWidth; + corner_y = cornersCursorY + current_corners_cursor_shift + pxSelHeight; painter.drawLine( corner_x, corner_y, corner_x , corner_y-BRANCHES_CORNER_HEIGHT ); painter.drawLine( corner_x, corner_y, corner_x-BRANCHES_CORNER_WIDTH, corner_y ); diff --git a/src/drivers/Qt/TasEditor/branches.h b/src/drivers/Qt/TasEditor/branches.h index 8add9c26..65646db9 100644 --- a/src/drivers/Qt/TasEditor/branches.h +++ b/src/drivers/Qt/TasEditor/branches.h @@ -142,6 +142,9 @@ public: protected: void paintEvent(QPaintEvent *event); + void mousePressEvent(QMouseEvent * event); + void mouseReleaseEvent(QMouseEvent * event); + void mouseMoveEvent(QMouseEvent * event); private: void calcFontData(void); @@ -198,6 +201,8 @@ private: int pxLineSpacing; int pxBoxWidth; int pxBoxHeight; + int pxSelWidth; + int pxSelHeight; // temps std::vector gridX; // measured in grid units, not in pixels