Added a special type of tracks for soccer arenas
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/christmas@12300 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
@@ -822,10 +822,9 @@ int handleCmdLine(int argc, char **argv)
|
||||
exit(1);
|
||||
}
|
||||
if (t->isArena())
|
||||
{
|
||||
race_manager->setMinorMode(
|
||||
RaceManager::MINOR_MODE_3_STRIKES);
|
||||
}
|
||||
race_manager->setMinorMode(RaceManager::MINOR_MODE_3_STRIKES);
|
||||
else if(t->isSoccer())
|
||||
race_manager->setMinorMode(RaceManager::MINOR_MODE_SOCCER);
|
||||
}
|
||||
/*
|
||||
else
|
||||
|
||||
@@ -116,7 +116,7 @@ bool DemoWorld::updateIdleTimeAndStartDemo(float dt)
|
||||
// Remove arena tracks and internal tracks like the overworld
|
||||
// (outside the if statement above in case that
|
||||
// a user requests one of those ;) )
|
||||
while((!track || track->isArena() || track->isInternal())
|
||||
while((!track || track->isArena() || track->isSoccer() || track->isInternal())
|
||||
&& m_demo_tracks.size() > 0)
|
||||
{
|
||||
if(!track)
|
||||
|
||||
@@ -57,6 +57,7 @@ void LinearWorld::init()
|
||||
WorldWithRank::init();
|
||||
|
||||
assert(!m_track->isArena());
|
||||
assert(!m_track->isSoccer());
|
||||
|
||||
m_last_lap_sfx_played = false;
|
||||
m_last_lap_sfx_playing = false;
|
||||
|
||||
@@ -42,7 +42,7 @@ const char* ALL_ARENA_GROUPS_ID = "all";
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
ArenasScreen::ArenasScreen() : Screen("arenas.stkgui")
|
||||
ArenasScreen::ArenasScreen() : Screen("arenas.stkgui"), m_used_for_soccer(false)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -90,8 +90,15 @@ void ArenasScreen::beforeAddingWidget()
|
||||
for (unsigned int n=0; n<track_manager->getNumberOfTracks(); n++) //iterate through tracks to find how many are arenas
|
||||
{
|
||||
Track* temp = track_manager->getTrack(n);
|
||||
if (temp->isArena()){
|
||||
num_of_arenas++;
|
||||
if (m_used_for_soccer)
|
||||
{
|
||||
if(temp->isSoccer())
|
||||
num_of_arenas++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(temp->isArena())
|
||||
num_of_arenas++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -213,7 +220,14 @@ void ArenasScreen::buildTrackList()
|
||||
for (int n=0; n<trackAmount; n++)
|
||||
{
|
||||
Track* curr = track_manager->getTrack(n);
|
||||
if (!curr->isArena()) continue;
|
||||
if (m_used_for_soccer)
|
||||
{
|
||||
if(!curr->isSoccer()) continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!curr->isArena()) continue;
|
||||
}
|
||||
|
||||
if (unlock_manager->getCurrentSlot()->isLocked(curr->getIdent()))
|
||||
{
|
||||
@@ -236,7 +250,14 @@ void ArenasScreen::buildTrackList()
|
||||
for (int n=0; n<trackAmount; n++)
|
||||
{
|
||||
Track* curr = track_manager->getTrack(currArenas[n]);
|
||||
if (!curr->isArena()) continue;
|
||||
if (m_used_for_soccer)
|
||||
{
|
||||
if(!curr->isSoccer()) continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!curr->isArena()) continue;
|
||||
}
|
||||
|
||||
if (unlock_manager->getCurrentSlot()->isLocked(curr->getIdent()))
|
||||
{
|
||||
|
||||
@@ -31,6 +31,8 @@ class ArenasScreen : public GUIEngine::Screen, public GUIEngine::ScreenSingleton
|
||||
{
|
||||
friend class GUIEngine::ScreenSingleton<ArenasScreen>;
|
||||
|
||||
bool m_used_for_soccer; // List soccer arenas instead of battle arenas
|
||||
|
||||
ArenasScreen();
|
||||
void buildTrackList();
|
||||
|
||||
@@ -50,6 +52,8 @@ public:
|
||||
const int playerID) OVERRIDE;
|
||||
|
||||
void setFocusOnTrack(const std::string& trackName);
|
||||
|
||||
void setUsedForSoccer(bool used_for_soccer) { m_used_for_soccer=used_for_soccer; }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -260,7 +260,7 @@ void RaceGUI::drawGlobalMiniMap()
|
||||
{
|
||||
World *world = World::getWorld();
|
||||
// arenas currently don't have a map.
|
||||
if(world->getTrack()->isArena()) return;
|
||||
if(world->getTrack()->isArena() || world->getTrack()->isSoccer()) return;
|
||||
|
||||
const video::ITexture *mini_map = world->getTrack()->getMiniMap();
|
||||
|
||||
|
||||
@@ -126,6 +126,7 @@ void RaceSetupScreen::eventCallback(Widget* widget, const std::string& name, con
|
||||
race_manager->setMinorMode(RaceManager::MINOR_MODE_3_STRIKES);
|
||||
UserConfigParams::m_game_mode = CONFIG_CODE_3STRIKES;
|
||||
race_manager->setNumKarts( race_manager->getNumLocalPlayers() ); // no AI karts;
|
||||
ArenasScreen::getInstance()->setUsedForSoccer(false);
|
||||
StateManager::get()->pushScreen( ArenasScreen::getInstance() );
|
||||
}
|
||||
else if (selectedMode == IDENT_SOCCER)
|
||||
@@ -133,6 +134,7 @@ void RaceSetupScreen::eventCallback(Widget* widget, const std::string& name, con
|
||||
race_manager->setMinorMode(RaceManager::MINOR_MODE_SOCCER);
|
||||
UserConfigParams::m_game_mode = CONFIG_CODE_SOCCER;
|
||||
race_manager->setNumKarts( race_manager->getNumLocalPlayers() ); // no AI karts;
|
||||
ArenasScreen::getInstance()->setUsedForSoccer(true);
|
||||
StateManager::get()->pushScreen( ArenasScreen::getInstance() );
|
||||
}
|
||||
else if (selectedMode == "locked")
|
||||
|
||||
@@ -92,6 +92,7 @@ Track::Track(const std::string &filename)
|
||||
m_enable_push_back = true;
|
||||
m_reverse_available = false;
|
||||
m_is_arena = false;
|
||||
m_is_soccer = false;
|
||||
m_is_cutscene = false;
|
||||
m_camera_far = 1000.0f;
|
||||
m_mini_map = NULL;
|
||||
@@ -311,6 +312,7 @@ void Track::loadTrackInfo()
|
||||
getMusicInformation(filenames, m_music);
|
||||
root->get("screenshot", &m_screenshot);
|
||||
root->get("gravity", &m_gravity);
|
||||
root->get("soccer", &m_is_soccer);
|
||||
root->get("arena", &m_is_arena);
|
||||
root->get("cutscene", &m_is_cutscene);
|
||||
root->get("groups", &m_groups);
|
||||
@@ -318,13 +320,14 @@ void Track::loadTrackInfo()
|
||||
root->get("reverse", &m_reverse_available);
|
||||
root->get("push-back", &m_enable_push_back);
|
||||
|
||||
// Make the default for auto-rescue in battle mode to be false
|
||||
if(m_is_arena)
|
||||
// Make the default for auto-rescue in battle mode and soccer mode to be false
|
||||
if(m_is_arena || m_is_soccer)
|
||||
m_enable_auto_rescue = false;
|
||||
root->get("auto-rescue", & m_enable_auto_rescue);
|
||||
root->get("smooth-normals", &m_smooth_normals);
|
||||
// Reverse is meaningless in arena
|
||||
m_reverse_available = !m_is_arena && m_reverse_available;
|
||||
if(m_is_arena || m_is_soccer)
|
||||
m_reverse_available = false;
|
||||
|
||||
|
||||
for(unsigned int i=0; i<root->getNumNodes(); i++)
|
||||
@@ -1317,7 +1320,7 @@ void Track::loadTrackModel(World* parent, bool reverse_track,
|
||||
// the race gui was created. The race gui is needed since it stores
|
||||
// the information about the size of the texture to render the mini
|
||||
// map to.
|
||||
if (!m_is_arena && !m_is_cutscene) loadQuadGraph(mode_id, reverse_track);
|
||||
if (!m_is_arena && !m_is_soccer && !m_is_cutscene) loadQuadGraph(mode_id, reverse_track);
|
||||
|
||||
ItemManager::create();
|
||||
|
||||
@@ -1336,7 +1339,7 @@ void Track::loadTrackModel(World* parent, bool reverse_track,
|
||||
default_start->get("upwards-distance", &upwards_distance );
|
||||
default_start->get("karts-per-row", &karts_per_row );
|
||||
}
|
||||
if(!m_is_arena && !m_is_cutscene)
|
||||
if(!m_is_arena && !m_is_soccer && !m_is_cutscene)
|
||||
{
|
||||
m_start_transforms.resize(race_manager->getNumberOfKarts());
|
||||
QuadGraph::get()->setDefaultStartPositions(&m_start_transforms,
|
||||
|
||||
@@ -227,6 +227,8 @@ private:
|
||||
Vec3 m_aabb_max;
|
||||
/** True if this track is an arena. */
|
||||
bool m_is_arena;
|
||||
/** True if this track is a soccer arena. */
|
||||
bool m_is_soccer;
|
||||
|
||||
bool m_is_cutscene;
|
||||
|
||||
@@ -404,6 +406,8 @@ public:
|
||||
// ------------------------------------------------------------------------
|
||||
bool isArena () const { return m_is_arena; }
|
||||
// ------------------------------------------------------------------------
|
||||
bool isSoccer () const { return m_is_soccer; }
|
||||
// ------------------------------------------------------------------------
|
||||
void loadTrackModel (World* parent,
|
||||
bool reverse_track = false,
|
||||
unsigned int mode_id=0);
|
||||
|
||||
Reference in New Issue
Block a user