diff --git a/modules/stonehenge/api_event.go b/modules/stonehenge/api_event.go index 34b3f7959..e95f04ca8 100644 --- a/modules/stonehenge/api_event.go +++ b/modules/stonehenge/api_event.go @@ -20,12 +20,13 @@ func (this *apiComp) EventCheck(session comm.IUserSession, req *pb.StonehengeEve func (this *apiComp) Event(session comm.IUserSession, req *pb.StonehengeEventReq) (errdata *pb.ErrorData) { var ( - stone *pb.DBStonehenge - update map[string]interface{} - roomConf *cfg.GameStoneRoomData - err error - newEvent int32 // 是否有新的事件 - eventConf *cfg.GameStoneEventData + stone *pb.DBStonehenge + update map[string]interface{} + roomConf *cfg.GameStoneRoomData + err error + newEvent int32 // 是否有新的事件 + eventConf *cfg.GameStoneEventData + newEventConf *cfg.GameStoneEventData //新的事件配置 ) update = make(map[string]interface{}) if errdata = this.EventCheck(session, req); errdata != nil { @@ -51,10 +52,20 @@ func (this *apiComp) Event(session comm.IUserSession, req *pb.StonehengeEventReq } update["stageID"] = stone.StageID if roomConf, err = this.module.configure.GetStoneRoomDataById(stone.Rooms.Roomid); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_ConfigNoFound, + Title: pb.ErrorCode_ConfigNoFound.ToString(), + Message: err.Error(), + } return } if eventConf, err = this.module.configure.GetStoneEventDataById(req.Eventid); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_ConfigNoFound, + Title: pb.ErrorCode_ConfigNoFound.ToString(), + Message: err.Error(), + } return } // 校验事件有后续事件 @@ -68,8 +79,24 @@ func (this *apiComp) Event(session comm.IUserSession, req *pb.StonehengeEventReq for _, v := range roomConf.Condition { if v == eventConf.EventType { stone.Rooms.Complete = true + if newEventConf, err = this.module.configure.GetStoneEventDataById(req.Eventid); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_ConfigNoFound, + Title: pb.ErrorCode_ConfigNoFound.ToString(), + Message: err.Error(), + } + return + } + for _, v := range roomConf.Condition { + if v == newEventConf.EventType { + stone.Rooms.Complete = false // 判断新的事件导致传送门关闭 + break + } + } + break } } + // 通过条件判断 update["rooms"] = stone.Rooms this.module.modelStonehenge.ChangeStonehengeData(session.GetUserId(), update)