Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.71 KB | None | 0 0
  1.  
  2. void WorldManager::shutdown()
  3. {
  4. //destroy worlds
  5. /*int size = mWorlds.size();
  6. for (int i=0; i<size; i++)
  7. {
  8. destroyWorld(mWorlds.at(i)->getName());
  9. }*/
  10.  
  11. foreach(worldsmap::value_type i, mWorlds)
  12. {
  13. //destroyWorld(i.first);
  14. World* r_world = i.second;
  15. if (r_world)
  16. {
  17. if (mCurrentWorld != r_world)
  18. {
  19. //save current world
  20. String temp_name = mCurrentWorld->getName();
  21.  
  22. //switch to world for destroying
  23. switchWorld(name);
  24.  
  25. //world
  26. delete r_world;
  27. //mWorlds.erase(name);
  28.  
  29. //sceneholders
  30. destroyScenes(name);
  31.  
  32. //switch back
  33. switchWorld(temp_name);
  34. }
  35. else
  36. {
  37. //world
  38. delete r_world;
  39. //mWorlds.erase(name);
  40.  
  41. //sceneholders
  42. destroyScenes(name);
  43.  
  44. //switch to other world because current already destroyed
  45. if (mWorlds.size() > 1)
  46. {
  47. switchWorld(mWorlds.begin()->first);
  48. }
  49. else
  50. {
  51. mCurrentWorld = 0;
  52. }
  53. }
  54. to_log("WorldManager:: world "+ name + " destroyed suxxess");
  55. }
  56. }
  57.  
  58. mWorlds.clear();
  59.  
  60. mCurrentWorld = 0;
  61.  
  62. to_log("WorldManager :: shutdown suxxess..");
  63. };
  64.  
  65. void WorldManager::test()
  66. {
  67. //make tests here
  68. //---
  69.  
  70. to_log("WorldManager :: Test is ok");
  71. };
  72.  
  73. void WorldManager::update(float time)
  74. {
  75. if (mCurrentWorld)
  76. {
  77. mCurrentWorld->update(time);
  78. }
  79. };
  80.  
  81. void WorldManager::createWorld(const String& params)
  82. {
  83. //create params
  84. WorldParams* temp_params = new WorldParams(params);
  85.  
  86. if (getWorld(temp_params->name))
  87. {
  88. to_log("WorldManager:: World " + temp_params->name + " already exist, please choose other name..");
  89. }
  90. else
  91. {
  92. to_log("WorldManager:: World " + temp_params->name + " starts creating..");
  93.  
  94. //sceneholders
  95. createScenes(params);
  96.  
  97. //switch scenes
  98. switchScenes(temp_params->name);
  99.  
  100. //create world
  101. World* temp_w = new World(temp_params);
  102.  
  103. //set as current
  104. mWorlds[temp_params->name] = temp_w;
  105. mCurrentWorld = temp_w;
  106. };
  107. };
  108.  
  109. void WorldManager::destroyWorld(const String& name)
  110. {
  111. //get
  112. World* r_world = getWorld(name);
  113.  
  114. //try to destroy
  115. if (r_world)
  116. {
  117. if (mCurrentWorld != r_world)
  118. {
  119. //save current world
  120. String temp_name = mCurrentWorld->getName();
  121.  
  122. //switch to world for destroying
  123. switchWorld(name);
  124.  
  125. //world
  126. delete r_world;
  127. mWorlds.erase(name);
  128.  
  129. //sceneholders
  130. destroyScenes(name);
  131.  
  132. //switch back
  133. switchWorld(temp_name);
  134. }
  135. else
  136. {
  137. //world
  138. delete r_world;
  139. mWorlds.erase(name);
  140.  
  141. //sceneholders
  142. destroyScenes(name);
  143.  
  144. //switch to other world because current already destroyed
  145. if (mWorlds.size() > 1)
  146. {
  147. switchWorld(mWorlds.begin()->first);
  148. }
  149. else
  150. {
  151. mCurrentWorld = 0;
  152. }
  153. }
  154. to_log("WorldManager:: world "+ name + " destroyed suxxess");
  155. }
  156. else
  157. {
  158. to_log("WorldManager :: World :" + name + " not exist");
  159. }
  160. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement