Changeset 5774 for code/trunk/src/orxonox/GSRoot.cc
- Timestamp:
- Sep 23, 2009, 11:31:02 PM (15 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
code/trunk/src/orxonox/GSRoot.cc
r5758 r5774 30 30 31 31 #include "core/Clock.h" 32 #include "core/ConsoleCommand.h"33 32 #include "core/Game.h" 34 #include "core/GameMode.h"35 #include "network/NetworkFunction.h"36 #include "tools/Timer.h"37 #include "tools/interfaces/TimeFactorListener.h"38 #include "tools/interfaces/Tickable.h"39 #include "LevelManager.h"40 33 41 34 namespace orxonox … … 45 38 GSRoot::GSRoot(const GameStateInfo& info) 46 39 : GameState(info) 47 , timeFactor_(1.0f)48 , bPaused_(false)49 , timeFactorPauseBackup_(1.0f)50 40 { 51 this->ccSetTimeFactor_ = 0;52 this->ccPause_ = 0;53 41 } 54 42 55 43 GSRoot::~GSRoot() 56 44 { 57 NetworkFunctionBase::destroyAllNetworkFunctions();58 45 } 59 46 60 47 void GSRoot::activate() 61 48 { 62 // reset game speed to normal63 this->timeFactor_ = 1.0f;64 65 {66 // time factor console command67 FunctorMember<GSRoot>* functor = createFunctor(&GSRoot::setTimeFactor);68 functor->setObject(this);69 this->ccSetTimeFactor_ = createConsoleCommand(functor, "setTimeFactor");70 CommandExecutor::addConsoleCommandShortcut(this->ccSetTimeFactor_).accessLevel(AccessLevel::Offline).defaultValue(0, 1.0);71 }72 73 {74 // time factor console command75 FunctorMember<GSRoot>* functor = createFunctor(&GSRoot::pause);76 functor->setObject(this);77 this->ccPause_ = createConsoleCommand(functor, "pause");78 CommandExecutor::addConsoleCommandShortcut(this->ccPause_).accessLevel(AccessLevel::Offline);79 }80 81 // create the LevelManager82 this->levelManager_ = new LevelManager();83 49 } 84 50 85 51 void GSRoot::deactivate() 86 52 { 87 /*88 if (this->ccSetTimeFactor_)89 {90 delete this->ccSetTimeFactor_;91 this->ccSetTimeFactor_ = 0;92 }93 94 if (this->ccPause_)95 {96 delete this->ccPause_;97 this->ccPause_ = 0;98 }99 */100 101 delete this->levelManager_;102 53 } 103 54 104 55 void GSRoot::update(const Clock& time) 105 56 { 106 if (this->getActivity().topState)107 {108 // This state can not 'survive' on its own.109 // Load a user interface therefore110 Game::getInstance().requestState("ioConsole");111 }112 113 for (ObjectList<TimerBase>::iterator it = ObjectList<TimerBase>::begin(); it; ++it)114 it->tick(time);115 116 /*** HACK *** HACK ***/117 // Call the Tickable objects118 float leveldt = time.getDeltaTime();119 if (leveldt > 1.0f)120 {121 // just loaded122 leveldt = 0.0f;123 }124 for (ObjectList<Tickable>::iterator it = ObjectList<Tickable>::begin(); it; ++it)125 it->tick(leveldt * this->timeFactor_);126 /*** HACK *** HACK ***/127 }128 129 /**130 @brief131 Changes the speed of Orxonox132 @remark133 This function is a hack when placed here!134 Timefactor should be related to the scene (level or so), not the game135 */136 void GSRoot::setTimeFactor(float factor)137 {138 if (GameMode::isMaster())139 {140 if (!this->bPaused_)141 {142 TimeFactorListener::timefactor_s = factor;143 144 for (ObjectList<TimeFactorListener>::iterator it = ObjectList<TimeFactorListener>::begin(); it != ObjectList<TimeFactorListener>::end(); ++it)145 it->changedTimeFactor(factor, this->timeFactor_);146 147 this->timeFactor_ = factor;148 }149 else150 this->timeFactorPauseBackup_ = factor;151 }152 }153 154 void GSRoot::pause()155 {156 if (GameMode::isMaster())157 {158 if (!this->bPaused_)159 {160 this->timeFactorPauseBackup_ = this->timeFactor_;161 this->setTimeFactor(0.0f);162 this->bPaused_ = true;163 }164 else165 {166 this->bPaused_ = false;167 this->setTimeFactor(this->timeFactorPauseBackup_);168 }169 }170 57 } 171 58 }
Note: See TracChangeset
for help on using the changeset viewer.