imported catch-22 sol clone with authors permission
[reactos.git] / rosapps / games / solitaire / solcreate.cpp
diff --git a/rosapps/games/solitaire/solcreate.cpp b/rosapps/games/solitaire/solcreate.cpp
new file mode 100644 (file)
index 0000000..9f2facb
--- /dev/null
@@ -0,0 +1,87 @@
+#include <windows.h>\r
+#include <commctrl.h>\r
+#include <tchar.h>\r
+#include "resource.h"\r
+#include "cardlib/cardlib.h"\r
+\r
+#include "solitaire.h"\r
+\r
+const int yBorder = 20;\r
+const int xBorder = 20;\r
+const int yRowStacks = yBorder + 128;\r
+\r
+CardRegion *pDeck;\r
+CardRegion *pPile;\r
+CardRegion *pSuitStack[4];\r
+CardRegion *pRowStack[NUM_ROW_STACKS];\r
+\r
+extern CardStack activepile;\r
+\r
+HBITMAP hbmBitmap;\r
+HDC            hdcBitmap;\r
+\r
+void CreateSol()\r
+{\r
+       int i;\r
+\r
+//     hbmBitmap = (HBITMAP)LoadImage(0,"test.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);\r
+//     SolWnd.SetBackImage(hbmBitmap);\r
+\r
+       activepile.Clear();\r
+\r
+\r
+       pDeck = SolWnd.CreateRegion(DECK_ID, true, xBorder, yBorder, 2, 1);\r
+       pDeck->SetEmptyImage(CS_EI_SUNK);\r
+       pDeck->SetThreedCount(6);\r
+       pDeck->SetDragRule(CS_DRAG_NONE, 0);\r
+       pDeck->SetDropRule(CS_DROP_NONE, 0);\r
+       pDeck->SetClickProc(DeckClickProc);\r
+       pDeck->SetDblClickProc(DeckClickProc);\r
+       pDeck->SetFaceDirection(CS_FACE_DOWN, 0);\r
+\r
+       pPile = SolWnd.CreateRegion(PILE_ID, true, 110, yBorder, CS_DEFXOFF, 1);\r
+       pPile->SetEmptyImage(CS_EI_NONE);\r
+       pPile->SetDragRule(CS_DRAG_TOP, 0);\r
+       pPile->SetDropRule(CS_DROP_NONE, 0);\r
+       pPile->SetDblClickProc(PileDblClickProc);\r
+       pPile->SetRemoveCardProc(PileRemoveProc);\r
+\r
+       //\r
+       //      Create the suit stacks\r
+       //\r
+       for(i = 0; i < 4; i++)\r
+       {\r
+               pSuitStack[i] = SolWnd.CreateRegion(SUIT_ID+i, true, 0, yBorder, 0, 0);\r
+               pSuitStack[i]->SetEmptyImage(CS_EI_SUNK);\r
+               //pSuitStack[i]->SetPlacement(CS_XJUST_RIGHT, 0, -i * (__cardwidth + 4) - xBorder, 0);\r
+               pSuitStack[i]->SetPlacement(CS_XJUST_CENTER, 0, i * (__cardwidth + 10) , 0);\r
+\r
+               pSuitStack[i]->SetDropRule(CS_DROP_CALLBACK, SuitStackDropProc);\r
+               pSuitStack[i]->SetDragRule(CS_DRAG_TOP);\r
+\r
+               pSuitStack[i]->SetAddCardProc(SuitStackAddProc);\r
+       }\r
+\r
+       //\r
+       //      Create the row stacks\r
+       //\r
+       for(i = 0; i < NUM_ROW_STACKS; i++)\r
+       {\r
+               pRowStack[i] = SolWnd.CreateRegion(ROW_ID+i, true, 0, yRowStacks, 0, 14);\r
+               pRowStack[i]->SetEmptyImage(CS_EI_SUNK);\r
+               pRowStack[i]->SetFaceDirection(CS_FACE_DOWNUP, i);\r
+               \r
+               pRowStack[i]->SetPlacement(CS_XJUST_CENTER, 0, \r
+                       (i - NUM_ROW_STACKS/2) * (__cardwidth + 10),    0);\r
+\r
+               pRowStack[i]->SetEmptyImage(CS_EI_NONE);\r
+\r
+               pRowStack[i]->SetDragRule(CS_DRAG_CALLBACK, RowStackDragProc);\r
+               pRowStack[i]->SetDropRule(CS_DROP_CALLBACK, RowStackDropProc);\r
+               pRowStack[i]->SetClickProc(RowStackClickProc);\r
+               pRowStack[i]->SetDblClickProc(RowStackDblClickProc);\r
+       }\r
+\r
+\r
+\r
+}\r