diff --git a/modules/stonehenge/api_activatetalent.go b/modules/stonehenge/api_activatetalent.go new file mode 100644 index 000000000..f428daf21 --- /dev/null +++ b/modules/stonehenge/api_activatetalent.go @@ -0,0 +1,38 @@ +package stonehenge + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/pb" +) + +//参数校验 +func (this *apiComp) ActivateTalentCheck(session comm.IUserSession, req *pb.StonehengeActivateTalentReq) (errdata *pb.ErrorData) { + + return +} + +func (this *apiComp) ActivateTalent(session comm.IUserSession, req *pb.StonehengeActivateTalentReq) (errdata *pb.ErrorData) { + var ( + stone *pb.DBStonehenge + err error + ) + if errdata = this.ActivateTalentCheck(session, req); errdata != nil { + return + } + if stone, err = this.module.modelStonehenge.GetStonehengeData(session.GetUserId()); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.String(), + Message: err.Error(), + } + return + } + + session.SendMsg(string(this.module.GetType()), "activatetalent", &pb.StonehengeActivateTalentResp{ + Node: req.Node, + Talent: stone.Talent, + Talentproperty: stone.Talentproperty, + Privilege: stone.Privilege, + }) + return +} diff --git a/modules/stonehenge/api_challenge.go b/modules/stonehenge/api_challenge.go index b25c4067f..43a6ce4ab 100644 --- a/modules/stonehenge/api_challenge.go +++ b/modules/stonehenge/api_challenge.go @@ -39,7 +39,14 @@ func (this *apiComp) Battle(session comm.IUserSession, req *pb.StonehengeBattleR return } // 事件校验 - stone = this.module.modelStonehenge.GetStonehengeData(session.GetUserId()) + if stone, err = this.module.modelStonehenge.GetStonehengeData(session.GetUserId()); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.String(), + Message: err.Error(), + } + return + } if v, ok := stone.Rooms.Eventid[req.Eventid]; !ok || v == true { // 不存在该事件 errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, diff --git a/modules/stonehenge/api_enterlevel.go b/modules/stonehenge/api_enterlevel.go index e36dc402c..f5d7906d3 100644 --- a/modules/stonehenge/api_enterlevel.go +++ b/modules/stonehenge/api_enterlevel.go @@ -47,7 +47,14 @@ func (this *apiComp) EnterLevel(session comm.IUserSession, req *pb.StonehengeEnt } portal = confStage.RoomGroup this.module.Debugf("%v", confStage) - stone = this.module.modelStonehenge.GetStonehengeData(session.GetUserId()) + if stone, err = this.module.modelStonehenge.GetStonehengeData(session.GetUserId()); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.String(), + Message: err.Error(), + } + return + } if len(stone.Hero) != 0 || len(stone.Addweight) != 0 { errdata = &pb.ErrorData{ diff --git a/modules/stonehenge/api_event.go b/modules/stonehenge/api_event.go index ec628bf72..90111a886 100644 --- a/modules/stonehenge/api_event.go +++ b/modules/stonehenge/api_event.go @@ -35,7 +35,14 @@ func (this *apiComp) Event(session comm.IUserSession, req *pb.StonehengeEventReq return } - stone = this.module.modelStonehenge.GetStonehengeData(session.GetUserId()) + if stone, err = this.module.modelStonehenge.GetStonehengeData(session.GetUserId()); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.String(), + Message: err.Error(), + } + return + } if v, ok := stone.Rooms.Eventid[req.Eventid]; !ok || v == true { // 不存在该事件 errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, diff --git a/modules/stonehenge/api_finish.go b/modules/stonehenge/api_finish.go index f01bfb687..b613902a5 100644 --- a/modules/stonehenge/api_finish.go +++ b/modules/stonehenge/api_finish.go @@ -16,13 +16,21 @@ func (this *apiComp) Finish(session comm.IUserSession, req *pb.StonehengeFinishR var ( stone *pb.DBStonehenge update map[string]interface{} + err error ) update = make(map[string]interface{}) if errdata = this.FinishCheck(session, req); errdata != nil { return } - stone = this.module.modelStonehenge.GetStonehengeData(session.GetUserId()) + if stone, err = this.module.modelStonehenge.GetStonehengeData(session.GetUserId()); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.String(), + Message: err.Error(), + } + return + } stone.StageID = 0 update["stageID"] = stone.StageID diff --git a/modules/stonehenge/api_getlist.go b/modules/stonehenge/api_getlist.go index d7879d0af..b118ab9f7 100644 --- a/modules/stonehenge/api_getlist.go +++ b/modules/stonehenge/api_getlist.go @@ -16,11 +16,19 @@ func (this *apiComp) GetListCheck(session comm.IUserSession, req *pb.StonehengeG func (this *apiComp) GetList(session comm.IUserSession, req *pb.StonehengeGetListReq) (errdata *pb.ErrorData) { var ( stone *pb.DBStonehenge + err error ) if errdata = this.GetListCheck(session, req); errdata != nil { return } - stone = this.module.modelStonehenge.GetStonehengeData(session.GetUserId()) + if stone, err = this.module.modelStonehenge.GetStonehengeData(session.GetUserId()); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.String(), + Message: err.Error(), + } + return + } // 校验赛季是否结束 if configure.Now().Unix() >= stone.Etime { update := make(map[string]interface{}) diff --git a/modules/stonehenge/api_gotoroom.go b/modules/stonehenge/api_gotoroom.go index 8d1db81af..2a85db2e3 100644 --- a/modules/stonehenge/api_gotoroom.go +++ b/modules/stonehenge/api_gotoroom.go @@ -32,7 +32,14 @@ func (this *apiComp) GotoRoom(session comm.IUserSession, req *pb.StonehengeGotoR if errdata = this.GotoRoomCheck(session, req); errdata != nil { return } - stone = this.module.modelStonehenge.GetStonehengeData(session.GetUserId()) + if stone, err = this.module.modelStonehenge.GetStonehengeData(session.GetUserId()); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.String(), + Message: err.Error(), + } + return + } // 校验传送门 if stone.Rooms != nil { diff --git a/modules/stonehenge/modelStonehenge.go b/modules/stonehenge/modelStonehenge.go index 7184865c6..757414c0e 100644 --- a/modules/stonehenge/modelStonehenge.go +++ b/modules/stonehenge/modelStonehenge.go @@ -50,21 +50,24 @@ func (this *MStonehenge) Start() (err error) { return } -func (this *MStonehenge) GetStonehengeData(uid string) *pb.DBStonehenge { - stone := &pb.DBStonehenge{} - if err := this.Get(uid, stone); err != nil && mgo.MongodbNil == err { // 创建一条初始的数据 - stone.Id = primitive.NewObjectID().Hex() - stone.Uid = uid - stone.Rooms = nil // 注意初始房间为空 - stone.Userbuff = make(map[int32]int32, 0) - stone.Reward = make(map[int32]bool, 0) - stone.Addweight = make(map[int32]int32, 0) - stone.Etime = utils.WeekIntervalTime() - stone.Hero = make(map[string]*pb.BattleRole) - this.Add(uid, stone) - +func (this *MStonehenge) GetStonehengeData(uid string) (info *pb.DBStonehenge, err error) { + info = &pb.DBStonehenge{} + if err = this.Get(uid, info); err != nil && mgo.MongodbNil != err { // 创建一条初始的数据 + return } - return stone + if mgo.MongodbNil == err { + info = &pb.DBStonehenge{ + Id: primitive.NewObjectID().Hex(), + Uid: uid, + Userbuff: make(map[int32]int32), + Reward: make(map[int32]bool), + Addweight: make(map[int32]int32), + Etime: utils.WeekIntervalTime(), + Hero: make(map[string]*pb.BattleRole), + } + err = this.Add(uid, info) + } + return } // 修改石阵信息