go_dreamfactory/modules/practice/api_info.go

108 lines
3.0 KiB
Go

package practice
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
"go_dreamfactory/utils"
"time"
)
// 参数校验
func (this *apiComp) InfoCheck(session comm.IUserSession, req *pb.PracticeInfoReq) (errdata *pb.ErrorData) {
return
}
// /练功请求
func (this *apiComp) Info(session comm.IUserSession, req *pb.PracticeInfoReq) (errdata *pb.ErrorData) {
var (
err error
open bool
room *pb.DBPracticeRoom
update map[string]interface{} = make(map[string]interface{})
)
if room, err = this.module.modelPandata.queryUserMartialhall(session.GetUserId()); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
if !utils.IsToday(room.Pillar1.Lastusetime) { //上一次训练不是今天
room.Pillar1.Usenum = 0
}
if !utils.IsToday(room.Pillar2.Lastusetime) { //上一次训练不是今天
room.Pillar2.Usenum = 0
}
if !utils.IsToday(room.Pillar3.Lastusetime) { //上一次训练不是今天
room.Pillar3.Usenum = 0
}
if room.Npcstate == 0 && room.Currnpc == 0 {
this.module.modelPandata.refreshnpc(room)
update["currnpc"] = room.Currnpc
update["captain"] = room.Captain
update["formation"] = room.Formation
}
for i := 0; i < len(room.Statuers); {
if configure.Now().After(time.Unix(room.Statuers[i].End, 0)) {
room.Statuers = append(room.Statuers[:i], room.Statuers[i+1:]...)
update["statuers"] = room.Statuers
} else {
i++
}
}
if room.Npcstate == -1 { //未开启 检查是否开启
if open, errdata = this.module.ModuleSys.CheckOpenCondCfgById(session.GetUserId(), "pavilion_kick"); errdata != nil {
return
}
if open {
if err = this.module.modelPandata.refreshnpc(room); err != nil {
this.module.Errorln(err)
errdata = &pb.ErrorData{
Code: pb.ErrorCode_SystemError,
Title: pb.ErrorCode_SystemError.ToString(),
Message: err.Error(),
}
return
}
update["currnpc"] = room.Currnpc
update["npcstate"] = room.Npcstate
update["refresh"] = room.Refresh
update["battlenum"] = room.Battlenum
update["captain"] = room.Captain
update["formation"] = room.Formation
}
}
if room.Npcstate == 3 { //CD中
cd := int32(configure.Now().Sub(time.Unix(room.Refresh, 0)).Seconds())
if cd >= this.module.ModuleTools.GetGlobalConf().PandamasChallengeCd {
if err = this.module.modelPandata.refreshnpc(room); err != nil {
this.module.Errorln(err)
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ConfigNoFound,
Title: pb.ErrorCode_ConfigNoFound.ToString(),
Message: err.Error(),
}
return
}
update["currnpc"] = room.Currnpc
update["npcstate"] = room.Npcstate
update["refresh"] = room.Refresh
update["battlenum"] = room.Battlenum
update["captain"] = room.Captain
update["formation"] = room.Formation
}
}
if len(update) > 0 {
this.module.modelPandata.Change(session.GetUserId(), update)
}
session.SendMsg(string(this.module.GetType()), "info", &pb.PracticeInfoResp{Info: room})
return
}