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 }