game_main.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package game
  2. import (
  3. "bet24.com/log"
  4. pb "bet24.com/servers/micros/audioroom/proto"
  5. "encoding/json"
  6. "fmt"
  7. )
  8. func Run() {
  9. getGameManager()
  10. }
  11. func Dump(param1, param2 string) {
  12. getGameManager().dump(param1, param2)
  13. }
  14. func StartGame(userId int, data string) string {
  15. retData := ""
  16. var req pb.Request_StartGame
  17. if err := json.Unmarshal([]byte(data), &req); err != nil {
  18. retData = fmt.Sprintf("user_audioroom.StartGame unmarshal fail %v", err)
  19. log.Release(retData)
  20. return retData
  21. }
  22. var ret pb.Response_StartGame
  23. info := getGameManager().getRoomInfo(req.RoomId)
  24. if info == nil {
  25. log.Error("game_main.StartGame userId=%d roomId=%d gameId=%d playType=%d scene=%d",
  26. userId, req.RoomId, req.GameId, req.PlayType, req.Scene)
  27. return ""
  28. }
  29. ret.RetCode, ret.Message, ret.Result = getGameManager().startGame(userId, req.RoomId, req.GameId, req.PlayType, req.Scene, req.MessageContent, info.UserId)
  30. buf, _ := json.Marshal(ret)
  31. return string(buf)
  32. }
  33. // 测试期获取房间自动创建,后续改成房主创建
  34. func GetGameRoomInfo(userId int, data string) string {
  35. var req struct {
  36. RoomId int
  37. GameId int
  38. RuleName string
  39. }
  40. if err := json.Unmarshal([]byte(data), &req); err != nil {
  41. retData := fmt.Sprintf("game_main.GetGameRoomInfo unmarshal fail %v", err)
  42. log.Release(retData)
  43. return retData
  44. }
  45. roomInfo := getGameManager().getGameRoomInfo(req.RoomId, req.GameId, req.RuleName)
  46. buf, _ := json.Marshal(roomInfo)
  47. return string(buf)
  48. }
  49. func ReportUserBet(roomId, roomNo, gameId int, roomName string, isChipRoom bool, userBets []pb.UserBet) {
  50. info := getGameManager().getRoomInfo(roomId)
  51. if info == nil {
  52. log.Error("game_main.ReportUserBet roomId=%d roomNo=%d gameId=%d roomName=%s userBets=%+v",
  53. roomId, roomNo, gameId, roomName, userBets)
  54. return
  55. }
  56. getGameManager().reportUserBet(roomId, roomNo, gameId, roomName, isChipRoom, userBets, info.UserId)
  57. }
  58. // 创建房间,如果返回nil表示创建失败
  59. func CreateGameRoom(roomId, gameId int, ruleName string) (bool, *pb.GameRoomInfo) {
  60. ok, gr := getGameManager().createGameRoom(roomId, gameId, ruleName)
  61. if !ok {
  62. return ok, nil
  63. }
  64. return ok, &gr.GameRoomInfo
  65. }
  66. func CloseGameRoom(roomId, roomNo int) bool {
  67. return getGameManager().closeGameRoom(roomId, roomNo)
  68. }
  69. func SubscribeRoomEnd(onRoomEnd func(roomId int, roomNo int)) {
  70. getGameManager().setRoomEndSubscriber(onRoomEnd)
  71. }
  72. // 订阅房间信息
  73. func SubscribeRoomInfo(onRoomInfo func(roomId int) *pb.RoomInfo) {
  74. getGameManager().setRoomInfoSubscriber(onRoomInfo)
  75. }