league_timer.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package mapLeague
  2. import (
  3. "f1-game/internal/data"
  4. leagueBase "f1-game/nodes/map/league/base"
  5. leagueMember "f1-game/nodes/map/league/member"
  6. leagueStorage "f1-game/nodes/map/league/storage"
  7. "time"
  8. ctime "github.com/cherry-game/cherry/extend/time"
  9. )
  10. func (p *actorLeague) startTimer() {
  11. //移除所有定时器
  12. p.Timer().RemoveAll()
  13. // 添加跨天定时器
  14. p.Timer().AddFixedHour(int(data.Const.ResetTime), 0, 0, p.onCrossDayTimer)
  15. // 添加每秒定时器
  16. p.Timer().Add(1*time.Second, p.every1STimer)
  17. // 资源定时器
  18. p.Timer().Add(3*time.Second, p.every3STimer)
  19. }
  20. func (p *actorLeague) onCrossDayTimer() {
  21. p.dailyReset()
  22. }
  23. // oneSecondTimer 每1秒定时器
  24. func (p *actorLeague) every1STimer() {
  25. nowSecond := ctime.Now().ToSecond()
  26. // 每日重置检查
  27. p.dailyReset()
  28. // TODO 以下后续改到service中
  29. // 盟主转让
  30. leagueMember.Service().LeagueLeaderTransferTimer(p.leagueTable, nowSecond)
  31. // 盟主弹劾
  32. leagueMember.Service().LeagueImpeachTimer(p.leagueTable, nowSecond)
  33. leagueBase.Service().LeagueDiplomacyTimer(p.leagueID, nowSecond)
  34. }
  35. // every3STimer 每3秒定时器
  36. func (p *actorLeague) every3STimer() {
  37. nowSecond := ctime.Now().ToSecond()
  38. leagueStorage.Service().CheckAutoAdd(p.leagueID, nowSecond)
  39. }
  40. // 联盟每日重置
  41. func (p *actorLeague) dailyReset() {
  42. now := ctime.Now()
  43. p.leagueTable.Stats.CheckReset(&now)
  44. // 不需要重置
  45. if !p.leagueTable.Stats.IsCanReset() {
  46. return
  47. }
  48. // 执行重置
  49. LeagueServiceOnReset(p.leagueTable)
  50. p.Warn("league daily reset finish. dayReset=%v, weekReset=%v",
  51. p.leagueTable.Stats.IsDayReset,
  52. p.leagueTable.Stats.IsWeekReset)
  53. }