player_stats.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package mapPlayer
  2. import (
  3. "f1-game/internal/event"
  4. nameRemote "f1-game/internal/name/remote"
  5. "f1-game/nodes/map/internal/db"
  6. cfacade "github.com/cherry-game/cherry/facade"
  7. )
  8. func (p *actorPlayer) initPlayerStats() {
  9. p.Remote().Register(nameRemote.MapPlayer_ResGatherStats, p.onPlayerResGatherStats)
  10. p.Remote().Register(nameRemote.MapPlayer_CrusadeBattleStats, p.onPlayerCrusadeBattleStats)
  11. p.Remote().Register(nameRemote.MapPlayer_TileOccupyStats, p.onPlayerTileOccupyStats)
  12. // p.EventRegister(nameEvent.Map_PlayerResGather, p.onPlayerResGatherStats)
  13. // p.EventRegister(nameEvent.Map_PlayerCrusadeBattle, p.onPlayerCrusadeBattleStats)
  14. // p.EventRegister(nameEvent.Map_PlayerTileOccupy, p.onPlayerTileOccupyStats)
  15. }
  16. // 资源采集事件统计
  17. func (p *actorPlayer) onPlayerResGatherStats(e cfacade.IEventData) {
  18. evt, ok := e.(*event.PlayerResGather)
  19. if !ok {
  20. p.Warn("[onPlayerResGatherStats] fail, event:%+v", e)
  21. return
  22. }
  23. assets := evt.Assets()
  24. if assets.IsEmpty() {
  25. return
  26. }
  27. playerTable := db.GetMapPlayerTable(p.playerID)
  28. if playerTable.Stats.UpdateResGatherStats(assets) {
  29. playerTable.Save2Queue()
  30. }
  31. }
  32. // 讨贼事件统计
  33. func (p *actorPlayer) onPlayerCrusadeBattleStats(e cfacade.IEventData) {
  34. evt, ok := e.(*event.CrusadeBattle)
  35. if !ok {
  36. p.Warn("[onPlayerCrusadeBattleStats] fail, event:%+v", e)
  37. return
  38. }
  39. playerTable := db.GetMapPlayerTable(p.playerID)
  40. if playerTable.Stats.UpdateCrusadeBattleStats(evt.ConfigID(), evt.Level(), evt.IsWin()) {
  41. playerTable.Save2Queue()
  42. }
  43. }
  44. // 攻占资源地事件统计
  45. func (p *actorPlayer) onPlayerTileOccupyStats(e cfacade.IEventData) {
  46. evt, ok := e.(*event.TileOccupy)
  47. if !ok {
  48. p.Warn("[onPlayerTileOccupyStats] fail, event:%+v", e)
  49. return
  50. }
  51. playerTable := db.GetMapPlayerTable(p.playerID)
  52. if playerTable.Stats.UpdateTileOccpuyStats(evt.Level()) {
  53. playerTable.Save2Queue()
  54. }
  55. }