Changeset View
Changeset View
Standalone View
Standalone View
dealer.cpp
Show First 20 Lines • Show All 101 Lines • ▼ Show 20 Line(s) | 101 | case Solver::UnableToDetermineSolvability: | |||
---|---|---|---|---|---|
102 | return i18n("Solver: Unable to determine if this game is winnable."); | 102 | return i18n("Solver: Unable to determine if this game is winnable."); | ||
103 | case Solver::SearchAborted: | 103 | case Solver::SearchAborted: | ||
104 | case Solver::MemoryLimitReached: | 104 | case Solver::MemoryLimitReached: | ||
105 | default: | 105 | default: | ||
106 | return QString(); | 106 | return QString(); | ||
107 | } | 107 | } | ||
108 | } | 108 | } | ||
109 | 109 | | |||
110 | int readIntAttribute( const QXmlStreamReader & xml, const QString & key, bool * ok = 0 ) | 110 | int readIntAttribute( const QXmlStreamReader & xml, const QString & key, bool * ok = nullptr ) | ||
111 | { | 111 | { | ||
112 | QStringRef value = xml.attributes().value( key ); | 112 | QStringRef value = xml.attributes().value( key ); | ||
113 | return QString::fromRawData( value.data(), value.length() ).toInt( ok ); | 113 | return QString::fromRawData( value.data(), value.length() ).toInt( ok ); | ||
114 | } | 114 | } | ||
115 | 115 | | |||
116 | QString suitToString( int suit ) | 116 | QString suitToString( int suit ) | ||
117 | { | 117 | { | ||
118 | switch ( suit ) | 118 | switch ( suit ) | ||
▲ Show 20 Lines • Show All 415 Lines • ▼ Show 20 Line(s) | 427 | { | |||
534 | setAutoDropEnabled( reenableAutoDrop ); | 534 | setAutoDropEnabled( reenableAutoDrop ); | ||
535 | 535 | | |||
536 | return true; | 536 | return true; | ||
537 | } | 537 | } | ||
538 | 538 | | |||
539 | 539 | | |||
540 | DealerScene::DealerScene( const DealerInfo * di ) | 540 | DealerScene::DealerScene( const DealerInfo * di ) | ||
541 | : m_di( di ), | 541 | : m_di( di ), | ||
542 | m_solver( 0 ), | 542 | m_solver( nullptr ), | ||
543 | m_solverThread( 0 ), | 543 | m_solverThread( nullptr ), | ||
544 | m_peekedCard( 0 ), | 544 | m_peekedCard( nullptr ), | ||
545 | m_dealNumber( 0 ), | 545 | m_dealNumber( 0 ), | ||
546 | m_loadedMoveCount( 0 ), | 546 | m_loadedMoveCount( 0 ), | ||
547 | m_neededFutureMoves( 1 ), | 547 | m_neededFutureMoves( 1 ), | ||
548 | m_supportedActions( 0 ), | 548 | m_supportedActions( 0 ), | ||
549 | m_autoDropEnabled( false ), | 549 | m_autoDropEnabled( false ), | ||
550 | m_solverEnabled( false ), | 550 | m_solverEnabled( false ), | ||
551 | m_dealStarted( false ), | 551 | m_dealStarted( false ), | ||
552 | m_dealWasEverWinnable( false ), | 552 | m_dealWasEverWinnable( false ), | ||
Show All 9 Lines | |||||
562 | m_hintInProgress( false ), | 562 | m_hintInProgress( false ), | ||
563 | m_demoInProgress( false ), | 563 | m_demoInProgress( false ), | ||
564 | m_dropInProgress( false ), | 564 | m_dropInProgress( false ), | ||
565 | m_hintQueued( false ), | 565 | m_hintQueued( false ), | ||
566 | m_demoQueued( false ), | 566 | m_demoQueued( false ), | ||
567 | m_dropQueued( false ), | 567 | m_dropQueued( false ), | ||
568 | m_newCardsQueued( false ), | 568 | m_newCardsQueued( false ), | ||
569 | m_takeStateQueued( false ), | 569 | m_takeStateQueued( false ), | ||
570 | m_currentState( 0 ) | 570 | m_currentState( nullptr ) | ||
571 | { | 571 | { | ||
572 | setItemIndexMethod(QGraphicsScene::NoIndex); | 572 | setItemIndexMethod(QGraphicsScene::NoIndex); | ||
573 | 573 | | |||
574 | m_solverUpdateTimer.setInterval( 250 ); | 574 | m_solverUpdateTimer.setInterval( 250 ); | ||
575 | m_solverUpdateTimer.setSingleShot( true ); | 575 | m_solverUpdateTimer.setSingleShot( true ); | ||
576 | connect(&m_solverUpdateTimer, &QTimer::timeout, this, &DealerScene::stopAndRestartSolver); | 576 | connect(&m_solverUpdateTimer, &QTimer::timeout, this, &DealerScene::stopAndRestartSolver); | ||
577 | 577 | | |||
578 | m_demoTimer.setSingleShot( true ); | 578 | m_demoTimer.setSingleShot( true ); | ||
Show All 17 Lines | |||||
596 | DealerScene::~DealerScene() | 596 | DealerScene::~DealerScene() | ||
597 | { | 597 | { | ||
598 | stop(); | 598 | stop(); | ||
599 | 599 | | |||
600 | disconnect(); | 600 | disconnect(); | ||
601 | if ( m_solverThread ) | 601 | if ( m_solverThread ) | ||
602 | m_solverThread->abort(); | 602 | m_solverThread->abort(); | ||
603 | delete m_solverThread; | 603 | delete m_solverThread; | ||
604 | m_solverThread = 0; | 604 | m_solverThread = nullptr; | ||
605 | delete m_solver; | 605 | delete m_solver; | ||
606 | m_solver = 0; | 606 | m_solver = nullptr; | ||
607 | qDeleteAll( m_undoStack ); | 607 | qDeleteAll( m_undoStack ); | ||
608 | delete m_currentState; | 608 | delete m_currentState; | ||
609 | qDeleteAll( m_redoStack ); | 609 | qDeleteAll( m_redoStack ); | ||
610 | delete m_wonItem; | 610 | delete m_wonItem; | ||
611 | } | 611 | } | ||
612 | 612 | | |||
613 | 613 | | |||
614 | void DealerScene::addPatPile( PatPile * pile ) | 614 | void DealerScene::addPatPile( PatPile * pile ) | ||
▲ Show 20 Lines • Show All 254 Lines • ▼ Show 20 Line(s) | 866 | { | |||
869 | setKeyboardModeActive( false ); | 869 | setKeyboardModeActive( false ); | ||
870 | 870 | | |||
871 | m_dealHasBeenWon = false; | 871 | m_dealHasBeenWon = false; | ||
872 | m_wonItem->hide(); | 872 | m_wonItem->hide(); | ||
873 | 873 | | |||
874 | qDeleteAll( m_undoStack ); | 874 | qDeleteAll( m_undoStack ); | ||
875 | m_undoStack.clear(); | 875 | m_undoStack.clear(); | ||
876 | delete m_currentState; | 876 | delete m_currentState; | ||
877 | m_currentState = 0; | 877 | m_currentState = nullptr; | ||
878 | qDeleteAll( m_redoStack ); | 878 | qDeleteAll( m_redoStack ); | ||
879 | m_redoStack.clear(); | 879 | m_redoStack.clear(); | ||
880 | m_lastKnownCardStates.clear(); | 880 | m_lastKnownCardStates.clear(); | ||
881 | 881 | | |||
882 | m_dealWasJustSaved = false; | 882 | m_dealWasJustSaved = false; | ||
883 | m_dealWasEverWinnable = false; | 883 | m_dealWasEverWinnable = false; | ||
884 | m_toldAboutLostGame = false; | 884 | m_toldAboutLostGame = false; | ||
885 | m_toldAboutWonGame = false; | 885 | m_toldAboutWonGame = false; | ||
▲ Show 20 Lines • Show All 198 Lines • ▼ Show 20 Line(s) | |||||
1084 | void DealerScene::mouseReleaseEvent( QGraphicsSceneMouseEvent * e ) | 1084 | void DealerScene::mouseReleaseEvent( QGraphicsSceneMouseEvent * e ) | ||
1085 | { | 1085 | { | ||
1086 | stop(); | 1086 | stop(); | ||
1087 | 1087 | | |||
1088 | if ( e->button() == Qt::RightButton && m_peekedCard && m_peekedCard->pile() ) | 1088 | if ( e->button() == Qt::RightButton && m_peekedCard && m_peekedCard->pile() ) | ||
1089 | { | 1089 | { | ||
1090 | e->accept(); | 1090 | e->accept(); | ||
1091 | updatePileLayout( m_peekedCard->pile(), DURATION_FANCYSHOW ); | 1091 | updatePileLayout( m_peekedCard->pile(), DURATION_FANCYSHOW ); | ||
1092 | m_peekedCard = 0; | 1092 | m_peekedCard = nullptr; | ||
1093 | } | 1093 | } | ||
1094 | else | 1094 | else | ||
1095 | { | 1095 | { | ||
1096 | bool hadCards = !cardsBeingDragged().isEmpty(); | 1096 | bool hadCards = !cardsBeingDragged().isEmpty(); | ||
1097 | KCardScene::mouseReleaseEvent( e ); | 1097 | KCardScene::mouseReleaseEvent( e ); | ||
1098 | if ( hadCards && cardsBeingDragged().isEmpty() ) | 1098 | if ( hadCards && cardsBeingDragged().isEmpty() ) | ||
1099 | emit cardsPutDown(); | 1099 | emit cardsPutDown(); | ||
1100 | } | 1100 | } | ||
▲ Show 20 Lines • Show All 606 Lines • ▼ Show 20 Line(s) | 1706 | { | |||
1707 | return false; | 1707 | return false; | ||
1708 | } | 1708 | } | ||
1709 | 1709 | | |||
1710 | 1710 | | |||
1711 | void DealerScene::setSolver( Solver *s) { | 1711 | void DealerScene::setSolver( Solver *s) { | ||
1712 | delete m_solver; | 1712 | delete m_solver; | ||
1713 | delete m_solverThread; | 1713 | delete m_solverThread; | ||
1714 | m_solver = s; | 1714 | m_solver = s; | ||
1715 | m_solverThread = 0; | 1715 | m_solverThread = nullptr; | ||
1716 | } | 1716 | } | ||
1717 | 1717 | | |||
1718 | bool DealerScene::isGameWon() const | 1718 | bool DealerScene::isGameWon() const | ||
1719 | { | 1719 | { | ||
1720 | foreach (PatPile *p, patPiles()) | 1720 | foreach (PatPile *p, patPiles()) | ||
1721 | { | 1721 | { | ||
1722 | if (!p->isFoundation() && !p->isEmpty()) | 1722 | if (!p->isFoundation() && !p->isEmpty()) | ||
1723 | return false; | 1723 | return false; | ||
▲ Show 20 Lines • Show All 163 Lines • ▼ Show 20 Line(s) | 1872 | { | |||
1887 | QPainter p( &img ); | 1887 | QPainter p( &img ); | ||
1888 | 1888 | | |||
1889 | foreach ( QGraphicsItem * item, itemsByZ ) | 1889 | foreach ( QGraphicsItem * item, itemsByZ ) | ||
1890 | { | 1890 | { | ||
1891 | if ( item->isVisible() ) | 1891 | if ( item->isVisible() ) | ||
1892 | { | 1892 | { | ||
1893 | p.save(); | 1893 | p.save(); | ||
1894 | p.setTransform( item->deviceTransform( p.worldTransform() ), false ); | 1894 | p.setTransform( item->deviceTransform( p.worldTransform() ), false ); | ||
1895 | item->paint( &p, 0 ); | 1895 | item->paint( &p, nullptr ); | ||
1896 | p.restore(); | 1896 | p.restore(); | ||
1897 | } | 1897 | } | ||
1898 | } | 1898 | } | ||
1899 | 1899 | | |||
1900 | p.end(); | 1900 | p.end(); | ||
1901 | 1901 | | |||
1902 | img = img.scaled( previewSize, Qt::KeepAspectRatio, Qt::SmoothTransformation ); | 1902 | img = img.scaled( previewSize, Qt::KeepAspectRatio, Qt::SmoothTransformation ); | ||
1903 | 1903 | | |||
▲ Show 20 Lines • Show All 46 Lines • ▼ Show 20 Line(s) | |||||
1950 | bool DealerScene::allowedToStartNewGame() | 1950 | bool DealerScene::allowedToStartNewGame() | ||
1951 | { | 1951 | { | ||
1952 | // Check if the user is already running a game, and if she is, | 1952 | // Check if the user is already running a game, and if she is, | ||
1953 | // then ask if she wants to abort it. | 1953 | // then ask if she wants to abort it. | ||
1954 | return !m_dealStarted | 1954 | return !m_dealStarted | ||
1955 | || m_dealWasJustSaved | 1955 | || m_dealWasJustSaved | ||
1956 | || m_toldAboutWonGame | 1956 | || m_toldAboutWonGame | ||
1957 | || m_toldAboutLostGame | 1957 | || m_toldAboutLostGame | ||
1958 | || KMessageBox::warningContinueCancel(0, | 1958 | || KMessageBox::warningContinueCancel(nullptr, | ||
1959 | i18n("A new game has been requested, but there is already a game in progress.\n\n" | 1959 | i18n("A new game has been requested, but there is already a game in progress.\n\n" | ||
1960 | "A loss will be recorded in the statistics if the current game is abandoned."), | 1960 | "A loss will be recorded in the statistics if the current game is abandoned."), | ||
1961 | i18n("Abandon Current Game?"), | 1961 | i18n("Abandon Current Game?"), | ||
1962 | KGuiItem(i18n("Abandon Current Game")), | 1962 | KGuiItem(i18n("Abandon Current Game")), | ||
1963 | KStandardGuiItem::cancel(), | 1963 | KStandardGuiItem::cancel(), | ||
1964 | QStringLiteral("careaboutstats") | 1964 | QStringLiteral("careaboutstats") | ||
1965 | ) == KMessageBox::Continue; | 1965 | ) == KMessageBox::Continue; | ||
1966 | } | 1966 | } | ||
▲ Show 20 Lines • Show All 160 Lines • Show Last 20 Lines |