123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- package common
- import (
- "errors"
- "fmt"
- "github.com/gin-gonic/gin"
- "github.com/sirupsen/logrus"
- "gogs.daxia.dev/huanan/pkg.daxia.dev/webutils"
- gameQZ "nn.daxia.dev/game/qznn"
- "nn.daxia.dev/handler/api"
- "nn.daxia.dev/handler/qznn"
- "nn.daxia.dev/handler/room"
- "nn.daxia.dev/nxd"
- )
- func Dispatch(c *gin.Context) {
- var err error
- reqData := api.PerformReq{}
- if err := c.ShouldBindJSON(&reqData); err != nil {
- logrus.Error(err)
- webutils.FailedResponseErr(c, err)
- return
- }
- if reqData.Name != "connect" && reqData.Name != "ping" {
- userModel := reqData.UserModel
- isActive := gameQZ.UserIsOnline(userModel.ID)
- if !isActive {
- logrus.Error("用户不在线")
- webutils.FailedResponse(c, "用户不在线")
- return
- }
- }
- logrus.Info("run function:", reqData.Name)
- switch reqData.Name {
- case "connect":
- err = Connect(reqData)
- case "disconnect":
- err = Disconnect(reqData)
- case "ping":
- err = Ping(reqData)
- case "room/join":
- err = room.Join(reqData)
- case "room/rnd_join":
- err = room.RndJoin(reqData)
- case "room/leave":
- err = room.Leave(reqData)
- case "room/create":
- err = room.Create(reqData)
- case "qznn/ready":
- err = qznn.Ready(reqData)
- case "qznn/unready":
- err = qznn.UnReady(reqData)
- case "qznn/choose_master":
- err = qznn.ChooseMaster(reqData)
- case "qznn/choose_mul":
- err = qznn.ChooseMul(reqData)
- case "qznn/open":
- err = qznn.Open(reqData)
- default:
- logrus.Error("非法请求:", reqData)
- err = errors.New("非法请求")
- }
- if err != nil {
- logrus.Error(err)
- webutils.FailedResponseErr(c, err)
- return
- }
- webutils.SuccessResponse(c, nil)
- }
- func Test(req api.PerformReq) error {
- userModel := req.UserModel
- fmt.Println(userModel)
- return nil
- }
- func Connect(req api.PerformReq) error {
- userModel := req.UserModel
- gameInstance := gameQZ.GetInstance()
- err := gameInstance.Connect(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 Disconnect(req api.PerformReq) error {
- userModel := req.UserModel
- gameQZ.UserUnActive(userModel.ID)
- return nil
- }
- func Ping(req api.PerformReq) error {
- userModel := req.UserModel
- gameQZ.UserActive(userModel.ID)
- return nil
- }
|