void MainChatTab::RejoinChannels() { for ( unsigned int i = 0; i < m_chat_tabs->GetPageCount(); i++ ) { ChatPanel* tmp = ( ChatPanel* )m_chat_tabs->GetPage( i ); if ( tmp->GetPanelType() == CPT_Channel ) { // TODO: This will not rejoin passworded channels. wxString name = m_chat_tabs->GetPageText( i ); bool alreadyin = false; try { serverSelector().GetServer().GetChannel( name ).GetMe(); alreadyin = true; } catch ( ... ) {} if ( !alreadyin ) { serverSelector().GetServer().JoinChannel( name, _T( "" ) ); tmp->SetChannel( &serverSelector().GetServer().GetChannel( name ) ); } } else if ( tmp->GetPanelType() == CPT_User ) { wxString name = m_chat_tabs->GetPageText( i ); if ( serverSelector().GetServer().UserExists( name ) ) tmp->SetUser( &serverSelector().GetServer().GetUser( name ) ); } } }
void BattleListTab::UpdateList() { serverSelector().GetServer().battles_iter->IteratorBegin(); while ( ! serverSelector().GetServer().battles_iter->EOL() ) { IBattle* b = serverSelector().GetServer().battles_iter->GetBattle(); if ( b != 0 ) UpdateBattle( *b ); } m_battle_list->RefreshVisibleItems(); }
void MainWindow::OnMenuChat(wxCommandEvent& /*unused*/) { if (!ui().IsConnected()) return; wxString answer; if (ui().AskText(_("Open Private Chat..."), _("Name of user"), answer)) { if (serverSelector().GetServer().UserExists(STD_STRING(answer))) { //true puts focus on new tab OpenPrivateChat(serverSelector().GetServer().GetUser(STD_STRING(answer)), true); } } }
void BattleListTab::RemoveAllBattles() { SelectBattle( 0 ); serverSelector().GetServer().battles_iter->IteratorBegin(); while ( ! serverSelector().GetServer().battles_iter->EOL() ) { IBattle* temp_battle = serverSelector().GetServer().battles_iter->GetBattle(); if ( temp_battle != 0 ) temp_battle->SetGUIListActiv( false ); } m_battle_list->Clear(); SetNumDisplayed(); }
void BattleListTab::UpdateList() { m_battle_list->SetSelectedIndex(-1); serverSelector().GetServer().battles_iter->IteratorBegin(); while (!serverSelector().GetServer().battles_iter->EOL()) { IBattle* b = serverSelector().GetServer().battles_iter->GetBattle(); if (b != 0) UpdateBattle(*b); } m_battle_list->SortList(true); m_battle_list->RefreshVisibleItems(); if (m_sel_battle != NULL) m_battle_list->SetSelectedIndex(m_battle_list->GetIndexFromData(m_sel_battle)); }
void ChatPanelMenu::OnUserMenuModeratorKick(wxCommandEvent& /*unused*/) { wxString reason; if (!ui().AskText(_("Kick user"), _("Reason:"), reason)) return; serverSelector().GetServer().ModeratorKick(m_chatpanel->GetSelectedUser()->GetNick(), STD_STRING(reason)); }
void BattleListTab::OnUnitsyncReloaded( GlobalEvents::GlobalEventData /*data*/ ) { if ( ! serverSelector().GetServerStatus() ) return; UpdateList(); }
void BattleListTab::OnUnitsyncReloaded(wxCommandEvent& /*data*/) { assert(wxThread::IsMain()); if (!serverSelector().IsServerAvailible()) return; UpdateList(); }
void ChatPanelMenu::OnUserMenuModeratorMute( wxCommandEvent& /*unused*/ ) { wxString duration; if ( !ui().AskText( _( "Mute user" ), _( "Duration:" ), duration ) ) return; long int dur = 0; duration.ToLong( &dur, dur ); serverSelector().GetServer().ModeratorMute( m_chatpanel->m_channel->GetName(), m_chatpanel->GetSelectedUser()->GetNick(), ( int ) dur, true ); }
void MapSelectDialog::LoadPopular() { wxLogDebugFunc( _T("") ); m_mapgrid->Clear(); try { serverSelector().GetServer().battles_iter->IteratorBegin(); while ( !serverSelector().GetServer().battles_iter->EOL() ) { Battle* b = serverSelector().GetServer().battles_iter->GetBattle(); const wxString mapname = b->GetHostMapName(); assert(!mapname.empty()); if ( b != NULL ) m_mapgrid->AddMap( mapname ); } } catch (...) {} // ui().GetServer may throw when disconnected... m_mapgrid->Refresh(); }
void BattleListTab::OnListJoin(wxListEvent& event) { try { ASSERT_LOGIC(m_battle_list != 0, "m_battle_list = 0"); } catch (...) { return; } if (event.GetIndex() < 0) return; int id = m_battle_list->GetSelectedData()->GetBattleId(); DoJoin(serverSelector().GetServer().battles_iter->GetBattle(id)); }
void MainWindow::ShowChannelChooser() { if ((m_channel_chooser == NULL) || (m_channel_chooser && m_channel_chooser->IsShown())) return; if (!ui().IsConnected()) { customMessageBox(SL_MAIN_ICON, _("You need to be connected to a server to view the channel list"), _("Not connected")); } else { m_channel_chooser->ClearChannels(); serverSelector().GetServer().RequestChannels(); m_channel_chooser->Show(true); } }
void BattleListTab::OnJoin( wxCommandEvent& /*unused*/ ) { try { ASSERT_LOGIC( m_battle_list != 0, _T( "m_battle_list = 0" ) ); } catch ( ... ) { return; } if ( m_battle_list->GetSelectedIndex() < 0 ) return; int id = m_battle_list->GetSelectedData()->GetBattleId(); DoJoin( serverSelector().GetServer().battles_iter->GetBattle( id ) ); }
void BattleListTab::OnJoin(wxCommandEvent& /*unused*/) { try { ASSERT_LOGIC(m_battle_list != 0, "m_battle_list = 0"); } catch (...) { return; } if (m_battle_list->GetSelectedIndex() < 0) return; const IBattle* battle = m_battle_list->GetSelectedData(); assert(battle != NULL); const int id = battle->GetBattleId(); DoJoin(serverSelector().GetServer().battles_iter->GetBattle(id)); }
void BattleRoomTab::OnAddBot(wxCommandEvent& /*unused*/) { if (!m_battle) return; //customMessageBox(SL_MAIN_ICON,_T("Max players reached"),_T("Cannot add bot, maximum number of players already reached.") ); AddBotDialog dlg(this, *m_battle); if (dlg.ShowModal() == wxID_OK) { UserBattleStatus bs; bs.team = m_battle->GetFreeTeam(false); bs.ally = m_battle->GetFreeAlly(false); bs.sync = SYNC_SYNCED; bs.spectator = false; bs.side = 0; bs.ready = true; bs.handicap = 0; bs.colour = m_battle->GetNewColour(); bs.aishortname = STD_STRING(dlg.GetAIShortName()); bs.aiversion = STD_STRING(dlg.GetAIVersion()); bs.aitype = dlg.GetAIType(); bs.owner = m_battle->GetMe().GetNick(); serverSelector().GetServer().AddBot(m_battle->GetBattleId(), STD_STRING(dlg.GetNick()), bs); } }
const User& ChatPanel::GetMe() const { return serverSelector().GetServer().GetMe(); }
void ChatPanelMenu::OnUserMenuModeratorRing(wxCommandEvent& /*unused*/) { serverSelector().GetServer().Ring(m_chatpanel->GetSelectedUser()->GetNick()); }
void ChatPanelMenu::OnUserMenuModeratorIngame(wxCommandEvent& /*unused*/) { serverSelector().GetServer().RequestInGameTime(m_chatpanel->GetSelectedUser()->GetNick()); }
void ChatPanelMenu::CreateNickListMenu() { m_user_menu = new ChatPanelMenu::UserMenu(this, this); if (m_chatpanel->m_type != CPT_User) { wxMenuItem* chatitem = new wxMenuItem(m_user_menu, CHAT_MENU_US_CHAT, _("Open Chat"), wxEmptyString, wxITEM_NORMAL); m_user_menu->Append(chatitem); } wxMenuItem* joinbattleitem = new wxMenuItem(m_user_menu, CHAT_MENU_US_JOIN, _("Join same battle"), wxEmptyString, wxITEM_NORMAL); m_user_menu->Append(joinbattleitem); m_user_menu->AppendSeparator(); bool moderator = false; try { moderator = serverSelector().GetServer().GetMe().GetStatus().moderator; } catch (...) { } if (moderator) { wxMenuItem* modingameitem = new wxMenuItem(m_user_menu, CHAT_MENU_US_MODERATOR_INGAME, _("Ingame time"), wxEmptyString, wxITEM_NORMAL); m_user_menu->Append(modingameitem); wxMenuItem* modipitem = new wxMenuItem(m_user_menu, CHAT_MENU_US_MODERATOR_CURIP, _("Retrieve IP and Smurfs"), wxEmptyString, wxITEM_NORMAL); m_user_menu->Append(modipitem); m_user_menu->AppendSeparator(); wxMenu* m_user_menu_mute; m_user_menu_mute = new wxMenu(); wxMenuItem* modmuteitem = new wxMenuItem(m_user_menu_mute, CHAT_MENU_US_MODERATOR_MUTE, _("Mute..."), wxEmptyString, wxITEM_NORMAL); m_user_menu_mute->Append(modmuteitem); wxMenuItem* modmute5item = new wxMenuItem(m_user_menu_mute, CHAT_MENU_US_MODERATOR_MUTE_5, _("Mute for 5 minutes"), wxEmptyString, wxITEM_NORMAL); m_user_menu_mute->Append(modmute5item); wxMenuItem* modmute10item = new wxMenuItem(m_user_menu_mute, CHAT_MENU_US_MODERATOR_MUTE_10, _("Mute for 10 minutes"), wxEmptyString, wxITEM_NORMAL); m_user_menu_mute->Append(modmute10item); wxMenuItem* modmute30item = new wxMenuItem(m_user_menu_mute, CHAT_MENU_US_MODERATOR_MUTE_30, _("Mute for 30 minutes"), wxEmptyString, wxITEM_NORMAL); m_user_menu_mute->Append(modmute30item); wxMenuItem* modmute120item = new wxMenuItem(m_user_menu_mute, CHAT_MENU_US_MODERATOR_MUTE_120, _("Mute for 2 hours"), wxEmptyString, wxITEM_NORMAL); m_user_menu_mute->Append(modmute120item); wxMenuItem* modmute1440item = new wxMenuItem(m_user_menu_mute, CHAT_MENU_US_MODERATOR_MUTE_1440, _("Mute for 1 day"), wxEmptyString, wxITEM_NORMAL); m_user_menu_mute->Append(modmute1440item); m_user_menu_mute->AppendSeparator(); wxMenuItem* modunmuteitem = new wxMenuItem(m_user_menu_mute, CHAT_MENU_US_MODERATOR_UNMUTE, _("Unmute"), wxEmptyString, wxITEM_NORMAL); m_user_menu_mute->Append(modunmuteitem); m_user_menu->Append(-1, _("Mute"), m_user_menu_mute); wxMenuItem* modkickitem = new wxMenuItem(m_user_menu, CHAT_MENU_US_MODERATOR_KICK, _("Kick..."), wxEmptyString, wxITEM_NORMAL); m_user_menu->Append(modkickitem); m_user_menu->AppendSeparator(); wxMenuItem* modbanitem = new wxMenuItem(m_user_menu, CHAT_MENU_US_MODERATOR_BAN, _("Ban..."), wxEmptyString, wxITEM_NORMAL); m_user_menu->Append(modbanitem); wxMenuItem* modunbanitem = new wxMenuItem(m_user_menu, CHAT_MENU_US_MODERATOR_UNBAN, _("Unban"), wxEmptyString, wxITEM_NORMAL); m_user_menu->Append(modunbanitem); m_user_menu->AppendSeparator(); wxMenuItem* modringitem = new wxMenuItem(m_user_menu, CHAT_MENU_US_MODERATOR_RING, _("Ring"), wxEmptyString, wxITEM_NORMAL); m_user_menu->Append(modringitem); //m_user_menu->Append( -1, _("Moderator"), m_user_menu ); } else { wxMenuItem* slapitem = new wxMenuItem(m_user_menu, CHAT_MENU_US_SLAP, _("Slap!"), wxEmptyString, wxITEM_NORMAL); m_user_menu->Append(slapitem); } if (m_chatpanel->m_type != CPT_User) { m_user_menu->AppendSeparator(); wxMenu* m_chanserv; m_chanserv = new wxMenu(); wxMenuItem* chmuteitem = new wxMenuItem(m_chanserv, CHAT_MENU_US_MUTE, _("Mute..."), wxEmptyString, wxITEM_NORMAL); m_chanserv->Append(chmuteitem); wxMenuItem* chunmuteitem = new wxMenuItem(m_chanserv, CHAT_MENU_US_UNMUTE, _("Unmute"), wxEmptyString, wxITEM_NORMAL); m_chanserv->Append(chunmuteitem); m_chanserv->AppendSeparator(); wxMenuItem* chkickitem = new wxMenuItem(m_chanserv, CHAT_MENU_US_KICK, _("Kick..."), wxEmptyString, wxITEM_NORMAL); m_chanserv->Append(chkickitem); m_chanserv->AppendSeparator(); wxMenuItem* chopitem = new wxMenuItem(m_chanserv, CHAT_MENU_US_OP, _("Op"), wxEmptyString, wxITEM_NORMAL); m_chanserv->Append(chopitem); wxMenuItem* chdeopitem = new wxMenuItem(m_chanserv, CHAT_MENU_US_DEOP, _("DeOp"), wxEmptyString, wxITEM_NORMAL); m_chanserv->Append(chdeopitem); m_user_menu->Append(-1, _("ChanServ"), m_chanserv); } }
void ChatPanelMenu::MutePlayer(long dur) { serverSelector().GetServer().ModeratorMute(m_chatpanel->m_channel->GetName(), m_chatpanel->GetSelectedUser()->GetNick(), (int)dur, true); }
IServer& IBattle::GetServer() { return serverSelector().GetServer(); }
HostBattleDialog::HostBattleDialog( wxWindow* parent ) : wxDialog( parent, -1, _( "Host new battle" ), wxDefaultPosition, wxSize( 410, 441 ), wxRESIZE_BORDER | wxDEFAULT_DIALOG_STYLE ), WindowHintsPickle ( _T("hostbattledialog"), this, wxSize( 410, 441 ) ), m_last_relayhost( sett().GetLastRelayedHost() ) { // this->SetSizeHints( GetSize(), wxDefaultSize ); m_panel = new wxScrolledWindow( this ); // m_panel ->SetSizeHints( GetSize(), wxDefaultSize ); wxBoxSizer* all_sizer = new wxBoxSizer( wxVERTICAL ); wxFlexGridSizer* topsizer = new wxFlexGridSizer( 2, 0, 10); // topsizer->AddGrowableCol( 1, 1 ); // SetSizeHints( wxDefaultSize, wxDefaultSize ); wxBoxSizer* m_main_sizer; m_main_sizer = new wxBoxSizer( wxVERTICAL ); m_desc_lbl = new wxStaticText( m_panel, wxID_ANY, _( "Description" ), wxDefaultPosition, wxDefaultSize, 0 ); m_desc_lbl->Wrap( -1 ); topsizer->Add( m_desc_lbl, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); // wxBoxSizer* desc_sizer = new wxBoxSizer( wxVERTICAL ); m_desc_text = new wxTextCtrl( m_panel, wxID_ANY, sett().GetLastHostDescription(), wxDefaultPosition, wxDefaultSize, 0 ); m_desc_text->SetToolTip( TE( _( "A short description of the game, this will show up in the battle list." ) ) ); topsizer ->Add( m_desc_text, 1, wxALL | wxEXPAND, 5 ); m_desc_check = new wxCheckBox( m_panel, wxID_ANY, _( "Autopaste description" ) ); m_desc_check->SetValue( sett().GetBattleLastAutoAnnounceDescription() ); m_desc_check->SetToolTip( TE( _( "Automatically write the battle description when a user joins." ) ) ); topsizer->AddStretchSpacer(); topsizer->Add( m_desc_check, 0, wxLEFT, 5 ); // topsizer->Add( desc_sizer , 0, wxEXPAND | wxALL, 0 ); m_mod_lbl = new wxStaticText( m_panel, wxID_ANY, _( "Game" ), wxDefaultPosition, wxDefaultSize, 0 ); m_mod_lbl->Wrap( -1 ); topsizer->Add( m_mod_lbl, 0, wxALL | wxALIGN_CENTER_VERTICAL, 5 ); wxArrayString m_mod_picChoices; wxBoxSizer* mod_choice_button_sizer = new wxBoxSizer( wxHORIZONTAL ); m_mod_pic = new wxChoice( m_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_mod_picChoices, 0 ); m_mod_pic->SetToolTip( TE( _( "Select the game to play." ) ) ); mod_choice_button_sizer->Add( m_mod_pic, 0, wxALL , 5 ); wxBitmap mp = charArr2wxBitmap( arrow_refresh_png, sizeof( arrow_refresh_png ) ); m_refresh_btn = new wxBitmapButton( m_panel, BTN_REFRESH, mp ); mod_choice_button_sizer->Add( m_refresh_btn, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 ); topsizer->Add( mod_choice_button_sizer, 0, wxEXPAND|wxALL ,1 ); m_pwd_lbl = new wxStaticText( m_panel, wxID_ANY, _( "Password\n(no spaces)" ), wxDefaultPosition, wxDefaultSize, 0 ); m_pwd_lbl->Wrap( -1 ); topsizer->Add( m_pwd_lbl, 1, wxALL| wxALIGN_CENTER_VERTICAL, 5 ); m_pwd_text = new wxTextCtrl( m_panel, wxID_ANY, sett().GetLastHostPassword(), wxDefaultPosition, wxDefaultSize, wxTE_PASSWORD ); m_pwd_text->SetToolTip( TE( _( "Password needed to join game. Keep empty for no password" ) ) ); topsizer->Add( m_pwd_text, 1, wxALL| wxEXPAND, 5 ); m_port_lbl = new wxStaticText( m_panel, wxID_ANY, _( "Port" ), wxDefaultPosition, wxDefaultSize, 0 ); m_port_lbl->Wrap( -1 ); topsizer->Add( m_port_lbl, 1, wxALL| wxALIGN_CENTER_VERTICAL, 5 ); m_port_text = new wxTextCtrl( m_panel, wxID_ANY, wxFormat( _T( "%d" ) ) % sett().GetLastHostPort(), wxDefaultPosition, wxDefaultSize, 0 ); m_port_text->SetToolTip( TE( _( "UDP port to host game on. Default is 8452." ) ) ); topsizer->Add( m_port_text, 1, wxALL| wxEXPAND, 5 ); // m_port_test_check = new wxCheckBox( m_panel, wxID_ANY, _("Test firewall"), wxDefaultPosition, wxDefaultSize, 0 ); // m_port_test_check->SetValue( sett().GetTestHostPort() ); // m_port_sizer->Add( m_port_test_check, 1, wxALL|wxEXPAND, 5 ); m_relayed_host_check = new wxCheckBox( m_panel, CHK_USE_RELAY, _( "Use relayhost" ), wxDefaultPosition, wxDefaultSize, 0 ); m_relayed_host_check->SetToolTip( TE( _( "host and control game on remote server, helps if you have trouble hosting" ) ) ); m_relayed_host_pick = new wxButton( m_panel, PICK_RELAYHOST, _T(""), wxDefaultPosition, wxDefaultSize, 0 ); m_relayed_host_pick->SetLabel( m_last_relayhost.IsEmpty() ? _T("automatic") : m_last_relayhost ); m_relayhost_list = new wxMenu(); wxMenuItem* automatic_pick = new wxMenuItem( m_relayhost_list, AUTO_PICK_HOST, _("Chose automatically"), _("Randomly picks an available one"), wxITEM_RADIO ); m_relayhost_list->Append( automatic_pick ); automatic_pick->Check( m_last_relayhost.IsEmpty() ); m_relayhost_list->AppendSeparator(); wxMenuItem* manual_pick_relay = new wxMenuItem( m_relayhost_list, MANUAL_PICK_HOST, _("Manually enter the manager name"), _("You'll get prompted for the exact manager name"), wxITEM_RADIO ); m_relayhost_list->Append( manual_pick_relay ); m_relayhost_list->AppendSeparator(); m_relayhost_array_list = serverSelector().GetServer().GetRelayHostList(); for ( unsigned int i = 0; i < m_relayhost_array_list.GetCount(); i++ ) { wxMenuItem* newitem = new wxMenuItem( m_relayhost_list, MANUAL_PICK_HOST + 1 + i, m_relayhost_array_list[i], _T("") , wxITEM_RADIO ); m_relayhost_list->Append( newitem ); newitem->Check( m_last_relayhost == m_relayhost_array_list[i] ); } m_relayed_host_check->SetValue( sett().GetLastHostRelayedMode() ); m_relayed_host_pick->Show( m_relayed_host_check->IsChecked() ); topsizer->Add( m_relayed_host_check, 1, wxALL | wxEXPAND, 5 ); topsizer->Add( m_relayed_host_pick, 0, wxALL | wxEXPAND, 5); m_main_sizer->Add( topsizer, 0, wxEXPAND, 0 ); wxStaticBoxSizer* m_players_box; m_players_box = new wxStaticBoxSizer( new wxStaticBox( m_panel, -1, _( "Number of players" ) ), wxVERTICAL ); m_players_box->SetMinSize( wxSize( -1, 60 ) ); m_players_slide = new wxSlider( m_panel, wxID_ANY, sett().GetLastHostPlayerNum(), 2, SPRING_MAX_USERS, wxDefaultPosition, wxDefaultSize, wxSL_AUTOTICKS | wxSL_BOTH | wxSL_HORIZONTAL | wxSL_LABELS ); m_players_slide->SetToolTip( TE( _( "The maximum number of players to allow in the battle." ) ) ); m_players_box->Add( m_players_slide, 0, wxALL | wxEXPAND, 5 ); m_main_sizer->Add( m_players_box, 0, wxALL | wxEXPAND, 5 ); wxBoxSizer* m_pl_nat_sizer; m_pl_nat_sizer = new wxBoxSizer( wxHORIZONTAL ); wxString m_nat_radiosChoices[] = { _( "None" ), _( "Hole punching" )/*, _("Fixed source ports")*/ }; int m_nat_radiosNChoices = sizeof( m_nat_radiosChoices ) / sizeof( wxString ); m_nat_radios = new wxRadioBox( m_panel, CHOSE_NAT, _( "NAT traversal" ), wxDefaultPosition, wxDefaultSize, m_nat_radiosNChoices, m_nat_radiosChoices, 1, wxRA_SPECIFY_COLS ); m_nat_radios->SetSelection( sett().GetLastHostNATSetting() ); //m_nat_radios->Enable( false ); m_nat_radios->Enable( true ); m_nat_radios->SetToolTip( TE( _( "NAT traversal to use." ) ) ); m_pl_nat_sizer->Add( m_nat_radios, 1, wxALL | wxEXPAND, 5 ); wxStaticBoxSizer* m_rank_box; m_rank_box = new wxStaticBoxSizer( new wxStaticBox( m_panel, -1, _( "Rank requirement" ) ), wxVERTICAL ); wxArrayString rankFilterChoices; rankFilterChoices.Add(_("At least")); rankFilterChoices.Add(_("No greater than")); m_rank_direction = new wxChoice( m_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, rankFilterChoices, 0 ); m_rank_direction->SetToolTip( TE( _( "Select the type of rank enforcement." ) ) ); m_rank_box->Add(m_rank_direction); wxFlexGridSizer* m_rank_sizer; m_rank_sizer = new wxFlexGridSizer( 2, 6, 0, 0 ); m_rank_sizer->SetFlexibleDirection( wxBOTH ); m_rank0_radio = new wxRadioButton( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxRB_GROUP ); m_rank_sizer->Add( m_rank0_radio, 0, wxALL, 5 ); m_rank0_img = new wxStaticBitmap( m_panel, wxID_ANY, wxBitmap( rank0_xpm ), wxDefaultPosition, wxSize( 16, 16 ), 0 ); m_rank_sizer->Add( m_rank0_img, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxALL, 5 ); m_rank1_radio = new wxRadioButton( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); m_rank_sizer->Add( m_rank1_radio, 0, wxALL, 5 ); m_rank1_img = new wxStaticBitmap( m_panel, wxID_ANY, wxBitmap( rank1_xpm ), wxDefaultPosition, wxSize( 16, 16 ), 0 ); m_rank_sizer->Add( m_rank1_img, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_CENTER_HORIZONTAL | wxALL, 2 ); m_rank2_radio = new wxRadioButton( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); m_rank_sizer->Add( m_rank2_radio, 0, wxALL, 5 ); m_rank2_img = new wxStaticBitmap( m_panel, wxID_ANY, wxBitmap( rank2_xpm ), wxDefaultPosition, wxSize( 16, 16 ), 0 ); m_rank_sizer->Add( m_rank2_img, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxALL, 2 ); m_rank3_radio = new wxRadioButton( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); m_rank_sizer->Add( m_rank3_radio, 0, wxALL, 5 ); m_rank3_img = new wxStaticBitmap( m_panel, wxID_ANY, wxBitmap( rank3_xpm ), wxDefaultPosition, wxSize( 16, 16 ), 0 ); m_rank_sizer->Add( m_rank3_img, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxALL, 2 ); m_rank4_radio = new wxRadioButton( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); m_rank_sizer->Add( m_rank4_radio, 0, wxALL, 5 ); m_rank4_img = new wxStaticBitmap( m_panel, wxID_ANY, wxBitmap( rank4_xpm ), wxDefaultPosition, wxSize( 16, 16 ), 0 ); m_rank_sizer->Add( m_rank4_img, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | wxALL, 2 ); m_rank5_radio = new wxRadioButton( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); m_rank_sizer->Add( m_rank5_radio, 0, wxALL, 5 ); m_rank5_img = new wxStaticBitmap( m_panel, wxID_ANY, wxBitmap( rank5_xpm ), wxDefaultPosition, wxSize( 16, 16 ), 0 ); m_rank_sizer->Add( m_rank5_img, 0, wxALL | wxALIGN_CENTER_VERTICAL | wxALIGN_CENTER_HORIZONTAL, 5 ); m_rank6_radio = new wxRadioButton( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); m_rank_sizer->Add( m_rank6_radio, 0, wxALL, 5 ); m_rank6_img = new wxStaticBitmap( m_panel, wxID_ANY, wxBitmap( rank6_xpm ), wxDefaultPosition, wxSize( 16, 16 ), 0 ); m_rank_sizer->Add( m_rank6_img, 0, wxALL, 5 ); m_rank7_radio = new wxRadioButton( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); m_rank_sizer->Add( m_rank7_radio, 0, wxALL, 5 ); m_rank7_img = new wxStaticBitmap( m_panel, wxID_ANY, wxBitmap( rank7_xpm ), wxDefaultPosition, wxSize( 16, 16 ), 0 ); m_rank_sizer->Add( m_rank7_img, 0, wxALL, 5 ); m_rank_box->Add( m_rank_sizer, 1, wxEXPAND, 5 ); m_pl_nat_sizer->Add( m_rank_box, 1, wxALL | wxEXPAND, 5 ); m_main_sizer->Add( m_pl_nat_sizer, 0, wxEXPAND, 5 ); m_main_sizer->Add( 0, 0, 1, wxEXPAND, 0 ); m_buttons_sep = new wxStaticLine( m_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); m_main_sizer->Add( m_buttons_sep, 0, wxALL | wxEXPAND, 2 ); wxBoxSizer* m_buttons_sizer; m_buttons_sizer = new wxBoxSizer( wxHORIZONTAL ); m_cancel_btn = new wxButton( m_panel, HOST_CANCEL, _( "Cancel" ), wxDefaultPosition, wxDefaultSize, 0 ); m_buttons_sizer->Add( 0, 0, 1, wxEXPAND, 0 ); m_buttons_sizer->Add( m_cancel_btn, 0, wxALL, 5 ); m_host_btn = new wxButton( m_panel, HOST_OK, _( "Host" ), wxDefaultPosition, wxDefaultSize, 0 ); m_host_btn->SetToolTip( TE( _( "Start hosting the battle." ) ) ); m_buttons_sizer->Add( m_host_btn, 0, wxALL, 5 ); m_main_sizer->Add( m_buttons_sizer, 0, wxEXPAND, 5 ); m_panel->SetSizer( m_main_sizer ); all_sizer->Add( m_panel, 1, wxEXPAND, 0 ); this->SetSizer( all_sizer ); m_panel->SetScrollRate( SCROLL_RATE, SCROLL_RATE ); this->Layout(); m_host_btn->SetFocus(); ReloadModList(); }
void RunHostBattleDialog( wxWindow* parent ) { HostBattleDialog dlg( parent ); if ( dlg.ShowModal() == wxID_OK ) { BattleOptions bo; bo.description = sett().GetLastHostDescription(); bo.port = sett().GetLastHostPort(); bo.nattype = NatType( sett().GetLastHostNATSetting() ); if ( bo.nattype == NAT_None && sett().GetTestHostPort() ) { switch ( ui().TestHostPort( bo.port ) ) { case Server::porttest_pass : break; // success case Server::porttest_pass_WX26 : wxLogWarning( _T( "hosting port %d: test aborted (wx26)" ), bo.port ); customMessageBoxNoModal( SL_MAIN_ICON, wxFormat( _( "Your using wxWidgets prior to version 2.8,\n " "port testing is not supported.\n Hosting may or may not work." ) ) % bo.port ); sett().SetTestHostPort( false ); // no need to have it checked anymore break; case Server::porttest_unreachable : wxLogWarning( _T( "hosting port %d: test undetermined" ), bo.port ); customMessageBoxNoModal( SL_MAIN_ICON, wxFormat( _( "The server used for testing your port %d " "is unreachable. \nHosting may or may not work with this setting." ) ) % bo.port ); break; //inconclusive test shouldn't hinder hosting imo (koshi) case Server::porttest_timeout : case Server::porttest_socketNotOk : case Server::porttest_socketError : wxLogWarning( _T( "hosting port %d: test unsuccessful, closing battle" ), bo.port ); customMessageBoxNoModal( SL_MAIN_ICON, wxFormat( _( "Battle not started because the port you selected (%d) " "is unable to-f /home/kosh/.springlobby/testing.conf recieve incoming packets\n checks your router & firewall configuration again or change port " "in the dialog.\n\nIf everything else fails, enable the Hole Punching NAT Traversal\n " "option in the hosting settings." ) ) % bo.port ); return; default: wxLogWarning( _T( "unknonw port forward test result" ) ); break; } if ( !ui().TestHostPort( bo.port ) ) { wxLogWarning( _T( "hosting port %d: test unsuccessful, closing battle" ), bo.port ); customMessageBoxNoModal( SL_MAIN_ICON, wxFormat( _( "Battle not started because the port you selected (%d) " "is unable to recieve incoming packets\n checks your router & firewall configuration " "again or change port in the dialog.\n\nIf everything else fails, enable the Hole " "Punching NAT Traversal\n option in the hosting settings." ) ) % bo.port ); return; } } // Get selected mod from unitsync. LSL::UnitsyncMod mod; try { mod = LSL::usync().GetMod(STD_STRING(sett().GetLastHostMod())); bo.modhash = TowxString(mod.hash); bo.modname = TowxString(mod.name); } catch ( ... ) { wxLogWarning( _T( "can't host: game not found" ) ); customMessageBoxNoModal( SL_MAIN_ICON, _( "Battle not started beacuse the game you selected could not be found. " ), _( "Error starting battle." ), wxOK ); return; } LSL::UnitsyncMap map; const auto mname = STD_STRING(sett().GetLastHostMap()); try { if ( LSL::usync().MapExists( mname ) ) map = LSL::usync().GetMap( mname ); else if ( LSL::usync().GetNumMaps() <= 0 ) { wxLogWarning( _T( "no maps found" ) ); customMessageBoxNoModal( SL_MAIN_ICON, _( "Couldn't find any maps in your spring installation. This could happen when you set the Spring settings incorrectly." ), _( "No maps found" ), wxOK ); return; } else { map = LSL::usync().GetMap( 0 ); } } catch ( ... ) { wxLogWarning( _T( "no maps found" ) ); customMessageBoxNoModal( SL_MAIN_ICON, _( "Couldn't find any maps in your spring installation. This could happen when you set the Spring settings incorrectly." ), _( "No maps found" ), wxOK ); return; } bo.maphash = TowxString(map.hash); bo.mapname = TowxString(map.name); bo.rankneeded = sett().GetLastRankLimit(); bo.maxplayers = sett().GetLastHostPlayerNum(); bo.userelayhost = sett().GetLastHostRelayedMode(); if ( bo.userelayhost ) bo.nattype = NAT_None; bo.relayhost = sett().GetLastRelayedHost(); bo.engineName = _T("spring"); bo.engineVersion = TowxString(LSL::usync().GetSpringVersion()); serverSelector().GetServer().HostBattle( bo, sett().GetLastHostPassword() ); } }
void ChatPanelMenu::OnUserMenuModeratorUnmute(wxCommandEvent& /*unused*/) { serverSelector().GetServer().ModeratorUnmute(m_chatpanel->m_channel->GetName(), m_chatpanel->GetSelectedUser()->GetNick()); }