player.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package player
  2. import (
  3. "f1-game/internal/component/redis"
  4. "f1-game/internal/event"
  5. nameEvent "f1-game/internal/name/event"
  6. nameLocal "f1-game/internal/name/local"
  7. nameRedis "f1-game/internal/name/redis"
  8. "f1-game/internal/pb"
  9. ctime "github.com/cherry-game/cherry/extend/time"
  10. cfacade "github.com/cherry-game/cherry/facade"
  11. cproto "github.com/cherry-game/cherry/net/proto"
  12. )
  13. func (p *actorPlayer) initPlayer() {
  14. p.Local().Register(nameLocal.Player_Time, p.time)
  15. p.Local().Register(nameLocal.Player_ClientSet, p.setClientSet)
  16. p.EventRegister(nameEvent.Lord_LevelUp, p.playerLordLevelUp)
  17. }
  18. // time 获取服务器时间
  19. func (p *actorPlayer) time(session *cproto.Session, _ *pb.None) {
  20. rsp := &pb.I64{
  21. Value: ctime.Now().ToMillisecond(),
  22. }
  23. p.Response(session, rsp)
  24. }
  25. // setClientSet 客户端设置
  26. func (p *actorPlayer) setClientSet(session *cproto.Session, req *pb.UI32UI32) {
  27. playerTable := p.PlayerTable()
  28. if len(playerTable.Settings.List) > 256 {
  29. return
  30. }
  31. playerTable.Settings.List.Put(req.Key, req.Value)
  32. playerTable.Save2Queue()
  33. resp := &pb.UI32UI32{
  34. Key: req.Key,
  35. Value: req.Value,
  36. }
  37. p.Response(session, resp)
  38. p.Debug("[setClientSet]. playerID = %d, req = %v", p.playerID, req)
  39. }
  40. // playerLordLevelUp 玩家领主升级
  41. func (p *actorPlayer) playerLordLevelUp(eventData cfacade.IEventData) {
  42. e, ok := eventData.(*event.LordLevelUp)
  43. if !ok {
  44. return
  45. }
  46. var (
  47. playerID = e.UniqueID()
  48. lordLevel = e.Level()
  49. )
  50. redis.Game.SavePlayerDataFields(playerID, map[string]any{
  51. nameRedis.Player_LordLevel: lordLevel,
  52. })
  53. }