diff --git a/modules/hero/api_savecard.go b/modules/hero/api_savecard.go new file mode 100644 index 000000000..18e0ba203 --- /dev/null +++ b/modules/hero/api_savecard.go @@ -0,0 +1,60 @@ +package hero + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/pb" +) + +//参数校验 +func (this *apiComp) SaveCardCheck(session comm.IUserSession, req *pb.HeroSaveCardReq) (errdata *pb.ErrorData) { + if req.Index != 1 && req.Index != 2 { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_ReqParameterError, + Title: pb.ErrorCode_ReqParameterError.ToString(), + } + } + return +} + +func (this *apiComp) SaveCard(session comm.IUserSession, req *pb.HeroSaveCardReq) (errdata *pb.ErrorData) { + var ( + err error + result *pb.DBSelectDraw + update map[string]interface{} + ) + update = make(map[string]interface{}) + if result, err = this.module.modelSelect.GetDrawSelectData(session.GetUserId()); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.ToString(), + Message: err.Error(), + } + return + } + if result.Complete { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_HeroSelectDrawComplete, + Title: pb.ErrorCode_HeroSelectDrawComplete.ToString(), + } + return + } + if req.Index == 1 { + result.Rst1 = result.Cur + update["rst1"] = result.Rst1 + } else if req.Index == 2 { + result.Rst2 = result.Cur + update["rst2"] = result.Rst2 + } + if err = this.module.modelSelect.ChangeHeroSelectData(session.GetUserId(), update); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.ToString(), + Message: err.Error(), + } + return + } + session.SendMsg(string(this.module.GetType()), "savecard", &pb.HeroSaveCardResp{ + Data: result, + }) + return +} diff --git a/modules/hero/api_selectcard.go b/modules/hero/api_selectcard.go new file mode 100644 index 000000000..346206633 --- /dev/null +++ b/modules/hero/api_selectcard.go @@ -0,0 +1,102 @@ +package hero + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/pb" + cfg "go_dreamfactory/sys/configure/structs" +) + +//参数校验 +func (this *apiComp) SelectCardCheck(session comm.IUserSession, req *pb.HeroSelectCardReq) (errdata *pb.ErrorData) { + if req.Index != 1 && req.Index != 2 && req.Index != 3 { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_ReqParameterError, + Title: pb.ErrorCode_ReqParameterError.ToString(), + } + } + return +} + +func (this *apiComp) SelectCard(session comm.IUserSession, req *pb.HeroSelectCardReq) (errdata *pb.ErrorData) { + var ( + err error + result *pb.DBSelectDraw + szAtno []*pb.AtnoData + curSzCard []string + ) + + if result, err = this.module.modelSelect.GetDrawSelectData(session.GetUserId()); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.ToString(), + Message: err.Error(), + } + return + } + if result.Complete { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_HeroSelectDrawComplete, + Title: pb.ErrorCode_HeroSelectDrawComplete.ToString(), + } + return + } + if req.Index == 0 { + curSzCard = result.Cur + } else if req.Index == 1 { + curSzCard = result.Rst1 + } else { + curSzCard = result.Rst2 + } + if len(curSzCard) == 0 { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_HeroSelectDrawComplete, + Title: pb.ErrorCode_HeroSelectDrawComplete.ToString(), + } + return + } + for _, heroId := range curSzCard { + var ( + hero *pb.DBHero + HeroConf *cfg.GameHeroData + ) + if HeroConf, err = this.module.configure.GetHeroConfig(heroId); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_ConfigNoFound, + Title: pb.ErrorCode_ConfigNoFound.ToString(), + Message: err.Error(), + } + return + } + + var atno []*pb.UserAtno + if hero, atno, errdata = this.module.ModuleHero.CreateOneHero(session, heroId); errdata == nil { + for _, v := range atno { + if v.A == "hero" && v.T == heroId && v.N == 1 { + if user, err := this.module.ModuleUser.GetUser(session.GetUserId()); err == nil { // 广播 首次获得英雄 + this.chat.SendSysChatToWorld(comm.ChatSystem13, hero, HeroConf.Star, 0, user.Name, v.T) + } + } + } + szAtno = append(szAtno, &pb.AtnoData{Atno: atno}) + } + } + + result.Complete = true + //result.Cur = []string{} // 清空数据 + if err = this.module.modelSelect.ChangeHeroSelectData(session.GetUserId(), map[string]interface{}{ + "complete": result.Complete, + //"cur": result.Cur, + }); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.ToString(), + Message: err.Error(), + } + return + } + session.SendMsg(string(this.module.GetType()), "selectcard", &pb.HeroSelectCardResp{ + Data: result, + Atno: szAtno, + }) + return +} diff --git a/modules/hero/model_select.go b/modules/hero/model_select.go index 702a54247..d6f86b7dd 100644 --- a/modules/hero/model_select.go +++ b/modules/hero/model_select.go @@ -42,7 +42,7 @@ func (this *ModelSelect) GetDrawSelectData(uid string) (result *pb.DBSelectDraw, return result, err } -func (this *ModelSelect) ChangeHeroRecord(uid string, value map[string]interface{}) (err error) { +func (this *ModelSelect) ChangeHeroSelectData(uid string, value map[string]interface{}) (err error) { if len(value) == 0 { return nil }