From: Keith F. <ven...@us...> - 2003-04-21 04:48:57
|
Update of /cvsroot/planeshift/planeshift/src/server In directory sc8-pr-cvs1:/tmp/cvs-serv4770 Modified Files: psserverchar.cpp pscelserver.h pscelserver.cpp pscel.h pscel.cpp Log Message: Moved psCelServer::InitCharData and helper functions into celPSActor. Index: psserverchar.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/psserverchar.cpp,v retrieving revision 1.59 retrieving revision 1.60 diff -C2 -d -r1.59 -r1.60 *** psserverchar.cpp 20 Apr 2003 01:22:57 -0000 1.59 --- psserverchar.cpp 21 Apr 2003 04:48:54 -0000 1.60 *************** *** 1191,1195 **** csString equipment; ! psserver->GetCelServer()->MakeEquipmentStr( playerID, equipment ); fromClient->GetActor()->SetEquipment( equipment ); --- 1191,1195 ---- csString equipment; ! fromClient->GetActor()->MakeEquipmentStr( playerID, equipment ); fromClient->GetActor()->SetEquipment( equipment ); Index: pscelserver.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/pscelserver.h,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** pscelserver.h 19 Apr 2003 04:49:09 -0000 1.40 --- pscelserver.h 21 Apr 2003 04:48:54 -0000 1.41 *************** *** 85,89 **** * @param equipment [CHANGES] Where the xml generated string is placed. */ ! void MakeEquipmentStr( int playerID, csString& equipment ); --- 85,89 ---- * @param equipment [CHANGES] Where the xml generated string is placed. */ ! //void MakeEquipmentStr( int playerID, csString& equipment ); *************** *** 100,109 **** bool InitMesh(iPcMesh *pcmesh,const char* factname,const csVector3& pos,const iSector* sector); bool InitLinMove(iPcMesh *pcmesh,iPcLinearMovement *pcmove, const csVector3& pos,float angle,const iSector* sector); ! bool InitCharData(iPcCharacterData *pcdata,int playerID); ! bool InitProximityList(iPcProximityList *proxlist,iCelEntity *nearWho, ! float radius,iSector *sector); ! void MakeTexturePartsStr(int playerID,csString& texparts); --- 100,109 ---- bool InitMesh(iPcMesh *pcmesh,const char* factname,const csVector3& pos,const iSector* sector); bool InitLinMove(iPcMesh *pcmesh,iPcLinearMovement *pcmove, const csVector3& pos,float angle,const iSector* sector); ! // bool InitCharData(iPcCharacterData *pcdata,int playerID); ! // bool InitProximityList(iPcProximityList *proxlist,iCelEntity *nearWho, ! // float radius,iSector *sector); ! // void MakeTexturePartsStr(int playerID,csString& texparts); Index: pscelserver.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/pscelserver.cpp,v retrieving revision 1.132 retrieving revision 1.133 diff -C2 -d -r1.132 -r1.133 *** pscelserver.cpp 19 Apr 2003 04:49:09 -0000 1.132 --- pscelserver.cpp 21 Apr 2003 04:48:54 -0000 1.133 *************** *** 125,129 **** return false; ! cel = new psCel(object_reg,pl,bl,netpersist); serverdr = new psServerDR; --- 125,129 ---- return false; ! cel = new psCel(object_reg,pl,bl,netpersist,db); serverdr = new psServerDR; *************** *** 410,414 **** ! bool psCelServer::InitCharData (iPcCharacterData *pcdata, int playerID) { --- 410,414 ---- ! /* bool psCelServer::InitCharData (iPcCharacterData *pcdata, int playerID) { *************** *** 427,430 **** --- 427,431 ---- return true; // right now this func never fail, but might later. } + */ /** *************** *** 437,440 **** --- 438,442 ---- * terminate string */ + /*********** void psCelServer::MakeTexturePartsStr(int playerID,csString& texparts) { *************** *** 476,480 **** rs->Release(); } ! /** * MakeEquipmentPartsStr: Returns a string in XML format enumerating --- 478,482 ---- rs->Release(); } ! **************************/ /** * MakeEquipmentPartsStr: Returns a string in XML format enumerating *************** *** 486,489 **** --- 488,493 ---- * terminate string */ + + /******************************* void psCelServer::MakeEquipmentStr( int playerID, csString& equipment ) { *************** *** 511,515 **** result->Release(); } ! /*** --- 515,519 ---- result->Release(); } ! ****************/ /*** Index: pscel.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/pscel.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** pscel.h 19 Apr 2003 20:47:01 -0000 1.4 --- pscel.h 21 Apr 2003 04:48:54 -0000 1.5 *************** *** 54,60 **** csRef<iCelBlLayer> bl; psNetPersist *netpersist; public: ! psCel(iObjectRegistry *objreg,iCelPlLayer *player,iCelBlLayer *blayer,psNetPersist *net); csPtr<iCelEntity> CreateEntity(celPSObject *obj); --- 54,65 ---- csRef<iCelBlLayer> bl; psNetPersist *netpersist; + psDatabase *database; public: ! psCel(iObjectRegistry *objreg, ! iCelPlLayer *player, ! iCelBlLayer *blayer, ! psNetPersist *net, ! psDatabase *db); csPtr<iCelEntity> CreateEntity(celPSObject *obj); *************** *** 154,157 **** --- 159,163 ---- bool InitLinMove(const csVector3& pos,float angle, const iSector* sector); bool InitCharData(); + bool SetupCharData(int playerID); public: *************** *** 164,167 **** --- 170,174 ---- int GetMode(); + void SetPosition(const csVector3& pos,float angle, const iSector* sector); void GetPosition(csVector3& pos,float& angle, iSector*& sector); *************** *** 174,177 **** --- 181,187 ---- virtual int GetPlayerID() { return playerID; }; + + void MakeEquipmentStr(int playerID, csString& equipment); + void MakeTexturePartsStr(int playerID,csString& texparts); }; Index: pscel.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/pscel.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** pscel.cpp 19 Apr 2003 04:49:09 -0000 1.4 --- pscel.cpp 21 Apr 2003 04:48:54 -0000 1.5 *************** *** 80,89 **** ! psCel::psCel(iObjectRegistry *objreg,iCelPlLayer *player,iCelBlLayer *blayer,psNetPersist *net) { object_reg = objreg; ! pl = player; ! bl = blayer; netpersist = net; } --- 80,94 ---- ! psCel::psCel(iObjectRegistry *objreg, ! iCelPlLayer *p_layer, ! iCelBlLayer *b_layer, ! psNetPersist *net, ! psDatabase *db) { object_reg = objreg; ! pl = p_layer; ! bl = b_layer; netpersist = net; + database = db; } *************** *** 398,410 **** celPSActor::celPSActor(psCel *cel, ! const char* name, ! const char* factname, ! const char* filename, ! iSector* room, ! const csVector3& pos, ! float rotangle, ! int clientnum, ! int objID, ! int pID) : celPSObject(cel,name,factname,filename,room,pos,rotangle,clientnum,objID), playerID(pID) --- 403,415 ---- celPSActor::celPSActor(psCel *cel, ! const char* name, ! const char* factname, ! const char* filename, ! iSector* room, ! const csVector3& pos, ! float rotangle, ! int clientnum, ! int objID, ! int pID) : celPSObject(cel,name,factname,filename,room,pos,rotangle,clientnum,objID), playerID(pID) *************** *** 476,479 **** --- 481,586 ---- } + bool celPSActor::SetupCharData(int playerID) + { + csString texparts; + + // Create the texture for this player + MakeTexturePartsStr(playerID,texparts); + pcdata->SetTextureParts(texparts); + pcdata->SetPlayerID(playerID); + + // Create the equipment/slot list for this player + csString equipmentParts; + MakeEquipmentStr( playerID, equipmentParts ); + pcdata->SetEquipment( equipmentParts ); + + return true; // right now this func never fail, but might later. + } + + /** + * MakeTexturePartsStr: Returns a string in XML format enumerating + * how the texture for the player should be composited. + * + * get cursor/recordset for required texture parts + * initialize string + * cycle through and add items for each part + * terminate string + */ + void celPSActor::MakeTexturePartsStr(int playerID,csString& texparts) + { + csString race,file,gender; + + cel->database->GetPlayerRace(playerID,race,file,gender); + + // get cursor/recordset for required texture parts + iResultSet *rs = cel->database->GetTextureParts(playerID); + + if (!rs) + { + printf("DB Error in MakeTexturePartsStr: %s\n",cel->database->GetLastError() ); + texparts = ""; // clear to indicate failure + return; + } + + // initialize string + char buff[100]; + sprintf(buff,"<texpartlist race=\"%c%s\" base=\"%s\">", + gender.GetAt(0),(const char *)race,(const char *)file); + texparts = buff; + + // cycle through and add items for each part + for (unsigned int i=0; i<rs->Count(); i++) + { + char buff[100]; + sprintf(buff,"<texpart name=\"%s\" texture=\"%s\"/>", + (*rs)[i]["part"], + (*rs)[i]["texture"] ); + texparts.Append(buff); + } + + // terminate string + texparts.Append("</texpartlist>"); + + printf("Got: %s\n", (const char *)texparts ); + + rs->Release(); + } + + /** + * MakeEquipmentPartsStr: Returns a string in XML format enumerating + * the players equiped items and slots they are in + * + * get cursor/recordset for required equipment + * initialize string + * cycle through and add each item and slot + * terminate string + */ + void celPSActor::MakeEquipmentStr( int playerID, csString& equipment ) + { + // Get the record set for the visiable items. + iResultSet* result = cel->database->GetVisibleEquipment( playerID ); + if ( !result ) + { + Notify2("DB Query Error: %s", cel->database->GetLastError() ); + equipment = ""; + return; + } + + equipment = "<equiplist>"; + + for ( unsigned int i = 0; i < result->Count(); i++ ) + { + char buff[512]; + sprintf( buff, "<equip slot=\"%s\" mesh=\"%s\" />", + (*result)[i]["slot"], + (*result)[i]["mesh_name"] ); + equipment.Append( buff ); + } + equipment.Append("</equiplist>"); + + result->Release(); + } + + bool celPSActor::InitCharData() { *************** *** 488,493 **** if (pcdata) { ! pcdata->SetPlayerID(playerID); ! return true; } else --- 595,599 ---- if (pcdata) { ! return SetupCharData(playerID); } else |