go_dreamfactory/modules/stonehenge/api_gotoroom.go
2023-07-25 19:32:12 +08:00

66 lines
1.7 KiB
Go

package stonehenge
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
)
//参数校验
func (this *apiComp) GotoRoomCheck(session comm.IUserSession, req *pb.StonehengeGotoRoomReq) (errdata *pb.ErrorData) {
if req.Portal == 0 {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ReqParameterError,
Title: pb.ErrorCode_ReqParameterError.ToString(),
}
}
return
}
func (this *apiComp) GotoRoom(session comm.IUserSession, req *pb.StonehengeGotoRoomReq) (errdata *pb.ErrorData) {
var (
stone *pb.DBStonehenge
update map[string]interface{}
bCheck bool
)
update = make(map[string]interface{})
if errdata = this.GotoRoomCheck(session, req); errdata != nil {
return
}
stone = this.module.modelStonehenge.GetStonehengeData(session.GetUserId())
// 校验传送门
if stone.Rooms != nil {
if !stone.Rooms.Complete { // 上一关好没有完成 不能进下一关
errdata = &pb.ErrorData{
Code: pb.ErrorCode_StonehengeGotoRoomFailed,
Message: pb.ErrorCode_StonehengeGotoRoomFailed.ToString(),
}
return
}
for _, v := range stone.Rooms.Portal {
if v == req.Portal {
bCheck = true
break
}
}
}
if !bCheck {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_StonehengePortalErr,
Message: pb.ErrorCode_StonehengePortalErr.ToString(),
}
return
}
stone.CurRoomIndes += 1
update["curRoomIndes"] = stone.CurRoomIndes
stone.Rooms = &pb.RoomData{
Eventid: map[int32]bool{},
}
stone.Rooms.Portal = this.module.configure.GetRoomGroupDataByLottery(req.Portal)
update["rooms"] = stone.Rooms
this.module.modelStonehenge.ChangeStonehengeData(session.GetUserId(), update)
session.SendMsg(string(this.module.GetType()), "gotoroom", &pb.StonehengeGotoRoomResp{})
return
}