eliminate warnings, fix bug that locked up game when single-clicking a card
authorRoyce Mitchell III <royce3@ev1.net>
Thu, 10 Mar 2005 04:58:40 +0000 (04:58 +0000)
committerRoyce Mitchell III <royce3@ev1.net>
Thu, 10 Mar 2005 04:58:40 +0000 (04:58 +0000)
svn path=/trunk/; revision=13907

rosapps/games/solitaire/cardlib/cardbutton.cpp
rosapps/games/solitaire/cardlib/cardcolor.cpp
rosapps/games/solitaire/cardlib/cardcount.cpp
rosapps/games/solitaire/cardlib/cardlib.cpp
rosapps/games/solitaire/cardlib/cardregion.cpp
rosapps/games/solitaire/cardlib/cardregion.h
rosapps/games/solitaire/cardlib/cardrgnmouse.cpp
rosapps/games/solitaire/cardlib/cardwindow.cpp
rosapps/games/solitaire/makefile
rosapps/games/solitaire/solgame.cpp
rosapps/games/solitaire/solitaire.cpp

index a0a2b3a..6c7ff8d 100644 (file)
@@ -20,7 +20,7 @@ void PaintRect(HDC hdc, RECT *rect, COLORREF colour);
 CardButton::CardButton(CardWindow &parent, int Id, TCHAR *szText, UINT Style, bool visible,\r
                                                int x, int y, int width, int height)\r
 \r
- : parentWnd(parent), id(Id), fVisible(visible), uStyle(Style), ButtonCallback(0)\r
+ : parentWnd(parent), id(Id), uStyle(Style), fVisible(visible), ButtonCallback(0)\r
 {\r
        crText = RGB(255,255,255);\r
        crBack = RGB(0, 128, 0);\r
index f82c9fa..6d0e008 100644 (file)
@@ -186,28 +186,12 @@ COLORREF ColorScaleRGB(   const COLORREF Col1,
 \r
 COLORREF ColorDarker(COLORREF col, double ratio)\r
 {\r
-       static double Hue, Lum, Sat;\r
-\r
-       //RGBtoHLS(col, &Hue, &Lum, &Sat);\r
-\r
-       //col = HLStoRGB(Hue, fMax(0.0,Lum-ratio), Sat);\r
-\r
        return ColorScaleHSL(col, RGB(0,0,0), ratio);\r
-\r
-       //return col;\r
 }\r
 \r
 COLORREF ColorLighter(COLORREF col, double ratio)\r
 {\r
-       static double Hue, Lum, Sat;\r
-\r
-       //RGBtoHLS(col, &Hue, &Lum, &Sat);\r
-\r
-       //col = HLStoRGB(Hue, fMin(1.0,Lum+ratio), Sat);\r
-\r
        return ColorScaleHSL(col, RGB(255,255,255), ratio);\r
-\r
-       //return col;\r
 }\r
 \r
 //\r
index e14777a..d8ab036 100644 (file)
@@ -87,4 +87,4 @@ void CardCount::Dec(size_t index)
 \r
        if(count[index] > 0) \r
                count[index]--;\r
-}
\ No newline at end of file
+}\r
index 07cd4ee..6006c9e 100644 (file)
@@ -10,7 +10,7 @@
 \r
 void LoadCardBitmaps(void);\r
 \r
-static bool __CARDLIB_ACES_HIGH = false;\r
+//static bool __CARDLIB_ACES_HIGH = false;\r
 extern double __CARDZOOMSPEED;\r
 \r
 //\r
index 1a7e8ce..8ecf4be 100644 (file)
@@ -16,7 +16,7 @@ HBITMAP CreateSinkBmp(HDC hdcCompat, HDC hdc, int width, int height);
 void PaintRect(HDC hdc, RECT *rect, COLORREF colour);\r
 \r
 CardRegion::CardRegion(CardWindow &parent, int Id, bool visible, int x, int y, int xOffset, int yOffset) \r
-: parentWnd(parent), id(Id), fVisible(visible), xpos(x), ypos(y), xoffset(xOffset), yoffset(yOffset)\r
+: id(Id), parentWnd(parent), xpos(x), ypos(y), xoffset(xOffset), yoffset(yOffset), fVisible(visible)\r
 {\r
        width  = __cardwidth;\r
        height = __cardheight;\r
@@ -56,7 +56,7 @@ CardRegion::CardRegion(CardWindow &parent, int Id, bool visible, int x, int y, i
 \r
        nFlashCount             = 0;\r
        fFlashVisible   = false;\r
-       uFlashTimer             = -1;\r
+       uFlashTimer             = (UINT)-1;\r
 \r
        fMouseDragging = false;\r
 \r
@@ -331,25 +331,25 @@ void CardRegion::Flash(int count, int milliseconds)
 \r
 void CardRegion::StopFlash()\r
 {\r
-       if(uFlashTimer != -1)\r
+       if(uFlashTimer != (UINT)-1)\r
        {\r
                KillTimer((HWND)parentWnd, uFlashTimer);\r
                nFlashCount             = 0;\r
-               uFlashTimer             = -1;\r
+               uFlashTimer             = (UINT)-1;\r
                fFlashVisible   = true;\r
        }\r
 }\r
 \r
 void CardRegion::DoFlash()\r
 {\r
-       if(uFlashTimer != -1)\r
+       if(uFlashTimer != (UINT)-1)\r
        {\r
                fFlashVisible = !fFlashVisible;\r
 \r
                if(--nFlashCount == 0)\r
                {\r
                        KillTimer((HWND)parentWnd, uFlashTimer);\r
-                       uFlashTimer = -1;\r
+                       uFlashTimer = (UINT)-1;\r
                        fFlashVisible = true;\r
                }\r
        \r
@@ -655,4 +655,4 @@ bool CardRegion::SimulateDrag(CardRegion *pDestStack, int iNumDragCards, bool fA
        }\r
 \r
        return true;\r
-}
\ No newline at end of file
+}\r
index d2806a9..1dc9498 100644 (file)
@@ -147,12 +147,12 @@ private:
 \r
        bool    fMouseDragging;\r
 \r
-       int             xoffset;                //direction that cards take\r
-       int             yoffset;\r
-       \r
        int             xpos;                   //coordinates of stack\r
        int             ypos;\r
 \r
+       int             xoffset;                //direction that cards take\r
+       int             yoffset;\r
+\r
        int             width;                  //stack-size of all cards\r
        int             height;\r
 \r
index a3bf6e7..4e9bd52 100644 (file)
@@ -6,11 +6,18 @@
 //\r
 #include <windows.h>\r
 #include <math.h>\r
+#include <stdio.h>\r
 \r
 #include "cardlib.h"\r
 #include "cardwindow.h"\r
 #include "cardregion.h"\r
 \r
+#if 1\r
+#define TRACE(s)\r
+#else\r
+#define TRACE(s) printf("%s(%i): %s",__FILE__,__LINE__,s)\r
+#endif\r
+\r
 double __CARDZOOMSPEED = 32;\r
 \r
 int ClipCard(HDC hdc, int x, int y, int width, int height);\r
@@ -304,8 +311,10 @@ bool CardRegion::OnLButtonUp(int x, int y)
        \r
        // If have found a stack to drop onto\r
        //\r
+       TRACE ( "can I drop card?\n" );\r
        if(pDestStack && pDestStack->CanDropCards(dragstack)) \r
        {\r
+               TRACE ( "yes, dropping card\n" );\r
                hdc = GetDC((HWND)parentWnd);\r
                //                      UseNicePalette(hdc);\r
                ZoomCard(hdc, x - mousexoffset, y  - mouseyoffset, pDestStack);\r
@@ -332,25 +341,32 @@ bool CardRegion::OnLButtonUp(int x, int y)
                        pDestStack->AddCallback(*pDestStack, pDestStack->cardstack);//index, deststack->numcards);\r
                \r
                RedrawIfNotDim(pDestStack, true);\r
-       }       \r
+               TRACE ( "done dropping card\n" );\r
+       }\r
 \r
        //\r
        //      Otherwise, let the cards snap back onto this stack\r
        //\r
        else\r
        {\r
-               \r
+               TRACE ( "no, putting card back\n" );\r
                hdc = GetDC((HWND)parentWnd);\r
+               TRACE ( "calling ZoomCard()\n" );\r
                ZoomCard(hdc, x - mousexoffset, y - mouseyoffset, this);\r
+               TRACE ( "cardstack += dragstack\n" );\r
                cardstack += dragstack;\r
+               TRACE ( "calling ReleaseDC()\n" );\r
                ReleaseDC((HWND)parentWnd, hdc);\r
 \r
+               TRACE ( "calling Update()\n" );\r
                Update();               //Update this stack's card count + size\r
+               TRACE ( "done putting card back\n" );\r
        }\r
        \r
        ReleaseDragBitmaps();\r
        ReleaseCapture();\r
        \r
+       TRACE ( "OnLButtonUp() done\n" );\r
        return true;\r
 }\r
 \r
@@ -531,6 +547,7 @@ void ZoomCard(HDC hdc, int xpos, int ypos, CARDSTACK *dest)
 #else\r
 void CardRegion::ZoomCard(HDC hdc, int xpos, int ypos, CardRegion *pDestStack)\r
 {\r
+       TRACE ( "ENTER ZoomCard()\n" );\r
        double dx, dy, x ,y;\r
        int apparentcards;\r
        x = (double)xpos; y = (double)ypos;\r
@@ -552,6 +569,11 @@ void CardRegion::ZoomCard(HDC hdc, int xpos, int ypos, CardRegion *pDestStack)
        //normalise the motion vector\r
        dx = idestx - x;\r
        dy = idesty - y;\r
+       if ( fabs(dx) + fabs(dy) < 0.001f )\r
+       {\r
+               MoveDragCardTo(hdc, idestx, idesty);\r
+               return;\r
+       }\r
        double recip = 1.0 / sqrt(dx*dx + dy*dy);\r
        dx *= recip * __CARDZOOMSPEED; dy *= recip * __CARDZOOMSPEED;\r
 \r
@@ -566,7 +588,8 @@ void CardRegion::ZoomCard(HDC hdc, int xpos, int ypos, CardRegion *pDestStack)
 \r
                ix = (int)x;\r
                iy = (int)y;\r
-               if(dx < 0.0 && ix < idestx) ix = idestx; \r
+\r
+               if(dx < 0.0 && ix < idestx) ix = idestx;\r
                else if(dx > 0.0 && ix > idestx) ix = idestx;\r
                else attarget = false;\r
 \r
@@ -614,5 +637,6 @@ void CardRegion::ZoomCard(HDC hdc, int xpos, int ypos, CardRegion *pDestStack)
 \r
                Sleep(10);\r
        }\r
+       TRACE ( "EXIT ZoomCard()\n" );\r
 }\r
 #endif\r
index 748ac71..1f27c13 100644 (file)
@@ -282,7 +282,6 @@ void CardWindow::Paint(HDC hdc)
 {\r
        int i;\r
        RECT rect;\r
-       int xpos = 10;\r
        HPALETTE hOldPal;\r
 \r
        hOldPal = UseNicePalette(hdc, __hPalette);\r
index 449a771..f05f1d6 100644 (file)
@@ -4,6 +4,8 @@ PATH_TO_TOP = ../../../reactos
 TARGET_TYPE = program\r
 \r
 TARGET_APPTYPE = windows\r
+# change to console for debugging purposes...\r
+#TARGET_APPTYPE = console\r
 \r
 TARGET_INSTALLDIR = system32\r
 \r
index b2ae928..7a12e09 100644 (file)
@@ -1,16 +1,24 @@
 #include <windows.h>\r
 #include <commctrl.h>\r
 #include <tchar.h>\r
+#include <stdio.h>\r
 #include "resource.h"\r
 #include "cardlib/cardlib.h"\r
 //#include "../catch22lib/trace.h"\r
 #include "solitaire.h"\r
 \r
+#if 1\r
+#define TRACE(s)\r
+#else\r
+#define TRACE(s) printf("%s(%i): %s",__FILE__,__LINE__,s)\r
+#endif\r
+\r
 CardStack activepile;\r
 bool fGameStarted = false;\r
 \r
 void NewGame(void)\r
 {\r
+       TRACE("ENTER NewGame()\n");\r
        int i, j;\r
 \r
        SolWnd.EmptyStacks();\r
@@ -44,6 +52,7 @@ void NewGame(void)
        SolWnd.Redraw();\r
 \r
        fGameStarted = false;\r
+       TRACE("EXIT NewGame()\n");\r
 }\r
 \r
 //\r
@@ -56,6 +65,7 @@ void NewGame(void)
 //\r
 bool CARDLIBPROC RowStackDragProc(CardRegion &stackobj, int iNumDragCards)\r
 {\r
+       TRACE("ENTER RowStackDragProc()\n");\r
        int numfacedown;\r
        int numcards;\r
 \r
@@ -63,6 +73,7 @@ bool CARDLIBPROC RowStackDragProc(CardRegion &stackobj, int iNumDragCards)
 \r
        numcards = stackobj.NumCards();\r
 \r
+       TRACE("EXIT RowStackDragProc()\n");\r
        if(iNumDragCards <= numcards-numfacedown)\r
                return true;\r
        else\r
@@ -76,13 +87,17 @@ bool CARDLIBPROC RowStackDragProc(CardRegion &stackobj, int iNumDragCards)
 //\r
 bool CARDLIBPROC RowStackDropProc(CardRegion &stackobj,  const CardStack &dragcards)\r
 {\r
+       TRACE("ENTER RowStackDropProc()\n");\r
        Card dragcard = dragcards[dragcards.NumCards() - 1];\r
 \r
        //if we are empty, can only drop a stack with a King at bottom\r
        if(stackobj.NumCards() == 0)\r
        {\r
                if(dragcard.LoVal() != 13)\r
+               {\r
+                       TRACE("EXIT RowStackDropProc(false)\n");\r
                        return false;\r
+               }\r
        }\r
        else\r
        {\r
@@ -90,14 +105,21 @@ bool CARDLIBPROC RowStackDropProc(CardRegion &stackobj,  const CardStack &dragca
                \r
                //can only drop if card is 1 less\r
                if(mystack[0].LoVal() != dragcard.LoVal() + 1)\r
+               {\r
+                       TRACE("EXIT RowStackDropProc(false)\n");\r
                        return false;\r
+               }\r
 \r
                //can only drop if card is different colour\r
                if( mystack[0].IsBlack() && !dragcard.IsRed() ||\r
                   !mystack[0].IsBlack() &&  dragcard.IsRed() )\r
+               {\r
+                       TRACE("EXIT RowStackDropProc(false)\n");\r
                        return false;\r
+               }\r
        }\r
 \r
+       TRACE("EXIT RowStackDropProc(true)\n");\r
        return true;\r
 }\r
 \r
@@ -107,6 +129,7 @@ bool CARDLIBPROC RowStackDropProc(CardRegion &stackobj,  const CardStack &dragca
 //\r
 bool CanDrop(CardRegion &stackobj, Card card)\r
 {\r
+       TRACE("ENTER CanDrop()\n");\r
        int topval;\r
 \r
        const CardStack &cardstack = stackobj.GetCardStack();\r
@@ -115,6 +138,7 @@ bool CanDrop(CardRegion &stackobj, Card card)
        {\r
                if(card.Suit() != cardstack[0].Suit())\r
                {\r
+                       TRACE("EXIT CanDrop()\n");\r
                        return false;\r
                }\r
 \r
@@ -127,8 +151,12 @@ bool CanDrop(CardRegion &stackobj, Card card)
 \r
        //make sure 1 higher\r
        if(card.LoVal() != (topval + 1))\r
+       {\r
+               TRACE("EXIT CanDrop()\n");\r
                return false;\r
+       }\r
 \r
+       TRACE("EXIT CanDrop()\n");\r
        return true;\r
 }\r
 \r
@@ -137,13 +165,17 @@ bool CanDrop(CardRegion &stackobj, Card card)
 //\r
 bool CARDLIBPROC SuitStackDropProc(CardRegion &stackobj, const CardStack &dragcards)\r
 {\r
-       int topval = 0;\r
-\r
+       TRACE("ENTER SuitStackDropProc()\n");\r
        //only drop 1 card at a time\r
        if(dragcards.NumCards() != 1)\r
+       {\r
+               TRACE("EXIT SuitStackDropProc()\n");\r
                return false;\r
+       }\r
 \r
-       return CanDrop(stackobj, dragcards[0]);\r
+       bool b = CanDrop(stackobj, dragcards[0]);\r
+       TRACE("EXIT SuitStackDropProc()\n");\r
+       return b;\r
 }\r
 \r
 //\r
@@ -152,6 +184,7 @@ bool CARDLIBPROC SuitStackDropProc(CardRegion &stackobj, const CardStack &dragca
 //\r
 void CARDLIBPROC RowStackClickProc(CardRegion &stackobj, int iNumClicked)\r
 {\r
+       TRACE("ENTER RowStackClickProc()\n");\r
        int numfacedown;\r
        \r
        stackobj.GetFaceDirection(&numfacedown);\r
@@ -163,6 +196,7 @@ void CARDLIBPROC RowStackClickProc(CardRegion &stackobj, int iNumClicked)
                stackobj.SetFaceDirection(CS_FACE_DOWNUP, numfacedown);\r
                stackobj.Redraw();\r
        }\r
+       TRACE("EXIT RowStackClickProc()\n");\r
 }\r
 \r
 //\r
@@ -170,12 +204,17 @@ void CARDLIBPROC RowStackClickProc(CardRegion &stackobj, int iNumClicked)
 //\r
 CardRegion *FindSuitStackFromCard(Card card)\r
 {\r
+       TRACE("ENTER FindSuitStackFromCard()\n");\r
        for(int i = 0; i < 4; i++)\r
        {\r
                if(CanDrop(*pSuitStack[i], card))\r
+               {\r
+                       TRACE("EXIT FindSuitStackFromCard()\n");\r
                        return pSuitStack[i];\r
+               }\r
        }\r
 \r
+       TRACE("EXIT FindSuitStackFromCard()\n");\r
        return 0;\r
 }\r
 \r
@@ -187,6 +226,7 @@ CardRegion *FindSuitStackFromCard(Card card)
 //\r
 void CARDLIBPROC SuitStackAddProc(CardRegion &stackobj, const CardStack &added)\r
 {\r
+       TRACE("ENTER SuitStackAddProc()\n");\r
        bool fGameOver = true;\r
 \r
        for(int i = 0; i < 4; i++)\r
@@ -207,6 +247,7 @@ void CARDLIBPROC SuitStackAddProc(CardRegion &stackobj, const CardStack &added)
                        pSuitStack[i]->Flash(11, 100);\r
                }\r
        }\r
+       TRACE("EXIT SuitStackAddProc()\n");\r
 }\r
 \r
 //\r
@@ -216,9 +257,13 @@ void CARDLIBPROC SuitStackAddProc(CardRegion &stackobj, const CardStack &added)
 //\r
 void CARDLIBPROC RowStackDblClickProc(CardRegion &stackobj, int iNumClicked)\r
 {\r
+       TRACE("ENTER RowStackDblClickProc()\n");\r
        //can only move 1 card at a time\r
        if(iNumClicked != 1)\r
+       {\r
+               TRACE("EXIT RowStackDblClickProc()\n");\r
                return;\r
+       }\r
 \r
        //find a suit-stack to move the card to...\r
        const CardStack &cardstack = stackobj.GetCardStack();\r
@@ -231,6 +276,7 @@ void CARDLIBPROC RowStackDblClickProc(CardRegion &stackobj, int iNumClicked)
                //AddProc callbacks called for us on the destination stacks...\r
                stackobj.SimulateDrag(pDest, 1, true);\r
        }\r
+       TRACE("EXIT RowStackDblClickProc()\n");\r
 }\r
 \r
 //\r
@@ -238,7 +284,9 @@ void CARDLIBPROC RowStackDblClickProc(CardRegion &stackobj, int iNumClicked)
 //\r
 void CARDLIBPROC PileDblClickProc(CardRegion &stackobj, int iNumClicked)\r
 {\r
+       TRACE("ENTER PileDblClickProc()\n");\r
        RowStackDblClickProc(stackobj, iNumClicked);\r
+       TRACE("EXIT PileDblClickProc()\n");\r
 }\r
 \r
 //\r
@@ -246,6 +294,7 @@ void CARDLIBPROC PileDblClickProc(CardRegion &stackobj, int iNumClicked)
 //\r
 void CARDLIBPROC PileRemoveProc(CardRegion &stackobj, int iItems)\r
 {\r
+       TRACE("ENTER PileRemoveProc()\n");\r
        //modify our "virtual" pile by removing the same card\r
        //that was removed from the physical card stack\r
        activepile.Pop(iItems);\r
@@ -259,6 +308,7 @@ void CARDLIBPROC PileRemoveProc(CardRegion &stackobj, int iItems)
                stackobj.SetOffsets(0,0);\r
                stackobj.SetCardStack(activepile);\r
        }\r
+       TRACE("EXIT PileRemoveProc()\n");\r
 }\r
 \r
 //\r
@@ -267,6 +317,7 @@ void CARDLIBPROC PileRemoveProc(CardRegion &stackobj, int iItems)
 //\r
 void CARDLIBPROC DeckClickProc(CardRegion &stackobj, int iNumClicked)\r
 {\r
+       TRACE("ENTER DeckClickProc()\n");\r
        CardStack cardstack = stackobj.GetCardStack();\r
        CardStack pile           = pPile->GetCardStack();\r
 \r
@@ -305,4 +356,5 @@ void CARDLIBPROC DeckClickProc(CardRegion &stackobj, int iNumClicked)
        pPile->SetCardStack(pile);\r
 \r
        SolWnd.Redraw();\r
+       TRACE("EXIT DeckClickProc()\n");\r
 }\r
index c8e3e66..e7e12a7 100644 (file)
@@ -28,6 +28,11 @@ void MakePath(TCHAR *szDest, UINT nDestLen, TCHAR *szExt)
        lstrcpy(ptr + 1, szExt);\r
 }\r
 \r
+int main ( int argc, char** argv )\r
+{\r
+       return WinMain ( NULL, NULL, NULL, SW_SHOW );\r
+}\r
+\r
 //\r
 //     Main entry point\r
 //\r