/* ======================== idMenuScreen_Shell_GameBrowser::HandleAction h ======================== */ bool idMenuScreen_Shell_GameBrowser::HandleAction( idWidgetAction & action, const idWidgetEvent & event, idMenuWidget * widget, bool forceHandle ) { idMenuHandler_Shell * const mgr = dynamic_cast< idMenuHandler_Shell * >( menuData ); if ( mgr == NULL ) { return false; } if ( mgr->ActiveScreen() != SHELL_AREA_BROWSER ) { return false; } widgetAction_t actionType = action.GetType(); const idSWFParmList & parms = action.GetParms(); switch ( actionType ) { case WIDGET_ACTION_GO_BACK: { menuData->SetNextScreen( SHELL_AREA_PARTY_LOBBY, MENU_TRANSITION_SIMPLE ); return true; } case WIDGET_ACTION_COMMAND: { switch ( parms[ 0 ].ToInteger() ) { case BROWSER_COMMAND_REFRESH_SERVERS: { UpdateServerList(); break; } case BROWSER_COMMAND_SHOW_GAMERTAG: { int index = listWidget->GetServerIndex(); if ( index != -1 ) { session->ShowServerGamerCardUI( index ); } break; } } return true; } case WIDGET_ACTION_PRESS_FOCUSED: { int selectionIndex = listWidget->GetFocusIndex(); if ( parms.Num() > 0 ) { selectionIndex = parms[0].ToInteger(); } if ( selectionIndex != listWidget->GetFocusIndex() ) { listWidget->SetViewIndex( listWidget->GetViewOffset() + selectionIndex ); listWidget->SetFocusIndex( selectionIndex ); return true; } int index = listWidget->GetServerIndex(); if ( index != -1 ) { session->ConnectToServer( index ); } return true; } } return idMenuScreen::HandleAction( action, event, widget, forceHandle ); }
void dskLAN::Msg_Timer(const unsigned int ctrl_id) { if (ctrl_id == tmrRefreshServersId) discovery.Refresh(); else if (ctrl_id == tmrRefreshListId) UpdateServerList(); else RTTR_Assert(false); }
/* ======================== idMenuScreen_Shell_GameBrowser::ShowScreen ======================== */ void idMenuScreen_Shell_GameBrowser::ShowScreen( const mainMenuTransition_t transitionType ) { idMenuHandler_Shell * const mgr = dynamic_cast< idMenuHandler_Shell * >( menuData ); if ( mgr == NULL ) { return; } idSWFScriptObject & root = GetSWFObject()->GetRootObject(); if ( BindSprite( root ) ) { idSWFTextInstance * heading = GetSprite()->GetScriptObject()->GetNestedText( "info", "txtHeading" ); if ( heading != NULL ) { heading->SetText( "#str_swf_pwf_heading" ); // MULTIPLAYER heading->SetStrokeInfo( true, 0.75f, 1.75f ); } idSWFSpriteInstance * gradient = GetSprite()->GetScriptObject()->GetNestedSprite( "info", "gradient" ); if ( gradient != NULL && heading != NULL ) { gradient->SetXPos( heading->GetTextLength() ); } } listWidget->ClearGames(); if ( mgr->GetCmdBar() != NULL ) { idMenuWidget_CommandBar::buttonInfo_t * buttonInfo; mgr->GetCmdBar()->ClearAllButtons(); buttonInfo = mgr->GetCmdBar()->GetButton( idMenuWidget_CommandBar::BUTTON_JOY2 ); if ( menuData->GetPlatform() != 2 ) { buttonInfo->label = "#str_00395"; } buttonInfo->action.Set( WIDGET_ACTION_GO_BACK ); buttonInfo = mgr->GetCmdBar()->GetButton( idMenuWidget_CommandBar::BUTTON_JOY3 ); buttonInfo->label = "#str_02276"; buttonInfo->action.Set( WIDGET_ACTION_COMMAND, BROWSER_COMMAND_REFRESH_SERVERS ); } mgr->HidePacifier(); idMenuScreen::ShowScreen( transitionType ); UpdateServerList(); }
/** * Konstruktor von @p dskLobby. * * @author FloSoft * @author Devil */ dskLobby::dskLobby() : Desktop(LOADER.GetImageN("setup013", 0)), serverinfo(NULL), servercreate(NULL) { // Version AddVarText(0, 0, 600, _("Return To The Roots - v%s-%s"), COLOR_YELLOW, 0 | glArchivItem_Font::DF_BOTTOM, NormalFont, 2, GetWindowVersion(), GetWindowRevisionShort()); // URL AddText(1, 400, 600, _("http://www.siedler25.org"), COLOR_GREEN, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, NormalFont); // Copyright AddVarText(2, 800, 600, _("© 2005 - %s Settlers Freaks"), COLOR_YELLOW, glArchivItem_Font::DF_RIGHT | glArchivItem_Font::DF_BOTTOM, NormalFont, 1, GetCurrentYear()); // "Zurück" AddTextButton(3, 530, 530, 250, 22, TC_RED1, _("Back"), NormalFont); // "Verbinden" AddTextButton(4, 530, 470, 250, 22, TC_GREEN2, _("Connect"), NormalFont); // "Internet Ranking" AddTextButton(5, 530, 500, 250, 22, TC_GREEN2, _("Internet Ranking"), NormalFont); // "Server hinzufügen" AddTextButton(6, 530, 440, 250, 22, TC_GREEN2, _("Add Server"), NormalFont); // Gameserver-Tabelle - "ID", "Server", "Karte", "Spieler", "Version", "Ping" AddTable(10, 20, 20, 500, 262, TC_GREY, NormalFont, 6, _("ID"), 0, ctrlTable::SRT_NUMBER, _("Server"), 300, ctrlTable::SRT_STRING, _("Map"), 300, ctrlTable::SRT_STRING, _("Player"), 200, ctrlTable::SRT_NUMBER, _("Version"), 100, ctrlTable::SRT_STRING, _("Ping"), 100, ctrlTable::SRT_NUMBER); // Spieler-Tabelle - "Name", "Punkte", "Version" AddTable(11, 530, 20, 250, 410, TC_GREY, NormalFont, 3, _("Name"), 500, ctrlTable::SRT_STRING, _("Points"), 250, ctrlTable::SRT_STRING, _("Version"), 250, ctrlTable::SRT_STRING); // Chatfenster AddChatCtrl(20, 20, 290, 500, 238, TC_GREY, NormalFont); // Chatfenster-Edit AddEdit(21, 20, 530, 500, 22, TC_GREY, NormalFont); AddTimer(30, 5000); UpdateServerList(true); UpdatePlayerList(true); LOBBYCLIENT.SetInterface(this); LOBBYCLIENT.SendServerListRequest(); LOBBYCLIENT.SendPlayerListRequest(); GAMECLIENT.SetInterface(this); }
void MasterServer::HandleUpdateServer(Packet *packet) { GameServer *gameServer; bool newServerAdded; BitStream incomingBitStream(packet->data, packet->length, false); incomingBitStream.IgnoreBits(8*sizeof(unsigned char)); gameServer = DeserializeServer(&incomingBitStream); gameServer->connectionIdentifier.binaryAddress=packet->playerId.binaryAddress; UpdateServerList(gameServer, true, &newServerAdded); if (newServerAdded) { #ifdef _SHOW_MASTER_SERVER_PRINTF printf("Server added. %i servers on the list\n", gameServerList.serverList.Size()); #endif gameServer->originationId=packet->playerId; } #ifdef _SHOW_MASTER_SERVER_PRINTF else printf("Server updated. %i servers on the list\n", gameServerList.serverList.Size()); #endif }
void MasterClient::HandleServerListResponse(Packet *packet, bool overwriteExisting) { int serverIndex; bool newServerAdded; unsigned short numberOfServers; GameServer *gameServer; RakNetTime currentTime; BitStream inputBitStream(packet->data, packet->length, false); inputBitStream.IgnoreBits(8*sizeof(unsigned char)); if (inputBitStream.ReadCompressed(numberOfServers)==false) return; currentTime=RakNet::GetTime(); for (serverIndex=0; serverIndex < numberOfServers; serverIndex++) { gameServer = DeserializeServer(&inputBitStream); // Find the existing game server that matches this port/address. // If not found, then add it to the list. // else update it // If (overwriteExisting) // - Delete any fields that exist in the old and not in the new // Add any fields that exist in the new and do not exist in the old // Update any fields that exist in both // Unset the deletion mark gameServer=UpdateServerList(gameServer,overwriteExisting, &newServerAdded); if (newServerAdded) { // Ping the new server rakPeer->Ping((char*)rakPeer->PlayerIDToDottedIP(gameServer->connectionIdentifier), gameServer->connectionIdentifier.port, false); // Returns true if new server updated OnGameServerListAddition(gameServer); } else { // returns false if an existing server is modified OnGameServerListRuleUpdate(gameServer); } } // Any servers that were not updated on the last call to UpdateServerList // will have lastUpdateTime time as less than the current time // Delete those serverIndex=0; while (serverIndex < (int) gameServerList.serverList.Size()) { if (gameServerList.serverList[serverIndex]->lastUpdateTime < currentTime) { delete gameServerList.serverList[serverIndex]; gameServerList.serverList.RemoveAtIndex(serverIndex); } else serverIndex++; } OnGameServerListQueryComplete(); }
void dskLobby::Msg_PaintBefore() { UpdateServerList(); UpdatePlayerList(); GetCtrl<ctrlEdit>(21)->SetFocus(); }