From: <yas...@us...> - 2013-08-18 07:36:36
|
Revision: 13497 http://sourceforge.net/p/supertuxkart/code/13497 Author: yasin-ghannam Date: 2013-08-18 07:36:32 +0000 (Sun, 18 Aug 2013) Log Message: ----------- Goal scoring corrected. "GOAL!" appears when a goal is scored (Music will be added soon). Karts start positions fixed so that each kart faces the goal of the opposite team, not its own. Modified Paths: -------------- main/branches/soccer/src/modes/soccer_world.cpp main/branches/soccer/src/modes/soccer_world.hpp main/branches/soccer/src/modes/world_status.cpp main/branches/soccer/src/modes/world_status.hpp main/branches/soccer/src/states_screens/race_gui.cpp main/branches/soccer/src/states_screens/race_gui_base.cpp main/branches/soccer/src/states_screens/race_gui_base.hpp Modified: main/branches/soccer/src/modes/soccer_world.cpp =================================================================== --- main/branches/soccer/src/modes/soccer_world.cpp 2013-08-18 01:02:43 UTC (rev 13496) +++ main/branches/soccer/src/modes/soccer_world.cpp 2013-08-18 07:36:32 UTC (rev 13497) @@ -100,10 +100,14 @@ // TODO if(m_can_score_points){ printf("*** GOOOOOOOOOAAAAAAALLLLLL!!!! (team: %d) ***\n", first_goal ? 0 : 1); - m_team_goals[first_goal]++; + m_team_goals[first_goal ? 0 : 1]++; printf("Score:\nTeam One %d : %d Team Two\n", m_team_goals[0], m_team_goals[1]); } + World *world = World::getWorld(); + world->setPhase(WorldStatus::GOAL_PHASE); + world->setClockMode(World::CLOCK_COUNTDOWN, 1.0); + //m_check_goals_enabled = false; // TODO: remove? // Reset original positions for the soccer balls @@ -372,10 +376,10 @@ { int posIndex = index; if(race_manager->getLocalKartInfo(index).getSoccerTeam() == SOCCER_TEAM_RED){ - if(index % 2 != 0) posIndex += 1; + if(index % 2 != 1) posIndex += 1; } else if(race_manager->getLocalKartInfo(index).getSoccerTeam() == SOCCER_TEAM_BLUE){ - if(index % 2 != 1) posIndex += 1; + if(index % 2 != 0) posIndex += 1; } int position = index+1; btTransform init_pos = m_track->getStartTransform(posIndex); @@ -408,4 +412,9 @@ new_kart->setController(controller); return new_kart; -} // createKart \ No newline at end of file +} // createKart +//----------------------------------------------------------------------------- +void SoccerWorld::countdownReachedZero(){ + World *world = World::getWorld(); + world->setPhase(World::RACE_PHASE); +} \ No newline at end of file Modified: main/branches/soccer/src/modes/soccer_world.hpp =================================================================== --- main/branches/soccer/src/modes/soccer_world.hpp 2013-08-18 01:02:43 UTC (rev 13496) +++ main/branches/soccer/src/modes/soccer_world.hpp 2013-08-18 07:36:32 UTC (rev 13497) @@ -79,6 +79,8 @@ virtual void update(float dt); + virtual void countdownReachedZero(); + void onCheckGoalTriggered(bool first_goal); int getTeamLeader(unsigned int i); Modified: main/branches/soccer/src/modes/world_status.cpp =================================================================== --- main/branches/soccer/src/modes/world_status.cpp 2013-08-18 01:02:43 UTC (rev 13496) +++ main/branches/soccer/src/modes/world_status.cpp 2013-08-18 07:36:32 UTC (rev 13497) @@ -236,6 +236,9 @@ case FINISH_PHASE: // Nothing to do here. break; + case GOAL_PHASE: + printf("%f", m_time); + default: break; } Modified: main/branches/soccer/src/modes/world_status.hpp =================================================================== --- main/branches/soccer/src/modes/world_status.hpp 2013-08-18 01:02:43 UTC (rev 13496) +++ main/branches/soccer/src/modes/world_status.hpp 2013-08-18 07:36:32 UTC (rev 13497) @@ -77,7 +77,10 @@ IN_GAME_MENU_PHASE, // Undefined, used in asserts to catch incorrect states. - UNDEFINED_PHASE + UNDEFINED_PHASE, + + //Goal scored phase + GOAL_PHASE }; protected: /** Sound to play at the beginning of a race, during which a Modified: main/branches/soccer/src/states_screens/race_gui.cpp =================================================================== --- main/branches/soccer/src/states_screens/race_gui.cpp 2013-08-18 01:02:43 UTC (rev 13496) +++ main/branches/soccer/src/states_screens/race_gui.cpp 2013-08-18 07:36:32 UTC (rev 13497) @@ -160,6 +160,8 @@ { drawGlobalReadySetGo(); } + if(world->getPhase() == World::GOAL_PHASE) + drawGlobalGoal(); // Timer etc. are not displayed unless the game is actually started. if(!world->isRacePhase()) return; Modified: main/branches/soccer/src/states_screens/race_gui_base.cpp =================================================================== --- main/branches/soccer/src/states_screens/race_gui_base.cpp 2013-08-18 01:02:43 UTC (rev 13496) +++ main/branches/soccer/src/states_screens/race_gui_base.cpp 2013-08-18 07:36:32 UTC (rev 13497) @@ -69,6 +69,8 @@ m_string_set = _("Set!"); //I18N: as in "ready, set, go", shown at the beginning of the race m_string_go = _("Go!"); + //Shown when a goal is scored + m_string_goal = "GOAL!"; // Make the two materials permanent (in case that they are not listed // in the textures/materials.xml file). m_music_icon = material_manager->getMaterial("notes.png", @@ -674,6 +676,16 @@ NULL, NULL, true); } // drawGlobalMusicDescription +//----------------------------------------------------------------------------- +void RaceGUIBase::drawGlobalGoal(){ + static video::SColor color = video::SColor(255, 255, 255, 255); + core::rect<s32> pos(UserConfigParams::m_width>>1, + UserConfigParams::m_height>>1, + UserConfigParams::m_width>>1, + UserConfigParams::m_height>>1); + gui::IGUIFont* font = GUIEngine::getTitleFont(); + font->draw(m_string_goal.c_str(), pos, color, true, true); +} // ---------------------------------------------------------------------------- /** Draws the ready-set-go message on the screen. */ Modified: main/branches/soccer/src/states_screens/race_gui_base.hpp =================================================================== --- main/branches/soccer/src/states_screens/race_gui_base.hpp 2013-08-18 01:02:43 UTC (rev 13496) +++ main/branches/soccer/src/states_screens/race_gui_base.hpp 2013-08-18 07:36:32 UTC (rev 13497) @@ -127,7 +127,7 @@ Material *m_music_icon; /** Translated strings 'ready', 'set', 'go'. */ - core::stringw m_string_ready, m_string_set, m_string_go; + core::stringw m_string_ready, m_string_set, m_string_go, m_string_goal; /** Translated string 'Top %d' displayed every frame. */ core::stringw m_string_top; @@ -199,6 +199,7 @@ const core::vector2df &scaling); void drawGlobalMusicDescription(); void drawGlobalReadySetGo (); + void drawGlobalGoal (); void drawPlungerInFace(const Camera *camera, float dt); /** Instructs the base gui to ignore unimportant messages (like * item messages). This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |