Removed m_local_player_karts vector from world.

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@4678 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
hikerstk
2010-02-10 12:47:18 +00:00
parent ab567bc53c
commit 47a1a1dfa2
7 changed files with 53 additions and 28 deletions

View File

@@ -51,12 +51,14 @@ void ActivePlayer::setDevice(InputDevice* device)
// ----------------------------------------------------------------------------
PlayerKart* ActivePlayer::getKart()
{
const int amount = RaceManager::getWorld()->getCurrentNumLocalPlayers();
for (int p=0; p<amount; p++)
World *world = RaceManager::getWorld();
const int num_karts = world->getNumKarts();
for (int p=0; p<num_karts; p++)
{
if (RaceManager::getWorld()->getLocalPlayerKart(p)->getPlayer() == this)
Kart *kart = world->getKart(p);
if(kart->isPlayerKart() && ((PlayerKart*)kart)->getPlayer() == this)
{
return RaceManager::getWorld()->getLocalPlayerKart(p);
return (PlayerKart*)kart;
}
}

View File

@@ -853,20 +853,22 @@ void IrrDriver::update(float dt)
}
else
{
RaceGUI *rg = RaceManager::getWorld()->getRaceGUI();
for(unsigned int i=0; i<race_manager->getNumLocalPlayers(); i++)
World *world = RaceManager::getWorld();
RaceGUI *rg = world->getRaceGUI();
for(unsigned int i=0; i<world->getNumKarts(); i++)
{
PlayerKart *pk=RaceManager::getWorld()->getLocalPlayerKart(i);
pk->activateCamera();
m_scene_manager->drawAll();
}
Kart *kart=world->getKart(i);
if(kart->getCamera())
{
kart->activateCamera();
m_scene_manager->drawAll();
} // if kart->Camera
} // for i<world->getNumKarts()
// To draw the race gui we set the viewport back to the full
// screen.
m_video_driver->setViewPort(core::recti(0, 0,
UserConfigParams::m_width,
UserConfigParams::m_height));
World *world = RaceManager::getWorld();
for(unsigned int i=0; i<world->getNumKarts(); i++)
{
Kart *kart = world->getKart(i);

View File

@@ -90,7 +90,7 @@ void InputManager::handleStaticAction(int key, int value)
#ifdef DEBUG
static bool control_is_pressed=false;
#endif
World *world=RaceManager::getWorld();
switch (key)
{
#ifdef DEBUG
@@ -102,7 +102,7 @@ void InputManager::handleStaticAction(int key, int value)
case KEY_F1:
if (race_manager->getNumPlayers() ==1 )
{
Kart* kart = RaceManager::getWorld()->getLocalPlayerKart(0);
Kart* kart = world->getLocalPlayerKart(0);
kart->setPowerup(POWERUP_BUBBLEGUM, 10000);
projectile_manager->newExplosion(Vec3(0, 8, 0.5));
}
@@ -110,21 +110,21 @@ void InputManager::handleStaticAction(int key, int value)
case KEY_F2:
if (race_manager->getNumPlayers() ==1 )
{
Kart* kart = RaceManager::getPlayerKart(0);
Kart* kart = world->getLocalPlayerKart(0);
kart->setPowerup(POWERUP_PLUNGER, 10000);
}
break;
case KEY_F3:
if (race_manager->getNumPlayers() ==1 )
{
Kart* kart = RaceManager::getPlayerKart(0);
Kart* kart = world->getLocalPlayerKart(0);
kart->setPowerup(POWERUP_CAKE, 10000);
}
break;
case KEY_F4:
if (race_manager->getNumPlayers() ==1 )
{
Kart* kart = RaceManager::getPlayerKart(0);
Kart* kart = world->getLocalPlayerKart(0);
kart->setPowerup(POWERUP_SWITCH, 10000);
}
break;
@@ -138,7 +138,7 @@ void InputManager::handleStaticAction(int key, int value)
case KEY_F5:
if (race_manager->getNumPlayers() ==1 )
{
Kart* kart = RaceManager::getPlayerKart(0);
Kart* kart = world->getLocalPlayerKart(0);
kart->setPowerup(POWERUP_BUBBLEGUM, 10000);
}
break;

View File

@@ -95,7 +95,6 @@ Kart *ProfileWorld::createKart(const std::string &kart_ident, int index,
}
//m_local_player_karts[index] = static_cast<PlayerKart*>(newkart);
//m_player_karts[index] = static_cast<PlayerKart*>(newkart);
m_local_player_karts.clear();
m_player_karts.clear();
return newkart;
} // createKart

View File

@@ -112,7 +112,6 @@ void World::init()
m_player_karts.resize(race_manager->getNumPlayers());
m_network_karts.resize(race_manager->getNumPlayers());
m_local_player_karts.resize(race_manager->getNumLocalPlayers());
for(unsigned int i=0; i<num_karts; i++)
{
@@ -162,7 +161,6 @@ Kart *World::createKart(const std::string &kart_ident, int index,
StateManager::get()->getActivePlayer(local_player_id),
init_pos, local_player_id);
m_player_karts[global_player_id] = (PlayerKart*)newkart;
m_local_player_karts[local_player_id] = static_cast<PlayerKart*>(newkart);
break;
case RaceManager::KT_NETWORK_PLAYER:
newkart = new NetworkKart(kart_ident, position, init_pos,
@@ -464,14 +462,39 @@ void World::updateHighscores()
//-----------------------------------------------------------------------------
/** Returns the n-th player kart. Note that this function is O(N), not O(1),
* so it shouldn't be called inside of loops.
* \param n Index of player kart to return.
*/
PlayerKart *World::getPlayerKart(int player) const
PlayerKart *World::getPlayerKart(int n) const
{
unsigned int count=-1;
for(unsigned int i=0; i<m_kart.size(); i++)
if(m_kart[i]->isPlayerKart()) return (PlayerKart*)m_kart[i];
if(m_kart[i]->isPlayerKart())
{
count++;
if(count==n) return (PlayerKart*)m_kart[i];
}
return NULL;
} // getPlayerKart
//-----------------------------------------------------------------------------
/** Returns the nth local player kart, i.e. a player kart that has a camera.
* \param n Index of player kart to return.
*/
PlayerKart *World::getLocalPlayerKart(int n) const
{
unsigned int count=-1;
for(unsigned int i=0; i<m_kart.size(); i++)
{
if(m_kart[i]->getCamera() && m_kart[i]->isPlayerKart())
{
count++;
if(count==n) return (PlayerKart*)m_kart[i];
}
}
return NULL;
} // getLocalPlayerKart
//-----------------------------------------------------------------------------
/** Called in follow-leader-mode to remove the last kart
*/

View File

@@ -82,7 +82,6 @@ public:
protected:
std::vector<PlayerKart*> m_player_karts;
std::vector<PlayerKart*> m_local_player_karts;
std::vector<NetworkKart*> m_network_karts;
RandomGenerator m_random;
@@ -136,8 +135,7 @@ public:
/** Returns a pointer to the race gui. */
RaceGUI *getRaceGUI() const { return m_race_gui; }
PlayerKart *getPlayerKart(int player) const;
unsigned int getCurrentNumLocalPlayers() const { return m_local_player_karts.size(); }
PlayerKart *getLocalPlayerKart(int n) const { return m_local_player_karts[n]; }
PlayerKart *getLocalPlayerKart(int n) const;
NetworkKart *getNetworkKart(int n) const { return m_network_karts[n]; }
unsigned int getNumKarts() const { return m_kart.size(); }
Kart *getKart(int kartId) const { assert(kartId >= 0 &&

View File

@@ -26,12 +26,13 @@
KartControlMessage::KartControlMessage()
: Message(Message::MT_KART_CONTROL)
{
unsigned int num_local_players = RaceManager::getWorld()->getCurrentNumLocalPlayers();
World *world=RaceManager::getWorld();
unsigned int num_local_players = race_manager->getNumLocalPlayers();
unsigned int control_size = KartControl::getLength();
allocate(control_size*num_local_players);
for(unsigned int i=0; i<num_local_players; i++)
{
const Kart *kart = RaceManager::getWorld()->getLocalPlayerKart(i);
const Kart *kart = world->getLocalPlayerKart(i);
const KartControl& controls = kart->getControls();
controls.serialise(this);
}