Reporting.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. using log4net;
  2. using System.Runtime.CompilerServices;
  3. using Server.MirDatabase;
  4. namespace Server.MirObjects
  5. {
  6. public class Reporting
  7. {
  8. private static readonly ILog log = Logger.GetLogger(LogType.Player);
  9. protected static MessageQueue MessageQueue
  10. {
  11. get { return MessageQueue.Instance; }
  12. }
  13. private readonly PlayerObject _player;
  14. public Reporting(PlayerObject player)
  15. {
  16. this._player = player;
  17. }
  18. #region Move Actions
  19. public void MapChange(MapInfo oldMap, MapInfo newMap, [CallerMemberName] string source = "")
  20. {
  21. string message = $"Moved Map {oldMap.FileName} => {newMap.FileName}";
  22. LogMessage(message, source);
  23. }
  24. #endregion
  25. #region Item Actions
  26. public void ItemSplit(UserItem item, UserItem newItem, MirGridType grid, [CallerMemberName] string source = "")
  27. {
  28. string message = $"Item Split - {item.Info.Name} from x{item.Count + newItem.Count} to x{item.Count} in {grid} - Created new item ({newItem.UniqueID}) x {newItem.Count}";
  29. LogMessage(message, source);
  30. }
  31. public void ItemMerged(UserItem fromItem, UserItem toItem, int slotFrom, int slotTo, MirGridType gridFrom, MirGridType gridTo, [CallerMemberName] string source = "")
  32. {
  33. string message = $"Item Merged - {fromItem.Info.Name} with {toItem.Info.Name} from {slotFrom} ({gridFrom}) to {slotTo} ({gridTo}) ({toItem.UniqueID})";
  34. LogMessage(message, source);
  35. }
  36. public void ItemCombined(UserItem fromItem, UserItem toItem, int slotFrom, int slotTo, MirGridType grid, [CallerMemberName] string source = "")
  37. {
  38. string message = $"Item Combined - {fromItem.Info.Name} with {toItem.Info.Name} from {slotFrom} to {slotTo} in {grid} ({toItem.UniqueID})";
  39. LogMessage(message, source);
  40. }
  41. public void ItemMoved(UserItem item, MirGridType from, MirGridType to, int slotFrom, int slotTo, string info = "", [CallerMemberName] string source = "")
  42. {
  43. string message = $"Item Moved - {(item != null ? item.Info.Name : "Empty")} from {from}:{slotFrom} to {to}:{slotTo} ({item?.UniqueID}) {info}";
  44. LogMessage(message, source);
  45. }
  46. public void ItemChanged(UserItem item, uint amount, int state, [CallerMemberName] string source = "")
  47. {
  48. string type = string.Empty;
  49. switch (state)
  50. {
  51. case 1:
  52. type = "Lost";
  53. break;
  54. case 2:
  55. type = "Gained";
  56. break;
  57. }
  58. string message = $"Item {type} - {item.Info.Name} x{amount} ({item.UniqueID})";
  59. LogMessage(message, source);
  60. }
  61. public void ItemDeleted(UserItem item, uint amount, string info = "", [CallerMemberName] string source = "")
  62. {
  63. string message = $"Item Deleted - {item?.Info.Name} x{amount} ({item?.UniqueID}) {info}";
  64. LogMessage(message, source);
  65. }
  66. public void ItemChangedHero(UserItem item, uint amount, int state, [CallerMemberName] string source = "")
  67. {
  68. string type = string.Empty;
  69. switch (state)
  70. {
  71. case 1:
  72. type = "Lost";
  73. break;
  74. case 2:
  75. type = "Gained";
  76. break;
  77. }
  78. string message = $"Item {type} - {item.Info.Name} x{amount} ({item.UniqueID})";
  79. LogHeroMessage(message, source);
  80. }
  81. public void ItemGSBought(GameShopItem item, uint amount, uint CreditCost, uint GoldCost, [CallerMemberName] string source = "")
  82. {
  83. string message = $"Purchased {item.Info.FriendlyName} x{amount} for {CreditCost} Credits and {GoldCost} Gold.";
  84. LogMessage(message, source);
  85. }
  86. public void ItemMailed(UserItem item, uint amount, int reason, [CallerMemberName] string source = "")
  87. {
  88. string msg;
  89. switch (reason)
  90. {
  91. case 1:
  92. msg = "Could not return item to bag after trade.";
  93. break;
  94. case 2:
  95. msg = "Item rental expired.";
  96. break;
  97. case 3:
  98. msg = "Could not return item to bag after rental.";
  99. break;
  100. default:
  101. msg = "No reason provided.";
  102. break;
  103. }
  104. string message = $"Mailed {item.Info.FriendlyName} x{amount}. Reason : {msg}.";
  105. LogMessage(message, source);
  106. }
  107. public void GoldChanged(uint amount, bool lost = true, string info = "", [CallerMemberName] string source = "")
  108. {
  109. string message = $"Gold{(lost ? "Lost" : "Gained")} - x{amount} {info}";
  110. LogMessage(message, source);
  111. }
  112. public void CreditChanged(uint amount, bool lost = true, string info = "", [CallerMemberName] string source = "")
  113. {
  114. string message = $"Credit{(lost ? "Lost" : "Gained")} - x{amount} {info}";
  115. LogMessage(message, source);
  116. }
  117. public void ItemError(MirGridType from, MirGridType to, int slotFrom, int slotTo, [CallerMemberName] string source = "")
  118. {
  119. string message = $"Item Moved Error - from {from}:{slotFrom} to {to}:{slotTo}";
  120. LogMessage(message, source);
  121. }
  122. #endregion
  123. #region Kill Actions
  124. public void KilledPlayer(PlayerObject obj, string info = "", [CallerMemberName] string source = "")
  125. {
  126. string message = $"Killed Player {obj.Name} {info}";
  127. LogMessage(message, source);
  128. }
  129. public void KilledMonster(MonsterObject obj, string info = "", [CallerMemberName] string source = "")
  130. {
  131. string message = $"Killed Monster {obj.Name} {info}";
  132. LogMessage(message, source);
  133. }
  134. #endregion
  135. #region Other Actions
  136. public void Levelled(int level)
  137. {
  138. string message = $"Levelled to {level}";
  139. LogMessage(message, "");
  140. }
  141. public void Died(string map)
  142. {
  143. string message = $"Died - Map {map}";
  144. LogMessage(message, "");
  145. }
  146. public void Connected(string ipAddress)
  147. {
  148. string message = $"Connected - {ipAddress}";
  149. LogMessage(message, "");
  150. }
  151. public void Disconnected(string reason)
  152. {
  153. string message = $"Disconnected - {reason}";
  154. LogMessage(message, "");
  155. }
  156. #endregion
  157. #region Private Methods
  158. private void LogMessage(string message, string source)
  159. {
  160. try
  161. {
  162. var logMessage = $"{_player.Name} - {source} : {message}";
  163. log.Info(logMessage);
  164. }
  165. catch (Exception ex)
  166. {
  167. MessageQueue.Enqueue(ex);
  168. }
  169. }
  170. private void LogHeroMessage(string message, string source)
  171. {
  172. try
  173. {
  174. var logMessage = $"{_player.Name}[Hero] - {source} : {message}";
  175. log.Info(logMessage);
  176. }
  177. catch (Exception ex)
  178. {
  179. MessageQueue.Enqueue(ex);
  180. }
  181. }
  182. #endregion
  183. }
  184. }