Changeset 12016
- Timestamp:
- May 30, 2018, 2:37:02 PM (7 years ago)
- Location:
- code/branches/PresentationFS18
- Files:
-
- 25 edited
- 12 copied
Legend:
- Unmodified
- Added
- Removed
-
code/branches/PresentationFS18
- Property svn:mergeinfo changed
-
code/branches/PresentationFS18/data/levels/scriptController.oxw
r10622 r12016 18 18 19 19 <Level 20 gametype = Deathmatch20 21 21 > 22 22 <templates> -
code/branches/PresentationFS18/src/libraries/core/BaseObject.cc
r11103 r12016 77 77 { 78 78 this->setFile(this->creator_->getFile()); 79 79 80 80 // store strong-pointers on all four base objects by default (can be overwritten with weak-ptr after the constructor if necessary) 81 81 this->setNamespace(this->creator_->namespace_.createStrongPtr()); -
code/branches/PresentationFS18/src/libraries/core/BaseObject.h
r11071 r12016 58 58 class Gametype; 59 59 class Level; 60 class ScriptableController; 60 61 61 62 /// The BaseObject is the parent of all classes representing an instance in the game. … … 191 192 192 193 static void loadAllEventStates(Element& xmlelement, XMLPort::Mode mode, BaseObject* object, Identifier* identifier); 194 193 195 194 196 protected: -
code/branches/PresentationFS18/src/libraries/tools/Timer.cc
r12015 r12016 158 158 } 159 159 160 Timer::Timer(float interval, bool bLoop, std::function<void ()> func, bool bKillAfterCall) 161 { 162 this->init(); 163 RegisterObject(Timer); 164 165 this->setTimer(interval, bLoop, func, bKillAfterCall); 166 } 167 160 168 /** 161 169 @brief Initializes the Timer … … 193 201 this->executor_ = executor; 194 202 this->bActive_ = true; 203 this->isStdFunction_ = false; 195 204 196 205 this->time_ = this->interval_; 197 206 this->bKillAfterCall_ = bKillAfterCall; 198 207 199 executor->getFunctor()->setSafeMode(true); 200 } 201 208 if(executor != nullptr) 209 executor->getFunctor()->setSafeMode(true); 210 } 211 212 void Timer::setTimer(float interval, bool bLoop, std::function<void ()> func, bool bKillAfterCall) 213 { 214 // Without the cast, the call would be ambiguous, because nullptr is castable to 215 // both, ExecutorPtr and std::function. 216 this->setTimer(interval, bLoop, static_cast<ExecutorPtr>(nullptr), bKillAfterCall); 217 this->function_ = func; 218 this->isStdFunction_ = true; 219 } 202 220 203 221 /** … … 208 226 bool temp = this->bKillAfterCall_; // to avoid errors with bKillAfterCall_=false and an exutors which destroy the timer 209 227 210 (*this->executor_)(); 228 if(this->isStdFunction_) 229 this->function_(); 230 else 231 (*this->executor_)(); 211 232 212 233 if (temp) -
code/branches/PresentationFS18/src/libraries/tools/Timer.h
r12015 r12016 108 108 109 109 Timer(float interval, bool bLoop, const ExecutorPtr& executor, bool bKillAfterCall = false); 110 Timer(float interval, bool bLoop, std::function<void (void)> func, bool bKillAfterCall = false); 110 111 111 112 void setTimer(float interval, bool bLoop, const ExecutorPtr& executor, bool bKillAfterCall = false); 113 void setTimer(float interval, bool bLoop, std::function<void (void)> func, bool bKillAfterCall = false); 112 114 113 115 void run(); … … 154 156 155 157 ExecutorPtr executor_; //!< The executor of the function that will be called when the time expires 158 std::function<void (void)> function_; 156 159 160 bool isStdFunction_; 157 161 long long interval_; //!< The time-interval in micro seconds 158 162 bool bLoop_; //!< If true, the executor gets called every @a interval seconds -
code/branches/PresentationFS18/src/orxonox/CMakeLists.txt
r11704 r12016 51 51 ADD_SUBDIRECTORY(items) 52 52 ADD_SUBDIRECTORY(overlays) 53 ADD_SUBDIRECTORY(scriptablecontroller) 53 54 ADD_SUBDIRECTORY(sound) 54 55 ADD_SUBDIRECTORY(weaponsystem) -
code/branches/PresentationFS18/src/orxonox/Level.cc
r11071 r12016 42 42 #include "overlays/OverlayGroup.h" 43 43 #include "LevelManager.h" 44 #include "scriptablecontroller/scriptable_controller.h" 44 45 45 46 namespace orxonox … … 56 57 this->xmlfilename_ = this->getFilename(); 57 58 this->xmlfile_ = nullptr; 59 this->controller_.reset(new ScriptableController()); 58 60 } 59 61 … … 78 80 XMLPortParam(Level, "plugins", setPluginsString, getPluginsString, xmlelement, mode); 79 81 XMLPortParam(Level, "gametype", setGametypeString, getGametypeString, xmlelement, mode).defaultValues("Gametype"); 82 83 XMLPortParamLoadOnly(Level, "script", setScript, xmlelement, mode).defaultValues("scripts/empty.lua"); 80 84 81 85 XMLPortObject(Level, MeshLodInformation, "lodinformation", addLodInfo, getLodInfo, xmlelement, mode); -
code/branches/PresentationFS18/src/orxonox/Level.h
r11071 r12016 42 42 namespace orxonox 43 43 { 44 class ScriptableController; 45 44 46 class _OrxonoxExport Level : public BaseObject, public Synchronisable, public Context 45 47 { … … 55 57 MeshLodInformation* getLodInfo(std::string meshName) const; 56 58 59 inline ScriptableController *getScriptableController(void) 60 { return this->controller_.get(); } 61 62 inline const std::string &getScript(void) 63 { return this->level_script_; } 57 64 58 65 private: … … 78 85 void networkcallback_applyXMLFile(); 79 86 87 inline void setScript(const std::string &script) 88 { 89 orxout(internal_warning) << "hi world" << endl; 90 this->level_script_ = script; } 91 92 80 93 std::string pluginsString_; 81 94 std::list<PluginReference*> plugins_; 82 83 95 std::string gametype_; 84 96 std::string xmlfilename_; … … 86 98 std::list<BaseObject*> objects_; 87 99 std::map<std::string,MeshLodInformation*> lodInformation_; 100 101 std::unique_ptr<ScriptableController> controller_; 102 std::string level_script_; 88 103 }; 89 104 } -
code/branches/PresentationFS18/src/orxonox/controllers/CMakeLists.txt
r11783 r12016 19 19 FightingController.cc 20 20 MasterController.cc 21 ArrowController.cc 21 ArrowController.cc; 22 AutonomousDroneController.cc; 23 22 24 ) -
code/branches/PresentationFS18/src/orxonox/controllers/Controller.cc
r11071 r12016 26 26 * 27 27 */ 28 28 //asdf 29 29 #include "Controller.h" 30 30 #include "core/CoreIncludes.h" -
code/branches/PresentationFS18/src/orxonox/infos/GametypeInfo.cc
r11099 r12016 43 43 #include "interfaces/GametypeMessageListener.h" 44 44 #include "interfaces/NotificationListener.h" 45 #include "scriptablecontroller/scriptable_controller.h" 46 #include "Level.h" 45 47 46 48 #include "PlayerInfo.h" … … 76 78 this->spawned_ = false; 77 79 this->readyToSpawn_ = false; 80 this->isFirstSpawn_ = true; 78 81 79 82 this->registerVariables(); … … 296 299 this->setReadyToSpawnHelper(player, false); 297 300 this->setSpawnedHelper(player, false); 301 298 302 } 299 303 } … … 310 314 { 311 315 if(this->hasStarted() && !this->hasEnded()) 312 313 316 this->setSpawnedHelper(player, true); 317 } 318 319 // TODO We might want to handle the subsequent spawns as well somehow 320 if(player->isHumanPlayer() && player->isLocalPlayer()) //&& this->isFirstSpawn_) 321 { 322 this->isFirstSpawn_ = false; 323 this->getLevel()->getScriptableController()->setPlayer(player); 324 325 // This handles paths relative to the 'level' directory 326 std::string script = this->getLevel()->getScript(); 327 if(script.at(0) != '/') 328 script = "../levels/" + script; // Not very dynamic 329 this->getLevel()->getScriptableController()->runScript(script); 314 330 } 315 331 } … … 345 361 { 346 362 // Display "Press [Fire] to start the match" if the game has not yet ended. 347 if(!this->hasEnded()) 363 if(!this->hasEnded()){ 348 364 NotificationListener::sendNotification("Press [Fire] to start the match", GametypeInfo::NOTIFICATION_SENDER, NotificationMessageType::info, NotificationSendMode::network, player->getClientID()); 365 366 //this->getLevel()->getScriptableController()->setPlayer(player); 367 368 // This handles paths relative to the 'level' directory 369 //std::string script = this->getLevel()->getScript(); 370 //if(script.at(0) != '/') 371 //script = "../levels/" + script; // Not very dynamic 372 //this->getLevel()->getScriptableController()->runScript(script); 373 } 349 374 // Else display "Game has ended". 350 375 else -
code/branches/PresentationFS18/src/orxonox/infos/GametypeInfo.h
r11720 r12016 83 83 inline bool isStartCountdownRunning() const 84 84 { return this->bStartCountdownRunning_; } 85 85 86 void changedStartCountdownRunning(void); // Is called when the start countdown has been either started or stopped. 86 87 … … 166 167 bool spawned_; //!< Whether the local Player is currently spawned. 167 168 bool readyToSpawn_; //!< Whether the local Player is ready to spawn. 169 bool isFirstSpawn_; 168 170 }; 169 171 } -
code/branches/PresentationFS18/src/orxonox/infos/HumanPlayer.cc
r11071 r12016 38 38 #include "gametypes/Gametype.h" 39 39 #include "overlays/OverlayGroup.h" 40 #include "Level.h" 41 #include "scriptablecontroller/scriptable_controller.h" 40 42 41 43 namespace orxonox -
code/branches/PresentationFS18/src/orxonox/items/ShipPart.cc
r11099 r12016 42 42 #include "items/PartDestructionEvent.h" 43 43 #include "chat/ChatManager.h" 44 #include "Level.h" 45 #include "scriptablecontroller/scriptable_controller.h" 44 46 45 47 … … 215 217 } 216 218 } 219 220 // This is a bit hacky, but it takes away damage control from the pawn, so it has to handle 221 // that as well. 222 this->getLevel()->getScriptableController()->pawnHit(parent_, originator, parent_->getHealth(), parent_->getShieldHealth()); 223 217 224 if (this->health_ < 0) 218 225 this->death(); -
code/branches/PresentationFS18/src/orxonox/worldentities/CMakeLists.txt
r11783 r12016 15 15 NameableStaticEntity.cc 16 16 Arrow.cc 17 AutonomousDrone.cc 17 18 ) 18 19 -
code/branches/PresentationFS18/src/orxonox/worldentities/ControllableEntity.cc
r11071 r12016 39 39 40 40 #include "Scene.h" 41 #include "Level.h" 41 42 #include "infos/PlayerInfo.h" 42 43 #include "controllers/NewHumanController.h" … … 67 68 this->camera_ = nullptr; 68 69 this->xmlcontroller_ = nullptr; 69 //this->controller_ = nullptr;70 70 this->reverseCamera_ = nullptr; 71 71 this->bDestroyWhenPlayerLeft_ = false; -
code/branches/PresentationFS18/src/orxonox/worldentities/ControllableEntity.h
r11071 r12016 175 175 inline int getTeam() const 176 176 { return this->team_; } 177 177 178 178 179 protected: -
code/branches/PresentationFS18/src/orxonox/worldentities/MobileEntity.cc
r11071 r12016 36 36 37 37 #include "Scene.h" 38 #include "Level.h" 39 #include "scriptablecontroller/scriptable_controller.h" 38 40 39 41 namespace orxonox … … 72 74 this->setAngularVelocity(rotationAxis.normalisedCopy() * rotationRate.valueRadians()); 73 75 } 76 77 if(!this->id_.empty() && this->getLevel() != nullptr) 78 this->getLevel()->getScriptableController()->registerMobileEntity(this->id_, this); 74 79 } 75 80 -
code/branches/PresentationFS18/src/orxonox/worldentities/WorldEntity.cc
r11083 r12016 44 44 #include "core/XMLPort.h" 45 45 #include "Scene.h" 46 #include "Level.h" 46 47 #include "collisionshapes/WorldEntityCollisionShape.h" 48 #include "scriptablecontroller/scriptable_controller.h" 47 49 48 50 namespace orxonox … … 79 81 this->parentID_ = OBJECTID_UNKNOWN; 80 82 this->bDeleteWithParent_ = true; 83 this->id_ = -1; 81 84 82 85 this->node_->setPosition(Vector3::ZERO); … … 160 163 XMLPortParamTemplate(WorldEntity, "scale3D", setScale3D, getScale3D, xmlelement, mode, const Vector3&); 161 164 XMLPortParam (WorldEntity, "scale", setScale, getScale, xmlelement, mode); 165 XMLPortParamLoadOnly(WorldEntity, "id", setID, xmlelement, mode); 162 166 XMLPortParamLoadOnly(WorldEntity, "lookat", lookAt_xmlport, xmlelement, mode); 163 167 XMLPortParamLoadOnly(WorldEntity, "direction", setDirection_xmlport, xmlelement, mode); … … 181 185 // Attached collision shapes 182 186 XMLPortObject(WorldEntity, CollisionShape, "collisionShapes", attachCollisionShape, getAttachedCollisionShape, xmlelement, mode); 187 188 if(!this->id_.empty() && this->getLevel() != nullptr) 189 this->getLevel()->getScriptableController()->registerWorldEntity(this->id_, this); 183 190 } 184 191 -
code/branches/PresentationFS18/src/orxonox/worldentities/WorldEntity.h
r11099 r12016 110 110 virtual void changedActivity(void) override; 111 111 virtual void changedVisibility(void) override; 112 113 inline std::string getID(void) 114 { return this->id_; } 115 116 inline void setID(std::string id) 117 { this->id_ = id; } 112 118 113 119 virtual void setPosition(const Vector3& position) = 0; … … 442 448 443 449 btRigidBody* physicalBody_; //!< Bullet rigid body. Everything physical is applied to this instance. 450 std::string id_; //!< Used by the ScriptableController to identify objects 444 451 445 452 private: -
code/branches/PresentationFS18/src/orxonox/worldentities/pawns/CMakeLists.txt
r11783 r12016 4 4 Pawn.cc 5 5 SpaceShip.cc 6 ScriptableControllerDrone.cc 6 7 ModularSpaceShip.cc 7 8 TeamBaseMatchBase.cc -
code/branches/PresentationFS18/src/orxonox/worldentities/pawns/Pawn.cc
r11783 r12016 50 50 #include "sound/WorldSound.h" 51 51 #include "core/object/ObjectListIterator.h" 52 #include "Level.h" 53 #include "scriptablecontroller/scriptable_controller.h" 52 54 53 55 #include "controllers/FormationController.h" … … 160 162 161 163 XMLPortParam ( RadarViewable, "radarname", setRadarName, getRadarName, xmlelement, mode ); 164 165 if(!this->id_.empty() && this->getLevel() != nullptr) 166 this->getLevel()->getScriptableController()->registerPawn(this->id_, this); 162 167 } 163 168 … … 282 287 { 283 288 // Health-damage cannot be absorbed by shields. 284 // Shield-damage only reduces shield health. 289 // Shield-damage only reduces shield health. 285 290 // Normal damage can be (partially) absorbed by shields. 286 291 … … 302 307 this->setHealth(this->health_ - (damage - shielddamage) - healthdamage); 303 308 } 309 this->getLevel()->getScriptableController()->pawnHit(this, originator, this->health_, this->shieldHealth_); 304 310 305 311 this->lastHitOriginator_ = originator; … … 402 408 } 403 409 } 410 411 this->getLevel()->getScriptableController()->pawnKilled(this); 404 412 } 405 413 void Pawn::goWithStyle() … … 625 633 { 626 634 // delete all debug models 627 for(Model* model : debugWeaponSlotModels_) 635 for(Model* model : debugWeaponSlotModels_) 628 636 { 629 637 model->destroy(); -
code/branches/PresentationFS18/src/orxonox/worldentities/pawns/SpaceShip.cc
r12015 r12016 163 163 engine->run(dt); 164 164 165 if (this->hasLocalController() )165 if (this->hasLocalController() || true) 166 166 { 167 167 // If not in mouse look apply the angular movement to the ship. -
code/branches/PresentationFS18/src/orxonox/worldentities/pawns/SpaceShip.h
r12015 r12016 117 117 { this->steering_.y += (0.6)*value.x; } 118 118 119 inline void moveFrontBack(float value) 120 { this->moveFrontBack(Vector2(value, 0)); } 121 inline void moveRightLeft(float value) 122 { this->moveRightLeft(Vector2(value, 0)); } 123 inline void moveUpDown(float value) 124 { this->moveUpDown(Vector2(value, 0)); } 125 119 126 virtual void rotateYaw(const Vector2& value); // Rotate in yaw direction. 120 127 virtual void rotatePitch(const Vector2& value); // Rotate in pitch direction.
Note: See TracChangeset
for help on using the changeset viewer.