123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- package room
- import (
- "encoding/json"
- "errors"
- "strings"
- "github.com/sirupsen/logrus"
- gameQZ "nn.daxia.dev/game/qznn"
- "nn.daxia.dev/gameproto"
- "nn.daxia.dev/handler/api"
- "nn.daxia.dev/nxd"
- )
- type JoinRoomReq struct {
- RoomID int32 `json:"room_id"`
- ChairID int32 `json:"chair_id"`
- Passwd string `json:"passwd"`
- }
- type RndJoinRoomReq struct {
- RoomType int32 `json:"room_type"` //0:积分房,1:收费房
- }
- type CreateRoomReq struct {
- Passwd string `json:"passwd"`
- Name string `json:"name"`
- BaseAmount int `json:"base_amount"`
- RoomType int32 `json:"room_type"`
- }
- func Join(req api.PerformReq) error {
- var err error
- userModel := req.UserModel
- joinRoomReq := JoinRoomReq{}
- err = json.Unmarshal(req.Msg, &joinRoomReq)
- if err != nil {
- logrus.Error(err)
- return err
- }
- gameInstance := gameQZ.GetInstance()
- gameInstance.Join(int32(userModel.ID))
- //指定房间加入,只能是收费房
- err = gameInstance.ChooseChairPayRoom(int32(userModel.ID), int32(joinRoomReq.RoomID),
- int32(joinRoomReq.ChairID), joinRoomReq.Passwd, true)
- if err != nil {
- logrus.Error(err)
- nxd.FailedResponse(req.Once, uint32(userModel.ID), err.Error())
- return err
- }
- nxd.SuccessResponse(req.Once, uint32(userModel.ID), nil)
- return nil
- }
- func RndJoin(req api.PerformReq) error {
- var err error
- userModel := req.UserModel
- rndJoinRoomReq := RndJoinRoomReq{}
- err = json.Unmarshal(req.Msg, &rndJoinRoomReq)
- if err != nil {
- logrus.Error(err)
- return err
- }
- gameInstance := gameQZ.GetInstance()
- gameInstance.Join(int32(userModel.ID))
- //按类型来随机加入房间
- err = gameInstance.ChooseRndChair(int32(userModel.ID), rndJoinRoomReq.RoomType)
- if err != nil {
- logrus.Error(err)
- nxd.FailedResponse(req.Once, uint32(userModel.ID), err.Error())
- return err
- }
- nxd.SuccessResponse(req.Once, uint32(userModel.ID), nil)
- return nil
- }
- func Leave(req api.PerformReq) error {
- userModel := req.UserModel
- gameInstance := gameQZ.GetInstance()
- err := gameInstance.LeaveRoom(int32(userModel.ID))
- if err != nil {
- logrus.Error(err)
- nxd.FailedResponse(req.Once, uint32(userModel.ID), err.Error())
- return err
- }
- nxd.SuccessResponse(req.Once, uint32(userModel.ID), nil)
- return nil
- }
- func Create(req api.PerformReq) error {
- var err error
- userModel := req.UserModel
- createRoomReq := CreateRoomReq{}
- err = json.Unmarshal(req.Msg, &createRoomReq)
- if err != nil {
- logrus.Error(err)
- nxd.FailedResponse(req.Once, uint32(userModel.ID), err.Error())
- return err
- }
- if createRoomReq.BaseAmount == 0 {
- createRoomReq.BaseAmount = 3
- }
- createRoomReq.Name = strings.TrimSpace(createRoomReq.Name)
- if createRoomReq.Name == "" {
- nxd.FailedResponse(req.Once, uint32(userModel.ID), "名称不能为空")
- return errors.New("名称不能为空")
- }
- gameInstance := gameQZ.GetInstance()
- room, err := gameInstance.CreateRoom(int32(userModel.ID), createRoomReq.RoomType, createRoomReq.Passwd,
- createRoomReq.Name, createRoomReq.BaseAmount)
- if err != nil {
- logrus.Error(err)
- nxd.FailedResponse(req.Once, uint32(userModel.ID), err.Error())
- return err
- }
- nxd.SuccessResponse(req.Once, uint32(userModel.ID), &gameproto.Room{
- ID: uint32(room.ID),
- Name: createRoomReq.Name,
- RoomType: gameproto.RoomType(room.RoomType),
- BaseAmount: float64(room.BaseAmount.IntPart()),
- ChairUserID1: uint32(room.ChairList[0].PlayerID),
- ChairUserID2: uint32(room.ChairList[1].PlayerID),
- ChairUserID3: uint32(room.ChairList[2].PlayerID),
- ChairUserID4: uint32(room.ChairList[3].PlayerID),
- ChairUserID5: uint32(room.ChairList[4].PlayerID),
- })
- return nil
- }
|