home *** CD-ROM | disk | FTP | other *** search
-
- #include "worm.h"
-
- extern RING* rP;
- extern HWND hMainWindow;
- extern hInst;
-
- BOOL FAR PASCAL OptionsDlgProc(HWND hDlg, unsigned message, WORD wParam,
- LONG lParam)
- {
-
- static int sizePos = DEFAULT_SIZE;
- static int speedPos = DEFAULT_SPEED;
- static int stepPos = DEFAULT_STEP;
- static int ringsPos = DEFAULT_RINGS;
- char buffer[50];
-
- switch(message) {
-
- case WM_INITDIALOG:
-
- sizePos = GetSize();
- speedPos = GetSpeed();
- stepPos = GetStep();
- ringsPos = GetRings();
-
- SetScrollRange(GetDlgItem(hDlg, IDC_SIZE_BAR), SB_CTL, MIN_SIZE, MAX_SIZE, TRUE);
- SetScrollPos (GetDlgItem(hDlg, IDC_SIZE_BAR), SB_CTL, DEFAULT_SIZE, TRUE);
-
- SetScrollRange(GetDlgItem(hDlg, IDC_SPEED_BAR), SB_CTL, MIN_SPEED, MAX_SPEED, TRUE);
- SetScrollPos (GetDlgItem(hDlg, IDC_SPEED_BAR), SB_CTL, DEFAULT_SPEED, TRUE);
-
- SetScrollRange(GetDlgItem(hDlg, IDC_STEP_BAR), SB_CTL, MIN_STEP, MAX_STEP, TRUE);
- SetScrollPos (GetDlgItem(hDlg, IDC_STEP_BAR), SB_CTL, DEFAULT_STEP, TRUE);
-
- SetScrollRange(GetDlgItem(hDlg, IDC_RINGS_BAR), SB_CTL, MIN_RINGS, MAX_RINGS, TRUE);
- SetScrollPos (GetDlgItem(hDlg, IDC_RINGS_BAR), SB_CTL, DEFAULT_RINGS, TRUE);
-
- PostMessage(hDlg, WO_SIZE_UPDATE, NULL, NULL);
- PostMessage(hDlg, WO_SPEED_UPDATE, NULL, NULL);
- PostMessage(hDlg, WO_STEP_UPDATE, NULL, NULL);
- PostMessage(hDlg, WO_RINGS_UPDATE, NULL, NULL);
- return (TRUE);
-
- case WO_SPEED_UPDATE:
- wsprintf(buffer, "Speed: %d [ticks/sec.]", speedPos);
- SetDlgItemText(hDlg, IDC_SPEED_TEXT, buffer);
- SetScrollPos (GetDlgItem(hDlg, IDC_SPEED_BAR), SB_CTL, speedPos, TRUE);
- SetSpeed(speedPos);
- KillTimer(hMainWindow, NULL);
- SetTimer (hMainWindow, NULL, 1000 / GetSpeed(), NULL);
- break;
-
- case WO_STEP_UPDATE:
- wsprintf(buffer, "Step: %d pixels (size+%d)", sizePos+stepPos, stepPos);
- SetDlgItemText(hDlg, IDC_STEP_TEXT, buffer);
- SetScrollPos (GetDlgItem(hDlg, IDC_STEP_BAR), SB_CTL, stepPos, TRUE);
- CleanUp();
- SetStep(stepPos);
- break;
-
- case WO_SIZE_UPDATE:
- wsprintf(buffer, "Size: %d pixels", sizePos);
- SetDlgItemText(hDlg, IDC_SIZE_TEXT, buffer);
- SetScrollPos (GetDlgItem(hDlg, IDC_SIZE_BAR), SB_CTL, sizePos, TRUE);
- CleanUp();
- SetSize(sizePos);
- PostMessage(hDlg, WO_STEP_UPDATE, NULL, NULL);
- break;
-
- case WO_RINGS_UPDATE:
- wsprintf(buffer, "Rings: %d", ringsPos);
- SetDlgItemText(hDlg, IDC_RINGS_TEXT, buffer);
- SetScrollPos (GetDlgItem(hDlg, IDC_RINGS_BAR), SB_CTL, ringsPos, TRUE);
- CleanUp();
- FreeWormList();
- SetRings(ringsPos);
- rP = InitWormList();
- break;
-
-
-
- case WM_COMMAND:
- switch(wParam) {
- case IDOK:
- EndDialog(hDlg, NULL);
- return (TRUE);
- case IDC_DEFAULT:
- sizePos = DEFAULT_SIZE;
- speedPos = DEFAULT_SPEED;
- stepPos = DEFAULT_STEP;
- ringsPos = DEFAULT_RINGS;
- PostMessage(hDlg, WO_SIZE_UPDATE, NULL, NULL);
- PostMessage(hDlg, WO_SPEED_UPDATE, NULL, NULL);
- PostMessage(hDlg, WO_STEP_UPDATE, NULL, NULL);
- PostMessage(hDlg, WO_RINGS_UPDATE, NULL, NULL);
- break;
- case IDC_WRITE_INI:
- {
- char buffer[5];
- char fullpath[_MAX_PATH];
- char drive[_MAX_DRIVE];
- char dir[_MAX_DIR];
- char fname[_MAX_FNAME];
- char ext[_MAX_EXT];
-
- GetModuleFileName(hInst, fullpath, _MAX_PATH);
-
- _splitpath(fullpath, drive, dir, fname, ext);
- *fullpath=0;
- strcat(fullpath, drive);
- strcat(fullpath, dir);
- strcat(fullpath, fname);
- strcat(fullpath, ".INI");
-
- if(!WritePrivateProfileString("WORM", "Speed", itoa(speedPos, buffer, 10), fullpath)) {
- ErrorBox("Error writing to the WORM.INI file!");
- break;
- }
- WritePrivateProfileString("WORM", "Size", itoa(sizePos, buffer, 10), fullpath);
- WritePrivateProfileString("WORM", "Step", itoa(stepPos, buffer, 10), fullpath);
- WritePrivateProfileString("WORM", "Rings", itoa(ringsPos, buffer, 10), fullpath);
- }
- break;
-
- case IDC_READ_INI:
- {
- char fullpath[_MAX_PATH];
- char drive[_MAX_DRIVE];
- char dir[_MAX_DIR];
- char fname[_MAX_FNAME];
- char ext[_MAX_EXT];
-
- GetModuleFileName(hInst, fullpath, _MAX_PATH);
- _splitpath(fullpath, drive, dir, fname, ext);
- *fullpath=0;
- strcat(fullpath, drive);
- strcat(fullpath, dir);
- strcat(fullpath, fname);
- strcat(fullpath, ".INI");
-
- if(!(speedPos = GetPrivateProfileInt("WORM", "Speed", speedPos, fullpath))) {
- ErrorBox("Error reading the WORM.INI file!");
- break;
- }
- sizePos = GetPrivateProfileInt("WORM", "Size", sizePos, fullpath);
- stepPos = GetPrivateProfileInt("WORM", "Step", stepPos, fullpath);
- ringsPos = GetPrivateProfileInt("WORM", "Rings", ringsPos, fullpath);
- }
- PostMessage(hDlg, WO_SIZE_UPDATE, NULL, NULL);
- PostMessage(hDlg, WO_SPEED_UPDATE, NULL, NULL);
- PostMessage(hDlg, WO_STEP_UPDATE, NULL, NULL);
- PostMessage(hDlg, WO_RINGS_UPDATE, NULL, NULL);
- break;
-
- }
- break;
-
-
- case WM_HSCROLL:
- switch (wParam) {
- case SB_LINEUP:
-
- switch( GetDlgCtrlID(HIWORD(lParam))) {
- case IDC_SIZE_BAR:
- if(sizePos > MIN_SIZE) {
- sizePos--;
- PostMessage(hDlg, WO_SIZE_UPDATE, NULL, NULL);
- }
- return (TRUE);
-
-
- case IDC_SPEED_BAR:
- if(speedPos > MIN_SPEED) {
- speedPos--;
- PostMessage(hDlg, WO_SPEED_UPDATE, NULL, NULL);
- }
- return (TRUE);
-
-
- case IDC_STEP_BAR:
- if(stepPos > MIN_STEP) {
- stepPos--;
- PostMessage(hDlg, WO_STEP_UPDATE, NULL, NULL);
- }
- return (TRUE);
-
-
- case IDC_RINGS_BAR:
- if(ringsPos > MIN_RINGS) {
- ringsPos--;
- PostMessage(hDlg, WO_RINGS_UPDATE, NULL, NULL);
- }
- return (TRUE);
- } /* switch( GetDlgCtrlID(HIWORD(lParam))) */
- break;
-
- case SB_LINEDOWN:
- switch( GetDlgCtrlID(HIWORD(lParam))) {
- case IDC_SIZE_BAR:
- if(sizePos < MAX_SIZE) {
- sizePos++;
- PostMessage(hDlg, WO_SIZE_UPDATE, NULL, NULL);
- }
- return (TRUE);
- case IDC_SPEED_BAR:
- if(speedPos < MAX_SPEED) {
- speedPos++;
- PostMessage(hDlg, WO_SPEED_UPDATE, NULL, NULL);
- }
- return (TRUE);
- case IDC_STEP_BAR:
- if(stepPos < MAX_STEP) {
- stepPos++;
- PostMessage(hDlg, WO_STEP_UPDATE, NULL, NULL);
- }
- return (TRUE);
- case IDC_RINGS_BAR:
- if(ringsPos < MAX_RINGS) {
- ringsPos++;
- PostMessage(hDlg, WO_RINGS_UPDATE, NULL, NULL);
- }
- return (TRUE);
- } /* switch( GetDlgCtrlID(HIWORD(lParam))) */
- break;
-
- case SB_THUMBPOSITION:
- switch( GetDlgCtrlID(HIWORD(lParam))) {
- case IDC_SIZE_BAR:
- sizePos = LOWORD(lParam);
- PostMessage(hDlg, WO_SIZE_UPDATE, NULL, NULL);
- return (TRUE);
-
-
- case IDC_SPEED_BAR:
- speedPos = LOWORD(lParam);
- PostMessage(hDlg, WO_SPEED_UPDATE, NULL, NULL);
- return (TRUE);
-
-
- case IDC_STEP_BAR:
- stepPos = LOWORD(lParam);
- PostMessage(hDlg, WO_STEP_UPDATE, NULL, NULL);
- return (TRUE);
-
-
- case IDC_RINGS_BAR:
- ringsPos = LOWORD(lParam);
- PostMessage(hDlg, WO_RINGS_UPDATE, NULL, NULL);
- return (TRUE);
-
- } /* switch( GetDlgCtrlID(HIWORD(lParam))) */
- break;
- } /* switch (wParam) */
- } /* switch(message) */
- return(FALSE);
- }
-