NetworkHandler.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #include <InitDatei.h>
  2. #include "NetworkHandler.h"
  3. #include "Globals.h"
  4. NetworkHandler::NetworkHandler()
  5. : ReferenceCounter()
  6. {
  7. HINSTANCE dll = dlls->ladeDLL( "KSGClient", "data/bin/KSGNetwork.dll" );
  8. if( !dll )
  9. throw "DLL not found: 'data/bin/KSGNetwork.dll'";
  10. KSGClient::KSGNetworkCreateMain getMainClient = (KSGClient::KSGNetworkCreateMain)GetProcAddress( dll, KSGNETWORK_CREATE_MAIN );
  11. if( !getMainClient )
  12. throw "Entry point '" KSGNETWORK_CREATE_MAIN "' not found in DLL 'data/bin/KSGNetwork.dll'";
  13. msc = getMainClient();
  14. if( !msc )
  15. throw "Could not create Main Server Client from DLL 'data/bin/KSGNetwork.dll'";
  16. InitDatei *iDat = new InitDatei( "data/optionen.ini" );
  17. iDat->laden();
  18. if( !iDat->zWert( "ServerIP" ) )
  19. iDat->addWert( "ServerIP", "127.0.0.1" );
  20. if( !iDat->zWert( "ServerPort" ) )
  21. iDat->addWert( "ServerPort", "4225" );
  22. iDat->speichern();
  23. Text *ipT = iDat->zWert( "ServerIP" );
  24. unsigned short port = (unsigned short)TextZuInt( iDat->zWert( "ServerPort" )->getText(), 10 );
  25. esc = 0;
  26. if( msc->registerSSL( ipT->getText(), port ) )
  27. {
  28. esc = msc->createErhaltungServerClient();
  29. esc->verbinde();
  30. }
  31. iDat->release();
  32. fc = 0;
  33. lsc = 0;
  34. gsc = 0;
  35. }
  36. NetworkHandler::~NetworkHandler()
  37. {
  38. if( gsc )
  39. {
  40. gsc->release();
  41. gsc = 0;
  42. }
  43. if( fc )
  44. fc->release();
  45. if( esc )
  46. {
  47. esc->abmelden();
  48. esc->release();
  49. }
  50. if( lsc )
  51. {
  52. lsc->logout();
  53. lsc->release();
  54. }
  55. if( msc )
  56. {
  57. msc->unregister();
  58. msc->release();
  59. }
  60. }
  61. bool NetworkHandler::login( Framework::Text name, Framework::Text password )
  62. {
  63. if( !lsc )
  64. lsc = msc->createLoginServerClient();
  65. else
  66. {
  67. if( gsc )
  68. {
  69. gsc->release();
  70. gsc = 0;
  71. }
  72. lsc->logout();
  73. }
  74. return lsc->login( name, password );
  75. }
  76. bool NetworkHandler::connect( Text ip, short port )
  77. {
  78. if( !gsc )
  79. gsc = msc->createMinigameServerClient();
  80. Text *secret = gsc->getSecret();
  81. bool ok = fc->connect( ip, port, lsc->getAccountId(), *secret );
  82. secret->release();
  83. return ok;
  84. }
  85. FactoryClient *NetworkHandler::zFactoryClient() const
  86. {
  87. return fc;
  88. }
  89. bool NetworkHandler::leaveGame()
  90. {
  91. if( fc )
  92. {
  93. fc->release();
  94. fc = 0;
  95. }
  96. }