logicId.go 614 B

1234567891011121314151617181920212223242526272829303132333435
  1. package comp
  2. import (
  3. "errors"
  4. )
  5. //
  6. var (
  7. ErrInvalidLogicId = errors.New("Invalid logic id")
  8. )
  9. type LogicId struct {
  10. funcId uint64 //999
  11. cataId uint64 //99
  12. subId uint64 //99
  13. instId uint64 //99
  14. gameId uint64 //
  15. }
  16. func Parse(logicId uint64) (*LogicId, error) {
  17. sid := &LogicId{}
  18. sid.instId = logicId % 100
  19. sid.subId = logicId / 100 % 100
  20. sid.cataId = logicId / 10000 % 100
  21. sid.funcId = logicId / 1000000
  22. sid.gameId = logicId - sid.instId
  23. if sid.funcId >= 1000 || sid.funcId <= 0 {
  24. return nil, ErrInvalidLogicId
  25. }
  26. return sid, nil
  27. }
  28. func (self *LogicId) GameId() uint64 {
  29. return self.gameId
  30. }