PageRenderTime 37ms CodeModel.GetById 7ms RepoModel.GetById 0ms app.codeStats 0ms

/DataInterface_Teleporter.cpp

http://github.com/InfiniteRasa/Game-Server
C++ | 93 lines | 68 code | 16 blank | 9 comment | 4 complexity | 4db578b61715d62586698e4ac2fe7277 MD5 | raw file
  1. #include<winsock2.h>
  2. #include<stdio.h>
  3. #include"DataInterface.h"
  4. void cb_dataInterface_teleporter_getList(MYSQL *dbCon, diJob_teleporterData *job, void *cb, void *param)
  5. {
  6. char queryText[1024];
  7. job->scount = 0;
  8. job->tdata = NULL;
  9. //__debugbreak();
  10. wsprintf(queryText, "SELECT id,type,px,py,pz,modelid FROM teleporter");
  11. // execute query
  12. if( mysql_query(dbCon, queryText) )
  13. {
  14. printf("Error in query\n");
  15. while(1) Sleep(1000);
  16. }
  17. MYSQL_RES *dbResult = mysql_store_result(dbCon);
  18. MYSQL_ROW dbRow;
  19. // allocate spawn data
  20. int teleporterCount = mysql_num_rows(dbResult);
  21. di_teleporterData *teleporterList = (di_teleporterData*)malloc(sizeof(di_teleporterData) * teleporterCount);
  22. int x = 0;
  23. while((dbRow = mysql_fetch_row(dbResult)))
  24. {
  25. //float temp_dx,temp_dy,temp_dx,temp_sx,temp_sy,temp_sz,temp_bx,temp_bz;
  26. //unsigned int temp_id,temp_type;
  27. //char temp_label[50];
  28. di_teleporterData *teleporter = teleporterList+x;
  29. x++;
  30. sscanf(dbRow[0], "%d", &teleporter->id);
  31. sscanf(dbRow[1], "%d", &teleporter->type);
  32. //strcpy(teleporter->label, dbRow[2]);
  33. sscanf(dbRow[2], "%f", &teleporter->sx);
  34. sscanf(dbRow[3], "%f", &teleporter->sy);
  35. sscanf(dbRow[4], "%f", &teleporter->sz);
  36. sscanf(dbRow[5], "%d", &teleporter->modelid);
  37. }//---while
  38. mysql_free_result(dbResult);
  39. job->tdata = teleporterList;
  40. job->scount = teleporterCount;
  41. // do callback param1: mapchannel param2: list of npcdata
  42. ((void (*)(void*,void*))cb)(param, job);
  43. if(teleporterList != NULL)free(teleporterList);
  44. dataInterface_freeJob(job);
  45. }
  46. void dataInterface_teleporter_getList(unsigned int mapContextId, void (*cb)(void *param, diJob_teleporterData *jobData), void *param)
  47. {
  48. diJob_teleporterData *job = (diJob_teleporterData*)dataInterface_allocJob(sizeof(diJob_teleporterData));
  49. job->mapContextId = mapContextId;
  50. dataInterface_queueJob(job, cb_dataInterface_teleporter_getList, cb, param);
  51. }
  52. void cb_dataInterface_teleporter_updateList(MYSQL *dbCon, diJob_teleporterData *job, void *cb, void *param)
  53. {
  54. char queryText[4 * 1024];
  55. di_teleporterData *worldObject = job->tdata;
  56. printf("DB-GameObject-Insert: type: %i classid: %i\n",worldObject->type,worldObject->modelid);
  57. sprintf(queryText, "INSERT INTO teleporter ("
  58. "`type`,`px`,`py`,`pz`,`modelid`"
  59. ") VALUES (%d,%f,%f,%f,%d)",
  60. worldObject->type, worldObject->sx, worldObject->sy,
  61. worldObject->sz,worldObject->modelid);
  62. if( mysql_query(dbCon, queryText) )
  63. {
  64. //characterData->error = true;
  65. printf("Error in query\n");
  66. puts(queryText);
  67. puts(mysql_error(dbCon));
  68. return;
  69. }
  70. dataInterface_freeJob(job);
  71. }
  72. void dataInterface_teleporter_updateList( di_teleporterData *objectData, void (*cb)(void *param, diJob_teleporterData *jobData), void *param)
  73. {
  74. diJob_teleporterData *job = (diJob_teleporterData*)dataInterface_allocJob(sizeof(diJob_teleporterData));
  75. job->tdata = objectData;
  76. dataInterface_queueJob(job, cb_dataInterface_teleporter_updateList, cb, param);
  77. }