Changeset 9269
- Timestamp:
- Jun 3, 2012, 4:33:13 PM (13 years ago)
- Location:
- code/branches/presentation2012merge
- Files:
-
- 20 edited
- 14 copied
Legend:
- Unmodified
- Added
- Removed
-
code/branches/presentation2012merge
- Property svn:ignore
-
old new 1 .project 1 2 build 2 3 codeblocks 4 dependencies 3 5 vs 4 dependencies
-
- Property svn:mergeinfo changed
- Property svn:ignore
-
code/branches/presentation2012merge/data/gui/scripts/AudioMenu.lua
r8351 r9269 34 34 table.insert(themeList, "8-Bit Style") 35 35 table.insert(themeList, "Corny Jazz") 36 table.insert(themeList, "Metal") 36 37 for k,v in pairs(themeList) do 37 38 item = CEGUI.createListboxTextItem(v) … … 45 46 elseif orxonox.getConfig("MoodManager", "mood_") == "jazzy" then 46 47 listboxwindow:setItemSelectState(3,true) 48 elseif orxonox.getConfig("MoodManager", "mood_") == "metal" then 49 listboxwindow:setItemSelectState(4,true) 47 50 else 48 51 listboxwindow:setItemSelectState(0,true) … … 178 181 elseif listboxwindow:isItemSelected(3) then 179 182 orxonox.config("MoodManager", "mood_", "jazzy") 183 elseif listboxwindow:isItemSelected(4) then 184 orxonox.config("MoodManager", "mood_", "metal") 180 185 else 181 186 orxonox.config("MoodManager", "mood_", "default") -
code/branches/presentation2012merge/data/gui/scripts/SingleplayerMenu.lua
r9251 r9269 2 2 3 3 local P = createMenuSheet("SingleplayerMenu") 4 4 P.loadAlong = {"ShipSelectionMenu"} 5 5 P.levelList = {} 6 6 P.activeTabIndexes = {} 7 7 P.scrollbarWidth = 13 8 selectedlevel = {} -- level for ship selection 8 9 9 10 function P.onLoad() … … 46 47 while index < size do 47 48 level = orxonox.LevelManager:getInstance():getAvailableLevelListItem(index) 48 if level ~= nil then 49 if (level ~= nil and level:getXMLFilename() ~= "_temp.oxw") then 50 --os.execute("echo " .. level:getXMLFilename() .." >> ~/outputorx") 49 51 local levelXMLFilename = level:getXMLFilename() 50 52 -- create an imageset for each screenshot … … 141 143 142 144 function P.SingleplayerStartButton_clicked(e) 143 local level = P.SingleplayerGetSelectedLevel() 144 if level ~= nil then 145 orxonox.execute("startGame " .. level:getXMLFilename()) 146 hideAllMenuSheets() 145 selectedlevel = P.SingleplayerGetSelectedLevel() 146 if selectedlevel ~= nil then 147 if selectedlevel:hasTag("shipselection") then 148 local shipSelectionMenu = showMenuSheet("ShipSelectionMenu", true) 149 shipSelectionMenu:update() 150 else 151 orxonox.execute("startGame " .. selectedlevel:getXMLFilename()) 152 hideAllMenuSheets() 153 end 147 154 end 148 155 end -
code/branches/presentation2012merge/data/levels/includes/pickups.oxi
r8713 r9269 210 210 </PickupRepresentation> 211 211 212 <!-- DamageBoost Pickup --> 213 214 <PickupRepresentation 215 pickupName = "Small DamageBoost Pickup" 216 pickupDescription = "Multiplies the ship damage with 2." 217 spawnerTemplate = "smalldamageboostpickupRepresentation" 218 inventoryRepresentation = "SmallDamageBoost" 219 > 220 <pickup> 221 <DamageBoostPickup template=smalldamageboostpickup /> 222 </pickup> 223 </PickupRepresentation> 224 225 <PickupRepresentation 226 pickupName = "Medium DamageBoost Pickup" 227 pickupDescription = "Multiplies the ship damage with 5." 228 spawnerTemplate = "mediumdamageboostpickupRepresentation" 229 inventoryRepresentation = "MediumDamageBoost" 230 > 231 <pickup> 232 <DamageBoostPickup template=mediumdamageboostpickup /> 233 </pickup> 234 </PickupRepresentation> 235 236 <PickupRepresentation 237 pickupName = "Large DamageBoost Pickup" 238 pickupDescription = "Multiplies the ship damage with 7." 239 spawnerTemplate = "largedamageboostpickupRepresentation" 240 inventoryRepresentation = "LargeDamageBoost" 241 > 242 <pickup> 243 <DamageBoostPickup template=largedamageboostpickup /> 244 </pickup> 245 </PickupRepresentation> 246 212 247 <!-- Shrink Pickup --> 213 248 -
code/branches/presentation2012merge/data/levels/pickups.oxw
r9016 r9269 168 168 </pickup> 169 169 </PickupSpawner> 170 171 <!-- DamageBoost pickup --> 172 173 <PickupSpawner position="-50,75,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10"> 174 <pickup> 175 <DamageBoostPickup template=smalldamageboostpickup /> 176 </pickup> 177 </PickupSpawner> 178 179 <PickupSpawner position="-50,100,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10"> 180 <pickup> 181 <DamageBoostPickup template=mediumdamageboostpickup /> 182 </pickup> 183 </PickupSpawner> 184 185 <PickupSpawner position="-50,125,-125" triggerDistance="10" respawnTime="30" maxSpawnedItems="10"> 186 <pickup> 187 <DamageBoostPickup template=largedamageboostpickup /> 188 </pickup> 189 </PickupSpawner> 190 170 191 171 192 <!-- Other pickups --> … … 206 227 </pickup> 207 228 </PickupSpawner> 229 230 <!-- @Objects: 4 boxes (uncontrolled pawns) --> 231 <Pawn team=1 health=30 position="0,0,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box RVName = "Box 4" > 232 <events> 233 <visibility> 234 <EventListener event="flying4" /> 235 </visibility> 236 </events> 237 <attached> 238 <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" /> 239 </attached> 240 <collisionShapes> 241 <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" /> 242 </collisionShapes> 243 </Pawn> 244 245 <Pawn team=1 health=30 position="0,100,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box RVName = "Box 3"> 246 <events> 247 <visibility> 248 <EventListener event="flying4" /> 249 </visibility> 250 </events> 251 <attached> 252 <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" /> 253 </attached> 254 <collisionShapes> 255 <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" /> 256 </collisionShapes> 257 </Pawn> 258 259 <Pawn health=30 position="0,200,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box team=1 RVName = "Box 2"> 260 <events> 261 <visibility> 262 <EventListener event="flying4" /> 263 </visibility> 264 </events> 265 <attached> 266 <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" /> 267 </attached> 268 <collisionShapes> 269 <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" /> 270 </collisionShapes> 271 </Pawn> 272 273 <Pawn health=30 position="0,300,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box team=1 RVName = "Box 1"> 274 <events> 275 <visibility> 276 <EventListener event="flying4" /> 277 </visibility> 278 </events> 279 <attached> 280 <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" /> 281 </attached> 282 <collisionShapes> 283 <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" /> 284 </collisionShapes> 285 </Pawn> 208 286 209 287 <!--StaticEntity position="0,-200,0" direction="0,-1,0" collisionType=static mass=500 friction=0.01 > -
code/branches/presentation2012merge/data/levels/portals.oxw
r9016 r9269 29 29 <PortalEndPoint> 30 30 <attached> 31 < Billboard material="Portals/Default"/>31 <Model mesh="Spacegate.mesh" yaw="90"/> 32 32 </attached> 33 33 </PortalEndPoint> -
code/branches/presentation2012merge/data/levels/teamDeathMatch.oxw
r9016 r9269 25 25 <Scene 26 26 ambientlight = "0.7, 0.6, 0.6" 27 skybox = "Orxonox/ skypanoramagen1"27 skybox = "Orxonox/creeper1" 28 28 > 29 29 <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0" /> -
code/branches/presentation2012merge/data/levels/templates/pickupRepresentationTemplates.oxt
r8706 r9269 215 215 </PickupRepresentation> 216 216 </Template> 217 218 <!-- DamageBoost pickups --> 219 220 <Template name=smalldamageboostpickupRepresentation> 221 <PickupRepresentation> 222 <spawner-representation> 223 <StaticEntity> 224 <attached> 225 <Billboard position="0,0,0" colour="0.95,0.10,0.05" material="Sphere2" scale=0.1 > 226 <attached> 227 <Billboard position="0,0,0" colour="0.30,0.30,0.30" material="damageSmall" scale=0.7 /> 228 </attached> 229 </Billboard> 230 </attached> 231 </StaticEntity> 232 </spawner-representation> 233 </PickupRepresentation> 234 </Template> 235 236 <Template name=smalldamageboostpickup> 237 <DamageBoostPickup 238 duration = 10.0 239 damageMultiplier = 2.0 240 activationType = "immediate" 241 durationType = "continuous" 242 /> 243 </Template> 244 245 <Template name=mediumdamageboostpickupRepresentation> 246 <PickupRepresentation> 247 <spawner-representation> 248 <StaticEntity> 249 <attached> 250 <Billboard position="0,0,0" colour="0.95,0.10,0.05" material="Sphere2" scale=0.1 > 251 <attached> 252 <Billboard position="0,0,0" colour="0.30,0.30,0.30" material="damageMedium" scale=0.7 /> 253 </attached> 254 </Billboard> 255 </attached> 256 </StaticEntity> 257 </spawner-representation> 258 </PickupRepresentation> 259 </Template> 260 261 <Template name=mediumdamageboostpickup> 262 <DamageBoostPickup 263 duration = 10.0 264 damageMultiplier = 5.0 265 activationType = "immediate" 266 durationType = "continuous" 267 /> 268 </Template> 269 270 <Template name=largedamageboostpickupRepresentation> 271 <PickupRepresentation> 272 <spawner-representation> 273 <StaticEntity> 274 <attached> 275 <Billboard position="0,0,0" colour="0.95,0.10,0.05" material="Sphere2" scale=0.1 > 276 <attached> 277 <Billboard position="0,0,0" colour="0.30,0.30,0.30" material="damageLarge" scale=0.7 /> 278 </attached> 279 </Billboard> 280 </attached> 281 </StaticEntity> 282 </spawner-representation> 283 </PickupRepresentation> 284 </Template> 285 286 <Template name=largedamageboostpickup> 287 <DamageBoostPickup 288 duration = 10.0 289 damageMultiplier = 7.0 290 activationType = "immediate" 291 durationType = "continuous" 292 /> 293 </Template> 294 217 295 218 296 <!-- Speed pickups --> -
code/branches/presentation2012merge/data/levels/templates/spaceshipPirate.oxt
r8858 r9269 35 35 angularDamping = 0.9999999 36 36 > 37 37 38 <engines> 38 39 <MultiStateEngine position=" 0, 0, 0" template=spaceshippirateengine /> 39 40 </engines> 40 41 <attached> 41 <Model position="0,0,0" yaw=90 pitch=-90 roll=0 scale= 4mesh="pirate.mesh" />42 <Model position="0,0,0" yaw=90 pitch=-90 roll=0 scale=20 mesh="pirate.mesh" /> 42 43 <BlinkingBillboard position=" 12.7,-3.8,0" material="Examples/Flare" colour="1.0, 1.0, 1" amplitude=0.04 frequency=1 quadratic=1 /> 43 44 <BlinkingBillboard position="-12.7,-3.8,0" material="Examples/Flare" colour="1.0, 1.0, 1" amplitude=0.04 frequency=1 quadratic=1 phase="90"/> -
code/branches/presentation2012merge/data/levels/theTimeMachine.oxw
r9016 r9269 57 57 ?> 58 58 </SpaceShip> 59 </Template> 60 61 <Template name=spaceshipassffengine baseclass=MultiStateEngine> 62 <MultiStateEngine 63 boostfactor = 2 64 65 speedfront = 150 66 speedback = 50 67 speedleftright = 50 68 speedupdown = 50 69 70 defEngineSndNormal = "sounds/Engine_low.ogg" 71 defEngineSndBoost = "sounds/Engine_high.ogg" 72 73 accelerationfront = 500 74 accelerationbrake = 500 75 accelerationback = 125 76 accelerationleftright = 125 77 accelerationupdown = 125 78 > 79 80 </MultiStateEngine> 59 81 </Template> 60 82 -
code/branches/presentation2012merge/data/levels/tutorial.oxw
r9016 r9269 2 2 name = "Coding Tutorial" 3 3 description = "Level for the coding tutorial." 4 tags = "tutorial "4 tags = "tutorial, shipselection" 5 5 screenshot = "codingtutorial.png" 6 startingships = "spaceshipassff, spaceshipghost, spaceshipspacecruiser" 6 7 /> 7 8 … … 10 11 include("stats.oxo") 11 12 include("templates/spaceshipAssff.oxt") 13 include("templates/spaceshipGhost.oxt") 14 include("templates/spaceshipSpacecruiser.oxt") 12 15 include("templates/lodInformation.oxt") 13 16 ?> … … 23 26 skybox = "Orxonox/skypanoramagen1" 24 27 > 25 26 27 28 29 28 <Drone name="meineDrohne" primarythrust="80" auxilarythrust="10" rotationthrust="10" mass= "50" linearDamping = "0.9" angularDamping = "0.7"> 30 29 <attached> … … 53 52 for i = 1, 10, 1 do 54 53 ?> 55 <SpawnPoint position="<?lua print(math.random() * 1000 - 500) ?>,<?lua print(math.random() * 1000 - 500) ?>,<?lua print(math.random() * 1000 - 500) ?>" lookat="0,0,0" spawnclass=SpaceShip pawndesign=s paceshipassff/>54 <SpawnPoint position="<?lua print(math.random() * 1000 - 500) ?>,<?lua print(math.random() * 1000 - 500) ?>,<?lua print(math.random() * 1000 - 500) ?>" lookat="0,0,0" spawnclass=SpaceShip pawndesign=shipselection /> 56 55 <?lua end ?> 57 56 -
code/branches/presentation2012merge/src/modules/CMakeLists.txt
r8706 r9269 38 38 ADD_SUBDIRECTORY(weapons) 39 39 ADD_SUBDIRECTORY(docking) 40 ADD_SUBDIRECTORY(towerdefense) -
code/branches/presentation2012merge/src/modules/pickup/PickupPrereqs.h
r8706 r9269 86 86 class ShieldPickup; 87 87 class ShrinkPickup; 88 88 class DamageBoostPickup; 89 89 } 90 90 -
code/branches/presentation2012merge/src/modules/pickup/items/CMakeLists.txt
r8706 r9269 7 7 ShieldPickup.cc 8 8 ShrinkPickup.cc 9 DamageBoostPickup.cc 9 10 ) -
code/branches/presentation2012merge/src/modules/pickup/items/SpeedPickup.h
r8727 r9269 112 112 private: 113 113 void initialize(void); //!< Initializes the member variables. 114 SpaceShip* carrierToSpaceShipHelper(void); //!< Helper to transform the PickupCarrier to a SpaceS Hip, and throw an error message if the conversion fails.114 SpaceShip* carrierToSpaceShipHelper(void); //!< Helper to transform the PickupCarrier to a SpaceShip, and throw an error message if the conversion fails. 115 115 116 116 Timer durationTimer_; //!< Timer. -
code/branches/presentation2012merge/src/orxonox/LevelInfo.cc
r9016 r9269 93 93 LevelInfoItem::possibleTags_s.insert("gametype"); 94 94 LevelInfoItem::possibleTags_s.insert("minigame"); 95 LevelInfoItem::possibleTags_s.insert("shipselection"); 95 96 } 96 97 } … … 110 111 111 112 this->tagsUpdated(); 113 } 114 /** 115 @brief 116 Set the starting ship models of the level 117 @param tags 118 A comma-seperated string of all the allowed ship models for the shipselection. 119 */ 120 void LevelInfoItem::setShips(const std::string& ships) 121 { 122 SubString substr = SubString(ships, ",", " "); // Split the string into tags. 123 const std::vector<std::string>& strings = substr.getAllStrings(); 124 for(std::vector<std::string>::const_iterator it = strings.begin(); it != strings.end(); it++) 125 this->addShip(*it, false); 126 127 this->shipsUpdated(); 112 128 } 113 129 … … 137 153 /** 138 154 @brief 155 Add a ship model to allowed models for the shipselection 156 @param ship 157 The ship model to be added. 158 @param update 159 Whether the comma-seperated string of all ship models should be updated. Default is true. 160 @return 161 Returns true if the ship was successfully added, if the ship was already present it returns false. 162 */ 163 bool LevelInfoItem::addShip(const std::string& ship, bool update) 164 { 165 bool success = this->ships_.insert(ship).second; 166 if(update && success) 167 this->shipsUpdated(); 168 169 return success; 170 } 171 172 173 /** 174 @brief 139 175 Updates the comma-seperated string of all tags, if the set of tags has changed. 140 176 */ … … 155 191 } 156 192 193 /** 194 @brief 195 Updates the comma-seperated string of all ships, if the set of tags has changed. 196 */ 197 void LevelInfoItem::shipsUpdated(void) 198 { 199 std::stringstream stream; 200 std::set<std::string>::iterator temp; 201 for(std::set<std::string>::iterator it = this->ships_.begin(); it != this->ships_.end(); ) 202 { 203 temp = it; 204 if(++it == this->ships_.end()) // If this is the last ship we don't add a comma. 205 stream << *temp; 206 else 207 stream << *temp << ", "; 208 } 209 210 this->startingShipsString_ = std::string(stream.str()); 211 } 157 212 // LevelInfo 158 213 … … 192 247 XMLPortParam(LevelInfo, "screenshot", setScreenshot, getScreenshot, xmlelement, mode); 193 248 XMLPortParam(LevelInfo, "tags", setTags, getTags, xmlelement, mode); 249 XMLPortParam(LevelInfo, "startingships", setShips, getShips, xmlelement, mode); 194 250 } 195 251 … … 207 263 info->setScreenshot(this->getScreenshot()); 208 264 info->setTags(this->getTags()); 265 info->setShips(this->getShips()); 209 266 return info; 210 267 } -
code/branches/presentation2012merge/src/orxonox/LevelInfo.h
r9016 r9269 24 24 * Co-authors: 25 25 * ... 26 * 26 * 27 27 */ 28 28 … … 43 43 44 44 #include "core/BaseObject.h" 45 #include <iostream> 46 #include <fstream> 45 47 #include "core/OrxonoxClass.h" 46 48 … … 115 117 */ 116 118 inline bool hasTag(const std::string& tag) const { return this->tags_.find(tag) != this->tags_.end(); } // tolua_export 117 119 120 void setShips(const std::string& ships); //!< Set the starting ship models of the level 121 bool addShip(const std::string& ship, bool update = true); //!< Add a model to shipselection 122 /** 123 @brief Get the set of starting ship models the Level allows 124 @return Returns a comma-seperated string of all the allowed ship models for the shipselection. 125 */ 126 inline const std::string& getShips(void) const 127 { return this->startingShipsString_; } 128 /** 129 @brief Get whether the Level allows a specific starting ship model 130 @param ship The ship model for which is checked. 131 @return Returns true if the Level allows the input ship model 132 */ 133 inline bool hasShip(const std::string& ship) const { return this->ships_.find(ship) != this->ships_.end(); } // tolua_export 118 134 /** 119 135 @brief Get the XML-filename of the Level. 120 136 @return Returns the XML-filename (including *.oxw extension) of the Level. 121 137 */ 138 122 139 inline const std::string& getXMLFilename(void) const { return this->xmlfilename_; } // tolua_export 140 inline void selectShip (const std::string& ship) { this->changeShip(ship); } // tolua_export 141 123 142 124 143 protected: … … 133 152 134 153 private: 154 155 inline void changeShip (const std::string& model) { 156 static std::string shipSelectionTag = "shipselection"; 157 //HACK: Read Level XML File, find "shipselection", replace with ship model 158 std::string levelPath = "../levels/"; 159 levelPath.append(this->getXMLFilename()); 160 std::string tempPath = "../levels/"; 161 tempPath.append("_temp.oxw"); 162 orxout(user_status) << levelPath << endl; 163 orxout(user_status) << tempPath << endl; 164 std::ifstream myLevel (levelPath.c_str()); 165 std::ofstream tempLevel (tempPath.c_str()); 166 while(!myLevel.eof()) 167 { 168 std::string buff; 169 std::getline(myLevel, buff); 170 std::string pawndesignString = "pawndesign="; 171 size_t found = buff.find(pawndesignString.append(shipSelectionTag)); 172 if (found!= std::string::npos) 173 buff = buff.substr(0, found + 11) + model + buff.substr(found+11+shipSelectionTag.length(), std::string::npos); 174 tempLevel.write(buff.c_str(), buff.length()); 175 tempLevel << std::endl; 176 } 177 myLevel.close(); 178 tempLevel.close(); 179 orxout(user_status) << "done" << endl; 180 } 135 181 void tagsUpdated(void); //!< Updates the comma-seperated string of all tags, if the set of tags has changed. 136 182 void shipsUpdated(void); //!< Updates the comma-seperated string of all tags, if the set of tags has changed. 137 183 static void initializeTags(void); //!< Initialize the set of allowed tags. 138 184 /** … … 152 198 std::set<std::string> tags_; //!< The set of tags the Level is tagged with. 153 199 std::string tagsString_; //!< The comma-seperated string of all the tags the Level is tagged with. 200 std::set<std::string> ships_; //!< The set of starting ship models the Level allows. 201 std::string startingShipsString_; //!< The comma-seperated string of all the allowed ship models for the shipselection. 154 202 }; // tolua_export 155 203 … … 161 209 - @b description The description of the level. 162 210 - @b screenshot The screenshot of the level. 163 - @b tags A comma-seperated string of tags. Allowed tags are: <em>test</em>, <em>singleplayer</em>, <em>multiplayer</em>, <em>showcase</em>, <em>tutorial</em>, <em>presentation</em> .164 211 - @b tags A comma-seperated string of tags. Allowed tags are: <em>test</em>, <em>singleplayer</em>, <em>multiplayer</em>, <em>showcase</em>, <em>tutorial</em>, <em>presentation</em>, <em>shipselection</em>. 212 - @b (optional) startingships The comma-seperated string of starting ship models 165 213 An example would be: 166 214 @code … … 176 224 @author 177 225 Damian 'Mozork' Frick 178 226 @edit 227 Matthias Hutter 179 228 @ingroup Orxonox 180 229 */ … … 223 272 inline const std::string& getTags(void) const 224 273 { return this->LevelInfoItem::getTags(); } 225 274 /** 275 @brief Set the starting ship models of the level 276 @param A comma-seperated string of all the allowed ship models for the shipselection. 277 */ 278 inline void setShips(const std::string& ships) 279 { this->LevelInfoItem::setShips(ships); } 280 /** 281 @brief Get the starting ship models of the level 282 @return Returns a comma-seperated string of all the allowed ship models for the shipselection. 283 */ 284 inline const std::string& getShips(void) const 285 { return this->LevelInfoItem::getShips(); } 226 286 LevelInfoItem* copy(void); //!< Copies the contents of this LevelInfo object to a new LevelInfoItem object. 227 228 287 }; 229 288 -
code/branches/presentation2012merge/src/orxonox/controllers/FormationController.cc
r9265 r9269 280 280 } 281 281 282 Vector2 coord = get2DView direction(this->getControllableEntity()->getPosition(), this->getControllableEntity()->getOrientation() * WorldEntity::FRONT, this->getControllableEntity()->getOrientation() * WorldEntity::UP, target);282 Vector2 coord = get2DViewcoordinates(this->getControllableEntity()->getPosition(), this->getControllableEntity()->getOrientation() * WorldEntity::FRONT, this->getControllableEntity()->getOrientation() * WorldEntity::UP, target); 283 283 float distance = (target - this->getControllableEntity()->getPosition()).length(); 284 284 if(coord.x < 0.0001 && coord.y < 0.0001) 285 { 286 // if the ship reaches a direction very close to the direct one, set it to the direct one 287 Vector3 v_temp = this->getControllableEntity()->getPosition(); 288 Quaternion quat = v_temp.getRotationTo(target); 289 this->getControllableEntity()->rotate(quat); 290 } 285 291 286 292 if(this->state_ == FREE) … … 289 295 { 290 296 // Multiply with ROTATEFACTOR_FREE to make them a bit slower 291 this->getControllableEntity()->rotateYaw(-1.0f * ROTATEFACTOR_FREE * sgn(coord.x) * coord.x*coord.x);292 this->getControllableEntity()->rotatePitch(ROTATEFACTOR_FREE * sgn(coord.y) * coord.y*coord.y);293 } 294 295 if (this->target_ && distance < 200 && this->getControllableEntity()->getVelocity().squaredLength() > this->target_->getVelocity().squaredLength())297 this->getControllableEntity()->rotateYaw(-1.0f * ROTATEFACTOR_FREE * coord.x * 2); 298 this->getControllableEntity()->rotatePitch(ROTATEFACTOR_FREE * coord.y * 2); 299 } 300 301 if (this->target_ && distance < 200 && this->getControllableEntity()->getVelocity().squaredLength() > this->target_->getVelocity().squaredLength()) 296 302 { 297 303 this->getControllableEntity()->moveFrontBack(-0.05f); // They don't brake with full power to give the player a chance … … 305 311 if (this->target_ || distance > 10) 306 312 { 307 this->getControllableEntity()->rotateYaw(-1.0f * ROTATEFACTOR_MASTER * sgn(coord.x) * coord.x*coord.x);308 this->getControllableEntity()->rotatePitch(ROTATEFACTOR_MASTER * sgn(coord.y) * coord.y*coord.y);313 this->getControllableEntity()->rotateYaw(-1.0f * ROTATEFACTOR_MASTER * coord.x * 2); 314 this->getControllableEntity()->rotatePitch(ROTATEFACTOR_MASTER * coord.y * 2); 309 315 } 310 316 … … 318 324 319 325 if(this->state_ == SLAVE) 320 321 322 this->getControllableEntity()->rotateYaw(-2.0f * ROTATEFACTOR_MASTER * sgn(coord.x) * coord.x*coord.x);323 this->getControllableEntity()->rotatePitch(2.0f * ROTATEFACTOR_MASTER * sgn(coord.y) * coord.y*coord.y);324 325 326 327 328 329 copyTargetOrientation();330 331 332 {//linear speed reduction333 334 335 336 337 338 339 340 326 { 327 328 this->getControllableEntity()->rotateYaw(-2.0f * ROTATEFACTOR_MASTER * coord.x * 2); 329 this->getControllableEntity()->rotatePitch(2.0f * ROTATEFACTOR_MASTER * coord.y * 2); 330 331 if (distance < 300) 332 { 333 if (bHasTargetOrientation_) 334 { 335 copyTargetOrientation(); 336 } 337 if (distance < 100) 338 { //linear speed reduction 339 this->getControllableEntity()->moveFrontBack(distance/100.0f*0.4f*SPEED_MASTER); 340 341 } else this->getControllableEntity()->moveFrontBack(1.2f*SPEED_MASTER); 342 343 } else { 344 this->getControllableEntity()->moveFrontBack(1.2f*SPEED_MASTER + distance/300.0f); 345 } 346 } 341 347 342 348 if (distance < 10) -
code/branches/presentation2012merge/src/orxonox/worldentities/pawns/Pawn.cc
r9257 r9269 75 75 this->lastHitOriginator_ = 0; 76 76 77 // set damage multiplier to default value 1, meaning nominal damage 78 this->damageMultiplier_ = 1; 79 77 80 this->spawnparticleduration_ = 3.0f; 78 81 … … 228 231 void Pawn::damage(float damage, float healthdamage, float shielddamage, Pawn* originator) 229 232 { 230 if (this->getGametype() && this->getGametype()->allowPawnDamage(this, originator)) 233 //Applies multiplier given by the DamageBoost Pickup. 234 Pawn *test = dynamic_cast<Pawn *>(originator); 235 if( test != NULL ) 236 { 237 damage *= originator->getDamageMultiplier(); 238 } 239 240 if (this->getGametype() && this->getGametype()->allowPawnDamage(this, originator)) 231 241 { 232 242 if (shielddamage >= this->getShieldHealth()) -
code/branches/presentation2012merge/src/orxonox/worldentities/pawns/Pawn.h
r9254 r9269 162 162 { return this->numexplosionchunks_; } 163 163 164 // These are used with the Damage Boost Pickup to use the damage multiplier. 165 inline void setDamageMultiplier(float multiplier) 166 { this->damageMultiplier_ = multiplier; } 167 inline float getDamageMultiplier() 168 { return this->damageMultiplier_; } 169 170 164 171 virtual void startLocalHumanControl(); 165 172 … … 208 215 float reloadWaitCountdown_; 209 216 217 // Modifier 218 float damageMultiplier_; // Used by the Damage Boost Pickup. 219 210 220 WeakPtr<Pawn> lastHitOriginator_; 211 221
Note: See TracChangeset
for help on using the changeset viewer.