///////////////////////////////////////////////////////////////////////////// // handle ladder restrictions ///////////////////////////////////////////////////////////////////////////// void CNetworkServerDialog::handleLadder() { int i; BOOL bTeam = TRUE; BOOL bReady = TRUE; //determine if everyone is ready for(i = 0; i < (int) GAME->m_players.size(); i++) { if(FALSE == GAME->m_players[i].m_player.getReady()) { bReady = FALSE; break; } } //if this is a team game, see if we've got 4 players if(TRUE == GAME->m_bTeam) { bTeam = (4 == GAME->m_players.size()); } //if we have a ladder game, certain rectrictions are in place if(TRUE == GAME->m_bLadder) { //must have at least 3 players m_OKButton.EnableWindow(bTeam && bReady && (3 <= GAME->m_players.size())); //check variants to see if we have any illegal ones if(VARIANTS->m_iVariants & (~VARIANT_ACCEPTABLE_LADDER)) { //reset VARIANTS->m_iVariants &= VARIANT_ACCEPTABLE_LADDER; } //though, if this is a team game, always turn on trades for zero if(TRUE == GAME->m_bTeam) { VARIANTS->m_iVariants |= VARIANT_TRADE_ZERO; } //ensure that no sevens is only one round VARIANTS->m_nNoSevens = 1; } else { //enable start button m_OKButton.EnableWindow(bReady && bTeam); } //reload the window updateInfoString(); }
///////////////////////////////////////////////////////////////////////////// // run the variants dialog ///////////////////////////////////////////////////////////////////////////// void CNetworkServerDialog::OnVariantsButton() { int i; CVariantsDialog dlg; //run it if(IDOK == dlg.DoModal()) { //update all of the players readiness for(i = 0; i < (int) GAME->m_players.size(); i++) { //skip self if(i == GAME->m_iIndex) { continue; } VIEW->clientReady(GAME->m_players[i].m_player.getID(), FALSE); } updateInfoString(); } }
static INT_PTR CALLBACK infoDialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: #ifdef PLAYING_INFO CheckDlgButton(hDlg, IDC_PLAYING, playing_info ? BST_CHECKED : BST_UNCHECKED); #endif SendDlgItemMessage(hDlg, IDC_AUTHOR, EM_LIMITTEXT, ASAPInfo_MAX_TEXT_LENGTH, 0); SendDlgItemMessage(hDlg, IDC_NAME, EM_LIMITTEXT, ASAPInfo_MAX_TEXT_LENGTH, 0); SendDlgItemMessage(hDlg, IDC_DATE, EM_LIMITTEXT, ASAPInfo_MAX_TEXT_LENGTH, 0); SendDlgItemMessage(hDlg, IDC_TIME, EM_LIMITTEXT, ASAPWriter_MAX_DURATION_LENGTH, 0); return TRUE; case WM_COMMAND: switch (wParam) { #ifdef PLAYING_INFO case MAKEWPARAM(IDC_PLAYING, BN_CLICKED): playing_info = (IsDlgButtonChecked(hDlg, IDC_PLAYING) == BST_CHECKED); if (playing_info && playing_filename[0] != '\0') updateInfoDialog(playing_filename, playing_song); onUpdatePlayingInfo(); return TRUE; #endif case MAKEWPARAM(IDC_AUTHOR, EN_CHANGE): updateInfoString(hDlg, IDC_AUTHOR, INVALID_FIELD_AUTHOR, ASAPInfo_SetAuthor); return TRUE; case MAKEWPARAM(IDC_NAME, EN_CHANGE): updateInfoString(hDlg, IDC_NAME, INVALID_FIELD_NAME, ASAPInfo_SetTitle); return TRUE; case MAKEWPARAM(IDC_DATE, EN_CHANGE): updateInfoString(hDlg, IDC_DATE, INVALID_FIELD_DATE, ASAPInfo_SetDate); return TRUE; case MAKEWPARAM(IDC_PICKDATE, BN_CLICKED): toggleCalendar(hDlg); return TRUE; case MAKEWPARAM(IDC_TIME, EN_CHANGE): { char str[ASAPWriter_MAX_DURATION_LENGTH + 1]; int duration; SendDlgItemMessage(hDlg, IDC_TIME, WM_GETTEXT, ASAPWriter_MAX_DURATION_LENGTH + 1, (LPARAM) str); duration = ASAPInfo_ParseDuration(str); ASAPInfo_SetDuration(edited_info, edited_song, duration); EnableWindow(GetDlgItem(infoDialog, IDC_LOOP), str[0] != '\0'); updateSaveButtons(INVALID_FIELD_TIME | INVALID_FIELD_TIME_SHOW, duration >=0 || str[0] == '\0'); } return TRUE; case MAKEWPARAM(IDC_TIME, EN_KILLFOCUS): if ((invalid_fields & INVALID_FIELD_TIME_SHOW) != 0) { invalid_fields &= ~INVALID_FIELD_TIME_SHOW; showEditTip(IDC_TIME, _T("Invalid format"), _T("Please type MM:SS.mmm")); } return TRUE; case MAKEWPARAM(IDC_LOOP, BN_CLICKED): ASAPInfo_SetLoop(edited_info, edited_song, IsDlgButtonChecked(hDlg, IDC_LOOP) == BST_CHECKED); updateSaveButtons(0, TRUE); return TRUE; case MAKEWPARAM(IDC_SONGNO, CBN_SELCHANGE): setEditedSong(SendDlgItemMessage(hDlg, IDC_SONGNO, CB_GETCURSEL, 0, 0)); updateSaveButtons(INVALID_FIELD_TIME | INVALID_FIELD_TIME_SHOW, TRUE); return TRUE; case MAKEWPARAM(IDC_SAVE, BN_CLICKED): saveInfo(); return TRUE; case MAKEWPARAM(IDC_SAVEAS, BN_CLICKED): saveInfoAs(); return TRUE; case MAKEWPARAM(IDCANCEL, BN_CLICKED): if (invalid_fields == 0 && infoChanged()) { switch (MessageBox(hDlg, _T("Save changes?"), _T("ASAP"), MB_YESNOCANCEL | MB_ICONQUESTION)) { case IDYES: if (!saveInfoAs()) return TRUE; break; case IDCANCEL: return TRUE; default: break; } } closeInfoDialog(); return TRUE; } break; case WM_NOTIFY: { LPNMSELCHANGE psc = (LPNMSELCHANGE) lParam; if (psc->nmhdr.hwndFrom == monthcal && psc->nmhdr.code == MCN_SELECT) { _TCHAR str[32]; ShowWindow(monthcal, SW_HIDE); _stprintf(str, _T("%02d/%02d/%d"), psc->stSelStart.wDay, psc->stSelStart.wMonth, psc->stSelStart.wYear); SetDlgItemText(hDlg, IDC_DATE, str); ASAPInfo_SetDate(edited_info, str); updateSaveButtons(INVALID_FIELD_DATE, TRUE); } } break; case WM_DESTROY: if (monthcal != NULL) { DestroyWindow(monthcal); monthcal = NULL; } return 0; default: break; } return FALSE; }