// // Draw_TString void Draw_TString(int x, int y, char *str) { TextBegin(network_text); DrawString(network_text, x, y, str); TextEnd(); } // end of the func
// // Print_Score // void Print_Score(void) { int i = 0; char buffer[80]; int x,y; for (i = 0; i < MAX_SCORE_DISPLAY; i++) { sprintf(buffer, "P%d %0.2f %d\n", ant_globals->score_obj[i].name, ant_globals->score_obj[i].score, ant_globals->score_obj[i].kills); TextBegin(score_text); DrawString(score_text, 10, 4+(i*10), buffer); TextEnd(); } // end of the for // Also, print frames per second sprintf(buffer, "FPS: %0.2f", framerate); TextBegin(score_text); DrawString(score_text, 500, 4, buffer); TextEnd(); // And the score and health sprintf(buffer, "Armor: %0.2f", ant_globals->player_health); TextBegin(score_text); DrawString(score_text, 300, 4, buffer); TextEnd(); // Print the current position sprintf(buffer, "%d/%d Bots", ant_globals->alive_bots, (MAX_FIRE_ANTS-1)); TextBegin(score_text); DrawString(score_text, 300, 14, buffer); TextEnd(); // Print some paused text if (ant_globals->paused) { // find the correct x pos x = 12 * 8; x /= 2; x = (SCREEN_WIDTH/2) - x; y = (SCREEN_HEIGHT / 2); // And the score and health sprintf(buffer, "- PAUSED -", ant_globals->player_health); TextBegin(score_text); DrawString(score_text, x, y, buffer); TextEnd(); sprintf(buffer, "(GLANTS)"); TextBegin(score_text); DrawString(score_text, x+8, y+10, buffer); TextEnd(); } // end of the if } // end of the function
// // Draw_NetworkScreen // void Draw_NetworkScreen(void) { const float box_x_min = 50.0f; const float box_x_max = 500.0f; const float box_y_min = 50.0f; const float box_y_max = 440.0f; const float msg_y = box_y_max - 32.0f; char buffer[80]; glDisable(GL_TEXTURE_2D); // Draw a blue screen // in the background glColor3ub(20, 120, 235); glLineWidth(3.0f); glBegin(GL_QUADS); glVertex3f(box_x_min, box_y_min, 0.0f); glVertex3f(box_x_max, box_y_min, 0.0f); glVertex3f(box_x_max, box_y_max, 0.0f); glVertex3f(box_x_min, box_y_max, 0.0f); glEnd(); // draw outline around object glColor3ub(255, 255, 255); glBegin(GL_LINE_LOOP); glVertex3f(box_x_min, box_y_min, 0.0f); glVertex3f(box_x_max, box_y_min, 0.0f); glVertex3f(box_x_max, box_y_max, 0.0f); glVertex3f(box_x_min, box_y_max, 0.0f); glEnd(); // The next line // will be used for the message screen glBegin(GL_LINE_LOOP); glVertex3f(box_x_min, msg_y, 0.0f); glVertex3f(box_x_max, msg_y, 0.0f); glEnd(); glLineWidth(1.0f); // before drawing the name, save selection Display_NetSel(network_str_); // Print the actual text Setup_NetMenu(CLIENT_NET_MENU, END_CLIENT_NET, VERT_TYPE_); Setup_NetMenu(C_HORZ_MENU, END_CLIENT_NET, HORZ_TYPE_); Setup_NetMenu(N_TITLE_X, N_TITLE_YY2, SERVER_SETTINGS); Setup_NetMenu(SERVER_NET_MENU, END_SERVER_NET, VERT_TYPE_); Setup_NetMenu(S_SERV_HORZ, E_SERV_HORZ, HORZ_TYPE_); // Draw the static text TextBegin(network_text); DrawString(network_text, T_COL_6, T_ROW_1, network_str_[_TEXT_CONNECT_]); TextEnd(); TextBegin(network_text); DrawString(network_text, T_COL_7, T_ROW_1, network_str_[_TEXT_DISCONNECT_]); TextEnd(); // Server buttons -- TextBegin(network_text); DrawString(network_text, T_COL_6, T_ROW_2, network_str_[_TEXT_START_]); TextEnd(); TextBegin(network_text); DrawString(network_text, T_COL_7, T_ROW_2, network_str_[_TEXT_SHUTDOWN_]); TextEnd(); // And at the bottom // the network and help screens and messages TextBegin(network_text); // get network message Get_NetworkMsg(buffer); DrawString(network_text, TEXT_HORZ_START, T_ROW_3, buffer); TextEnd(); // print connections if there are any printConnections(); } // end of the functino
// // Set_Net_Menu(int // - setup the horizontal or vertical positions // and draw the text -- // static void Setup_NetMenu(int start_pos, int end_pos, int h_type) { int i; float horz_pos; float vert_pos; // // set the text changes before the code below switch(h_type) { case HORZ_TYPE_: // we only have two diferent cases to handle if (start_pos == C_HORZ_MENU) { horz_pos = TEXT_HORZ_START; vert_pos = TXT_V_START; TextBegin(network_text); DrawString(network_text, horz_pos, vert_pos, network_str_[C_HORZ_MENU]); TextEnd(); // next col -- horz_pos = T_COL_1; vert_pos = TXT_V_START; TextBegin(network_text); DrawString(network_text, horz_pos, vert_pos, network_str_[C_HORZ_MENU+1]); TextEnd(); // next col -- horz_pos = T_COL_2; vert_pos = TXT_V_START; TextBegin(network_text); DrawString(network_text, horz_pos, vert_pos, network_str_[C_HORZ_MENU+2]); TextEnd(); // next col -- horz_pos = T_COL_3; vert_pos = TXT_V_START; TextBegin(network_text); DrawString(network_text, horz_pos, vert_pos, network_str_[C_HORZ_MENU+3]); TextEnd(); // next col -- horz_pos = T_COL_4; vert_pos = TXT_V_START; TextBegin(network_text); DrawString(network_text, horz_pos, vert_pos, network_str_[C_HORZ_MENU+4]); TextEnd(); // next col -- horz_pos = T_COL_5; vert_pos = TXT_V_START; TextBegin(network_text); DrawString(network_text, horz_pos, vert_pos, network_str_[C_HORZ_MENU+5]); TextEnd(); } // end of the else { horz_pos = TEXT_HORZ_START; vert_pos = TXT_V_STARTYY2; TextBegin(network_text); DrawString(network_text, horz_pos, vert_pos, network_str_[S_SERV_HORZ]); TextEnd(); // next col horz_pos = T_COL_1; vert_pos = TXT_V_STARTYY2; TextBegin(network_text); DrawString(network_text, horz_pos, vert_pos, network_str_[S_SERV_HORZ+1]); TextEnd(); horz_pos = T_COL_2; vert_pos = TXT_V_STARTYY2; TextBegin(network_text); DrawString(network_text, horz_pos, vert_pos, network_str_[S_SERV_HORZ+2]); TextEnd(); horz_pos = T_COL_3; vert_pos = TXT_V_STARTYY2; TextBegin(network_text); DrawString(network_text, horz_pos, vert_pos, network_str_[S_SERV_HORZ+3]); TextEnd(); } // end of the if-else break; case VERT_TYPE_: if (start_pos == CLIENT_NET_MENU) vert_pos = TEXT_VERT_START; else vert_pos = TEXT_VERT_STARTY2; for (i = start_pos; i <= end_pos; i++) { TextBegin(network_text); DrawString(network_text, TEXT_HORZ_START, vert_pos, network_str_[i]); TextEnd(); vert_pos = vert_pos + TEXT_VERT_HEIGHT; } // end of the for break; case STAT_TYPE_: break; case SERVER_SETTINGS: TextBegin(network_text); DrawString(network_text, start_pos, end_pos, network_str_[SERVER_SETTINGS]); TextEnd(); break; case CLIENT_SETTINGS: TextBegin(network_text); DrawString(network_text, start_pos, end_pos, network_str_[CLIENT_SETTINGS]); TextEnd(); break; }; } // end of the function
BOOL WINPROC EXPORT DlgTextProc( /***********************************************************************/ HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { int i; WORD wKey; HFONT hFont; STRING szString; switch (msg) { case WM_INITDIALOG: RibbonInit( hDlg ); ColorInit( hDlg ); GetFonts( hDlg ); CheckRadioButton( hDlg, IDC_TEXT_T1, IDC_TEXT_T10, Text.nFont+IDC_TEXT_T1 ); Text.Size = 48; InitSlide( hDlg, IDC_TEXT_SIZE, Text.Size, 24, 200 ); Text.Angle = 0; InitSlide( hDlg, IDC_TEXT_ANGLE, 0, -2, 2 ); ControlEnable(hDlg, IDC_TEXT_ANGLE, TextCanRotate(hDlg, Text.nFont)); for ( i=0; i<max(10,Text.nFont); i++ ) { hFont = CreateFont( /* Height */ 45, /* Width */ 0, /* Escapement */ 0, /* Orientation */ 0, /* Weight */ FW_NORMAL, /* Italic */ FALSE, /* UnderLine */ FALSE, /* StrikeOut */ FALSE, /* CharSet */ Text.lpFontList[i].fdCharSet, /* Output Precis */ OUT_CHARACTER_PRECIS, /* Clip Precis */ CLIP_DEFAULT_PRECIS, /* Quality */ PROOF_QUALITY, /* PitchAndFamily */ Text.lpFontList[i].fdPitchAndFamily, /* Face */ Text.lpFontList[i].fdFaceName ); if ( hFont ) SendDlgItemMessage( hDlg, IDC_TEXT_T1+i, WM_SETFONT, (WPARAM)hFont, 0L ); } if ( lpImage ) { bTextBegun = TextBegin( lpImage->hWnd, 10/*x*/, 40/*y*/ ); Tool.bActive = YES; SetFocus( lpImage->hWnd ); } else bTextBegun = NO; // fall thru case WM_CONTROLENABLE: case WM_DOCACTIVATED: break; case WM_DESTROY: if ( bTextBegun ) { if ( lpImage ) { TextEnd( lpImage->hWnd, NO/*fCancel*/ ); Tool.bActive = NO; AstralUpdateWindow( lpImage->hWnd ); } bTextBegun = NO; } for ( i=0; i<max(10,Text.nFont); i++ ) { if ( hFont = (HFONT)SendDlgItemMessage( hDlg, IDC_TEXT_T1+i, WM_GETFONT, (WPARAM)0, 0L ) ) DeleteObject( hFont ); } if ( Text.lpFontList ) { FreeUp((LPTR)Text.lpFontList); Text.lpFontList = NULL; } break; case WM_CHAR: if ( !lpImage || !bTextBegun ) return( FALSE ); TextSetFocus(); wKey = (WORD)lParam; TextKeystroke( lpImage->hWnd, wKey ); if ( wKey == VK_RETURN ) { TextAnchor( lpImage->hWnd ); RandomizeActiveColor(); break; } szString[0] = '_'; szString[1] = wKey; szString[2] = '\0'; Lowercase( szString ); SoundStartResource( szString, NO/*bLoop*/, NULL/*hInstance*/ ); break; case WM_KEYDOWN: if ( !lpImage || !bTextBegun ) return( FALSE ); wKey = lParam; switch (wKey) { case VK_UP: TextRMove( lpImage->hWnd, 0, -1 ); break; case VK_DOWN: TextRMove( lpImage->hWnd, 0, 1); break; case VK_LEFT: TextRMove( lpImage->hWnd, -1, 0); break; case VK_RIGHT: TextRMove( lpImage->hWnd, 1, 0); break; default: break; } break; case WM_SETCURSOR: return( SetupCursor( wParam, lParam, IDD_TEXT ) ); case WM_ERASEBKGND: break; // handle ERASEBKGND and do nothing; PAINT covers everything case WM_PAINT: LayoutPaint( hDlg ); break; case WM_CLOSE: AstralDlgEnd( hDlg, FALSE ); break; case WM_MEASUREITEM: case WM_DRAWITEM: return( OwnerDraw( hDlg, msg, lParam, NO ) ); case WM_CTLCOLOR: // We don't get this message // Print( "%u", HIWORD(lParam) ); // if ( HIWORD(lParam) == CTLCOLOR_BTN ) // { // SetTextColor( (HDC)wParam, RGB(0,0,255) ); // Blue text... // SetBkColor( (HDC)wParam, RGB(255,255,255) ); // on a white background // return( GetStockObject(WHITE_BRUSH) ); // } return( (BOOL)SetControlColors( (HDC)wParam, hDlg, (HWND)LOWORD(lParam), HIWORD(lParam) ) ); case WM_COMMAND: switch (wParam) { case IDC_ACTIVECOLOR: case IDC_COLORS_TEXT: ColorCommand( hDlg, wParam, lParam ); TextSetFocus(); if (bTextBegun) TextFontChanged(lpImage->hWnd); break; case IDC_TEXT_T1: case IDC_TEXT_T2: case IDC_TEXT_T3: case IDC_TEXT_T4: case IDC_TEXT_T5: case IDC_TEXT_T6: case IDC_TEXT_T7: case IDC_TEXT_T8: case IDC_TEXT_T9: case IDC_TEXT_T10: CheckRadioButton( hDlg, IDC_TEXT_T1, IDC_TEXT_T10, wParam ); Text.nFont = wParam - IDC_TEXT_T1; ControlEnable(hDlg, IDC_TEXT_ANGLE, TextCanRotate(hDlg, Text.nFont)); TextSetFocus(); if (bTextBegun) TextFontChanged(lpImage->hWnd); break; case IDC_TEXT_SIZE: Text.Size = HandleSlide( hDlg, (ITEMID)wParam, (UINT)lParam, NULL ); Text.Size = bound( Text.Size, 16, 216 ); if ( !LBUTTON ) TextSetFocus(); if (bTextBegun) TextFontChanged(lpImage->hWnd); break; case IDC_TEXT_ANGLE: i = HandleSlide( hDlg, (ITEMID)wParam, (UINT)lParam, NULL ); // -2 to 2 Text.Angle = (i * 45); if ( Text.Angle < 0 ) Text.Angle += 360; i = (Text.Angle + 22) / 45; // down to 0-8 if ( i > 4 ) i = bound( i - 8, -2, 0 ); else i = bound( i, 0, 2 ); SetSlide( hDlg, wParam, i ); if ( !LBUTTON ) TextSetFocus(); if (bTextBegun) TextFontChanged(lpImage->hWnd); break; default: return( FALSE ); } default: return( FALSE ); } return( TRUE ); }