adding a way to have a network kart selection screen inheriting the normal kart_selection_screen
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/hilnius@13363 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
@@ -223,9 +223,10 @@ src/states_screens/help_screen_3.cpp
|
||||
src/states_screens/help_screen_4.cpp
|
||||
src/states_screens/kart_selection.cpp
|
||||
src/states_screens/main_menu_screen.cpp
|
||||
src/states_screens/network_kart_selection.cpp
|
||||
src/states_screens/networking_lobby.cpp
|
||||
src/states_screens/networking_lobby_settings.cpp
|
||||
src/states_screens/network_kart_selection.cpp
|
||||
src/states_screens/offline_kart_selection.cpp
|
||||
src/states_screens/online_screen.cpp
|
||||
src/states_screens/options_screen_audio.cpp
|
||||
src/states_screens/options_screen_input2.cpp
|
||||
@@ -516,9 +517,10 @@ src/states_screens/help_screen_3.hpp
|
||||
src/states_screens/help_screen_4.hpp
|
||||
src/states_screens/kart_selection.hpp
|
||||
src/states_screens/main_menu_screen.hpp
|
||||
src/states_screens/network_kart_selection.hpp
|
||||
src/states_screens/networking_lobby.hpp
|
||||
src/states_screens/networking_lobby_settings.hpp
|
||||
src/states_screens/network_kart_selection.hpp
|
||||
src/states_screens/offline_kart_selection.hpp
|
||||
src/states_screens/online_screen.hpp
|
||||
src/states_screens/options_screen_audio.hpp
|
||||
src/states_screens/options_screen_input2.hpp
|
||||
|
||||
@@ -61,6 +61,7 @@ namespace GUIEngine
|
||||
template<typename SCREEN>
|
||||
class ScreenSingleton
|
||||
{
|
||||
protected:
|
||||
static SCREEN* singleton;
|
||||
|
||||
public:
|
||||
|
||||
@@ -164,12 +164,12 @@ void InputManager::handleStaticAction(int key, int value)
|
||||
if (UserConfigParams::m_artist_debug_mode && world)
|
||||
{
|
||||
AbstractKart* kart = world->getLocalPlayerKart(0);
|
||||
|
||||
|
||||
if (control_is_pressed)
|
||||
kart->setPowerup(PowerupManager::POWERUP_SWATTER, 10000);
|
||||
else
|
||||
kart->setPowerup(PowerupManager::POWERUP_RUBBERBALL, 10000);
|
||||
|
||||
|
||||
#ifdef FORCE_RESCUE_ON_FIRST_KART
|
||||
// Can be useful for debugging places where the AI gets into
|
||||
// a rescue loop: rescue, drive, crash, rescue to same place
|
||||
@@ -181,7 +181,7 @@ void InputManager::handleStaticAction(int key, int value)
|
||||
if (UserConfigParams::m_artist_debug_mode && world)
|
||||
{
|
||||
AbstractKart* kart = world->getLocalPlayerKart(0);
|
||||
|
||||
|
||||
kart->setPowerup(PowerupManager::POWERUP_PLUNGER, 10000);
|
||||
}
|
||||
break;
|
||||
@@ -556,7 +556,7 @@ void InputManager::dispatchInput(Input::InputType type, int deviceID,
|
||||
action == PA_MENU_CANCEL ) )
|
||||
{
|
||||
// returns true if the event was handled
|
||||
if (KartSelectionScreen::getInstance()->playerQuit( player ))
|
||||
if (KartSelectionScreen::getRunningInstance()->playerQuit( player ))
|
||||
{
|
||||
return; // we're done here
|
||||
}
|
||||
@@ -591,7 +591,7 @@ void InputManager::dispatchInput(Input::InputType type, int deviceID,
|
||||
|
||||
if (device != NULL)
|
||||
{
|
||||
KartSelectionScreen::getInstance()->playerJoin(device,
|
||||
KartSelectionScreen::getRunningInstance()->playerJoin(device,
|
||||
false );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#include "physics/physics.hpp"
|
||||
#include "states_screens/credits.hpp"
|
||||
#include "states_screens/cutscene_gui.hpp"
|
||||
#include "states_screens/kart_selection.hpp"
|
||||
#include "states_screens/offline_kart_selection.hpp"
|
||||
#include "states_screens/main_menu_screen.hpp"
|
||||
#include "tracks/track.hpp"
|
||||
#include "tracks/track_object.hpp"
|
||||
@@ -384,7 +384,7 @@ void CutsceneWorld::enterRaceOverState()
|
||||
|
||||
slot->setFirstTime(false);
|
||||
unlock_manager->save();
|
||||
KartSelectionScreen* s = KartSelectionScreen::getInstance();
|
||||
KartSelectionScreen* s = OfflineKartSelectionScreen::getInstance();
|
||||
s->setMultiplayer(false);
|
||||
s->setGoToOverworldNext();
|
||||
StateManager::get()->pushScreen( s );
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
#include "modes/overworld.hpp"
|
||||
#include "physics/physics.hpp"
|
||||
#include "states_screens/dialogs/select_challenge.hpp"
|
||||
#include "states_screens/kart_selection.hpp"
|
||||
#include "states_screens/offline_kart_selection.hpp"
|
||||
#include "states_screens/race_gui_overworld.hpp"
|
||||
#include "tracks/track.hpp"
|
||||
|
||||
@@ -128,7 +128,7 @@ void OverWorld::update(float dt)
|
||||
m_return_to_garage = false;
|
||||
delayedSelfDestruct();
|
||||
race_manager->exitRace(false);
|
||||
KartSelectionScreen* s = KartSelectionScreen::getInstance();
|
||||
KartSelectionScreen* s = OfflineKartSelectionScreen::getInstance();
|
||||
s->setMultiplayer(false);
|
||||
s->setFromOverworld(true);
|
||||
StateManager::get()->resetAndGoToScreen(s);
|
||||
|
||||
@@ -119,9 +119,11 @@ void ClientLobbyRoomProtocol::update()
|
||||
case CONNECTED:
|
||||
break;
|
||||
case KART_SELECTION:
|
||||
StateManager::get()->pushScreen(NetworkKartSelectionScreen::getInstance());
|
||||
{
|
||||
NetworkKartSelectionScreen* screen = NetworkKartSelectionScreen::getInstance();
|
||||
StateManager::get()->pushScreen(screen);
|
||||
m_state = SELECTING_KARTS;
|
||||
break;
|
||||
} break;
|
||||
case SELECTING_KARTS:
|
||||
break;
|
||||
case PLAYING:
|
||||
|
||||
@@ -58,8 +58,8 @@ static const char ID_DONT_USE[] = "x";
|
||||
// Use '/' as special character to avoid that someone creates
|
||||
// a kart called 'locked'
|
||||
static const char ID_LOCKED[] = "locked/";
|
||||
|
||||
DEFINE_SCREEN_SINGLETON( KartSelectionScreen );
|
||||
KartSelectionScreen* KartSelectionScreen::m_instance_ptr = NULL;
|
||||
//DEFINE_SCREEN_SINGLETON( KartSelectionScreen );
|
||||
|
||||
class PlayerKartWidget;
|
||||
|
||||
@@ -490,7 +490,7 @@ public:
|
||||
{
|
||||
assert(m_magic_number == 0x33445566);
|
||||
|
||||
assert(KartSelectionScreen::getInstance()
|
||||
assert(KartSelectionScreen::getRunningInstance()
|
||||
->m_kart_widgets.contains(this));
|
||||
bool mineInList = false;
|
||||
for (int p=0; p<StateManager::get()->activePlayerCount(); p++)
|
||||
@@ -835,7 +835,7 @@ public:
|
||||
/** \brief Event callback from ISpinnerConfirmListener */
|
||||
virtual EventPropagation onSpinnerConfirmed()
|
||||
{
|
||||
KartSelectionScreen::getInstance()->playerConfirm(m_playerID);
|
||||
KartSelectionScreen::getRunningInstance()->playerConfirm(m_playerID);
|
||||
return EVENT_BLOCK;
|
||||
} // onSpinnerConfirmed
|
||||
}; // PlayerKartWidget
|
||||
@@ -988,6 +988,13 @@ KartSelectionScreen::KartSelectionScreen() : Screen("karts.stkgui")
|
||||
m_go_to_overworld_next = false;
|
||||
} // KartSelectionScreen
|
||||
|
||||
// ============================================================================
|
||||
|
||||
KartSelectionScreen* KartSelectionScreen::getRunningInstance()
|
||||
{
|
||||
return m_instance_ptr;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
void KartSelectionScreen::loadedFromFile()
|
||||
|
||||
@@ -33,8 +33,7 @@ class KartHoverListener;
|
||||
* \brief screen where players can choose their kart
|
||||
* \ingroup states_screens
|
||||
*/
|
||||
class KartSelectionScreen : public GUIEngine::Screen,
|
||||
public GUIEngine::ScreenSingleton<KartSelectionScreen>
|
||||
class KartSelectionScreen : public GUIEngine::Screen
|
||||
{
|
||||
friend class KartHoverListener;
|
||||
friend class PlayerNameSpinner;
|
||||
@@ -92,7 +91,11 @@ protected:
|
||||
|
||||
void playerConfirm(const int playerID);
|
||||
|
||||
/** Stores a pointer to the current selection screen */
|
||||
static KartSelectionScreen* m_instance_ptr;
|
||||
public:
|
||||
/** Returns the current instance */
|
||||
static KartSelectionScreen* getRunningInstance();
|
||||
|
||||
/** \brief implement callback from parent class GUIEngine::Screen */
|
||||
virtual void loadedFromFile() OVERRIDE;
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
#include "states_screens/addons_screen.hpp"
|
||||
#include "states_screens/credits.hpp"
|
||||
#include "states_screens/help_screen_1.hpp"
|
||||
#include "states_screens/kart_selection.hpp"
|
||||
#include "states_screens/offline_kart_selection.hpp"
|
||||
#include "states_screens/options_screen_video.hpp"
|
||||
#include "states_screens/state_manager.hpp"
|
||||
|
||||
@@ -271,14 +271,14 @@ void MainMenuScreen::eventCallback(Widget* widget, const std::string& name,
|
||||
#endif
|
||||
if (selection == "new")
|
||||
{
|
||||
KartSelectionScreen* s = KartSelectionScreen::getInstance();
|
||||
KartSelectionScreen* s = OfflineKartSelectionScreen::getInstance();
|
||||
s->setMultiplayer(false);
|
||||
s->setFromOverworld(false);
|
||||
StateManager::get()->pushScreen( s );
|
||||
}
|
||||
else if (selection == "multiplayer")
|
||||
{
|
||||
KartSelectionScreen* s = KartSelectionScreen::getInstance();
|
||||
KartSelectionScreen* s = OfflineKartSelectionScreen::getInstance();
|
||||
s->setMultiplayer(true);
|
||||
s->setFromOverworld(false);
|
||||
StateManager::get()->pushScreen( s );
|
||||
@@ -358,7 +358,7 @@ void MainMenuScreen::eventCallback(Widget* widget, const std::string& name,
|
||||
const std::string default_kart = UserConfigParams::m_default_kart;
|
||||
if (slot->isLocked(default_kart))
|
||||
{
|
||||
KartSelectionScreen *next = KartSelectionScreen::getInstance();
|
||||
KartSelectionScreen *next = OfflineKartSelectionScreen::getInstance();
|
||||
next->setGoToOverworldNext();
|
||||
next->setMultiplayer(false);
|
||||
StateManager::get()->resetAndGoToScreen(next);
|
||||
|
||||
@@ -6,6 +6,7 @@ DEFINE_SCREEN_SINGLETON( NetworkKartSelectionScreen );
|
||||
|
||||
NetworkKartSelectionScreen::NetworkKartSelectionScreen() : KartSelectionScreen()
|
||||
{
|
||||
KartSelectionScreen::m_instance_ptr = this;
|
||||
}
|
||||
|
||||
NetworkKartSelectionScreen::~NetworkKartSelectionScreen()
|
||||
|
||||
@@ -2,15 +2,17 @@
|
||||
#define NETWORK_KART_SELECTION_HPP
|
||||
|
||||
#include "states_screens/kart_selection.hpp"
|
||||
#include "guiengine/screen.hpp"
|
||||
|
||||
class NetworkKartSelectionScreen : public KartSelectionScreen
|
||||
class NetworkKartSelectionScreen : public KartSelectionScreen, public GUIEngine::ScreenSingleton<NetworkKartSelectionScreen>
|
||||
{
|
||||
friend class GUIEngine::ScreenSingleton<NetworkKartSelectionScreen>;
|
||||
protected:
|
||||
|
||||
NetworkKartSelectionScreen();
|
||||
virtual ~NetworkKartSelectionScreen();
|
||||
|
||||
public:
|
||||
static bool isRunning() { return singleton!=NULL; }
|
||||
virtual void init() OVERRIDE;
|
||||
virtual void eventCallback(GUIEngine::Widget* widget, const std::string& name,
|
||||
const int playerID) OVERRIDE;
|
||||
|
||||
Reference in New Issue
Block a user