// Recalculate the Text in the window void CDiscArena_RoundEnd::RecalculateText( void ) { char sz[1024]; char szTemp1[256]; char szTemp2[256]; // Sends down a 0 for time when this should be removed if (m_iSecondsToGo == 0) { setVisible(false); g_iCannotFire = FALSE; // Force spectator menu to update if (gViewPort) gViewPort->m_iUser1 = 0; return; } g_iCannotFire = TRUE; // Round Number strncpy( szTemp1, CHudTextMessage::BufferedLocaliseTextString( "#Round_Won" ), sizeof( szTemp1 ) - 1 ); szTemp1[ sizeof( szTemp1 ) - 1 ] = '\0'; sprintf( sz, szTemp1, m_iRoundNumber ); m_pRound->setText( sz ); if (gViewPort) gViewPort->GetAllPlayersInfo(); // Winners GetClientList( sz ); m_pWinners->setText( sz ); // Scores m_iNumPlayers = READ_BYTE(); if ( m_iNumPlayers >= 0 && m_iNumPlayers <= MAX_PLAYERS ) { for (int i = 0; i < m_iNumPlayers; i++) m_iClients[i] = READ_SHORT(); int iWinningScore = READ_BYTE(); int iLosingScore = READ_BYTE(); int iBattleOver = READ_BYTE(); // Battle over? if ( iBattleOver ) { GetClientList( sz ); strncpy( szTemp2, CHudTextMessage::BufferedLocaliseTextString( "#Round_Won_Scores" ), sizeof( szTemp2 ) - 1 ); szTemp2[ sizeof( szTemp2 ) - 1 ] = '\0'; _snprintf( sz, sizeof( sz ) - 1, szTemp2, sz, iWinningScore, iLosingScore ); } // Tied? else if ( iWinningScore == iLosingScore ) { strncpy( szTemp2, CHudTextMessage::BufferedLocaliseTextString( "#Round_Tied" ), sizeof( szTemp2 ) - 1 ); szTemp2[ sizeof( szTemp2 ) - 1 ] = '\0'; _snprintf( sz, sizeof( sz ) - 1, szTemp2, iWinningScore ); } else { char *pszTemp = NULL; GetClientList( sz ); if ( m_iNumPlayers == 1 ) { pszTemp = "#Round_Leads"; } else { pszTemp = "#Round_Lead"; } strncpy( szTemp2, CHudTextMessage::BufferedLocaliseTextString( pszTemp ), sizeof( szTemp2 ) - 1 ); szTemp2[ sizeof( szTemp2 ) - 1 ] = '\0'; _snprintf( sz, sizeof( sz ) - 1, szTemp2, sz, iWinningScore, iLosingScore ); } sz[ sizeof( sz ) - 1 ] = '\0'; m_pWinningTeam->setText( sz ); } // Become visible setVisible(true); // Hide the other windows if it's up if (gViewPort) { gViewPort->m_pSpectatorMenu->setVisible( false ); gViewPort->m_pDiscPowerupWindow->setVisible( false ); gViewPort->m_pDiscStartRound->setVisible( false ); } }
int main(){ int i,j=0; ownMSG = OwnMSGInit(); printf("%d \n", ownMSG); SERVER_LIST_RESPONSE res = GetServerList(); server_id = res.servers[0]; printf("%d\n", server_id); sem_login_id = SemLoginInit(); int login_res, change_res; while((login_res = Login()) != 201) if(login_res == 503){ printf("server is too busy now...\n"); sleep(5); } else if(login_res == 400) printf("your name is uncorrect\n"); else if(login_res == 409) printf("this name already exists\n"); printf("Login successful! Hello %s\n", name); printf("If you first time use this program it's reccomended to try /help\n"); int pid[2];/* if(fork() == 0){ pid[0] = getpid(); while(1) Heartbeat(); } if(fork() == 0){ pid[1] = getpid; while(1) ReceiveText(); }*/ char line[MAX_MSG_SIZE]; while(1){ printf(">>"); fgets(line,MAX_MSG_SIZE, stdin); j = 0; while(line[j] != '\n') j++; line[j] = '\0'; if(strcmp(line, "/help") == 0) printf("/users../gusers../priv../logout../rooms../change..\n"); else if(strcmp(line, "/users") == 0){ CLIENT_LIST_RESPONSE* res = GetClientList(); for(i=0; i<res->active_clients; i++) printf("%s\n", res->names[i]); } else if(strcmp(line, "/gusers") == 0){ CLIENT_LIST_RESPONSE* res = GetGlobalClientList(); for(i=0; i<res->active_clients; i++) printf("%s\n", res->names[i]); } else if(strcmp(line, "/priv") == 0) PrivateText(); else if(strcmp(line, "/logout") == 0){ Logout(); kill(pid[0], 9); kill(pid[1], 9); } else if(strcmp(line, "/rooms") == 0){ ROOM_LIST_RESPONSE* res = GetRoomList(); for(i=0; i<res->active_rooms; i++) printf("%s\n", res->rooms[i].name); } else if( (strcmp(line, "/change") == 0) ){ while(ChangeRoom() != 202) printf("invalid room name\n"); printf("room change successful\n"); } else PublicText(line); } return 0; }