Work on new GPWin screen. Seems to work well now
This commit is contained in:
parent
6b3d1a4770
commit
bee4dcf36c
@ -1810,7 +1810,8 @@ void IrrDriver::update(float dt)
|
||||
World *world = World::getWorld();
|
||||
|
||||
if (GUIEngine::getCurrentScreen() != NULL &&
|
||||
GUIEngine::getCurrentScreen()->needs3D())
|
||||
GUIEngine::getCurrentScreen()->needs3D() &&
|
||||
world != NULL)
|
||||
{
|
||||
//printf("Screen that needs 3D\n");
|
||||
//m_video_driver->beginScene(/*backBuffer clear*/true, /*zBuffer*/true,
|
||||
|
@ -111,9 +111,9 @@ void MaterialManager::setAllMaterialFlags(video::ITexture* t,
|
||||
|
||||
mb->getMaterial().ColorMaterial = video::ECM_DIFFUSE_AND_AMBIENT;
|
||||
|
||||
if (World::getWorld() != NULL && World::getWorld()->getTrack() != NULL)
|
||||
if (World::getWorld() != NULL)
|
||||
{
|
||||
mb->getMaterial().FogEnable = World::getWorld()->getTrack()->isFogEnabled();
|
||||
mb->getMaterial().FogEnable = World::getWorld()->isFogEnabled();
|
||||
}
|
||||
|
||||
|
||||
|
@ -212,7 +212,7 @@ void IrrDriver::renderGLSL(float dt)
|
||||
renderSolidSecondPass();
|
||||
PROFILER_POP_CPU_MARKER();
|
||||
|
||||
if (UserConfigParams::m_dynamic_lights && World::getWorld()->getTrack()->isFogEnabled())
|
||||
if (UserConfigParams::m_dynamic_lights && World::getWorld()->isFogEnabled())
|
||||
{
|
||||
PROFILER_PUSH_CPU_MARKER("- Fog", 0xFF, 0x00, 0x00);
|
||||
m_post_processing->renderFog(irr_driver->getInvProjMatrix());
|
||||
|
@ -253,7 +253,7 @@ void STKAnimatedMesh::render()
|
||||
for_in(mesh, TransparentMesh[TM_BUBBLE])
|
||||
drawBubble(*mesh, ModelViewProjectionMatrix);
|
||||
|
||||
if (World::getWorld()->getTrack()->isFogEnabled())
|
||||
if (World::getWorld()->isFogEnabled())
|
||||
{
|
||||
if (!TransparentMesh[TM_DEFAULT].empty() || !TransparentMesh[TM_ADDITIVE].empty())
|
||||
glUseProgram(MeshShader::TransparentFogShader::Program);
|
||||
|
@ -858,7 +858,7 @@ void initvaostate(GLMesh &mesh, TransparentMaterial TranspMat)
|
||||
break;
|
||||
case TM_DEFAULT:
|
||||
case TM_ADDITIVE:
|
||||
if (World::getWorld()->getTrack()->isFogEnabled())
|
||||
if (World::getWorld()->isFogEnabled())
|
||||
mesh.vao_first_pass = createVAO(mesh.vertex_buffer, mesh.index_buffer,
|
||||
MeshShader::TransparentFogShader::attrib_position, MeshShader::TransparentFogShader::attrib_texcoord, -1, -1, -1, -1, MeshShader::TransparentFogShader::attrib_color, mesh.Stride);
|
||||
else
|
||||
|
@ -501,7 +501,7 @@ void STKMeshSceneNode::render()
|
||||
for_in(mesh, TransparentMesh[TM_BUBBLE])
|
||||
drawBubble(*mesh, ModelViewProjectionMatrix);
|
||||
|
||||
if (World::getWorld()->getTrack()->isFogEnabled())
|
||||
if (World::getWorld() ->isFogEnabled())
|
||||
{
|
||||
if (!TransparentMesh[TM_DEFAULT].empty() || !TransparentMesh[TM_ADDITIVE].empty())
|
||||
glUseProgram(MeshShader::TransparentFogShader::Program);
|
||||
|
@ -384,6 +384,13 @@ void CutsceneWorld::enterRaceOverState()
|
||||
StateManager::get()->pushScreen(credits);
|
||||
}
|
||||
// TODO: remove hardcoded knowledge of cutscenes, replace with scripting probably
|
||||
else if (m_parts.size() == 1 && m_parts[0] == "gpwin")
|
||||
{
|
||||
MainMenuScreen* mainMenu = MainMenuScreen::getInstance();
|
||||
race_manager->exitRace();
|
||||
StateManager::get()->resetAndGoToScreen(mainMenu);
|
||||
}
|
||||
// TODO: remove hardcoded knowledge of cutscenes, replace with scripting probably
|
||||
else if (race_manager->getTrackName() == "introcutscene" ||
|
||||
race_manager->getTrackName() == "introcutscene2")
|
||||
{
|
||||
|
@ -1180,4 +1180,11 @@ void World::escapePressed()
|
||||
new RacePausedDialog(0.8f, 0.6f);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
bool World::isFogEnabled() const
|
||||
{
|
||||
return m_track != NULL && m_track->isFogEnabled();
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
@ -302,6 +302,8 @@ public:
|
||||
/** Returns a pointer to the track. */
|
||||
Track *getTrack() const { return m_track; }
|
||||
// ------------------------------------------------------------------------
|
||||
bool isFogEnabled() const;
|
||||
// ------------------------------------------------------------------------
|
||||
/** The code that draws the timer should call this first to know
|
||||
* whether the game mode wants a timer drawn. */
|
||||
virtual bool shouldDrawTimer() const
|
||||
|
@ -685,8 +685,18 @@ void RaceManager::exitRace(bool delete_world)
|
||||
|
||||
if (someHumanPlayerWon)
|
||||
{
|
||||
StateManager::get()->pushScreen( GrandPrixWin::getInstance() );
|
||||
GrandPrixWin::getInstance()->setKarts(winners);
|
||||
if (delete_world) World::deleteWorld();
|
||||
delete_world = false;
|
||||
|
||||
StateManager::get()->enterGameState();
|
||||
race_manager->setMinorMode(RaceManager::MINOR_MODE_CUTSCENE);
|
||||
race_manager->setNumKarts(0);
|
||||
race_manager->setNumPlayers(0);
|
||||
race_manager->setNumLocalPlayers(0);
|
||||
race_manager->startSingleRace("gpwin", 999, false);
|
||||
GrandPrixWin* scene = GrandPrixWin::getInstance();
|
||||
StateManager::get()->pushScreen(scene);
|
||||
scene->setKarts(winners);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -71,19 +71,6 @@ GrandPrixWin::GrandPrixWin() : Screen("grand_prix_win.stkgui", false)
|
||||
|
||||
m_throttle_FPS = false;
|
||||
|
||||
StateManager::get()->enterGameState();
|
||||
race_manager->setMinorMode(RaceManager::MINOR_MODE_CUTSCENE);
|
||||
race_manager->setNumKarts(0);
|
||||
race_manager->setNumPlayers(0);
|
||||
race_manager->setNumLocalPlayers(0);
|
||||
race_manager->startSingleRace("gpwin", 999, false);
|
||||
std::vector<std::string> parts;
|
||||
parts.push_back("gpwin");
|
||||
((CutsceneWorld*)World::getWorld())->setParts(parts);
|
||||
CutsceneWorld::setUseDuration(false);
|
||||
|
||||
World::getWorld()->setPhase(WorldStatus::RACE_PHASE);
|
||||
|
||||
m_kart_node[0] = NULL;
|
||||
m_kart_node[1] = NULL;
|
||||
m_kart_node[2] = NULL;
|
||||
@ -98,21 +85,22 @@ GrandPrixWin::GrandPrixWin() : Screen("grand_prix_win.stkgui", false)
|
||||
|
||||
void GrandPrixWin::loadedFromFile()
|
||||
{
|
||||
//m_podium_x[0] = 1.4f;
|
||||
//m_podium_z[0] = 0.0f;
|
||||
//
|
||||
//m_podium_x[1] = 2.2f;
|
||||
//m_podium_z[1] = 0.5f;
|
||||
//
|
||||
//m_podium_x[2] = 3.0f;
|
||||
//m_podium_z[2] = 0.0f;
|
||||
} // loadedFromFile
|
||||
|
||||
// -------------------------------------------------------------------------------------
|
||||
|
||||
void GrandPrixWin::init()
|
||||
{
|
||||
std::vector<std::string> parts;
|
||||
parts.push_back("gpwin");
|
||||
((CutsceneWorld*)World::getWorld())->setParts(parts);
|
||||
CutsceneWorld::setUseDuration(false);
|
||||
|
||||
Screen::init();
|
||||
|
||||
World::getWorld()->setPhase(WorldStatus::RACE_PHASE);
|
||||
|
||||
|
||||
if (PlayerManager::getCurrentPlayer()->getRecentlyCompletedChallenges().size() > 0)
|
||||
{
|
||||
const core::dimension2d<u32>& frame_size = GUIEngine::getDriver()->getCurrentRenderTargetSize();
|
||||
@ -187,6 +175,14 @@ void GrandPrixWin::tearDown()
|
||||
delete m_unlocked_label;
|
||||
m_unlocked_label = NULL;
|
||||
}
|
||||
|
||||
m_kart_node[0] = NULL;
|
||||
m_kart_node[1] = NULL;
|
||||
m_kart_node[2] = NULL;
|
||||
|
||||
m_podium_steps[0] = NULL;
|
||||
m_podium_steps[1] = NULL;
|
||||
m_podium_steps[2] = NULL;
|
||||
} // tearDown
|
||||
|
||||
// -------------------------------------------------------------------------------------
|
||||
@ -355,6 +351,8 @@ void GrandPrixWin::setKarts(const std::string idents_arg[3])
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
const KartProperties* kp = kart_properties_manager->getKart(idents[i]);
|
||||
if (kp == NULL) continue;
|
||||
|
||||
KartModel* kart_model = kp->getKartModelCopy();
|
||||
m_all_kart_models.push_back(kart_model);
|
||||
scene::ISceneNode* kart_main_node = kart_model->attachModel(false);
|
||||
|
@ -233,17 +233,42 @@ void MainMenuScreen::eventCallback(Widget* widget, const std::string& name,
|
||||
if (selection == "options")
|
||||
{
|
||||
// The DEBUG item
|
||||
|
||||
// GP WIN
|
||||
StateManager::get()->enterGameState();
|
||||
race_manager->setMinorMode(RaceManager::MINOR_MODE_CUTSCENE);
|
||||
race_manager->setNumKarts(0);
|
||||
race_manager->setNumPlayers(0);
|
||||
race_manager->setNumLocalPlayers(0);
|
||||
race_manager->startSingleRace("gpwin", 999, false);
|
||||
GrandPrixWin* scene = GrandPrixWin::getInstance();
|
||||
const std::string winners[] = { "elephpant", "nolok", "pidgin" };
|
||||
StateManager::get()->pushScreen(scene);
|
||||
scene->setKarts(winners);
|
||||
|
||||
// GP Lose
|
||||
/*
|
||||
GrandPrixLose* scene = GrandPrixLose::getInstance();
|
||||
StateManager::get()->pushScreen(scene);
|
||||
std::vector<std::string> losers;
|
||||
losers.push_back("nolok");
|
||||
losers.push_back("elephpant");
|
||||
losers.push_back("wilber");
|
||||
scene->setKarts( losers );
|
||||
*/
|
||||
|
||||
/*
|
||||
// FEATURE UNLOCKED
|
||||
FeatureUnlockedCutScene* scene =
|
||||
FeatureUnlockedCutScene::getInstance();
|
||||
FeatureUnlockedCutScene::getInstance();
|
||||
|
||||
scene->addTrophy(RaceManager::DIFFICULTY_EASY);
|
||||
StateManager::get()->pushScreen(scene);
|
||||
|
||||
/*
|
||||
static int i = 1;
|
||||
i++;
|
||||
|
||||
if (i % 4 == 0)
|
||||
if (i % 2 == 0)
|
||||
{
|
||||
// the passed kart will not be modified, that's why I allow myself
|
||||
// to use const_cast
|
||||
@ -255,7 +280,7 @@ void MainMenuScreen::eventCallback(Widget* widget, const std::string& name,
|
||||
);
|
||||
StateManager::get()->pushScreen(scene);
|
||||
}
|
||||
else if (i % 4 == 1)
|
||||
else if (i % 2 == 1)
|
||||
{
|
||||
std::vector<video::ITexture*> textures;
|
||||
textures.push_back(irr_driver->getTexture(
|
||||
@ -274,23 +299,6 @@ void MainMenuScreen::eventCallback(Widget* widget, const std::string& name,
|
||||
scene->addUnlockedPictures(textures, 1.0, 0.75, L"You did it");
|
||||
|
||||
StateManager::get()->pushScreen(scene);
|
||||
}
|
||||
else if (i % 4 == 2)
|
||||
{
|
||||
GrandPrixWin* scene = GrandPrixWin::getInstance();
|
||||
const std::string winners[] = { "elephpant", "nolok", "pidgin" };
|
||||
StateManager::get()->pushScreen(scene);
|
||||
scene->setKarts( winners );
|
||||
}
|
||||
else
|
||||
{
|
||||
GrandPrixLose* scene = GrandPrixLose::getInstance();
|
||||
StateManager::get()->pushScreen(scene);
|
||||
std::vector<std::string> losers;
|
||||
losers.push_back("nolok");
|
||||
losers.push_back("elephpant");
|
||||
losers.push_back("wilber");
|
||||
scene->setKarts( losers );
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user