ladder_roommanager.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package ladder
  2. import (
  3. "bet24.com/log"
  4. pb "bet24.com/servers/micros/ladderservice/proto"
  5. "encoding/json"
  6. )
  7. var roomMgr *roomManager
  8. func getRoomManager() *roomManager {
  9. if roomMgr == nil {
  10. roomMgr = new(roomManager)
  11. }
  12. return roomMgr
  13. }
  14. type roomManager struct {
  15. roomList []pb.GameRoomInfo
  16. }
  17. func (rm *roomManager) dump() {
  18. log.Release("-------------------------------")
  19. log.Release("roomManager.dump")
  20. defer func() {
  21. log.Release("+++++++++++++++++++++++++++++++")
  22. log.Release("")
  23. }()
  24. for _, v := range rm.roomList {
  25. log.Release(" RoomName[%s]BS[%d]MinMax[%d-%d]Add[%d]Server[%s]", v.RoomName, v.BaseScore, v.MinGold, v.MaxGold, v.AdditionalPercent, v.ServerAddr)
  26. }
  27. }
  28. func (rm *roomManager) addRoom(room pb.GameRoomInfo) {
  29. for k, v := range rm.roomList {
  30. if v.GameId == room.GameId && v.RoomName == room.RoomName {
  31. rm.roomList[k] = room
  32. return
  33. }
  34. }
  35. rm.roomList = append(rm.roomList, room)
  36. }
  37. func (rm *roomManager) removeRooms(serverAddr string) {
  38. for k := 0; k < len(rm.roomList); {
  39. if rm.roomList[k].ServerAddr == serverAddr {
  40. rm.roomList = append(rm.roomList[:k], rm.roomList[k+1:]...)
  41. } else {
  42. k++
  43. }
  44. }
  45. }
  46. func (rm *roomManager) getRoomAdditionalPercent(gameId int, roomName string) int {
  47. for _, v := range rm.roomList {
  48. if v.GameId == gameId && v.RoomName == roomName {
  49. return v.AdditionalPercent
  50. }
  51. }
  52. log.Release("roomManager.getRoomAdditionalPercent gameId[%d] roomName[%s] not found", gameId, roomName)
  53. return 0
  54. }
  55. func (rm *roomManager) getRoomList() string {
  56. d, _ := json.Marshal(rm.roomList)
  57. return string(d)
  58. }