From: Remi B. <els...@us...> - 2004-08-30 16:19:35
|
Update of /cvsroot/once/oncecode/src/server/behaviours In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30945/src/server/behaviours Modified Files: Tag: cel-switch ocarea_bl.cpp ocarea_bl.h ocentity_bl.cpp ocentity_bl.h ocobject_bl.h ocplayer_bl.cpp ocplayer_bl.h Log Message: Lets use property class serialization for saving. Index: ocobject_bl.h =================================================================== RCS file: /cvsroot/once/oncecode/src/server/behaviours/Attic/ocobject_bl.h,v retrieving revision 1.1.2.4 retrieving revision 1.1.2.5 diff -C2 -d -r1.1.2.4 -r1.1.2.5 *** ocobject_bl.h 29 Aug 2004 16:06:20 -0000 1.1.2.4 --- ocobject_bl.h 30 Aug 2004 16:19:24 -0000 1.1.2.5 *************** *** 86,89 **** --- 86,94 ---- /** + * Returns the entity + */ + iCelEntity* GetEntity() { return entity; } + + /** * Returns the ID */ Index: ocarea_bl.h =================================================================== RCS file: /cvsroot/once/oncecode/src/server/behaviours/ocarea_bl.h,v retrieving revision 1.2.2.6 retrieving revision 1.2.2.7 diff -C2 -d -r1.2.2.6 -r1.2.2.7 *** ocarea_bl.h 25 Aug 2004 11:54:57 -0000 1.2.2.6 --- ocarea_bl.h 30 Aug 2004 16:19:24 -0000 1.2.2.7 *************** *** 40,44 **** * behaviour. */ ! class ocAreaWrapper : public ocObjectWrapper { private: --- 40,44 ---- * behaviour. */ ! class ocAreaBehaviour : public ocObjectWrapper { private: *************** *** 58,67 **** * Constructor. Do nothing special */ ! ocAreaWrapper(iCelPlLayer* pl, ocBehaviourLayer* bl); /** * Destructor. */ ! virtual ~ocAreaWrapper(); /** --- 58,67 ---- * Constructor. Do nothing special */ ! ocAreaBehaviour(iCelPlLayer* pl, ocBehaviourLayer* bl); /** * Destructor. */ ! virtual ~ocAreaBehaviour(); /** *************** *** 71,83 **** /** - * Set the area name. - */ - void SetAreaName(const char* name) { area_data.area_name = name; } - /** - * Returns the area name. - */ - const char* GetAreaName() { return area_data.area_name.GetData(); } - - /** * Add an entity in this area. This function will try to call the Load() * function on the entity. The entity is not added if this function --- 71,74 ---- Index: ocarea_bl.cpp =================================================================== RCS file: /cvsroot/once/oncecode/src/server/behaviours/ocarea_bl.cpp,v retrieving revision 1.2.2.10 retrieving revision 1.2.2.11 diff -C2 -d -r1.2.2.10 -r1.2.2.11 *** ocarea_bl.cpp 29 Aug 2004 16:06:20 -0000 1.2.2.10 --- ocarea_bl.cpp 30 Aug 2004 16:19:24 -0000 1.2.2.11 *************** *** 25,28 **** --- 25,29 ---- #include "common/ocarea.h" #include "common/ocloader.h" + #include "common/ocentityserial.h" #include "server/ocworld.h" *************** *** 31,39 **** #include "server/behaviours/ocentity_bl.h" ! csStringID ocAreaWrapper::id_entity_cleanup; ! const char* ocAreaWrapper::ocClassName = "ocAreaWrapper"; ! ocAreaWrapper::ocAreaWrapper(iCelPlLayer* p, ocBehaviourLayer* b) : ocObjectWrapper(p, b) { --- 32,40 ---- #include "server/behaviours/ocentity_bl.h" ! csStringID ocAreaBehaviour::id_entity_cleanup; ! const char* ocAreaBehaviour::ocClassName = "ocAreaBehaviour"; ! ocAreaBehaviour::ocAreaBehaviour(iCelPlLayer* p, ocBehaviourLayer* b) : ocObjectWrapper(p, b) { *************** *** 42,58 **** InitCelEntity(); ! pcsubscribable->SetBehaviourName("Area"); } ! ocAreaWrapper::~ocAreaWrapper() { } ! void ocAreaWrapper::RegisterStringIDs(iCelPlLayer* pl) { id_entity_cleanup = pl->FetchStringID("entity.cleanup"); } ! bool ocAreaWrapper::AddEntity(ocEntityWrapper* entitywrap) { if (!entitywrap->Load()) --- 43,59 ---- InitCelEntity(); ! pcsubscribable->SetEntityType("Area"); } ! ocAreaBehaviour::~ocAreaBehaviour() { } ! void ocAreaBehaviour::RegisterStringIDs(iCelPlLayer* pl) { id_entity_cleanup = pl->FetchStringID("entity.cleanup"); } ! bool ocAreaBehaviour::AddEntity(ocEntityWrapper* entitywrap) { if (!entitywrap->Load()) *************** *** 64,68 **** } ! void ocAreaWrapper::RemoveEntity(ocEntityWrapper* entitywrap) { entitywrap->Cleanup(); --- 65,69 ---- } ! void ocAreaBehaviour::RemoveEntity(ocEntityWrapper* entitywrap) { entitywrap->Cleanup(); *************** *** 70,74 **** } ! bool ocAreaWrapper::Load() { if (!ocObjectWrapper::Load()) return false; --- 71,75 ---- } ! bool ocAreaBehaviour::Load() { if (!ocObjectWrapper::Load()) return false; *************** *** 77,81 **** if (!entities[i]->Load()) return false; ! serversys->GetLoader()->LoadRegion(pcregion, area_data.area_name); serversys->GetEntityRegistry()->Register(entity_id, entity); --- 78,82 ---- if (!entities[i]->Load()) return false; ! serversys->GetLoader()->LoadRegion(pcregion); serversys->GetEntityRegistry()->Register(entity_id, entity); *************** *** 83,87 **** } ! void ocAreaWrapper::Cleanup() { for (size_t i = 0; i < entities.Length(); i++) --- 84,88 ---- } ! void ocAreaBehaviour::Cleanup() { for (size_t i = 0; i < entities.Length(); i++) *************** *** 95,114 **** } ! void ocAreaWrapper::Serialize(ocSerialBuffer& buf) { area_data.Serialize(buf); } ! bool ocAreaWrapper::Deserialize(ocSerialBuffer& buf) { return area_data.Deserialize(buf); } ! const char* ocAreaWrapper::GetName() const { return ocClassName; } ! bool ocAreaWrapper::SendMessageID(csStringID msg, celData& /*ret*/, iCelParameterBlock* /*params*/, va_list /*args*/) --- 96,126 ---- } ! void ocAreaBehaviour::Serialize(ocSerialBuffer& buf) { + serversys->GetEntitySerializer()->WriteEntity("Area", entity, buf); area_data.Serialize(buf); } ! bool ocAreaBehaviour::Deserialize(ocSerialBuffer& buf) { + pl->RemoveEntity(entity); /// @@@ HACK + + ocDelayedLoadableEntity* wait; + wait = serversys->GetEntitySerializer()->ReadEntity(buf, this); + if (!wait) return false; + + wait->Load(); + entity = wait->GetEntity(); + delete wait; + return area_data.Deserialize(buf); } ! const char* ocAreaBehaviour::GetName() const { return ocClassName; } ! bool ocAreaBehaviour::SendMessageID(csStringID msg, celData& /*ret*/, iCelParameterBlock* /*params*/, va_list /*args*/) *************** *** 121,125 **** { serversys->Report(CS_REPORTER_SEVERITY_ERROR, "Unknown message id in " ! "ocAreaWrapper."); CS_ASSERT(0); return false; --- 133,137 ---- { serversys->Report(CS_REPORTER_SEVERITY_ERROR, "Unknown message id in " ! "ocAreaBehaviour."); CS_ASSERT(0); return false; Index: ocplayer_bl.cpp =================================================================== RCS file: /cvsroot/once/oncecode/src/server/behaviours/ocplayer_bl.cpp,v retrieving revision 1.2.2.11 retrieving revision 1.2.2.12 diff -C2 -d -r1.2.2.11 -r1.2.2.12 *** ocplayer_bl.cpp 29 Aug 2004 16:06:20 -0000 1.2.2.11 --- ocplayer_bl.cpp 30 Aug 2004 16:19:24 -0000 1.2.2.12 *************** *** 38,50 **** #include "server/behaviours/ocarea_bl.h" ! const char* ocPlayerWrapper::ocClassName = "ocPlayerWrapper"; ! csStringID ocPlayerWrapper::id_network_move_forward; ! csStringID ocPlayerWrapper::id_network_move_backward; ! csStringID ocPlayerWrapper::id_network_move_none; ! csStringID ocPlayerWrapper::id_network_rotate; ! csStringID ocPlayerWrapper::id_entity_cleanup; ! ocPlayerWrapper::ocPlayerWrapper(iCelPlLayer* pl, ocBehaviourLayer* bl) : ! ocEntityWrapper(pl, bl, &player_data) { pl->CreatePropertyClass(entity, "pcmesh"); --- 38,50 ---- #include "server/behaviours/ocarea_bl.h" ! const char* ocPlayerBehaviour::ocClassName = "ocPlayerBehaviour"; ! csStringID ocPlayerBehaviour::id_network_move_forward; ! csStringID ocPlayerBehaviour::id_network_move_backward; ! csStringID ocPlayerBehaviour::id_network_move_none; ! csStringID ocPlayerBehaviour::id_network_rotate; ! csStringID ocPlayerBehaviour::id_entity_cleanup; ! ocPlayerBehaviour::ocPlayerBehaviour(iCelPlLayer* pl, ocBehaviourLayer* bl) : ! ocEntityWrapper(pl, bl) { pl->CreatePropertyClass(entity, "pcmesh"); *************** *** 54,69 **** pclinmove = CEL_QUERY_PROPCLASS_ENT(entity, iPcLinearMovement); - player_data.entity_name = "Dwarf"; - InitCelEntity(); ! pcsubscribable->SetBehaviourName("Player"); } ! ocPlayerWrapper::~ocPlayerWrapper() { } ! void ocPlayerWrapper::RegisterStringIDs(iCelPlLayer* pl) { id_entity_cleanup = pl->FetchStringID("entity.cleanup"); --- 54,67 ---- pclinmove = CEL_QUERY_PROPCLASS_ENT(entity, iPcLinearMovement); InitCelEntity(); ! pcsubscribable->SetEntityType("Player"); } ! ocPlayerBehaviour::~ocPlayerBehaviour() { } ! void ocPlayerBehaviour::RegisterStringIDs(iCelPlLayer* pl) { id_entity_cleanup = pl->FetchStringID("entity.cleanup"); *************** *** 74,78 **** } ! void ocPlayerWrapper::SetFullPosition(csVector3 position, ocAreaWrapper* area) { ocPcLinearMovementData data; --- 72,77 ---- } ! void ocPlayerBehaviour::SetFullPosition(csVector3 position, ! ocAreaBehaviour* area) { ocPcLinearMovementData data; *************** *** 85,94 **** } ! void ocPlayerWrapper::Update() { pcsubscribable->Changed(pclinmove); } ! bool ocPlayerWrapper::Login(ocNetworkConnection* conn) { netlink = conn; --- 84,93 ---- } ! void ocPlayerBehaviour::Update() { pcsubscribable->Changed(pclinmove); } ! bool ocPlayerBehaviour::Login(ocNetworkConnection* conn) { netlink = conn; *************** *** 103,111 **** } ! void ocPlayerWrapper::Logout() { } ! bool ocPlayerWrapper::SendMessageID(csStringID msg_id, celData& /*ret*/, iCelParameterBlock* params, va_list /*args*/) --- 102,110 ---- } ! void ocPlayerBehaviour::Logout() { } ! bool ocPlayerBehaviour::SendMessageID(csStringID msg_id, celData& /*ret*/, iCelParameterBlock* params, va_list /*args*/) *************** *** 141,145 **** { serversys->Report(CS_REPORTER_SEVERITY_ERROR, "Unknown message in " ! "ocPlayerWrapper"); CS_ASSERT(0); return false; --- 140,144 ---- { serversys->Report(CS_REPORTER_SEVERITY_ERROR, "Unknown message in " ! "ocPlayerBehaviour"); CS_ASSERT(0); return false; *************** *** 147,155 **** } ! bool ocPlayerWrapper::Load() { ocLoader* loader = serversys->GetLoader(); ! if (!loader->LoadMesh(pcmesh, player_data.entity_name)) return false; if (!loader->LoadLinearMovement(entity)) return false; serversys->GetEntityRegistry()->Register(entity_id, entity); --- 146,154 ---- } ! bool ocPlayerBehaviour::Load() { ocLoader* loader = serversys->GetLoader(); ! if (!loader->LoadMesh(pcmesh, "Dwarf")) return false; if (!loader->LoadLinearMovement(entity)) return false; serversys->GetEntityRegistry()->Register(entity_id, entity); Index: ocplayer_bl.h =================================================================== RCS file: /cvsroot/once/oncecode/src/server/behaviours/ocplayer_bl.h,v retrieving revision 1.2.2.8 retrieving revision 1.2.2.9 diff -C2 -d -r1.2.2.8 -r1.2.2.9 *** ocplayer_bl.h 27 Aug 2004 17:25:30 -0000 1.2.2.8 --- ocplayer_bl.h 30 Aug 2004 16:19:24 -0000 1.2.2.9 *************** *** 40,46 **** * This wrapper is created when a player log in. After having created this * wrapper, you must give it to ocWorld::AddPlayer that will take care of ! * calling the login function. Don't call ocPlayerWrapper::Login directly! */ ! class ocPlayerWrapper : public ocEntityWrapper { private: --- 40,46 ---- * This wrapper is created when a player log in. After having created this * wrapper, you must give it to ocWorld::AddPlayer that will take care of ! * calling the login function. Don't call ocPlayerBehaviour::Login directly! */ ! class ocPlayerBehaviour : public ocEntityWrapper { private: *************** *** 67,75 **** * Constructor. Do nothing */ ! ocPlayerWrapper(iCelPlLayer* pl, ocBehaviourLayer* bl); /** * Destructor. Do nothing */ ! virtual ~ocPlayerWrapper(); /** --- 67,75 ---- * Constructor. Do nothing */ ! ocPlayerBehaviour(iCelPlLayer* pl, ocBehaviourLayer* bl); /** * Destructor. Do nothing */ ! virtual ~ocPlayerBehaviour(); /** *************** *** 95,99 **** * Set position. */ ! void SetFullPosition(csVector3 position, ocAreaWrapper* area); /** --- 95,99 ---- * Set position. */ ! void SetFullPosition(csVector3 position, ocAreaBehaviour* area); /** Index: ocentity_bl.cpp =================================================================== RCS file: /cvsroot/once/oncecode/src/server/behaviours/Attic/ocentity_bl.cpp,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.3 diff -C2 -d -r1.1.2.2 -r1.1.2.3 *** ocentity_bl.cpp 25 Aug 2004 11:54:57 -0000 1.1.2.2 --- ocentity_bl.cpp 30 Aug 2004 16:19:24 -0000 1.1.2.3 *************** *** 30,37 **** //------------------ ocEntityWrapper ---------------------------- ! ocEntityWrapper::ocEntityWrapper(iCelPlLayer* pl, ocBehaviourLayer* bl, ! ocEntityData* data) : ! ocObjectWrapper(pl, bl), ! entity_data(data) { } --- 30,35 ---- //------------------ ocEntityWrapper ---------------------------- ! ocEntityWrapper::ocEntityWrapper(iCelPlLayer* pl, ocBehaviourLayer* bl) : ! ocObjectWrapper(pl, bl) { } Index: ocentity_bl.h =================================================================== RCS file: /cvsroot/once/oncecode/src/server/behaviours/Attic/ocentity_bl.h,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -C2 -d -r1.1.2.1 -r1.1.2.2 *** ocentity_bl.h 24 Aug 2004 20:37:34 -0000 1.1.2.1 --- ocentity_bl.h 30 Aug 2004 16:19:24 -0000 1.1.2.2 *************** *** 24,28 **** class ocEntityData; ! class ocAreaWrapper; /** --- 24,28 ---- class ocEntityData; ! class ocAreaBehaviour; /** *************** *** 32,39 **** { private: - /// Our entity data. - ocEntityData* entity_data; /// The area the entity is in. ! ocAreaWrapper* area; public: --- 32,37 ---- { private: /// The area the entity is in. ! ocAreaBehaviour* area; public: *************** *** 41,45 **** * Construct the base entity, keep a ref to the entity data object. */ ! ocEntityWrapper(iCelPlLayer* pl, ocBehaviourLayer* bl, ocEntityData* data); /** --- 39,43 ---- * Construct the base entity, keep a ref to the entity data object. */ ! ocEntityWrapper(iCelPlLayer* pl, ocBehaviourLayer* bl); /** *************** *** 49,64 **** /** - * Returns the entity data object - */ - ocEntityData* GetEntityData() { return entity_data; } - - /** * Returns the area. */ ! ocAreaWrapper* GetArea() { return area; } /** * Set the area */ ! void SetArea(ocAreaWrapper* a) { area = a; } /** --- 47,57 ---- /** * Returns the area. */ ! ocAreaBehaviour* GetArea() { return area; } /** * Set the area */ ! void SetArea(ocAreaBehaviour* a) { area = a; } /** |