playerstats.c 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. enum EPSstatsFlags
  2. {
  3. EMPTY = 0,
  4. SYNCED = 1,
  5. }
  6. class PlayerStats
  7. {
  8. ref array<ref PlayerStatBase> m_PlayerStats;
  9. ref array<ref StatDebugObject> m_PlayerStatsDebug;
  10. ref PCOHandlerStats m_PCOhandler;
  11. ref Timer m_SyncTimer;
  12. Man m_Player;
  13. bool m_AllowLogs;
  14. string m_System = "Stats"; //debuging tag
  15. void PlayerStats(Man player)
  16. {
  17. Init(player);
  18. m_PCOhandler = new PCOHandlerStats(player);
  19. }
  20. void Init(Man player)
  21. {
  22. m_Player = player;
  23. }
  24. PlayerStatsPCO_Base GetPCO(int version = -1 )
  25. {
  26. return m_PCOhandler.GetPCO(version);
  27. }
  28. void ~PlayerStats()
  29. {
  30. //if( GetGame() && GetGame().IsDebugActions() ) GatherAllRecords();
  31. }
  32. PlayerStatBase GetStatObject(int id)
  33. {
  34. PlayerStatsPCO_Base pco = GetPCO();
  35. if ( pco )
  36. {
  37. return pco.GetStatObject(id);
  38. }
  39. else
  40. {
  41. return null;
  42. }
  43. }
  44. void SetAllowLogs(bool enable)
  45. {
  46. m_AllowLogs = enable;
  47. }
  48. bool GetAllowLogs()
  49. {
  50. return m_AllowLogs;
  51. }
  52. void GetDebugInfo( array<ref StatDebugObject> objects, int flags )
  53. {
  54. /*
  55. for(int i = 0; i < m_PlayerStats.Count(); i++)
  56. {
  57. m_PlayerStats.Get(i).SerializeValue(objects, flags);
  58. }
  59. */
  60. }
  61. void GatherAllRecords()
  62. {
  63. /*
  64. FileHandle file = OpenFile("$profile:StatRecords.log", FileMode.WRITE);
  65. FPrintln(file, "================================================================");
  66. FPrintln(file," ================== " + m_Player.ToString() +" ================== ");
  67. FPrintln(file, "================================================================");
  68. for(int i = 0; i < m_PlayerStats.Count(); i++)
  69. {
  70. array<PlayerStatRecord> records = m_PlayerStats.Get(i).GetRecords();
  71. FPrintln(file, m_PlayerStats.Get(i).GetLabel() );
  72. for(int z = 0; z < records.Count(); z++)
  73. {
  74. PlayerStatRecord record = records.Get(z);
  75. string output = record.GetStringOutput();
  76. FPrintln(file, output);
  77. }
  78. }
  79. */
  80. }
  81. void SaveStats( ParamsWriteContext ctx )
  82. {
  83. int current_version = GetGame().SaveVersion();
  84. PlayerStatsPCO_Base pco = GetPCO(current_version);
  85. if ( pco )
  86. {
  87. pco.OnStoreSave(ctx);
  88. //Print("Saving stats in version: "+ pco.GetVersion());
  89. }
  90. else
  91. {
  92. return;
  93. }
  94. }
  95. bool LoadStats( ParamsReadContext ctx, int version )
  96. {
  97. PlayerStatsPCO_Base pco = GetPCO(version);
  98. if (pco && pco.OnStoreLoad(ctx))
  99. {
  100. //Print("********* LoadStats loading version: " + pco.GetVersion());
  101. return true;
  102. }
  103. else
  104. {
  105. return false;
  106. }
  107. }
  108. void ResetAllStats()
  109. {
  110. GetPCO().ResetAllStats();
  111. }
  112. void OnRPC(ParamsReadContext ctx)
  113. {
  114. GetPCO().OnRPC(ctx);
  115. }
  116. void OnAfterStoreLoad()
  117. {
  118. GetPCO().OnAfterStoreLoad();
  119. }
  120. }