setsmatchroom.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package setsmatch
  2. import (
  3. "bet24.com/log"
  4. privateroom "bet24.com/servers/micros/privateroom/proto"
  5. "fmt"
  6. )
  7. type matchroom struct {
  8. RoomNo int
  9. Users []int
  10. Status int
  11. mi *matchinstance
  12. }
  13. func newMatchRoom(roomNo int, mi *matchinstance) *matchroom {
  14. ret := new(matchroom)
  15. ret.RoomNo = roomNo
  16. ret.mi = mi
  17. return ret
  18. }
  19. func (mr *matchroom) addUser(userId int) {
  20. for i := 0; i < len(mr.Users); i++ {
  21. if mr.Users[i] == userId {
  22. log.Release("setsmatch.matchroom[%d] addUser %d already exist", mr.RoomNo, userId)
  23. return
  24. }
  25. }
  26. mr.Users = append(mr.Users, userId)
  27. }
  28. func (mr *matchroom) removeUser(userId int) {
  29. for i := 0; i < len(mr.Users); i++ {
  30. if mr.Users[i] == userId {
  31. mr.Users = append(mr.Users[:i], mr.Users[i+1:]...)
  32. return
  33. }
  34. }
  35. log.Release("setsmatch.matchroom[%d] removeUser %d not exist", mr.RoomNo, userId)
  36. }
  37. func (mr *matchroom) isEnded() bool {
  38. return mr.Status == privateroom.PrivateRoomStatus_Ended
  39. }
  40. func (mr *matchroom) isStarted() bool {
  41. return mr.Status >= privateroom.PrivateRoomStatus_Playing
  42. }
  43. func (mr *matchroom) dump() {
  44. var users string
  45. for i := 0; i < len(mr.Users); i++ {
  46. users = fmt.Sprintf("%s%d:%d;", users, mr.Users[i], mr.mi.getUserScore(mr.Users[i]))
  47. }
  48. log.Release(" RoomNo[%d] Status[%d] Users[%s]", mr.RoomNo, mr.Status, users)
  49. }
  50. func (mr *matchroom) isValidUsers(users []int) bool {
  51. for _, v := range users {
  52. if !mr.isUserExist(v) {
  53. log.Release("matchroom.isValidUsers %d not exist in", v)
  54. return false
  55. }
  56. }
  57. return true
  58. }
  59. func (mr *matchroom) isUserExist(userId int) bool {
  60. for _, v := range mr.Users {
  61. if v == userId {
  62. return true
  63. }
  64. }
  65. return false
  66. }