File indexing completed on 2024-12-01 06:51:15

0001 /*
0002     SPDX-FileCopyrightText: 2010 Ni Hui <shuizhuyuanluo@126.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "piece.h"
0008 
0009 #include "gamescene.h"
0010 
0011 #include <QGraphicsLineItem>
0012 
0013 Piece::Piece( KGameGraphicsViewRenderer* renderer, int x, int y, int color, QGraphicsItem* parent )
0014 : KGameRenderedGraphicsObject(renderer,QStringLiteral( "BLOCK_%1" ).arg(QString::number(color)),parent),
0015 m_x(x),
0016 m_y(y),
0017 m_color(color),
0018 m_rightLine(new QGraphicsLineItem),
0019 m_bottomLine(new QGraphicsLineItem),
0020 m_highlighter(new KGameRenderedGraphicsObject(renderer,QStringLiteral( "HIGHLIGHT" )))
0021 {
0022     setAcceptHoverEvents( true );
0023     setAcceptedMouseButtons( Qt::LeftButton );
0024     m_highlighter->setAcceptHoverEvents( false );
0025     m_highlighter->setAcceptedMouseButtons( Qt::NoButton );
0026 }
0027 
0028 Piece::~Piece()
0029 {
0030     delete m_rightLine;
0031     delete m_bottomLine;
0032     delete m_highlighter;
0033 }
0034 
0035 QPainterPath Piece::shape() const
0036 {
0037     QPainterPath path;
0038     path.addRect( boundingRect() );
0039     return path;
0040 }
0041 
0042 void Piece::hoverEnterEvent( QGraphicsSceneHoverEvent* event )
0043 {
0044     Q_UNUSED(event)
0045     Q_EMIT pieceHovered( m_x, m_y );
0046 }
0047 
0048 void Piece::hoverLeaveEvent( QGraphicsSceneHoverEvent* event )
0049 {
0050     Q_UNUSED(event)
0051     Q_EMIT pieceUnhovered( m_x, m_y );
0052 }
0053 
0054 void Piece::mousePressEvent( QGraphicsSceneMouseEvent* event )
0055 {
0056     Q_UNUSED(event)
0057     Q_EMIT pieceClicked( m_x, m_y );
0058 }
0059 
0060 #include "moc_piece.cpp"