void BattleRoomTab::OnUnitsyncReloaded( GlobalEvents::GlobalEventData /*data*/ ) { if ( !m_battle ) return; //m_minimap->UpdateMinimap();//should happen automagically now ReloadMaplist(); UpdateBattleInfo(); RegenerateOptionsList(); m_battle->SendMyBattleStatus(); // This should reset sync status. }
void SinglePlayerTab::OnUnitsyncReloaded(wxCommandEvent& /*data*/) { try { ReloadMaplist(); ReloadModlist(); ReloadEngineList(); UpdateMinimap(); } catch (...) { slLogDebugFunc(""); wxLogError(_T("unitsync reload sink failed")); } }
void BattleRoomTab::OnUnitsyncReloaded(wxCommandEvent& /*data*/) { if (!m_battle) return; //m_minimap->UpdateMinimap();//should happen automagically now RegenerateOptionsList(); ReloadMaplist(); UpdateBattleInfo(); const size_t count = m_battle->GetNumUsers(); for (size_t i = 0; i < count; i++) { UpdateUser(m_battle->GetUser(i)); } m_battle->SendMyBattleStatus(); // This should reset sync status. ui().DownloadArchives(*m_battle); }
void BattleMapTab::SetBattle( Battle* battle ) { m_battle = battle; m_start_radios->Enable( m_battle ); m_minimap->Enable( m_battle ); m_map_combo->Enable( m_battle ); m_browse_btn->Enable( m_battle ); m_map_opts_list->Enable( m_battle ); m_minimap->SetBattle( m_battle ); if ( m_battle ) { m_minimap->SetReadOnly( !m_battle->IsFounderMe() ); m_start_radios->Enable( m_battle->IsFounderMe() ); ReloadMaplist(); Update(); } }
void BattleRoomTab::SetBattle(IBattle* battle) { m_battle = battle; m_team_sel->Enable(m_battle); m_ally_sel->Enable(m_battle); m_color_sel->Enable(m_battle); m_side_sel->Enable(m_battle); m_options_preset_sel->Enable(m_battle); m_minimap->Enable(m_battle); m_player_panel->Enable(m_battle); m_map_combo->Enable(m_battle); m_players->Enable(m_battle); m_leave_btn->Enable(m_battle); m_start_btn->Enable(m_battle); m_addbot_btn->Enable(m_battle); m_manage_players_btn->Enable(m_battle); m_save_btn->Enable(m_battle); m_delete_btn->Enable(m_battle); m_default_btn->Enable(m_battle); m_browse_map_btn->Enable(m_battle); m_ready_chk->Enable(m_battle); m_spec_chk->Enable(m_battle); m_lock_chk->Enable(m_battle); m_autolock_chk->Enable(m_battle); m_opts_list->Enable(m_battle); m_minimap->SetBattle(m_battle); m_players->SetBattle(m_battle); m_chat->SetBattle(m_battle); m_players->Clear(); if (m_battle) { RegenerateOptionsList(); m_options_preset_sel->SetStringSelection(sett().GetModDefaultPresetName(TowxString(m_battle->GetHostModName()))); m_color_sel->SetColor(lslTowxColour(m_battle->GetMe().BattleStatus().colour)); for (UserList::user_map_t::size_type i = 0; i < m_battle->GetNumUsers(); i++) { m_players->AddUser(m_battle->GetUser(i)); } if (!m_battle->IsFounderMe()) { m_options_preset_sel->Disable(); m_save_btn->Disable(); m_delete_btn->Disable(); m_default_btn->Disable(); m_manage_players_btn->Disable(); m_lock_chk->Disable(); m_autolock_chk->Disable(); } m_host_new_btn->Show(false); ReloadMaplist(); UpdateBattleInfo(wxString::Format(_T( "%d_mapname" ), LSL::Enum::PrivateOptions)); UpdateBattleInfo(); UpdateStatsLabels(); } else { m_host_new_btn->Show(true); } }
SinglePlayerTab::SinglePlayerTab(wxWindow* parent, MainSinglePlayerTab& msptab): wxScrolledWindow( parent, -1 ), m_battle(msptab) { GetAui().manager->AddPane( this, wxLEFT, _T("singleplayertab") ); wxBoxSizer* m_main_sizer = new wxBoxSizer( wxVERTICAL ); wxBoxSizer* m_mapabour_sizer = new wxBoxSizer( wxHORIZONTAL ); wxBoxSizer* m_map_sizer = new wxBoxSizer( wxHORIZONTAL ); // m_map_sizer->SetMinSize( wxSize( 352, -1 ) ); m_minimap = new MapCtrl( this, 100, &m_battle, false, false, true, true ); m_minimap->SetToolTip( TE(_("You can drag the sun/bot icon around to define start position.\n " "Hover over the icon for a popup that lets you change side, ally and bonus." )) ); m_map_sizer->Add( m_minimap, 1, wxALL | wxEXPAND, 2 ); m_mapabour_sizer->Add(m_map_sizer, 1, wxEXPAND, 2 ); //map description and parametrs like in battletab wxBoxSizer* m_opts_sizer = new wxBoxSizer( wxVERTICAL ); m_map_opts_list = new wxListCtrl( this, wxID_ANY, wxDefaultPosition, wxSize( 150, 160 ), wxLC_NO_HEADER | wxLC_REPORT ); m_map_opts_list->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); m_map_opts_list->SetFont( wxFont( 8, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_LIGHT ) ); wxListItem col; col.SetText( _( "Option" ) ); m_map_opts_list->InsertColumn( 0, col ); col.SetText( _( "Value" ) ); m_map_opts_list->InsertColumn( 1, col ); m_map_opts_list->SetColumnWidth( 0, 90 ); m_map_opts_list->SetColumnWidth( 1, 50 ); m_map_opts_list->InsertItem( 0, _( "Size" ) ); m_map_opts_list->InsertItem( 1, _( "Windspeed" ) ); m_map_opts_list->InsertItem( 2, _( "Tidal strength" ) ); m_map_opts_list->InsertItem( 3, _( "Gravity" ) ); m_map_opts_list->InsertItem( 4, _( "Extractor radius" ) ); m_map_opts_list->InsertItem( 5, _( "Max metal" ) ); m_opts_sizer->Add( m_map_opts_list, 0, wxALL, 2 ); m_map_desc = new wxStaticText(this,-1,wxEmptyString); m_map_desc->Wrap(160); m_opts_sizer->Add( m_map_desc, 0, wxALL, 2 ); m_mapabour_sizer->Add( m_opts_sizer, 0, wxALL | wxEXPAND, 2 ); m_main_sizer->Add( m_mapabour_sizer, 1, wxEXPAND, 5 ); wxBoxSizer* m_ctrl_sizer = new wxBoxSizer( wxHORIZONTAL ); m_map_lbl = new wxStaticText( this, -1, _("Map:") ); m_ctrl_sizer->Add( m_map_lbl, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); m_map_pick = new wxChoice( this, SP_MAP_PICK ); m_ctrl_sizer->Add( m_map_pick, 1, wxALL, 5 ); m_select_btn = new wxButton( this, SP_BROWSE_MAP, _T("..."), wxDefaultPosition, wxSize(CONTROL_HEIGHT, CONTROL_HEIGHT), wxBU_EXACTFIT ); m_ctrl_sizer->Add( m_select_btn, 0, wxBOTTOM|wxRIGHT|wxTOP, 5 ); m_mod_lbl = new wxStaticText( this, -1, _("Game:") ); m_ctrl_sizer->Add( m_mod_lbl, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); m_mod_pick = new wxChoice( this, SP_MOD_PICK ); m_ctrl_sizer->Add( m_mod_pick, 1, wxALL, 5 ); // m_ctrl_sizer->Add( 0, 0, 1, wxEXPAND, 0 ); m_addbot_btn = new wxButton( this, SP_ADD_BOT, _("Add bot..."), wxDefaultPosition, wxSize(80, CONTROL_HEIGHT), 0 ); m_ctrl_sizer->Add( m_addbot_btn, 0, wxALL, 5 ); m_main_sizer->Add( m_ctrl_sizer, 0, wxEXPAND, 5 ); m_buttons_sep = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); m_main_sizer->Add( m_buttons_sep, 0, wxLEFT|wxRIGHT|wxEXPAND, 5 ); wxBoxSizer* m_buttons_sizer = new wxBoxSizer( wxHORIZONTAL ); // see http://projects.springlobby.info/issues/show/649 // m_reset_btn = new wxButton( this, SP_RESET, _("Reset"), wxDefaultPosition, wxSize(80, CONTROL_HEIGHT), 0 ); // m_buttons_sizer->Add( m_reset_btn, 0, wxALL, 5 ); m_buttons_sizer->Add( 0, 0, 1, wxEXPAND, 0 ); m_color_btn = new ColorButton( this, SP_COLOUR, sett().GetBattleLastColour(), wxDefaultPosition, wxSize(30, CONTROL_HEIGHT) ); m_buttons_sizer->Add( m_color_btn, 0, wxALIGN_CENTER_VERTICAL|wxALL, 0 ); m_spectator_check = new wxCheckBox( this, SP_SPECTATE, _("Spectate only") ); m_buttons_sizer->Add( m_spectator_check, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); m_random_check = new wxCheckBox( this, SP_RANDOM, _("Random start positions") ); m_buttons_sizer->Add( m_random_check, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); m_start_btn = new wxButton( this, SP_START, _("Start"), wxDefaultPosition, wxSize(80, CONTROL_HEIGHT), 0 ); m_buttons_sizer->Add( m_start_btn, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); m_main_sizer->Add( m_buttons_sizer, 0, wxEXPAND, 5 ); SetScrollRate( SCROLL_RATE, SCROLL_RATE ); this->SetSizer( m_main_sizer ); this->Layout(); ReloadMaplist(); ReloadModlist(); ConnectGlobalEvent(this, GlobalEvent::OnUnitsyncReloaded, wxObjectEventFunction(&SinglePlayerTab::OnUnitsyncReloaded)); }
void BattleRoomTab::SetBattle( Battle* battle ) { m_battle = battle; m_team_sel->Enable(m_battle); m_ally_sel->Enable(m_battle); m_color_sel->Enable(m_battle); m_side_sel->Enable(m_battle); m_options_preset_sel->Enable(m_battle); m_minimap->Enable(m_battle); m_player_panel->Enable(m_battle); m_map_combo->Enable(m_battle); m_players->Enable(m_battle); m_leave_btn->Enable(m_battle); m_start_btn->Enable(m_battle); m_addbot_btn->Enable(m_battle); m_manage_players_btn->Enable(m_battle); m_save_btn->Enable(m_battle); m_delete_btn->Enable(m_battle); m_default_btn->Enable(m_battle); m_browse_map_btn->Enable(m_battle); m_ready_chk->Enable(m_battle); m_spec_chk->Enable(m_battle); m_lock_chk->Enable(m_battle); m_autolock_chk->Enable(m_battle); m_opts_list->Enable(m_battle); m_minimap->SetBattle( m_battle ); m_players->SetBattle( m_battle ); m_chat->SetBattle( m_battle ); m_players->Clear(); m_side_sel->Clear(); if ( m_battle ) { m_options_preset_sel->SetStringSelection( sett().GetModDefaultPresetName( m_battle->GetHostModName() ) ); m_color_sel->SetColor( m_battle->GetMe().BattleStatus().colour ); try { wxArrayString sides = usync().GetSides( m_battle->GetHostModName() ); for ( unsigned int i = 0; i < sides.GetCount(); i++ ) { m_side_sel->Append( sides[i], icons().GetBitmap( icons().GetSideIcon( m_battle->GetHostModName(), i ) ) ); } } catch ( ... ) {} for ( UserList::user_map_t::size_type i = 0; i < m_battle->GetNumUsers(); i++ ) { m_players->AddUser( m_battle->GetUser( i ) ); #ifdef __WXMAC__ UpdateUser( m_battle->GetUser( i ) ); #endif } if ( !m_battle->IsFounderMe() ) { m_options_preset_sel->Disable(); m_save_btn->Disable(); m_delete_btn->Disable(); m_default_btn->Disable(); m_manage_players_btn->Disable(); m_lock_chk->Disable(); m_autolock_chk->Disable(); } m_host_new_btn->Show( false ); RegenerateOptionsList(); ReloadMaplist(); UpdateBattleInfo( wxString::Format( _T( "%d_mapname" ), OptionsWrapper::PrivateOptions ) ); UpdateBattleInfo(); UpdateStatsLabels(); } else { m_host_new_btn->Show( true ); } }
SinglePlayerTab::SinglePlayerTab(wxWindow* parent, MainSinglePlayerTab& msptab) : wxPanel(parent, -1) , m_battle(msptab) { GetAui().manager->AddPane(this, wxLEFT, _T("singleplayertab")); m_main_sizer = new wxBoxSizer(wxVERTICAL); wxBoxSizer* m_mapabour_sizer = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer* m_map_sizer = new wxBoxSizer(wxHORIZONTAL); // m_map_sizer->SetMinSize( wxSize( 352, -1 ) ); // empty panel to replace minimap m_nominimap = new wxWindow(this, -1, wxDefaultPosition, wxSize(100, 100), wxSIMPLE_BORDER | wxFULL_REPAINT_ON_RESIZE); m_nominimap->SetToolTip(_("No Unitsync configured.")); m_nominimap->SetBackgroundStyle(wxBG_STYLE_CUSTOM); m_nominimap->SetBackgroundColour(*wxLIGHT_GREY); m_nominimap->Hide(); m_map_sizer->Add(m_nominimap, 1, wxALL | wxEXPAND, 2); // Regular minimap m_minimap = new MapCtrl(this, 100, &m_battle, false, true, true); m_minimap->SetToolTip(_("You can drag the sun/bot icon around to define start position.\n " "Hover over the icon for a popup that lets you change side, ally and bonus.")); m_map_sizer->Add(m_minimap, 1, wxALL | wxEXPAND, 2); m_mapabour_sizer->Add(m_map_sizer, 1, wxEXPAND, 2); //map description and parametrs like in battletab wxBoxSizer* m_opts_sizer = new wxBoxSizer(wxVERTICAL); m_map_opts_list = new wxListCtrl(this, wxID_ANY, wxDefaultPosition, wxSize(150, 160), wxLC_NO_HEADER | wxLC_REPORT); m_map_opts_list->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE)); m_map_opts_list->SetFont(wxFont(8, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_LIGHT)); wxListItem col; col.SetText(_("Option")); m_map_opts_list->InsertColumn(0, col); col.SetText(_("Value")); m_map_opts_list->InsertColumn(1, col); m_map_opts_list->SetColumnWidth(0, 90); m_map_opts_list->SetColumnWidth(1, 50); m_map_opts_list->InsertItem(0, _("Size")); m_map_opts_list->InsertItem(1, _("Windspeed")); m_map_opts_list->InsertItem(2, _("Tidal strength")); m_map_opts_list->InsertItem(3, _("Gravity")); m_map_opts_list->InsertItem(4, _("Extractor radius")); m_map_opts_list->InsertItem(5, _("Max metal")); m_opts_sizer->Add(m_map_opts_list, 0, wxALL, 2); m_map_desc = new wxStaticText(this, -1, wxEmptyString); m_map_desc->Wrap(160); m_opts_sizer->Add(m_map_desc, 0, wxALL, 2); m_mapabour_sizer->Add(m_opts_sizer, 0, wxALL | wxEXPAND, 2); m_main_sizer->Add(m_mapabour_sizer, 1, wxEXPAND, 5); wxBoxSizer* m_ctrl_sizer = new wxBoxSizer(wxHORIZONTAL); m_map_lbl = new wxStaticText(this, -1, _("Map:")); m_ctrl_sizer->Add(m_map_lbl, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5); m_map_pick = new wxChoice(this, SP_MAP_PICK); m_ctrl_sizer->Add(m_map_pick, 1, wxALL, 5); m_select_btn = new wxButton(this, SP_BROWSE_MAP, _T("..."), wxDefaultPosition, wxSize(CONTROL_HEIGHT, CONTROL_HEIGHT), wxBU_EXACTFIT); m_ctrl_sizer->Add(m_select_btn, 0, wxBOTTOM | wxRIGHT | wxTOP, 5); m_mod_lbl = new wxStaticText(this, -1, _("Game:")); m_ctrl_sizer->Add(m_mod_lbl, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5); m_mod_pick = new wxChoice(this, SP_MOD_PICK); m_ctrl_sizer->Add(m_mod_pick, 1, wxALL, 5); m_mod_lbl = new wxStaticText(this, -1, _("Engine:")); m_ctrl_sizer->Add(m_mod_lbl, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5); m_engine_pick = new wxChoice(this, SP_ENGINE_PICK); m_engine_pick->SetToolTip(_("Select the engine version to play.")); m_ctrl_sizer->Add(m_engine_pick, 1, wxALL, 5); // m_ctrl_sizer->Add( 0, 0, 1, wxEXPAND, 0 ); m_addbot_btn = new wxButton(this, SP_ADD_BOT, _("Add bot..."), wxDefaultPosition, wxSize(80, CONTROL_HEIGHT), 0); m_ctrl_sizer->Add(m_addbot_btn, 0, wxALL, 5); m_main_sizer->Add(m_ctrl_sizer, 0, wxEXPAND, 5); m_buttons_sep = new wxStaticLine(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL); m_main_sizer->Add(m_buttons_sep, 0, wxLEFT | wxRIGHT | wxEXPAND, 5); wxBoxSizer* m_buttons_sizer = new wxBoxSizer(wxHORIZONTAL); m_buttons_sizer->Add(0, 0, 1, wxEXPAND, 0); m_color_btn = new ColorButton(this, SP_COLOUR, sett().GetBattleLastColour(), wxDefaultPosition, wxSize(30, CONTROL_HEIGHT)); m_buttons_sizer->Add(m_color_btn, 0, wxALIGN_CENTER_VERTICAL | wxALL, 0); m_spectator_check = new wxCheckBox(this, SP_SPECTATE, _("Spectate only")); m_buttons_sizer->Add(m_spectator_check, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5); m_random_check = new wxCheckBox(this, SP_RANDOM, _("Random start positions")); m_buttons_sizer->Add(m_random_check, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5); m_start_btn = new wxButton(this, SP_START, _("Start"), wxDefaultPosition, wxSize(80, CONTROL_HEIGHT), 0); m_buttons_sizer->Add(m_start_btn, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5); m_main_sizer->Add(m_buttons_sizer, 0, wxEXPAND, 5); m_battle.SetEngineName("spring"); m_battle.SetEngineVersion(SlPaths::GetCurrentUsedSpringIndex()); ReloadMaplist(); // ReloadModlist(); //Called from ReloadEngineList() too ReloadEngineList(); GlobalEventManager::Instance()->Subscribe(this, GlobalEventManager::OnUnitsyncReloaded, wxObjectEventFunction(&SinglePlayerTab::OnUnitsyncReloaded)); this->SetSizer(m_main_sizer); this->Layout(); }
void BattleMapTab::OnUnitsyncReloaded(wxCommandEvent& /*data*/) { if (!m_battle) return; ReloadMaplist(); }
void BattleMapTab::OnUnitsyncReloaded( GlobalEvents::GlobalEventData /*data*/ ) { if ( !m_battle ) return; ReloadMaplist(); }