void GuildGotShields(list_type shields) { iNumPatterns = list_length(shields); listShieldIDs = shields; iChosenPattern = (iNumPatterns > 0)? (rand() % iNumPatterns)+1 : 1; GuildShieldDraw(); }
void GuildGotShield(ID idGuild, char* pszGuildName, BYTE color1, BYTE color2, BYTE pattern) { if (hwndShieldPage) { if (idMyGuild && idGuild == idMyGuild && legalShield(color1,color2,pattern)) { // if i'm getting my claimed guild shield colors, i can't claim other colors EnableWindow(GetDlgItem(hwndShieldPage, IDC_ACCEPT), FALSE); } if (!legalShield(color1,color2,pattern)) { // claimant guild gets "can't use those colors" GetDlgItemText(hwndShieldPage, IDC_RENOUNCE, szClaimBuffer, sizeof(szClaimBuffer)); SetDlgItemText(hwndShieldPage, IDC_STATIC_GUILD, szClaimBuffer); } else if (!idGuild) { // claimant guild is blank SetDlgItemText(hwndShieldPage, IDC_STATIC_GUILD, ""); } else { // claimant guild's name appears sprintf(szClaimBuffer, szClaimFormat, pszGuildName); SetDlgItemText(hwndShieldPage, IDC_STATIC_GUILD, szClaimBuffer); } #if 0 { char buffer[256]; wsprintf(buffer,"Color1=%d, Color2=%d, Pattern=%d",(int)color1,(int)color2,(int)pattern); SetDlgItemText(hwndShieldPage, IDC_STATIC_GUILD, buffer); } #endif } iChosenColor1 = (int)color1; iChosenColor2 = (int)color2; iChosenPattern = (int)pattern; GuildShieldDraw(); if (!idMyGuild && idGuild) idMyGuild = idGuild; }
/* * GuildShieldDialogProc: Dialog procedure for guild shield dialog. */ BOOL CALLBACK GuildShieldDialogProc(HWND hDlg, UINT message, UINT wParam, LONG lParam) { switch (message) { case WM_INITDIALOG: hwndShieldPage = hDlg; GuildShieldControl(GetDlgItem(hDlg, IDC_SHIELD)); RequestGuildShieldSamples(); RequestGuildShield(); // claimant guild control holds format ("claimed by %s") SetWindowFont(GetDlgItem(hDlg, IDC_STATIC_GUILD), GetFont(FONT_LIST), FALSE); GetDlgItemText(hDlg, IDC_STATIC_GUILD, szClaimFormat, sizeof(szClaimFormat)); // claimant guild control starts with "can't use those colors" since it's grey+grey GetDlgItemText(hDlg, IDC_RENOUNCE, szClaimBuffer, sizeof(szClaimBuffer)); SetDlgItemText(hDlg, IDC_STATIC_GUILD, szClaimBuffer); CenterWindow(hDlg, GetParent(hDlg)); return TRUE; case WM_COMMAND: switch(GET_WM_COMMAND_ID(wParam, lParam)) { // in range [1,iNumPatterns] case IDC_PATTERN_PREV: iChosenPattern--; if(iChosenPattern < 1) iChosenPattern = iNumPatterns; break; case IDC_PATTERN_NEXT: iChosenPattern++; if(iChosenPattern > iNumPatterns) iChosenPattern = 1; break; // in range [0,iNumColors-1] case IDC_COLOR1_PREV: iChosenColor1--; if(iChosenColor1 < 0) iChosenColor1 = iNumColors - 1; break; case IDC_COLOR1_NEXT: iChosenColor1++; if(iChosenColor1 >= iNumColors) iChosenColor1 = 0; break; case IDC_COLOR2_PREV: iChosenColor2--; if(iChosenColor2 < 0) iChosenColor2 = iNumColors - 1; break; case IDC_COLOR2_NEXT: iChosenColor2++; if(iChosenColor2 >= iNumColors) iChosenColor2 = 0; break; case IDC_ACCEPT: if (legalShield(iChosenColor1,iChosenColor2,iChosenPattern)) { RequestClaimGuildShield(iChosenColor1, iChosenColor2, iChosenPattern); } break; } RequestFindGuildShield(iChosenColor1, iChosenColor2, iChosenPattern); GuildShieldDraw(); return FALSE; case WM_SHOWWINDOW: if (!(BOOL)wParam) RequestGuildShield(); break; case WM_DRAWITEM: GuildShieldControl(GetDlgItem(hDlg, IDC_SHIELD)); GuildShieldDraw(); return TRUE; case WM_DESTROY: hwndShieldPage = NULL; return FALSE; } return FALSE; }
/* * GuildMemberDialogProc: Dialog procedure for guild membership dialog. */ BOOL CALLBACK GuildMemberDialogProc(HWND hDlg, UINT message, UINT wParam, LONG lParam) { HWND hList; int i, index, flags; switch (message) { case WM_INITDIALOG: hList = GetDlgItem(hDlg, IDC_GUILDLIST); SetWindowFont(hList, GetFont(FONT_LIST), FALSE); SetWindowFont(GetDlgItem(hDlg, IDC_RANK), GetFont(FONT_LIST), FALSE); // Add guild members to list box num_rank4 = 0; for (i=0; i < guild_info->num_users; i++) { GuildMember *member = &guild_info->members[i]; index = ListBox_AddString(hList, member->name); ListBox_SetItemData(hList, index, member); if (member->id == cinfo->player->id) guild_info->rank = member->rank; if (member->id == guild_info->current_vote) SetWindowText(GetDlgItem(hDlg, IDC_CURRENTVOTE), member->name); if (member->rank == 4) num_rank4++; } if (guild_info->current_vote == 0) SetWindowText(GetDlgItem(hDlg, IDC_CURRENTVOTE), GetString(hInst, IDS_NOBODY)); flags = guild_info->flags; // Destroy buttons for commands we don't have if (!(flags & GC_EXILE)) DestroyWindow(GetDlgItem(hDlg, IDC_EXILE)); if (!(flags & GC_RENOUNCE)) DestroyWindow(GetDlgItem(hDlg, IDC_RENOUNCE)); if (!(flags & GC_ABDICATE)) { DestroyWindow(GetDlgItem(hDlg, IDC_ABDICATE)); DestroyWindow(GetDlgItem(hDlg, IDC_ABDICATENAME)); } if (!(flags & GC_VOTE)) { DestroyWindow(GetDlgItem(hDlg, IDC_VOTE)); DestroyWindow(GetDlgItem(hDlg, IDC_VOTENAME)); } if (!(flags & GC_SET_RANK)) DestroyWindow(GetDlgItem(hDlg, IDC_RANK)); else DestroyWindow(GetDlgItem(hDlg, IDC_RANKDISPLAY)); CenterWindow(hGuildConfigDialog, GetParent(hGuildConfigDialog)); GuildShieldControl(GetDlgItem(hDlg, IDC_SHIELD)); RequestGuildShieldSamples(); RequestGuildShield(); return TRUE; HANDLE_MSG(hDlg, WM_COMMAND, GuildMemberCommand); case WM_SHOWWINDOW: if (!(BOOL)wParam) RequestGuildShield(); break; case WM_DRAWITEM: if (wParam == IDC_SHIELD) { GuildShieldControl(GetDlgItem(hDlg, IDC_SHIELD)); GuildShieldDraw(); return TRUE; } return GuildListDrawItem(hDlg, (const DRAWITEMSTRUCT *)(lParam)); } return FALSE; }