Add options dialog.
authorEric Kohl <eric.kohl@reactos.org>
Sat, 2 Jun 2007 16:32:19 +0000 (16:32 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Sat, 2 Jun 2007 16:32:19 +0000 (16:32 +0000)
svn path=/trunk/; revision=26969

15 files changed:
reactos/base/applications/games/solitaire/lang/de-DE.rc
reactos/base/applications/games/solitaire/lang/en-US.rc
reactos/base/applications/games/solitaire/lang/es-ES.rc
reactos/base/applications/games/solitaire/lang/fr-FR.rc
reactos/base/applications/games/solitaire/lang/id-ID.rc
reactos/base/applications/games/solitaire/lang/it-IT.rc
reactos/base/applications/games/solitaire/lang/nb-NO.rc
reactos/base/applications/games/solitaire/lang/pl-PL.rc
reactos/base/applications/games/solitaire/lang/th-TH.rc
reactos/base/applications/games/solitaire/lang/uk-UA.rc
reactos/base/applications/games/solitaire/lang/zh-CN.rc
reactos/base/applications/games/solitaire/resource.h
reactos/base/applications/games/solitaire/solgame.cpp
reactos/base/applications/games/solitaire/solitaire.cpp
reactos/base/applications/games/solitaire/solitaire.h

index 175d495..3763039 100644 (file)
@@ -39,6 +39,22 @@ BEGIN
     PUSHBUTTON      "Abbrechen",IDCANCEL,129,24,50,14
 END
 
+IDD_OPTIONS DIALOG DISCARDABLE  0, 0, 186, 118
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Optionen"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    GROUPBOX        "Karten", -1, 7, 7, 65, 40
+    AUTORADIOBUTTON "&Eine ziehen", IDC_OPT_DRAWONE, 14, 19, 52, 10, WS_GROUP | WS_TABSTOP
+    AUTORADIOBUTTON "&Drei ziehen", IDC_OPT_DRAWTHREE, 14, 32, 52, 10
+
+    AUTOCHECKBOX    "&Zeit anzeigen", IDC_OPT_SHOWTIME, 7 ,51 ,65 ,10, WS_TABSTOP
+    AUTOCHECKBOX    "S&tatusleiste", IDC_OPT_STATUSBAR, 7, 66, 64, 10, WS_TABSTOP
+
+    DEFPUSHBUTTON   "OK",IDOK,35,97,50,14
+    PUSHBUTTON      "Abbrechen",IDCANCEL,101,97,50,14
+END
+
 
 /////
 // DESIGNINFO
index 121a5fc..e2b7da5 100644 (file)
@@ -40,6 +40,23 @@ BEGIN
 END
 
 
+IDD_OPTIONS DIALOG DISCARDABLE  0, 0, 186, 118
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Options"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    GROUPBOX        "Cards", -1, 7, 7, 65, 40
+    AUTORADIOBUTTON "Draw &One", IDC_OPT_DRAWONE, 14, 19, 52, 10, WS_GROUP | WS_TABSTOP
+    AUTORADIOBUTTON "Draw &Three", IDC_OPT_DRAWTHREE, 14, 32, 52, 10
+
+    AUTOCHECKBOX    "&Show Time", IDC_OPT_SHOWTIME, 7 ,51 ,65 ,10, WS_TABSTOP
+    AUTOCHECKBOX    "S&tatus bar", IDC_OPT_STATUSBAR, 7, 66, 64, 10, WS_TABSTOP
+
+    DEFPUSHBUTTON   "OK", IDOK, 35, 97, 50, 14
+    PUSHBUTTON      "Cancel", IDCANCEL, 101, 97, 50, 14
+END
+
+
 /////
 // DESIGNINFO
 
index 7e3ed3f..01ff4aa 100644 (file)
@@ -39,6 +39,21 @@ BEGIN
     PUSHBUTTON      "Cancelar",IDCANCEL,129,24,50,14
 END
 
+IDD_OPTIONS DIALOG DISCARDABLE  0, 0, 186, 118
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Options"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    GROUPBOX        "Cards", -1, 7, 7, 65, 40
+    AUTORADIOBUTTON "Draw &One", IDC_OPT_DRAWONE, 14, 19, 52, 10, WS_GROUP | WS_TABSTOP
+    AUTORADIOBUTTON "Draw &Three", IDC_OPT_DRAWTHREE, 14, 32, 52, 10
+
+    AUTOCHECKBOX    "&Show Time", IDC_OPT_SHOWTIME, 7 ,51 ,65 ,10, WS_TABSTOP
+    AUTOCHECKBOX    "S&tatus bar", IDC_OPT_STATUSBAR, 7, 66, 64, 10, WS_TABSTOP
+
+    DEFPUSHBUTTON   "OK", IDOK, 35, 97, 50, 14
+    PUSHBUTTON      "Cancel", IDCANCEL, 101, 97, 50, 14
+END
 
 /////
 // DESIGNINFO
index a77240f..39db3c7 100644 (file)
@@ -39,6 +39,21 @@ BEGIN
     PUSHBUTTON      "Annuler",IDCANCEL,129,24,50,14
 END
 
+IDD_OPTIONS DIALOG DISCARDABLE  0, 0, 186, 118
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Options"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    GROUPBOX        "Cards", -1, 7, 7, 65, 40
+    AUTORADIOBUTTON "Draw &One", IDC_OPT_DRAWONE, 14, 19, 52, 10, WS_GROUP | WS_TABSTOP
+    AUTORADIOBUTTON "Draw &Three", IDC_OPT_DRAWTHREE, 14, 32, 52, 10
+
+    AUTOCHECKBOX    "&Show Time", IDC_OPT_SHOWTIME, 7 ,51 ,65 ,10, WS_TABSTOP
+    AUTOCHECKBOX    "S&tatus bar", IDC_OPT_STATUSBAR, 7, 66, 64, 10, WS_TABSTOP
+
+    DEFPUSHBUTTON   "OK", IDOK, 35, 97, 50, 14
+    PUSHBUTTON      "Cancel", IDCANCEL, 101, 97, 50, 14
+END
 
 /////
 // DESIGNINFO
index f5b3ab8..4ed220c 100644 (file)
@@ -40,6 +40,21 @@ BEGIN
     PUSHBUTTON      "Batal",IDCANCEL,129,24,50,14\r
 END\r
 \r
+IDD_OPTIONS DIALOG DISCARDABLE  0, 0, 186, 118\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Options"\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+    GROUPBOX        "Cards", -1, 7, 7, 65, 40\r
+    AUTORADIOBUTTON "Draw &One", IDC_OPT_DRAWONE, 14, 19, 52, 10, WS_GROUP | WS_TABSTOP\r
+    AUTORADIOBUTTON "Draw &Three", IDC_OPT_DRAWTHREE, 14, 32, 52, 10\r
+\r
+    AUTOCHECKBOX    "&Show Time", IDC_OPT_SHOWTIME, 7 ,51 ,65 ,10, WS_TABSTOP\r
+    AUTOCHECKBOX    "S&tatus bar", IDC_OPT_STATUSBAR, 7, 66, 64, 10, WS_TABSTOP\r
+\r
+    DEFPUSHBUTTON   "OK", IDOK, 35, 97, 50, 14\r
+    PUSHBUTTON      "Cancel", IDCANCEL, 101, 97, 50, 14\r
+END\r
 \r
 /////\r
 // DESIGNINFO\r
index 3f08a3d..972102f 100644 (file)
@@ -39,6 +39,21 @@ BEGIN
     PUSHBUTTON      "Annulla",IDCANCEL,129,24,50,14
 END
 
+IDD_OPTIONS DIALOG DISCARDABLE  0, 0, 186, 118
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Options"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    GROUPBOX        "Cards", -1, 7, 7, 65, 40
+    AUTORADIOBUTTON "Draw &One", IDC_OPT_DRAWONE, 14, 19, 52, 10, WS_GROUP | WS_TABSTOP
+    AUTORADIOBUTTON "Draw &Three", IDC_OPT_DRAWTHREE, 14, 32, 52, 10
+
+    AUTOCHECKBOX    "&Show Time", IDC_OPT_SHOWTIME, 7 ,51 ,65 ,10, WS_TABSTOP
+    AUTOCHECKBOX    "S&tatus bar", IDC_OPT_STATUSBAR, 7, 66, 64, 10, WS_TABSTOP
+
+    DEFPUSHBUTTON   "OK", IDOK, 35, 97, 50, 14
+    PUSHBUTTON      "Cancel", IDCANCEL, 101, 97, 50, 14
+END
 
 /////
 // DESIGNINFO
index cbcbaa8..fdafa57 100644 (file)
@@ -40,6 +40,21 @@ BEGIN
     PUSHBUTTON      "Avbryt",IDCANCEL,129,24,50,14\r
 END\r
 \r
+IDD_OPTIONS DIALOG DISCARDABLE  0, 0, 186, 118\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Options"\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+    GROUPBOX        "Cards", -1, 7, 7, 65, 40\r
+    AUTORADIOBUTTON "Draw &One", IDC_OPT_DRAWONE, 14, 19, 52, 10, WS_GROUP | WS_TABSTOP\r
+    AUTORADIOBUTTON "Draw &Three", IDC_OPT_DRAWTHREE, 14, 32, 52, 10\r
+\r
+    AUTOCHECKBOX    "&Show Time", IDC_OPT_SHOWTIME, 7 ,51 ,65 ,10, WS_TABSTOP\r
+    AUTOCHECKBOX    "S&tatus bar", IDC_OPT_STATUSBAR, 7, 66, 64, 10, WS_TABSTOP\r
+\r
+    DEFPUSHBUTTON   "OK", IDOK, 35, 97, 50, 14\r
+    PUSHBUTTON      "Cancel", IDCANCEL, 101, 97, 50, 14\r
+END\r
 \r
 /////\r
 // DESIGNINFO\r
index 1263d50..f70ab4f 100644 (file)
@@ -38,6 +38,21 @@ DEFPUSHBUTTON   "OK",IDOK,129,7,50,14
 PUSHBUTTON      "Anuluj",IDCANCEL,129,24,50,14\r
 END\r
 \r
+IDD_OPTIONS DIALOG DISCARDABLE  0, 0, 186, 118\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Options"\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+    GROUPBOX        "Cards", -1, 7, 7, 65, 40\r
+    AUTORADIOBUTTON "Draw &One", IDC_OPT_DRAWONE, 14, 19, 52, 10, WS_GROUP | WS_TABSTOP\r
+    AUTORADIOBUTTON "Draw &Three", IDC_OPT_DRAWTHREE, 14, 32, 52, 10\r
+\r
+    AUTOCHECKBOX    "&Show Time", IDC_OPT_SHOWTIME, 7 ,51 ,65 ,10, WS_TABSTOP\r
+    AUTOCHECKBOX    "S&tatus bar", IDC_OPT_STATUSBAR, 7, 66, 64, 10, WS_TABSTOP\r
+\r
+    DEFPUSHBUTTON   "OK", IDOK, 35, 97, 50, 14\r
+    PUSHBUTTON      "Cancel", IDCANCEL, 101, 97, 50, 14\r
+END\r
 \r
 /////\r
 // DESIGNINFO\r
index 1b25d98..4bbe86f 100644 (file)
@@ -40,6 +40,21 @@ BEGIN
     PUSHBUTTON      "¡àÅÔ¡", IDCANCEL, 129,24,50,14\r
 END\r
 \r
+IDD_OPTIONS DIALOG DISCARDABLE  0, 0, 186, 118\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Options"\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+    GROUPBOX        "Cards", -1, 7, 7, 65, 40\r
+    AUTORADIOBUTTON "Draw &One", IDC_OPT_DRAWONE, 14, 19, 52, 10, WS_GROUP | WS_TABSTOP\r
+    AUTORADIOBUTTON "Draw &Three", IDC_OPT_DRAWTHREE, 14, 32, 52, 10\r
+\r
+    AUTOCHECKBOX    "&Show Time", IDC_OPT_SHOWTIME, 7 ,51 ,65 ,10, WS_TABSTOP\r
+    AUTOCHECKBOX    "S&tatus bar", IDC_OPT_STATUSBAR, 7, 66, 64, 10, WS_TABSTOP\r
+\r
+    DEFPUSHBUTTON   "OK", IDOK, 35, 97, 50, 14\r
+    PUSHBUTTON      "Cancel", IDCANCEL, 101, 97, 50, 14\r
+END\r
 \r
 /////\r
 // DESIGNINFO\r
index b19eafd..748a11e 100644 (file)
@@ -39,6 +39,21 @@ BEGIN
     PUSHBUTTON      "Ñêàñóâàòè",IDCANCEL,129,24,50,14
 END
 
+IDD_OPTIONS DIALOG DISCARDABLE  0, 0, 186, 118
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Options"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    GROUPBOX        "Cards", -1, 7, 7, 65, 40
+    AUTORADIOBUTTON "Draw &One", IDC_OPT_DRAWONE, 14, 19, 52, 10, WS_GROUP | WS_TABSTOP
+    AUTORADIOBUTTON "Draw &Three", IDC_OPT_DRAWTHREE, 14, 32, 52, 10
+
+    AUTOCHECKBOX    "&Show Time", IDC_OPT_SHOWTIME, 7 ,51 ,65 ,10, WS_TABSTOP
+    AUTOCHECKBOX    "S&tatus bar", IDC_OPT_STATUSBAR, 7, 66, 64, 10, WS_TABSTOP
+
+    DEFPUSHBUTTON   "OK", IDOK, 35, 97, 50, 14
+    PUSHBUTTON      "Cancel", IDCANCEL, 101, 97, 50, 14
+END
 
 /////
 // DESIGNINFO
index 47166f9..73d3ca4 100644 (file)
@@ -40,6 +40,21 @@ BEGIN
     PUSHBUTTON      "È¡Ïû", IDCANCEL, 129, 24, 50, 14\r
 END\r
 \r
+IDD_OPTIONS DIALOG DISCARDABLE  0, 0, 186, 118\r
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU\r
+CAPTION "Options"\r
+FONT 8, "MS Shell Dlg"\r
+BEGIN\r
+    GROUPBOX        "Cards", -1, 7, 7, 65, 40\r
+    AUTORADIOBUTTON "Draw &One", IDC_OPT_DRAWONE, 14, 19, 52, 10, WS_GROUP | WS_TABSTOP\r
+    AUTORADIOBUTTON "Draw &Three", IDC_OPT_DRAWTHREE, 14, 32, 52, 10\r
+\r
+    AUTOCHECKBOX    "&Show Time", IDC_OPT_SHOWTIME, 7 ,51 ,65 ,10, WS_TABSTOP\r
+    AUTOCHECKBOX    "S&tatus bar", IDC_OPT_STATUSBAR, 7, 66, 64, 10, WS_TABSTOP\r
+\r
+    DEFPUSHBUTTON   "OK", IDOK, 35, 97, 50, 14\r
+    PUSHBUTTON      "Cancel", IDCANCEL, 101, 97, 50, 14\r
+END\r
 \r
 /////\r
 // DESIGNINFO\r
index 601151b..f7f85b7 100644 (file)
@@ -5,7 +5,9 @@
 #define IDD_DIALOG1                     101
 #define IDR_MENU1                       102
 #define IDR_ACCELERATOR1                103
-#define IDI_ICON1                       104
+
+#define IDI_ICON1                       1004
+
 #define IDM_GAME_NEW                    40001
 #define IDM_GAME_DECK                   40002
 #define IDM_GAME_OPTIONS                40003
 #define IDM_HELP_CONTENTS               40005
 #define IDM_HELP_ABOUT                  40006
 
+#define IDD_OPTIONS                     1200
+#define IDC_OPT_DRAWONE                 1201
+#define IDC_OPT_DRAWTHREE               1202
+#define IDC_OPT_SHOWTIME                1203
+#define IDC_OPT_STATUSBAR               1204
+
 // Next default values for new objects
 //
 #ifdef APSTUDIO_INVOKED
index 0442911..d45bede 100644 (file)
@@ -319,7 +319,7 @@ void CARDLIBPROC DeckClickProc(CardRegion &stackobj, int iNumClicked)
 {
     TRACE("ENTER DeckClickProc()\n");
     CardStack cardstack = stackobj.GetCardStack();
-    CardStack pile         = pPile->GetCardStack();
+    CardStack pile      = pPile->GetCardStack();
 
     fGameStarted = true;
 
@@ -336,8 +336,8 @@ void CARDLIBPROC DeckClickProc(CardRegion &stackobj, int iNumClicked)
     }
     else
     {
-        int numcards = min(3, cardstack.NumCards());
-        
+        int numcards = min((nOptions & OPTION_THREE_CARDS) ? 3 : 1, cardstack.NumCards());
+
         //make a "visible" copy of these cards
         CardStack temp;
         temp = cardstack.Pop(numcards);
index 4fc86c0..69af283 100644 (file)
@@ -16,6 +16,7 @@ HWND        hwndStatus;
 HINSTANCE    hInstance;
 
 TCHAR szAppName[] = _T("Solitaire");
+INT nOptions = 8;
 
 CardWindow SolWnd;
 
@@ -44,7 +45,7 @@ int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrev, PSTR szCmdLine, int iCmdSh
     MSG            msg;
     WNDCLASSEX    wndclass;
     INITCOMMONCONTROLSEX ice;
-    HACCEL        hAccelTable;            
+    HACCEL        hAccelTable;
 
     hInstance = hInst;
 
@@ -111,6 +112,51 @@ int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrev, PSTR szCmdLine, int iCmdSh
     return msg.wParam;
 }
 
+VOID LoadSettings(VOID)
+{
+
+}
+
+BOOL CALLBACK OptionsDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+    switch (uMsg)
+    {
+    case WM_INITDIALOG:
+        CheckRadioButton(hDlg, IDC_OPT_DRAWONE, IDC_OPT_DRAWTHREE,
+                         (nOptions & OPTION_THREE_CARDS) ? IDC_OPT_DRAWTHREE : IDC_OPT_DRAWONE);
+
+        return TRUE;
+
+    case WM_COMMAND:
+        switch(LOWORD(wParam))
+        {
+        case IDOK:
+            nOptions &= ~OPTION_THREE_CARDS;
+            if (IsDlgButtonChecked(hDlg, IDC_OPT_DRAWTHREE) == BST_CHECKED)
+                nOptions |= OPTION_THREE_CARDS;
+
+            EndDialog(hDlg, TRUE);
+            return TRUE;
+
+        case IDCANCEL:
+            EndDialog(hDlg, FALSE);
+            return TRUE;
+        }
+        break;
+    }
+    return FALSE;
+}
+
+VOID ShowGameOptionsDlg(HWND hwnd)
+{
+   INT nOldOptions = nOptions;
+
+   if (DialogBox(hInstance, MAKEINTRESOURCE(IDD_OPTIONS), hwnd, OptionsDlgProc))
+   {
+      if ((nOldOptions & OPTION_THREE_CARDS) != (nOptions & OPTION_THREE_CARDS))
+          NewGame();
+   }
+}
 
 //-----------------------------------------------------------------------------
 LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
@@ -126,7 +172,7 @@ LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
     {
     case WM_CREATE:
         hwndStatus = CreateStatusWindow(WS_CHILD | WS_VISIBLE | CCS_BOTTOM | SBARS_SIZEGRIP, "Ready", hwnd, 0);
-        
+
         //SendMessage(hwndStatus, SB_SIMPLE, (WPARAM)TRUE, 0);
 
         SendMessage(hwndStatus, SB_SETPARTS, 2, (LPARAM)parts); 
@@ -156,14 +202,12 @@ LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
         //MoveWindow(hwndStatus, 0, nHeight-nStatusHeight, nWidth, nHeight, TRUE);
         //parts[0] = nWidth - 256;
         //SendMessage(hwndStatus, SB_SETPARTS, 2, (LPARAM)parts); 
-
         return 0;
 
     case WM_GETMINMAXINFO:
-        mmi = (MINMAXINFO *)lParam;        
+        mmi = (MINMAXINFO *)lParam;
         mmi->ptMinTrackSize.x = 600;
         mmi->ptMinTrackSize.y = 400;
-
         return 0;
 
     case WM_COMMAND:
@@ -180,18 +224,15 @@ LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
             return 0;
 
         case IDM_GAME_OPTIONS:
-            //ShowGameOptionsDlg(hwnd);
+            ShowGameOptionsDlg(hwnd);
             return 0;
 
         case IDM_HELP_CONTENTS:
-
             WinHelp(hwnd, szHelpPath, HELP_CONTENTS, 0);//HELP_KEY, (DWORD)"How to play");
-            
             return 0;
 
         case IDM_HELP_ABOUT:
             MessageBox(hwnd, _T("Solitaire by J Brown\r\n\r\nCardLib version 1.0."), szAppName, MB_OK|MB_ICONINFORMATION);
-
             return 0;
 
         case IDM_GAME_EXIT:
index a1b1d38..0148f6e 100644 (file)
@@ -5,6 +5,10 @@ extern CardWindow SolWnd;
 extern TCHAR szAppName[];
 extern bool    fGameStarted;
 
+#define OPTION_THREE_CARDS   8
+
+extern INT nOptions;
+
 void CreateSol();
 void NewGame(void);