GamerProfile.cpp 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. #include "GamerProfile.h"
  2. SaveGamerProfile::SaveGamerProfile()
  3. {
  4. block = false;
  5. }
  6. //Инициализировать объект
  7. bool SaveGamerProfile::Create(MOPReader & reader)
  8. {
  9. successful.Init(reader);
  10. failed.Init(reader);
  11. return true;
  12. }
  13. //Активировать/деактивировать объект
  14. void SaveGamerProfile::Activate(bool isActive)
  15. {
  16. if(!isActive)
  17. {
  18. LogicDebug("Deactivate: ignore action");
  19. return;
  20. }
  21. if(block)
  22. {
  23. LogicDebugError("Recursive activate don't is possible, try reactivate this object through delay");
  24. return;
  25. }
  26. block = true;
  27. if(LiveService().Data_Save())
  28. {
  29. // Nikita: для отложенного сейва может быть ошибка позже - будем ждать завершения.
  30. if( LiveService().Data_SaveLoadIsProcessing() )
  31. {
  32. SetUpdate(&SaveGamerProfile::Update,ML_TRIGGERS+100);
  33. return;
  34. }
  35. LogicDebug("Activate: save successful");
  36. successful.Activate(Mission(), false);
  37. }else{
  38. LogicDebug("Activate: save failed");
  39. failed.Activate(Mission(), false);
  40. }
  41. block = false;
  42. }
  43. // ждать завершения отложенной записи
  44. void _cdecl SaveGamerProfile::Update(float dltTime, long level)
  45. {
  46. // еще не закончилась запись
  47. if( LiveService().Data_SaveLoadIsProcessing() )
  48. return;
  49. // проверяем на успех записи
  50. if(LiveService().Data_SaveLoadIsSuccessful())
  51. {
  52. LogicDebug("Activate: save successful");
  53. successful.Activate(Mission(), false);
  54. }else{
  55. LogicDebug("Activate: save failed");
  56. failed.Activate(Mission(), false);
  57. }
  58. // снимаем блокировку и ожидание на каждом кадре
  59. block = false;
  60. DelUpdate(&SaveGamerProfile::Update);
  61. }
  62. MOP_BEGINLISTG(SaveGamerProfile, "Gamer profile - Save", '1.00', 0, "Managment")
  63. MOP_MISSIONTRIGGERG("Successful", "s.")
  64. MOP_MISSIONTRIGGERG("Failed", "f.")
  65. MOP_ENDLIST(SaveGamerProfile)
  66. SaveOptions::SaveOptions()
  67. {
  68. block = false;
  69. }
  70. //Инициализировать объект
  71. bool SaveOptions::Create(MOPReader & reader)
  72. {
  73. successful.Init(reader);
  74. failed.Init(reader);
  75. return true;
  76. }
  77. //Активировать/деактивировать объект
  78. void SaveOptions::Activate(bool isActive)
  79. {
  80. if(!isActive)
  81. {
  82. LogicDebug("Deactivate: ignore action");
  83. return;
  84. }
  85. if(block)
  86. {
  87. LogicDebugError("Recursive activate don't is possible, try reactivate this object through delay");
  88. return;
  89. }
  90. block = true;
  91. if(LiveService().Option_Save())
  92. {
  93. // Nikita: для отложенного сейва может быть ошибка позже - будем ждать завершения.
  94. if( LiveService().Data_SaveLoadIsProcessing() )
  95. {
  96. SetUpdate(&SaveOptions::Update,ML_TRIGGERS+100);
  97. return;
  98. }
  99. LogicDebug("Activate: save successful");
  100. successful.Activate(Mission(), false);
  101. }else{
  102. LogicDebug("Activate: save failed");
  103. failed.Activate(Mission(), false);
  104. }
  105. block = false;
  106. }
  107. // ждать завершения отложенной записи
  108. void _cdecl SaveOptions::Update(float dltTime, long level)
  109. {
  110. // еще не закончилась запись
  111. if( LiveService().Data_SaveLoadIsProcessing() )
  112. return;
  113. // проверяем на успех записи
  114. if(LiveService().Data_SaveLoadIsSuccessful())
  115. {
  116. LogicDebug("Activate: save successful");
  117. successful.Activate(Mission(), false);
  118. }else{
  119. LogicDebug("Activate: save failed");
  120. failed.Activate(Mission(), false);
  121. }
  122. // снимаем блокировку и ожидание на каждом кадре
  123. block = false;
  124. DelUpdate(&SaveGamerProfile::Update);
  125. }
  126. MOP_BEGINLISTG(SaveOptions, "Save options", '1.00', 0, "Managment")
  127. MOP_MISSIONTRIGGERG("Successful", "s.")
  128. MOP_MISSIONTRIGGERG("Failed", "f.")
  129. MOP_ENDLIST(SaveOptions)
  130. LoadGamerProfile::LoadGamerProfile()
  131. {
  132. block = false;
  133. }
  134. //Инициализировать объект
  135. bool LoadGamerProfile::Create(MOPReader & reader)
  136. {
  137. successful.Init(reader);
  138. failed.Init(reader);
  139. return true;
  140. }
  141. //Активировать/деактивировать объект
  142. void LoadGamerProfile::Activate(bool isActive)
  143. {
  144. if(!isActive)
  145. {
  146. LogicDebug("Deactivate: ignore action");
  147. return;
  148. }
  149. if(block)
  150. {
  151. LogicDebugError("Recursive activate don't is possible, try reactivate this object through delay");
  152. return;
  153. }
  154. block = true;
  155. if(LiveService().Data_Load())
  156. {
  157. LogicDebug("Activate: load successful");
  158. successful.Activate(Mission(), false);
  159. }else{
  160. LogicDebug("Activate: load failed");
  161. failed.Activate(Mission(), false);
  162. }
  163. block = false;
  164. }
  165. MOP_BEGINLISTG(LoadGamerProfile, "Gamer profile - Load", '1.00', 0, "Managment")
  166. MOP_MISSIONTRIGGERG("Successful", "s.")
  167. MOP_MISSIONTRIGGERG("Failed", "f.")
  168. MOP_ENDLIST(LoadGamerProfile)