Ticket #6932: Pairs.patch

File Pairs.patch, 7.0 KB (added by Karvjorm, 8 years ago)

Case break change, New game intializations, Style cleanups

  • src/apps/pairs/PairsView.h

    From f99a8d36f61fd881ed330e79519e11857ec73321 Mon Sep 17 00:00:00 2001
    From: jorma <jorma@Vectra1.(none)>
    Date: Sat, 3 Dec 2011 21:23:34 +0200
    Subject: [PATCH] Case break change, New game intializations, Style cleanups
    
    ---
     src/apps/pairs/PairsView.h     |   44 ++++++++--------
     src/apps/pairs/PairsWindow.cpp |  108 +++++++++++++++++++++-------------------
     src/apps/pairs/PairsWindow.h   |   40 +++++++-------
     3 files changed, 99 insertions(+), 93 deletions(-)
    
    diff --git a/src/apps/pairs/PairsView.h b/src/apps/pairs/PairsView.h
    index 624ae22..1197947 100644
    a b class TopButton;  
    1414
    1515class PairsView : public BView {
    1616public:
    17                                 PairsView(BRect frame, const char* name,
    18                                     int width, int height,
    19                                     uint32 resizingMode);
     17                    PairsView(BRect frame, const char* name,
     18                    int width, int height,
     19                    uint32 resizingMode);
    2020
    21     virtual                     ~PairsView();
    22     virtual void                AttachedToWindow();
    23     virtual void                Draw(BRect updateRect);
    24     virtual void                CreateGameBoard();
     21    virtual             ~PairsView();
     22    virtual void            AttachedToWindow();
     23    virtual void            Draw(BRect updateRect);
     24    virtual void            CreateGameBoard();
    2525
    26             int                 fWidth;
    27             int                 fHeight;
    28             int                 fNumOfCards;
     26        int             fWidth;
     27        int         fHeight;
     28        int         fNumOfCards;
    2929
    30             BList               fDeckCard;
    31             int                 GetIconFromPos(int pos);
     30        BList           fDeckCard;
     31        int         GetIconFromPos(int pos);
    3232
    3333private:
    34             void                _SetPairsBoard();
    35             void                _ReadRandomIcons();
    36             void                _GenerateCardPos();
    37             bool                _HasBitmap(BList& bitmaps, BBitmap* bitmap);
    38 
    39             BMessage*           fButtonMessage;
    40             BList               fCardBitmaps;
    41             int*                fRandPos;
    42             int*                fPosX;
    43             int*                fPosY;
     34        void            _SetPairsBoard();
     35        void            _ReadRandomIcons();
     36        void            _GenerateCardPos();
     37        bool            _HasBitmap(BList& bitmaps, BBitmap* bitmap);
     38
     39        BMessage*       fButtonMessage;
     40        BList           fCardBitmaps;
     41        int*            fRandPos;
     42        int*            fPosX;
     43        int*            fPosY;
    4444};
    4545
    4646
  • src/apps/pairs/PairsWindow.cpp

    diff --git a/src/apps/pairs/PairsWindow.cpp b/src/apps/pairs/PairsWindow.cpp
    index a78fddf..db93b0b 100644
    a b PairsWindow::_MakeGameView(int width, int height)  
    126126void
    127127PairsWindow::NewGame()
    128128{
     129    fIsFirstClick = false;
     130    fIsPairsActive = false;
     131    fPairCard = 0;
     132    fPairCardTmp = 0;
     133    fButtonTmp = 0;
     134    fButton = 0;
    129135    fButtonClicks = 0;
    130136    fFinishPairs = 0;
    131137    fPairsView->CreateGameBoard();
    PairsWindow::MessageReceived(BMessage* message)  
    160166                && message->FindInt32("height", &height) == B_OK) {
    161167                SetGameSize(width, height);
    162168            }
    163             break;
    164169        }
     170        break;
    165171        case MENU_QUIT:
    166172            be_app->PostMessage(B_QUIT_REQUESTED);
    167173            break;
    PairsWindow::MessageReceived(BMessage* message)  
    203209            }
    204210            break;
    205211
    206             case kMsgPairComparing:
    207                 delete fPairComparing;
    208                 fPairComparing = NULL;
     212        case kMsgPairComparing:
     213            delete fPairComparing;
     214            fPairComparing = NULL;
    209215
    210                 fIsPairsActive = true;
     216            fIsPairsActive = true;
    211217
    212                 if (fPairCard == fPairCardTmp)
    213                     fFinishPairs++;
    214                 else {
    215                     ((TopButton*)fPairsView->fDeckCard.ItemAt(fButton))->Show();
    216                     ((TopButton*)fPairsView->fDeckCard.ItemAt(fButtonTmp))->Show();
    217                 }
     218            if (fPairCard == fPairCardTmp)
     219                fFinishPairs++;
     220            else {
     221                ((TopButton*)fPairsView->fDeckCard.ItemAt(fButton))->Show();
     222                ((TopButton*)fPairsView->fDeckCard.ItemAt(fButtonTmp))->Show();
     223            }
    218224
    219                 // game end and results
    220                 if (fFinishPairs == fPairsView->fNumOfCards / 2) {
    221                     BString score;
    222                     score << fButtonClicks;
    223                     BString strAbout = B_TRANSLATE("%app%\n"
    224                         "\twritten by Ralf Schülke\n"
    225                         "\tCopyright 2008-2010, Haiku Inc.\n"
    226                         "\n"
    227                         "You completed the game in %num% clicks.\n");
    228                    
    229                     strAbout.ReplaceFirst("%app%",
    230                         B_TRANSLATE_SYSTEM_NAME("Pairs"));
    231                     strAbout.ReplaceFirst("%num%", score);
    232 
    233                     BAlert* alert = new BAlert("about",
    234                         strAbout.String(),
    235                         B_TRANSLATE("New game"),
    236                         B_TRANSLATE("Quit game"));
    237 
    238                     BTextView* view = alert->TextView();
    239                     BFont font;
    240 
    241                     view->SetStylable(true);
    242 
    243                     view->GetFont(&font);
    244                     font.SetSize(18);
    245                     font.SetFace(B_BOLD_FACE);
    246                     view->SetFontAndColor(0,
    247                         strlen(B_TRANSLATE_SYSTEM_NAME("Pairs")), &font);
    248                     view->ResizeToPreferred();
    249                     alert->SetShortcut(0, B_ESCAPE);
    250 
    251                     if (alert->Go() == 0) {
    252                         // New game
    253                         NewGame();
    254                     } else {
    255                         // Quit game
    256                         be_app->PostMessage(B_QUIT_REQUESTED);
    257                     }
     225            // game end and results
     226            if (fFinishPairs == fPairsView->fNumOfCards / 2) {
     227                BString score;
     228                score << fButtonClicks;
     229                BString strAbout = B_TRANSLATE("%app%\n"
     230                    "\twritten by Ralf Schülke\n"
     231                    "\tCopyright 2008-2010, Haiku Inc.\n"
     232                    "\n"
     233                    "You completed the game in %num% clicks.\n");
     234
     235                strAbout.ReplaceFirst("%app%",
     236                    B_TRANSLATE_SYSTEM_NAME("Pairs"));
     237                strAbout.ReplaceFirst("%num%", score);
     238
     239                BAlert* alert = new BAlert("about",
     240                    strAbout.String(),
     241                    B_TRANSLATE("New game"),
     242                    B_TRANSLATE("Quit game"));
     243
     244                BTextView* view = alert->TextView();
     245                BFont font;
     246
     247                view->SetStylable(true);
     248
     249                view->GetFont(&font);
     250                font.SetSize(18);
     251                font.SetFace(B_BOLD_FACE);
     252                view->SetFontAndColor(0,
     253                    strlen(B_TRANSLATE_SYSTEM_NAME("Pairs")), &font);
     254                view->ResizeToPreferred();
     255                alert->SetShortcut(0, B_ESCAPE);
     256
     257                if (alert->Go() == 0) {
     258                    // New game
     259                    NewGame();
     260                } else {
     261                    // Quit game
     262                    be_app->PostMessage(B_QUIT_REQUESTED);
    258263                }
    259                 break;
     264            }
     265            break;
    260266
    261267        default:
    262268            BWindow::MessageReceived(message);
  • src/apps/pairs/PairsWindow.h

    diff --git a/src/apps/pairs/PairsWindow.h b/src/apps/pairs/PairsWindow.h
    index ed7cb5f..7d7e35f 100644
    a b class BMessageRunner;  
    1515
    1616class PairsWindow : public BWindow {
    1717public:
    18                                 PairsWindow();
    19         virtual                 ~PairsWindow();
     18                    PairsWindow();
     19        virtual         ~PairsWindow();
    2020
    21         virtual void            MessageReceived(BMessage* message);
     21        virtual void        MessageReceived(BMessage* message);
    2222
    23         void                    NewGame();
    24         void                    SetGameSize(int width, int height);
     23        void            NewGame();
     24        void            SetGameSize(int width, int height);
    2525
    2626private:
    27                 void            _MakeGameView(int width, int height);
    28                 void            _MakeMenuBar();
    29 
    30                 BView*          fBackgroundView;
    31                 PairsView*      fPairsView;
    32                 BMenuBar*       fMenuBar;
    33                 BMessageRunner* fPairComparing;
    34                 bool            fIsFirstClick;
    35                 bool            fIsPairsActive;
    36                 int             fPairCard;
    37                 int             fPairCardTmp;
    38                 int             fButtonTmp;
    39                 int             fButton;
    40                 int             fButtonClicks;
    41                 int             fFinishPairs;
     27        void            _MakeGameView(int width, int height);
     28        void            _MakeMenuBar();
     29
     30        BView*          fBackgroundView;
     31        PairsView*      fPairsView;
     32        BMenuBar*       fMenuBar;
     33        BMessageRunner*     fPairComparing;
     34        bool            fIsFirstClick;
     35        bool            fIsPairsActive;
     36        int         fPairCard;
     37        int         fPairCardTmp;
     38        int         fButtonTmp;
     39        int         fButton;
     40        int         fButtonClicks;
     41        int         fFinishPairs;
    4242};
    4343
    4444#endif  // PAIRS_WINDOW_H