Changeset 8820 in orxonox.OLD for branches/multi_player_map/src/world_entities
- Timestamp:
- Jun 27, 2006, 12:37:58 PM (18 years ago)
- Location:
- branches/multi_player_map/src/world_entities
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/multi_player_map/src/world_entities/spawning_point.cc
r8802 r8820 27 27 #include "game_rules.h" 28 28 29 #include "shared_network_data.h" 30 31 CREATE_FACTORY( SpawningPoint, CL_SPAWNING_POINT ); 29 32 30 33 /** … … 34 37 { 35 38 this->setAbsCoor(position); 36 this->classid = classid;37 this->mode = SPT_ALL_AT_ONCE;38 this->delay = 0;39 39 40 40 this->init(); … … 48 48 { 49 49 this->setAbsCoor(position); 50 this->classid = classid;51 this->mode = mode;52 this->delay = delay;53 50 54 51 this->init(); … … 56 53 57 54 55 SpawningPoint::SpawningPoint( const TiXmlElement * root ) 56 { 57 this->setAbsCoor( 0, 0, 0 ); 58 59 this->init(); 60 61 if (root != NULL) 62 this->loadParams(root); 63 } 58 64 59 65 void SpawningPoint::init() 60 66 { 61 67 this->setClassID(CL_SPAWNING_POINT, "SpawningPoint"); 68 PRINTF(0)("Created SpawningPoint\n"); 62 69 63 70 this->teamId = -1; 71 72 MessageManager::getInstance()->registerMessageHandler( MSGID_RESPAWN, respawnMessageHandler, NULL ); 64 73 } 65 74 … … 81 90 WorldEntity::loadParams(root); 82 91 83 /* now load the frequency */84 LoadParam(root, "delay", this, SpawningPoint, setSpawningDelay)85 .describe("sets the delay of the spawning point");86 87 92 /* load teamId */ 88 93 LoadParam(root, "teamId", this, SpawningPoint, setTeamId) 89 94 .describe("sets teamId"); 90 91 92 /* now load the seed */93 // LoadParam(root, "entity", this, SpawningPoint, setSpawningEntity)94 // .describe("sets the spawning entity");95 96 /* now load the seed */97 /* LoadParam(root, "classid", this, SpawningPoint, setSpawningEntity)98 .describe("sets the class id of the entity to spawn")99 .defaultValues(CL_WORLD_ENTITY);*/100 95 } 101 96 … … 110 105 QueueEntry qe; 111 106 qe.entity = entity; 112 qe.list = entity->getOMListNumber();113 107 qe.respawnTime = this->localTimer + delay; 114 108 … … 129 123 130 124 //TODO set camera (not smooth) 125 126 if ( State::getGameRules() ) 127 { 128 (State::getGameRules())->registerSpawn( entity ); 129 } 131 130 } 132 131 … … 151 150 this->spawn(it->entity); 152 151 153 it->entity->toList( it->list ); 154 155 if ( State::getGameRules() ) 156 { 157 (State::getGameRules())->registerSpawn( it->entity ); 158 } 159 152 if ( SharedNetworkData::getInstance()->isGameServer() ) 153 this->sendRespawnMessage( it->entity->getUniqueID() ); 154 160 155 std::list<QueueEntry>::iterator delit = it; 161 156 it++; … … 179 174 */ 180 175 void SpawningPoint::draw() 181 {} 176 { 177 } 178 179 void SpawningPoint::sendRespawnMessage( int uniqueId ) 180 { 181 byte * buf = new byte[2*INTSIZE]; 182 183 assert( Converter::intToByteArray( this->getUniqueID(), buf, INTSIZE ) == INTSIZE ); 184 assert( Converter::intToByteArray( uniqueId, buf + INTSIZE, INTSIZE ) == INTSIZE ); 185 186 MessageManager::getInstance()->sendMessage( MSGID_RESPAWN, buf, 2*INTSIZE, RT_ALL_NOT_ME, 0, MP_HIGHBANDWIDTH ); 187 } 188 189 bool SpawningPoint::respawnMessageHandler( MessageId messageId, byte * data, int dataLength, void * someData, int userId ) 190 { 191 if ( SharedNetworkData::getInstance()->isGameServer() ) 192 { 193 PRINTF(2)("server received spawn message!\n"); 194 return true; 195 } 196 197 int spUniqueId; 198 int uniqueId; 199 200 if ( dataLength != 2*INTSIZE ) 201 { 202 PRINTF(2)("spawn message has wrong size: %d\n", dataLength ); 203 return true; 204 } 205 206 assert( Converter::byteArrayToInt( data, &spUniqueId ) == INTSIZE ); 207 assert( Converter::byteArrayToInt( data+INTSIZE, &uniqueId ) == INTSIZE ); 208 209 //TODO find Playable and SpawningPoint and spawn Playable 210 211 return true; 212 } 213 -
branches/multi_player_map/src/world_entities/spawning_point.h
r8802 r8820 10 10 #include "playable.h" 11 11 12 #include "message_manager.h" 13 12 14 #include <list> 13 15 … … 19 21 float respawnTime; 20 22 WorldEntity * entity; 21 OM_LIST list;22 23 }; 23 24 … … 43 44 44 45 public: 45 SpawningPoint (ClassID classID, const Vector& position = Vector(0.0, 0.0, 0.0)); 46 SpawningPoint (const Vector& position, ClassID classID, SpawningPointMode type, float delay); 46 SpawningPoint(const TiXmlElement* root = NULL); 47 SpawningPoint(ClassID classID, const Vector& position = Vector(0.0, 0.0, 0.0)); 48 SpawningPoint(const Vector& position, ClassID classID, SpawningPointMode type, float delay); 47 49 virtual ~SpawningPoint (); 48 50 void init(); … … 50 52 virtual void loadParams(const TiXmlElement* root); 51 53 52 /** sets the entity that is going to be spawned by this point @param classID: the id from the class_id.h file */53 void SpawningPoint::setSpawningEntity(ClassID classid) { this->classid = classid; }54 /** sets the frequency with which the point is going to spawn entities (1/sec) @param frequency: the frequency */55 void SpawningPoint::setSpawningDelay(float delay) { this->delay = delay; }56 /** sets the spawning point mode @param mode: the mode */57 void SpawningPoint::setSpawningMode(int mode) { this->mode = (SpawningPointMode)mode; }58 59 54 inline int getTeamId(){ return this->teamId; } 60 55 inline void setTeamId( int teamId ){ this->teamId = teamId; } … … 75 70 private: 76 71 void spawn(WorldEntity* entity); 72 73 void sendRespawnMessage( int uniqueId ); 74 static bool respawnMessageHandler( MessageId messageId, byte * data, int dataLength, void * someData, int userId ); 77 75 78 76 79 77 private: 80 float delay; //!< the timer that counts down until the next spawn81 78 float localTimer; //!< the local timer 82 float seed; //!< the random seed of the position83 79 int teamId; //!< only spawn players of this team 84 ClassID classid; //!< the classid of the entity to spawn85 SpawningPointMode mode; //!< the mode of the spawning point86 80 std::list<QueueEntry> queue; //!< queue of waiting WorldEntities to be spawned 87 81 bool bSpawning; //!< flag to indicate if this spawning point is active or not
Note: See TracChangeset
for help on using the changeset viewer.