correcting the ai kart bug due to the former networking removal

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/networking@13088 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
hilnius 2013-07-05 12:01:29 +00:00
parent 6b35cbb8fd
commit ed6e4ebfb4
25 changed files with 48 additions and 194 deletions

View File

@ -33,7 +33,6 @@
#include "karts/kart_properties.hpp" #include "karts/kart_properties.hpp"
#include "modes/three_strikes_battle.hpp" #include "modes/three_strikes_battle.hpp"
#include "modes/world.hpp" #include "modes/world.hpp"
#include "network/network_manager.hpp"
#include "utils/constants.hpp" #include "utils/constants.hpp"
/** Initialises the attachment each kart has. /** Initialises the attachment each kart has.
@ -257,17 +256,6 @@ void Attachment::hitBanana(Item *item, int new_attachment)
new_attachment = m_random.get(3); new_attachment = m_random.get(3);
} // switch } // switch
// Save the information about the attachment in the race state
// so that the clients can be updated.
if(NetworkManager::getInstance()->isPlayingOnline()) // if we're online
{
/*
race_state->itemCollected(m_kart->getWorldKartId(),
item->getItemId(),
new_attachment);*/
//NETWORK_UPDATE_PLZ
}
if (add_a_new_item) if (add_a_new_item)
{ {
switch (new_attachment) switch (new_attachment)

View File

@ -409,21 +409,6 @@ bool Flyable::updateAndDelete(float dt)
return false; return false;
} // updateAndDelete } // updateAndDelete
// ----------------------------------------------------------------------------
/** Updates the position of a projectile based on information received frmo the
* server.
*/
void Flyable::updateFromServer(const FlyableInfo &f, float dt)
{
/*
setXYZ(f.m_xyz);
setRotation(f.m_rotation);
*/
// Update the graphical position
Moveable::update(dt);
} // updateFromServer
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
/** Returns true if the item hit the kart who shot it (to avoid that an item /** Returns true if the item hit the kart who shot it (to avoid that an item
* that's too close to the shoter hits the shoter). * that's too close to the shoter hits the shoter).

View File

@ -19,7 +19,6 @@
// along with this program; if not, write to the Free Software // along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//NETWORK_UPDATE_PLZ
#ifndef HEADER_FLYABLE_HPP #ifndef HEADER_FLYABLE_HPP
#define HEADER_FLYABLE_HPP #define HEADER_FLYABLE_HPP
@ -35,7 +34,6 @@ using namespace irr;
#include "tracks/terrain_info.hpp" #include "tracks/terrain_info.hpp"
class AbstractKart; class AbstractKart;
class FlyableInfo;
class HitEffect; class HitEffect;
class PhysicalObject; class PhysicalObject;
class XMLNode; class XMLNode;
@ -170,7 +168,6 @@ public:
virtual bool updateAndDelete(float); virtual bool updateAndDelete(float);
virtual const core::stringw getHitString(const AbstractKart *kart) const = 0; virtual const core::stringw getHitString(const AbstractKart *kart) const = 0;
virtual HitEffect* getHitEffect() const; virtual HitEffect* getHitEffect() const;
void updateFromServer(const FlyableInfo &f, float dt);
bool isOwnerImmunity(const AbstractKart *kart_hit) const; bool isOwnerImmunity(const AbstractKart *kart_hit) const;
virtual bool hit(AbstractKart* kart, PhysicalObject* obj=NULL); virtual bool hit(AbstractKart* kart, PhysicalObject* obj=NULL);
void explode(AbstractKart* kart, PhysicalObject* obj=NULL, void explode(AbstractKart* kart, PhysicalObject* obj=NULL,

View File

@ -29,7 +29,6 @@
#include "io/file_manager.hpp" #include "io/file_manager.hpp"
#include "karts/abstract_kart.hpp" #include "karts/abstract_kart.hpp"
#include "modes/linear_world.hpp" #include "modes/linear_world.hpp"
#include "network/network_manager.hpp"
#include "tracks/quad_graph.hpp" #include "tracks/quad_graph.hpp"
#include "tracks/track.hpp" #include "tracks/track.hpp"
#include "utils/string_utils.hpp" #include "utils/string_utils.hpp"
@ -289,9 +288,6 @@ void ItemManager::collectedItem(Item *item, AbstractKart *kart, int add_info)
*/ */
void ItemManager::checkItemHit(AbstractKart* kart) void ItemManager::checkItemHit(AbstractKart* kart)
{ {
// Only do this on the server
if(NetworkManager::getInstance()->isServer()) return;
// We could use m_items_in_quads to to check for item hits: take the quad // We could use m_items_in_quads to to check for item hits: take the quad
// of the graph node of the kart, and only check items in that quad. But // of the graph node of the kart, and only check items in that quad. But
// then we also need to check for any adjacent quads (since an item just // then we also need to check for any adjacent quads (since an item just

View File

@ -16,7 +16,6 @@
// along with this program; if not, write to the Free Software // along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//NETWORK_UPDATE_PLZ
#include "items/powerup.hpp" #include "items/powerup.hpp"
#include "audio/sfx_base.hpp" #include "audio/sfx_base.hpp"

View File

@ -16,8 +16,6 @@
// along with this program; if not, write to the Free Software // along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//NETWORK_UPDATE_PLZ
#include "items/projectile_manager.hpp" #include "items/projectile_manager.hpp"
#include "graphics/explosion.hpp" #include "graphics/explosion.hpp"
@ -28,7 +26,6 @@
#include "items/powerup_manager.hpp" #include "items/powerup_manager.hpp"
#include "items/powerup.hpp" #include "items/powerup.hpp"
#include "items/rubber_ball.hpp" #include "items/rubber_ball.hpp"
#include "network/network_manager.hpp"
ProjectileManager *projectile_manager=0; ProjectileManager *projectile_manager=0;
@ -67,15 +64,7 @@ void ProjectileManager::cleanup()
/** General projectile update call. */ /** General projectile update call. */
void ProjectileManager::update(float dt) void ProjectileManager::update(float dt)
{ {
updateServer(dt);
if(NetworkManager::getInstance()->isClient())
{
updateClient(dt);
}
else
{
updateServer(dt);
}
HitEffects::iterator he = m_active_hit_effects.begin(); HitEffects::iterator he = m_active_hit_effects.begin();
while(he!=m_active_hit_effects.end()) while(he!=m_active_hit_effects.end())
@ -102,25 +91,10 @@ void ProjectileManager::update(float dt)
/** Updates all rockets on the server (or no networking). */ /** Updates all rockets on the server (or no networking). */
void ProjectileManager::updateServer(float dt) void ProjectileManager::updateServer(float dt)
{ {
// First update all projectiles on the track
if(NetworkManager::getInstance()->isPlayingOnline()) //network_manager->getMode()!=NetworkManager::NW_NONE)
{
//race_state->setNumFlyables(m_active_projectiles.size());
}
Projectiles::iterator p = m_active_projectiles.begin(); Projectiles::iterator p = m_active_projectiles.begin();
while(p!=m_active_projectiles.end()) while(p!=m_active_projectiles.end())
{ {
bool can_be_deleted = (*p)->updateAndDelete(dt); bool can_be_deleted = (*p)->updateAndDelete(dt);
if(NetworkManager::getInstance()->isPlayingOnline()) //network_manager->getMode()!=NetworkManager::NW_NONE)
{
/*race_state->setFlyableInfo(p-m_active_projectiles.begin(),
FlyableInfo((*p)->getXYZ(),
(*p)->getRotation(),
can_be_deleted) );*/
}
if(can_be_deleted) if(can_be_deleted)
{ {
HitEffect *he = (*p)->getHitEffect(); HitEffect *he = (*p)->getHitEffect();
@ -137,31 +111,6 @@ void ProjectileManager::updateServer(float dt)
} // updateServer } // updateServer
// -----------------------------------------------------------------------------
/** Updates all rockets and hit effects on the client.
* updateClient takes the information in race_state and updates all rockets
* (i.e. position, hit effects etc) */
void ProjectileManager::updateClient(float dt)
{
/*
unsigned int num_projectiles = race_state->getNumFlyables();
if(num_projectiles != m_active_projectiles.size())
fprintf(stderr, "Warning: num_projectiles %d active %d\n",
num_projectiles, (int)m_active_projectiles.size());
unsigned int indx=0;
for(Projectiles::iterator i = m_active_projectiles.begin();
i != m_active_projectiles.end(); ++i, ++indx)
{
const FlyableInfo &f = race_state->getFlyable(indx);
(*i)->updateFromServer(f, dt);
if(f.m_exploded)
{
(*i)->hit(NULL);
}
} // for i in m_active_projectiles
*/
} // updateClient
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
Flyable *ProjectileManager::newProjectile(AbstractKart *kart, Track* track, Flyable *ProjectileManager::newProjectile(AbstractKart *kart, Track* track,
PowerupManager::PowerupType type) PowerupManager::PowerupType type)

View File

@ -53,7 +53,6 @@ private:
* being shown or have a sfx playing. */ * being shown or have a sfx playing. */
HitEffects m_active_hit_effects; HitEffects m_active_hit_effects;
void updateClient(float dt);
void updateServer(float dt); void updateServer(float dt);
public: public:
ProjectileManager() {} ProjectileManager() {}

View File

@ -43,7 +43,6 @@
#include "karts/max_speed.hpp" #include "karts/max_speed.hpp"
#include "karts/rescue_animation.hpp" #include "karts/rescue_animation.hpp"
#include "modes/linear_world.hpp" #include "modes/linear_world.hpp"
#include "network/network_manager.hpp"
#include "race/race_manager.hpp" #include "race/race_manager.hpp"
#include "states_screens/race_result_gui.hpp" #include "states_screens/race_result_gui.hpp"
#include "tracks/quad_graph.hpp" #include "tracks/quad_graph.hpp"

View File

@ -19,7 +19,6 @@
#ifndef HEADER_KART_CONTROL_HPP #ifndef HEADER_KART_CONTROL_HPP
#define HEADER_KART_CONTROL_HPP #define HEADER_KART_CONTROL_HPP
//NETWORK_UPDATE_PLZ
/** /**
* \ingroup controller * \ingroup controller

View File

@ -54,7 +54,6 @@
#include "items/powerup.hpp" #include "items/powerup.hpp"
#include "modes/linear_world.hpp" #include "modes/linear_world.hpp"
#include "modes/profile_world.hpp" #include "modes/profile_world.hpp"
#include "network/network_manager.hpp"
#include "race/race_manager.hpp" #include "race/race_manager.hpp"
#include "tracks/quad_graph.hpp" #include "tracks/quad_graph.hpp"
#include "tracks/track.hpp" #include "tracks/track.hpp"
@ -297,13 +296,6 @@ void SkiddingAI::update(float dt)
return; return;
#endif #endif
// The client does not do any AI computations.
if(NetworkManager::getInstance()->isClient())
{
AIBaseController::update(dt);
return;
}
// If the kart needs to be rescued, do it now (and nothing else) // If the kart needs to be rescued, do it now (and nothing else)
if(isStuck() && !m_kart->getKartAnimation()) if(isStuck() && !m_kart->getKartAnimation())
{ {

View File

@ -57,7 +57,6 @@
#include "karts/max_speed.hpp" #include "karts/max_speed.hpp"
#include "karts/skidding.hpp" #include "karts/skidding.hpp"
#include "modes/linear_world.hpp" #include "modes/linear_world.hpp"
#include "network/network_manager.hpp"
#include "physics/btKart.hpp" #include "physics/btKart.hpp"
#include "physics/btKartRaycast.hpp" #include "physics/btKartRaycast.hpp"
#include "physics/btUprightConstraint.hpp" #include "physics/btUprightConstraint.hpp"
@ -80,8 +79,6 @@
# include <math.h> # include <math.h>
#endif #endif
//NETWORK_UPDATE_PLZ
/** The kart constructor. /** The kart constructor.
* \param ident The identifier for the kart model to use. * \param ident The identifier for the kart model to use.
* \param position The position (or rank) for this kart (between 1 and * \param position The position (or rank) for this kart (between 1 and
@ -875,15 +872,6 @@ void Kart::collectedItem(Item *item, int add_info)
default : break; default : break;
} // switch TYPE } // switch TYPE
// Attachments and powerups are stored in the corresponding
// functions (hit{Red,Green}Item), so only coins need to be
// stored here.
/*if(NetworkManager::getInstance()->isServer() &&
(type==Item::ITEM_NITRO_BIG || type==Item::ITEM_NITRO_SMALL) )
{
race_state->itemCollected(getWorldKartId(), item->getItemId());
}*/
if ( m_collected_energy > m_kart_properties->getNitroMax()) if ( m_collected_energy > m_kart_properties->getNitroMax())
m_collected_energy = m_kart_properties->getNitroMax(); m_collected_energy = m_kart_properties->getNitroMax();
m_controller->collectedItem(*item, add_info, old_energy); m_controller->collectedItem(*item, add_info, old_energy);
@ -1015,14 +1003,6 @@ void Kart::update(float dt)
m_slipstream->update(dt); m_slipstream->update(dt);
// Store the actual kart controls at the start of update in the server
// state. This makes it easier to reset some fields when they are not used
// anymore (e.g. controls.fire).
if(NetworkManager::getInstance()->isServer())
{
//race_state->storeKartControls(*this);
}
if (!m_flying) if (!m_flying)
{ {
// When really on air, free fly, when near ground, try to glide / adjust for landing // When really on air, free fly, when near ground, try to glide / adjust for landing

View File

@ -1476,7 +1476,7 @@ int main(int argc, char *argv[] )
{ {
// This will setup the race manager etc. // This will setup the race manager etc.
history->Load(); history->Load();
// network_manager->setupPlayerKartInfo(); race_manager->setupPlayerKartInfo();
race_manager->startNew(false); race_manager->startNew(false);
main_loop->run(); main_loop->run();
// well, actually run() will never return, since // well, actually run() will never return, since
@ -1494,7 +1494,7 @@ int main(int argc, char *argv[] )
// Quickstart (-N) // Quickstart (-N)
// =============== // ===============
// all defaults are set in InitTuxkart() // all defaults are set in InitTuxkart()
// network_manager->setupPlayerKartInfo(); race_manager->setupPlayerKartInfo();
race_manager->startNew(false); race_manager->startNew(false);
} }
} }
@ -1504,7 +1504,7 @@ int main(int argc, char *argv[] )
// ========= // =========
race_manager->setMajorMode (RaceManager::MAJOR_MODE_SINGLE); race_manager->setMajorMode (RaceManager::MAJOR_MODE_SINGLE);
race_manager->setDifficulty(RaceManager::DIFFICULTY_HARD); race_manager->setDifficulty(RaceManager::DIFFICULTY_HARD);
// network_manager->setupPlayerKartInfo(); race_manager->setupPlayerKartInfo();
race_manager->startNew(false); race_manager->startNew(false);
} }
main_loop->run(); main_loop->run();

View File

@ -29,7 +29,6 @@
#include "input/wiimote_manager.hpp" #include "input/wiimote_manager.hpp"
#include "modes/profile_world.hpp" #include "modes/profile_world.hpp"
#include "modes/world.hpp" #include "modes/world.hpp"
#include "network/network_manager.hpp"
#include "race/race_manager.hpp" #include "race/race_manager.hpp"
#include "states_screens/state_manager.hpp" #include "states_screens/state_manager.hpp"
#include "utils/profiler.hpp" #include "utils/profiler.hpp"
@ -94,21 +93,8 @@ float MainLoop::getLimitedDt()
*/ */
void MainLoop::updateRace(float dt) void MainLoop::updateRace(float dt)
{ {
// Server: Send the current position and previous controls to all clients
// Client: send current controls to server
// But don't do this if the race is in finish phase (otherwise
// messages can be mixed up in the race manager)
/*if(!World::getWorld()->isFinishPhase())
network_manager->sendUpdates();*/
if(ProfileWorld::isProfileMode()) dt=1.0f/60.0f; if(ProfileWorld::isProfileMode()) dt=1.0f/60.0f;
// Again, only receive updates if the race isn't over - once the
// race results are displayed (i.e. game is in finish phase)
// messages must be handled by the normal update of the network
// manager
/*if(!World::getWorld()->isFinishPhase())
network_manager->receiveUpdates();*/
World::getWorld()->updateWorld(dt); World::getWorld()->updateWorld(dt);
} // updateRace } // updateRace
@ -127,13 +113,8 @@ void MainLoop::run()
m_prev_time = m_curr_time; m_prev_time = m_curr_time;
float dt = getLimitedDt(); float dt = getLimitedDt();
// network_manager->update(dt);
if (World::getWorld()) // race is active if world exists if (World::getWorld()) // race is active if world exists
{ {
// Busy wait if race_manager is active (i.e. creating of world is done)
// till all clients have reached this state.
//if (network_manager->getState()==NetworkManager::NS_READY_SET_GO_BARRIER) continue;
updateRace(dt); updateRace(dt);
} // if race is active } // if race is active

View File

@ -21,7 +21,6 @@
#include "guiengine/modaldialog.hpp" #include "guiengine/modaldialog.hpp"
#include "input/device_manager.hpp" #include "input/device_manager.hpp"
#include "input/input_manager.hpp" #include "input/input_manager.hpp"
#include "network/network_manager.hpp"
#include "race/race_manager.hpp" #include "race/race_manager.hpp"
#include "tracks/track.hpp" #include "tracks/track.hpp"
#include "tracks/track_manager.hpp" #include "tracks/track_manager.hpp"
@ -149,7 +148,7 @@ bool DemoWorld::updateIdleTimeAndStartDemo(float dt)
m_do_demo = true; m_do_demo = true;
race_manager->setNumKarts(m_num_karts); race_manager->setNumKarts(m_num_karts);
race_manager->setLocalKartInfo(0, "tux"); race_manager->setLocalKartInfo(0, "tux");
// network_manager->setupPlayerKartInfo(); race_manager->setupPlayerKartInfo();
race_manager->startSingleRace(m_demo_tracks[0], m_num_laps, false); race_manager->startSingleRace(m_demo_tracks[0], m_num_laps, false);
m_demo_tracks.push_back(m_demo_tracks[0]); m_demo_tracks.push_back(m_demo_tracks[0]);
m_demo_tracks.erase(m_demo_tracks.begin()); m_demo_tracks.erase(m_demo_tracks.begin());

View File

@ -25,7 +25,6 @@
#include "karts/abstract_kart.hpp" #include "karts/abstract_kart.hpp"
#include "karts/controller/controller.hpp" #include "karts/controller/controller.hpp"
#include "karts/kart_properties.hpp" #include "karts/kart_properties.hpp"
#include "network/network_manager.hpp"
#include "physics/physics.hpp" #include "physics/physics.hpp"
#include "race/history.hpp" #include "race/history.hpp"
#include "states_screens/race_gui_base.hpp" #include "states_screens/race_gui_base.hpp"
@ -319,13 +318,7 @@ void LinearWorld::newLap(unsigned int kart_index)
// Race finished // Race finished
if(kart_info.m_race_lap >= race_manager->getNumLaps() && raceHasLaps()) if(kart_info.m_race_lap >= race_manager->getNumLaps() && raceHasLaps())
{ {
// A client does not detect race finished by itself, it will kart->finishedRace(getTime());
// receive a message from the server. So a client does not do
// anything here.
/*if(network_manager->getMode()!=NetworkManager::NW_CLIENT)
{
kart->finishedRace(getTime());
}*/
} }
float time_per_lap; float time_per_lap;
if (kart_info.m_race_lap == 1) // just completed first lap if (kart_info.m_race_lap == 1) // just completed first lap

View File

@ -27,7 +27,6 @@
#include "karts/rescue_animation.hpp" #include "karts/rescue_animation.hpp"
#include "modes/overworld.hpp" #include "modes/overworld.hpp"
#include "physics/physics.hpp" #include "physics/physics.hpp"
#include "network/network_manager.hpp"
#include "states_screens/dialogs/select_challenge.hpp" #include "states_screens/dialogs/select_challenge.hpp"
#include "states_screens/kart_selection.hpp" #include "states_screens/kart_selection.hpp"
#include "states_screens/race_gui_overworld.hpp" #include "states_screens/race_gui_overworld.hpp"
@ -83,7 +82,7 @@ void OverWorld::enterOverWorld()
->setSinglePlayer( StateManager::get()->getActivePlayer(0) ); ->setSinglePlayer( StateManager::get()->getActivePlayer(0) );
StateManager::get()->enterGameState(); StateManager::get()->enterGameState();
// network_manager->setupPlayerKartInfo(); race_manager->setupPlayerKartInfo();
race_manager->startNew(false); race_manager->startNew(false);
if(race_manager->haveKartLastPositionOnOverworld()){ if(race_manager->haveKartLastPositionOnOverworld()){
OverWorld *ow = (OverWorld*)World::getWorld(); OverWorld *ow = (OverWorld*)World::getWorld();

View File

@ -117,7 +117,6 @@ World::World() : WorldStatus(), m_clear_color(255,100,101,140)
*/ */
void World::init() void World::init()
{ {
// race_state = new RaceState();
m_faster_music_active = false; m_faster_music_active = false;
m_fastest_kart = 0; m_fastest_kart = 0;
m_eliminated_karts = 0; m_eliminated_karts = 0;
@ -173,8 +172,6 @@ void World::init()
if(ReplayPlay::get()) if(ReplayPlay::get())
ReplayPlay::get()->Load(); ReplayPlay::get()->Load();
// network_manager->worldLoaded();
powerup_manager->updateWeightsForRace(num_karts); powerup_manager->updateWeightsForRace(num_karts);
} // init } // init
@ -359,7 +356,6 @@ World::~World()
// gui and this must be deleted. // gui and this must be deleted.
delete m_race_gui; delete m_race_gui;
} }
// delete race_state;
for ( unsigned int i = 0 ; i < m_karts.size() ; i++ ) for ( unsigned int i = 0 ; i < m_karts.size() ; i++ )
delete m_karts[i]; delete m_karts[i];
@ -747,7 +743,7 @@ void World::updateWorld(float dt)
->setSinglePlayer( StateManager::get()->getActivePlayer(0) ); ->setSinglePlayer( StateManager::get()->getActivePlayer(0) );
StateManager::get()->enterGameState(); StateManager::get()->enterGameState();
// network_manager->setupPlayerKartInfo(); race_manager->setupPlayerKartInfo();
race_manager->startNew(false); race_manager->startNew(false);
} }
else else
@ -800,11 +796,8 @@ void World::update(float dt)
if(ReplayPlay::get()) ReplayPlay::get()->update(dt); if(ReplayPlay::get()) ReplayPlay::get()->update(dt);
if(history->replayHistory()) dt=history->getNextDelta(); if(history->replayHistory()) dt=history->getNextDelta();
WorldStatus::update(dt); WorldStatus::update(dt);
// Clear race state so that new information can be stored
// race_state->clear();
// if(network_manager->getMode()!=NetworkManager::NW_CLIENT && if (!history->dontDoPhysics())
// !history->dontDoPhysics())
{ {
m_physics->update(dt); m_physics->update(dt);
} }

View File

@ -26,7 +26,6 @@
#include "karts/abstract_kart.hpp" #include "karts/abstract_kart.hpp"
#include "modes/world.hpp" #include "modes/world.hpp"
#include "tracks/track.hpp" #include "tracks/track.hpp"
#include "network/network_manager.hpp"
#include <irrlicht.h> #include <irrlicht.h>
@ -112,8 +111,6 @@ void WorldStatus::enterRaceOverState()
*/ */
void WorldStatus::terminateRace() void WorldStatus::terminateRace()
{ {
// if(network_manager->getMode()==NetworkManager::NW_SERVER)
// network_manager->sendRaceResults();
} // terminateRace } // terminateRace
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------

View File

@ -23,7 +23,6 @@
#include "karts/kart_properties.hpp" #include "karts/kart_properties.hpp"
#include "karts/rescue_animation.hpp" #include "karts/rescue_animation.hpp"
#include "items/flyable.hpp" #include "items/flyable.hpp"
#include "items/item.hpp"
#include "modes/world.hpp" #include "modes/world.hpp"
#include "graphics/stars.hpp" #include "graphics/stars.hpp"
#include "karts/explosion_animation.hpp" #include "karts/explosion_animation.hpp"
@ -159,8 +158,6 @@ void Physics::update(float dt)
{ {
AbstractKart *a=p->getUserPointer(0)->getPointerKart(); AbstractKart *a=p->getUserPointer(0)->getPointerKart();
AbstractKart *b=p->getUserPointer(1)->getPointerKart(); AbstractKart *b=p->getUserPointer(1)->getPointerKart();
// race_state->addCollision(a->getWorldKartId(),
// b->getWorldKartId());
KartKartCollision(p->getUserPointer(0)->getPointerKart(), KartKartCollision(p->getUserPointer(0)->getPointerKart(),
p->getContactPointCS(0), p->getContactPointCS(0),
p->getUserPointer(1)->getPointerKart(), p->getUserPointer(1)->getPointerKart(),
@ -446,7 +443,6 @@ btScalar Physics::solveGroup(btCollisionObject** bodies, int numBodies,
else if(upB->is(UserPointer::UP_KART)) else if(upB->is(UserPointer::UP_KART))
{ {
AbstractKart *kart=upB->getPointerKart(); AbstractKart *kart=upB->getPointerKart();
// race_state->addCollision(kart->getWorldKartId());
int n = contact_manifold->getContactPoint(0).m_index0; int n = contact_manifold->getContactPoint(0).m_index0;
const Material *m const Material *m
= n>=0 ? upA->getPointerTriangleMesh()->getMaterial(n) = n>=0 ? upA->getPointerTriangleMesh()->getMaterial(n)
@ -466,7 +462,6 @@ btScalar Physics::solveGroup(btCollisionObject** bodies, int numBodies,
if(upB->is(UserPointer::UP_TRACK)) if(upB->is(UserPointer::UP_TRACK))
{ {
AbstractKart *kart = upA->getPointerKart(); AbstractKart *kart = upA->getPointerKart();
// race_state->addCollision(kart->getWorldKartId());
int n = contact_manifold->getContactPoint(0).m_index1; int n = contact_manifold->getContactPoint(0).m_index1;
const Material *m const Material *m
= n>=0 ? upB->getPointerTriangleMesh()->getMaterial(n) = n>=0 ? upB->getPointerTriangleMesh()->getMaterial(n)

View File

@ -42,7 +42,6 @@
#include "modes/world.hpp" #include "modes/world.hpp"
#include "modes/three_strikes_battle.hpp" #include "modes/three_strikes_battle.hpp"
#include "modes/soccer_world.hpp" #include "modes/soccer_world.hpp"
#include "network/network_manager.hpp"
#include "states_screens/grand_prix_lose.hpp" #include "states_screens/grand_prix_lose.hpp"
#include "states_screens/grand_prix_win.hpp" #include "states_screens/grand_prix_win.hpp"
#include "states_screens/kart_selection.hpp" #include "states_screens/kart_selection.hpp"
@ -143,9 +142,9 @@ void RaceManager::setLocalKartInfo(unsigned int player_id,
assert(0<=player_id && player_id <m_local_player_karts.size()); assert(0<=player_id && player_id <m_local_player_karts.size());
assert(kart_properties_manager->getKart(kart) != NULL); assert(kart_properties_manager->getKart(kart) != NULL);
/* m_local_player_karts[player_id] = RemoteKartInfo(player_id, kart, m_local_player_karts[player_id] = RemoteKartInfo(player_id, kart,
StateManager::get()->getActivePlayerProfile(player_id)->getName(), StateManager::get()->getActivePlayerProfile(player_id)->getName(),
network_manager->getMyHostId());*/ 0);
} // setLocalKartInfo } // setLocalKartInfo
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -293,7 +292,7 @@ void RaceManager::startNew(bool from_overworld)
// Create the kart status data structure to keep track of scores, times, ... // Create the kart status data structure to keep track of scores, times, ...
// ========================================================================== // ==========================================================================
m_kart_status.clear(); m_kart_status.clear();
printf("%u %lu %lu\n", (unsigned int)m_num_karts, m_ai_kart_list.size(), m_player_karts.size()); Log::verbose("RaceManager", "Nb of karts=%u, ai:%lu players:%lu\n", (unsigned int)m_num_karts, m_ai_kart_list.size(), m_player_karts.size());
assert((unsigned int)m_num_karts == m_ai_kart_list.size()+m_player_karts.size()); assert((unsigned int)m_num_karts == m_ai_kart_list.size()+m_player_karts.size());
// First add the AI karts (randomly chosen) // First add the AI karts (randomly chosen)
@ -321,8 +320,7 @@ void RaceManager::startNew(bool from_overworld)
// ------------------------------------------------- // -------------------------------------------------
for(int i=m_player_karts.size()-1; i>=0; i--) for(int i=m_player_karts.size()-1; i>=0; i--)
{ {
KartType kt= KT_PLAYER; //(m_player_karts[i].getHostId()==network_manager->getMyHostId()) KartType kt= KT_PLAYER;
//? KT_PLAYER : KT_NETWORK_PLAYER;
m_kart_status.push_back(KartStatus(m_player_karts[i].getKartName(), i, m_kart_status.push_back(KartStatus(m_player_karts[i].getKartName(), i,
m_player_karts[i].getLocalPlayerId(), m_player_karts[i].getLocalPlayerId(),
m_player_karts[i].getGlobalPlayerId(), m_player_karts[i].getGlobalPlayerId(),
@ -509,21 +507,10 @@ void RaceManager::next()
} }
user_config->saveConfig(); user_config->saveConfig();
} }
// if(network_manager->getMode()==NetworkManager::NW_SERVER)
// network_manager->beginReadySetGoBarrier();
// else
// network_manager->setState(NetworkManager::NS_WAIT_FOR_RACE_DATA);
startNextRace(); startNextRace();
} }
else else
{ {
// Back to main menu. Change the state of the state of the
// network manager.
// if(network_manager->getMode()==NetworkManager::NW_SERVER)
// network_manager->setState(NetworkManager::NS_MAIN_MENU);
// else
// network_manager->setState(NetworkManager::NS_WAIT_FOR_AVAILABLE_CHARACTERS);
exitRace(); exitRace();
} }
} // next } // next
@ -753,7 +740,7 @@ void RaceManager::startGP(const GrandPrixData* gp, bool from_overworld)
StateManager::get()->enterGameState(); StateManager::get()->enterGameState();
setGrandPrix(*gp); setGrandPrix(*gp);
setCoinTarget( 0 ); // Might still be set from a previous challenge setCoinTarget( 0 ); // Might still be set from a previous challenge
// network_manager->setupPlayerKartInfo(); race_manager->setupPlayerKartInfo();
setMajorMode(RaceManager::MAJOR_MODE_GRAND_PRIX); setMajorMode(RaceManager::MAJOR_MODE_GRAND_PRIX);
startNew(from_overworld); startNew(from_overworld);
@ -778,9 +765,36 @@ void RaceManager::startSingleRace(const std::string &track_ident,
setMajorMode(RaceManager::MAJOR_MODE_SINGLE); setMajorMode(RaceManager::MAJOR_MODE_SINGLE);
setCoinTarget( 0 ); // Might still be set from a previous challenge setCoinTarget( 0 ); // Might still be set from a previous challenge
// network_manager->setupPlayerKartInfo(); race_manager->setupPlayerKartInfo();
startNew(from_overworld); startNew(from_overworld);
} }
//-----------------------------------------------------------------------------
/** Receive and store the information from sendKartsInformation()
*/
void RaceManager::setupPlayerKartInfo()
{
std::vector<RemoteKartInfo> m_kart_info;
// Get the local kart info
for(unsigned int i=0; i<getNumLocalPlayers(); i++)
m_kart_info.push_back(getLocalKartInfo(i));
// Now sort by (hostid, playerid)
std::sort(m_kart_info.begin(), m_kart_info.end());
// Set the player kart information
setNumPlayers(m_kart_info.size());
// Set the global player ID for each player
for(unsigned int i=0; i<m_kart_info.size(); i++)
{
m_kart_info[i].setGlobalPlayerId(i);
setPlayerKart(i, m_kart_info[i]);
}
computeRandomKartList();
} // setupPlayerKartInfo
/* EOF */ /* EOF */

View File

@ -674,6 +674,9 @@ public:
*/ */
void startSingleRace(const std::string &track_ident, const int num_laps, void startSingleRace(const std::string &track_ident, const int num_laps,
bool from_overworld); bool from_overworld);
/** Receive and store the information from sendKartsInformation()
*/
void setupPlayerKartInfo();
bool raceWasStartedFromOverworld() const bool raceWasStartedFromOverworld() const
{ {

View File

@ -228,7 +228,7 @@ GUIEngine::EventPropagation SelectChallengeDialog::processEvent(const std::strin
} }
// Sets up kart info, including random list of kart for AI // Sets up kart info, including random list of kart for AI
// network_manager->setupPlayerKartInfo(); race_manager->setupPlayerKartInfo();
race_manager->startNew(true); race_manager->startNew(true);
irr_driver->hidePointer(); irr_driver->hidePointer();

View File

@ -28,7 +28,6 @@
#include "io/file_manager.hpp" #include "io/file_manager.hpp"
#include "karts/kart_properties.hpp" #include "karts/kart_properties.hpp"
#include "karts/kart_properties_manager.hpp" #include "karts/kart_properties_manager.hpp"
#include "network/network_manager.hpp"
#include "race/highscores.hpp" #include "race/highscores.hpp"
#include "race/highscore_manager.hpp" #include "race/highscore_manager.hpp"
#include "race/race_manager.hpp" #include "race/race_manager.hpp"

View File

@ -24,7 +24,6 @@
#include "input/device_manager.hpp" #include "input/device_manager.hpp"
#include "input/input_manager.hpp" #include "input/input_manager.hpp"
#include "karts/kart_properties_manager.hpp" #include "karts/kart_properties_manager.hpp"
#include "network/network_manager.hpp"
#include "race/race_manager.hpp" #include "race/race_manager.hpp"
#include "states_screens/help_screen_2.hpp" #include "states_screens/help_screen_2.hpp"
#include "states_screens/help_screen_3.hpp" #include "states_screens/help_screen_3.hpp"
@ -82,7 +81,7 @@ void HelpScreen1::eventCallback(Widget* widget, const std::string& name, const i
->setSinglePlayer( StateManager::get()->getActivePlayer(0) ); ->setSinglePlayer( StateManager::get()->getActivePlayer(0) );
StateManager::get()->enterGameState(); StateManager::get()->enterGameState();
// network_manager->setupPlayerKartInfo(); race_manager->setupPlayerKartInfo();
race_manager->startNew(false); race_manager->startNew(false);
} }
else if (name == "category") else if (name == "category")

View File

@ -37,7 +37,6 @@
#include "modes/cutscene_world.hpp" #include "modes/cutscene_world.hpp"
#include "modes/overworld.hpp" #include "modes/overworld.hpp"
#include "modes/demo_world.hpp" #include "modes/demo_world.hpp"
#include "network/network_manager.hpp"
#include "states_screens/online_screen.hpp" #include "states_screens/online_screen.hpp"
#include "states_screens/addons_screen.hpp" #include "states_screens/addons_screen.hpp"
#include "states_screens/credits.hpp" #include "states_screens/credits.hpp"
@ -332,7 +331,7 @@ void MainMenuScreen::eventCallback(Widget* widget, const std::string& name,
->setSinglePlayer( StateManager::get()->getActivePlayer(0) ); ->setSinglePlayer( StateManager::get()->getActivePlayer(0) );
StateManager::get()->enterGameState(); StateManager::get()->enterGameState();
// network_manager->setupPlayerKartInfo(); race_manager->setupPlayerKartInfo();
race_manager->startNew(false); race_manager->startNew(false);
} }
else if (selection == "story") else if (selection == "story")