player_init_config.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package data
  2. import (
  3. mhayaError "github.com/mhaya/error"
  4. "github.com/mhaya/game/game_cluster/internal/types"
  5. mhayaLogger "github.com/mhaya/logger"
  6. )
  7. type (
  8. PlayerInitRow struct {
  9. Gender int32 `json:"gender"` // 性别
  10. Level int32 `json:"level"` // 初始等级
  11. Items types.I32I64Map `json:"items"` // 初始的道具列表
  12. Heroes types.I32I64Map `json:"heroes"` // 初始的英雄列表
  13. }
  14. // 角色初始化数据
  15. playerInitConfig struct {
  16. maps map[int32]*PlayerInitRow
  17. }
  18. )
  19. func (p *playerInitConfig) Name() string {
  20. return "playerInitConfig"
  21. }
  22. func (p *playerInitConfig) Init() {
  23. p.maps = make(map[int32]*PlayerInitRow)
  24. }
  25. func (p *playerInitConfig) OnLoad(maps interface{}, _ bool) (int, error) {
  26. list, ok := maps.([]interface{})
  27. if !ok {
  28. return 0, mhayaError.Error("maps convert to []interface{} error.")
  29. }
  30. loadMaps := make(map[int32]*PlayerInitRow)
  31. for index, data := range list {
  32. loadConfig := &PlayerInitRow{}
  33. err := DecodeData(data, loadConfig)
  34. if err != nil {
  35. mhayaLogger.Warnf("decode error. [row = %d, %v], err = %s", index+1, loadConfig, err)
  36. continue
  37. }
  38. loadMaps[loadConfig.Gender] = loadConfig
  39. }
  40. p.maps = loadMaps
  41. return len(list), nil
  42. }
  43. func (p *playerInitConfig) OnAfterLoad(_ bool) {
  44. }
  45. func (p *playerInitConfig) Get(gender int32) (*PlayerInitRow, bool) {
  46. val, found := p.maps[gender]
  47. return val, found
  48. }