Merge branch 'dev' of http://git.legu.cc/liwei_3d/go_dreamfactory into liwei
This commit is contained in:
commit
e765b72d4c
@ -8,14 +8,15 @@ import (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
//friend
|
//friend
|
||||||
friendBuilders = []*builder{
|
friendBuilders = []*TestCase{
|
||||||
{
|
{
|
||||||
//list
|
//list
|
||||||
|
Desc: "好友列表",
|
||||||
mainType: string(comm.ModuleFriend),
|
mainType: string(comm.ModuleFriend),
|
||||||
subType: friend.FriendSubTypeList,
|
subType: friend.FriendSubTypeList,
|
||||||
req: &pb.FriendListReq{},
|
req: &pb.FriendListReq{},
|
||||||
rsp: &pb.FriendListRsp{},
|
rsp: &pb.FriendListRsp{},
|
||||||
// enabled: true,
|
enabled: true,
|
||||||
}, {
|
}, {
|
||||||
//blacklist
|
//blacklist
|
||||||
mainType: string(comm.ModuleFriend),
|
mainType: string(comm.ModuleFriend),
|
||||||
@ -30,6 +31,7 @@ var (
|
|||||||
NickName: "", //设置测试参数
|
NickName: "", //设置测试参数
|
||||||
},
|
},
|
||||||
rsp: &pb.FriendSearchRsp{},
|
rsp: &pb.FriendSearchRsp{},
|
||||||
|
enabled: true,
|
||||||
}, {
|
}, {
|
||||||
//apply
|
//apply
|
||||||
mainType: string(comm.ModuleFriend),
|
mainType: string(comm.ModuleFriend),
|
||||||
@ -63,7 +65,7 @@ var (
|
|||||||
FriendId: "0_62be9f40f67327fb53039b70",
|
FriendId: "0_62be9f40f67327fb53039b70",
|
||||||
},
|
},
|
||||||
rsp: &pb.FriendBlackAddRsp{},
|
rsp: &pb.FriendBlackAddRsp{},
|
||||||
enabled: true,
|
// enabled: true,
|
||||||
}, {
|
}, {
|
||||||
//delblack
|
//delblack
|
||||||
mainType: string(comm.ModuleFriend),
|
mainType: string(comm.ModuleFriend),
|
||||||
|
@ -11,9 +11,9 @@ import (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
//hero
|
//hero
|
||||||
heroBuilders = []*builder{
|
heroBuilders = []*TestCase{
|
||||||
{
|
{
|
||||||
desc: "英雄列表",
|
Desc: "英雄列表",
|
||||||
mainType: string(comm.ModuleHero),
|
mainType: string(comm.ModuleHero),
|
||||||
subType: hero.HeroSubTypeList,
|
subType: hero.HeroSubTypeList,
|
||||||
req: &pb.HeroListReq{},
|
req: &pb.HeroListReq{},
|
||||||
|
95
cmd/robot/linkcase.go
Normal file
95
cmd/robot/linkcase.go
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
package robot
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
)
|
||||||
|
|
||||||
|
type CaseNode struct {
|
||||||
|
testCase *TestCase //用例名
|
||||||
|
Next *CaseNode //测试用例
|
||||||
|
}
|
||||||
|
|
||||||
|
type LinkCase struct {
|
||||||
|
Head *CaseNode
|
||||||
|
force bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewLinkCase() *LinkCase {
|
||||||
|
return &LinkCase{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewDefault(testCast *TestCase) *LinkCase {
|
||||||
|
return &LinkCase{
|
||||||
|
force: true,
|
||||||
|
Head: &CaseNode{testCase: testCast},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *LinkCase) isEmpty() bool {
|
||||||
|
return this.Head == nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *LinkCase) lastNode() *CaseNode {
|
||||||
|
cur := this.Head
|
||||||
|
for cur.Next != nil {
|
||||||
|
cur = cur.Next
|
||||||
|
}
|
||||||
|
return cur
|
||||||
|
}
|
||||||
|
|
||||||
|
//尾部追加
|
||||||
|
func (this *LinkCase) Append(testCase *TestCase) {
|
||||||
|
newNode := &CaseNode{testCase: testCase}
|
||||||
|
if this.isEmpty() {
|
||||||
|
this.Head = newNode
|
||||||
|
} else {
|
||||||
|
this.lastNode().Next = newNode
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//头部添加
|
||||||
|
func (this *LinkCase) Unshift(testCase *TestCase) {
|
||||||
|
if this.force {
|
||||||
|
log.Fatal("use `NewLinkCase` method create link if you want to use `Unshift` opt")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
newNode := &CaseNode{testCase: testCase}
|
||||||
|
newNode.Next = this.Head
|
||||||
|
this.Head = newNode
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *LinkCase) length() int {
|
||||||
|
cur := this.Head
|
||||||
|
count := 0
|
||||||
|
for cur.Next != nil {
|
||||||
|
cur = cur.Next
|
||||||
|
count++
|
||||||
|
}
|
||||||
|
return count
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *LinkCase) Insert(index int, testCase *TestCase) {
|
||||||
|
if this.force {
|
||||||
|
log.Fatal("use `NewLinkCase` method create link if you want to use `Insert` opt")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if index < 0 {
|
||||||
|
this.Unshift(testCase)
|
||||||
|
} else if index > this.length() {
|
||||||
|
this.Append(testCase)
|
||||||
|
} else {
|
||||||
|
preNode := this.Head
|
||||||
|
count := 0
|
||||||
|
for count < index-1 {
|
||||||
|
preNode = preNode.Next
|
||||||
|
count++
|
||||||
|
}
|
||||||
|
newNode := &CaseNode{testCase: testCase, Next: preNode.Next}
|
||||||
|
preNode.Next = newNode
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *CaseNode) String() string {
|
||||||
|
return fmt.Sprintf("value=%v", this.testCase.Desc)
|
||||||
|
}
|
32
cmd/robot/linkcase_test.go
Normal file
32
cmd/robot/linkcase_test.go
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
package robot_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"go_dreamfactory/cmd/robot"
|
||||||
|
"sync"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestJob(t *testing.T) {
|
||||||
|
// link := robot.NewLinkCase()
|
||||||
|
link := robot.NewDefault(&robot.TestCase{Desc: "login"})
|
||||||
|
link.Append(&robot.TestCase{Desc: "aa"})
|
||||||
|
// link.Append(&robot.TestCase{Desc: "bb"})
|
||||||
|
|
||||||
|
// link.Unshift(&robot.TestCase{Desc: "cc"})
|
||||||
|
// link.Unshift(&robot.TestCase{Desc: "dd"})
|
||||||
|
|
||||||
|
// link.Insert(1, &robot.TestCase{Desc: "ee"})
|
||||||
|
cur := link.Head
|
||||||
|
for cur != nil {
|
||||||
|
fmt.Println(cur)
|
||||||
|
cur = cur.Next
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGJo(t *testing.T) {
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
|
||||||
|
wg.Add(1)
|
||||||
|
|
||||||
|
}
|
@ -35,7 +35,7 @@ func (r *Robot) BuildSecStr() string {
|
|||||||
//处理登录请求
|
//处理登录请求
|
||||||
func (r *Robot) AccountLogin() {
|
func (r *Robot) AccountLogin() {
|
||||||
log.Printf("区服:[%d] 账号:[%s] login...", r.opts.ServerId, r.opts.Account)
|
log.Printf("区服:[%d] 账号:[%s] login...", r.opts.ServerId, r.opts.Account)
|
||||||
builders := []*builder{
|
builders := []*TestCase{
|
||||||
{
|
{
|
||||||
mainType: string(comm.ModuleUser),
|
mainType: string(comm.ModuleUser),
|
||||||
subType: user.UserSubTypeLogin,
|
subType: user.UserSubTypeLogin,
|
||||||
|
@ -5,7 +5,7 @@ import (
|
|||||||
"go_dreamfactory/pb"
|
"go_dreamfactory/pb"
|
||||||
)
|
)
|
||||||
|
|
||||||
var notify_builders = []*builder{
|
var notify_builders = []*TestCase{
|
||||||
{
|
{
|
||||||
//create
|
//create
|
||||||
mainType: comm.MainTypeNotify,
|
mainType: comm.MainTypeNotify,
|
||||||
|
@ -6,7 +6,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
//申明测试接口及请求和响应参数
|
//申明测试接口及请求和响应参数
|
||||||
var pack_builders = []*builder{
|
var pack_builders = []*TestCase{
|
||||||
{
|
{
|
||||||
//create
|
//create
|
||||||
mainType: string(comm.ModulePack),
|
mainType: string(comm.ModulePack),
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/gorilla/websocket"
|
"github.com/gorilla/websocket"
|
||||||
@ -20,7 +21,10 @@ type Robot struct {
|
|||||||
ws *websocket.Conn
|
ws *websocket.Conn
|
||||||
opts *Options
|
opts *Options
|
||||||
user *pb.DBUser
|
user *pb.DBUser
|
||||||
builders []*builder
|
builders []*TestCase //测试用例
|
||||||
|
|
||||||
|
linkCase *LinkCase //测试用例链,适应于用例跑批
|
||||||
|
wg sync.WaitGroup
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRobot(opts *Options) *Robot {
|
func NewRobot(opts *Options) *Robot {
|
||||||
@ -31,6 +35,7 @@ func NewRobot(opts *Options) *Robot {
|
|||||||
r := &Robot{
|
r := &Robot{
|
||||||
ws: ws,
|
ws: ws,
|
||||||
opts: opts,
|
opts: opts,
|
||||||
|
linkCase: NewLinkCase(),
|
||||||
}
|
}
|
||||||
|
|
||||||
return r
|
return r
|
||||||
@ -64,11 +69,12 @@ func (r *Robot) Run() {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
select {}
|
// select {}
|
||||||
|
r.wg.Wait()
|
||||||
}
|
}
|
||||||
|
|
||||||
type builder struct {
|
type TestCase struct {
|
||||||
desc string
|
Desc string
|
||||||
mainType string
|
mainType string
|
||||||
subType string
|
subType string
|
||||||
req proto.Message
|
req proto.Message
|
||||||
@ -79,7 +85,7 @@ type builder struct {
|
|||||||
print func(rsp proto.Message)
|
print func(rsp proto.Message)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Robot) addBuilders(builders []*builder) {
|
func (r *Robot) addBuilders(builders []*TestCase) {
|
||||||
for _, b := range builders {
|
for _, b := range builders {
|
||||||
if b.enabled {
|
if b.enabled {
|
||||||
r.builders = append(r.builders, b)
|
r.builders = append(r.builders, b)
|
||||||
@ -91,6 +97,7 @@ func (r *Robot) addBuilders(builders []*builder) {
|
|||||||
func (r *Robot) handleReq() {
|
func (r *Robot) handleReq() {
|
||||||
for _, b := range r.builders {
|
for _, b := range r.builders {
|
||||||
if b.req != nil && !b.requested {
|
if b.req != nil && !b.requested {
|
||||||
|
r.wg.Add(1)
|
||||||
time.Sleep(time.Second * 1)
|
time.Sleep(time.Second * 1)
|
||||||
b.requested = true
|
b.requested = true
|
||||||
b.start = time.Now()
|
b.start = time.Now()
|
||||||
@ -115,7 +122,7 @@ func (r *Robot) handleRsp(msg *pb.UserMessage) {
|
|||||||
if b.print == nil {
|
if b.print == nil {
|
||||||
printReply(msg, b)
|
printReply(msg, b)
|
||||||
} else {
|
} else {
|
||||||
fmt.Printf("===== %s [%s.%s] =====\n", b.desc, msg.MainType, msg.SubType)
|
fmt.Printf("===== %s [%s.%s] =====\n", b.Desc, msg.MainType, msg.SubType)
|
||||||
b.print(b.rsp)
|
b.print(b.rsp)
|
||||||
fmt.Println("==============================")
|
fmt.Println("==============================")
|
||||||
}
|
}
|
||||||
@ -127,6 +134,8 @@ func (r *Robot) handleRsp(msg *pb.UserMessage) {
|
|||||||
r.builders = append(r.builders[:i], r.builders[i+1:]...)
|
r.builders = append(r.builders[:i], r.builders[i+1:]...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
r.wg.Done()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,9 +208,9 @@ func (r *Robot) AccountRegister(account string, sid int32) {
|
|||||||
|
|
||||||
fmt.Printf("account:%s 注册成功", regRsp.Account)
|
fmt.Printf("account:%s 注册成功", regRsp.Account)
|
||||||
//登录
|
//登录
|
||||||
var user_builders = []*builder{
|
var user_builders = []*TestCase{
|
||||||
{
|
{
|
||||||
desc: "登录",
|
Desc: "登录",
|
||||||
mainType: "user",
|
mainType: "user",
|
||||||
subType: "login",
|
subType: "login",
|
||||||
req: &pb.UserLoginReq{
|
req: &pb.UserLoginReq{
|
||||||
@ -218,7 +227,7 @@ func (r *Robot) AccountRegister(account string, sid int32) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//打印响应
|
//打印响应
|
||||||
func printReply(msg *pb.UserMessage, builder *builder) {
|
func printReply(msg *pb.UserMessage, builder *TestCase) {
|
||||||
if m, ok := builder.rsp.(*pb.NotifyErrorNotifyPush); ok {
|
if m, ok := builder.rsp.(*pb.NotifyErrorNotifyPush); ok {
|
||||||
var tt time.Duration
|
var tt time.Duration
|
||||||
if builder.start.IsZero() {
|
if builder.start.IsZero() {
|
||||||
@ -226,9 +235,9 @@ func printReply(msg *pb.UserMessage, builder *builder) {
|
|||||||
} else {
|
} else {
|
||||||
tt = time.Since(builder.start)
|
tt = time.Since(builder.start)
|
||||||
}
|
}
|
||||||
log.Printf("rsp %s [%v] [%s.%s] [%v:%v]", builder.desc, tt, m.ReqMainType, m.ReqSubType, int32(m.Code), m.Data)
|
log.Printf("rsp %s [%v] [%s.%s] [%v:%v]", builder.Desc, tt, m.ReqMainType, m.ReqSubType, int32(m.Code), m.Data)
|
||||||
} else {
|
} else {
|
||||||
log.Printf("rsp %s [%v] [%s.%s] [%v]", builder.desc, time.Since(builder.start), msg.MainType, msg.SubType, builder.rsp)
|
log.Printf("rsp %s [%v] [%s.%s] [%v]", builder.Desc, time.Since(builder.start), msg.MainType, msg.SubType, builder.rsp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,10 +7,10 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
//申明测试接口及请求和响应参数
|
//申明测试接口及请求和响应参数
|
||||||
var user_builders = []*builder{
|
var user_builders = []*TestCase{
|
||||||
{
|
{
|
||||||
//create
|
//create
|
||||||
desc: "创角",
|
Desc: "创角",
|
||||||
mainType: string(comm.ModuleUser),
|
mainType: string(comm.ModuleUser),
|
||||||
subType: user.UserSubTypeCreate,
|
subType: user.UserSubTypeCreate,
|
||||||
req: &pb.UserCreateReq{ //设置请求参数
|
req: &pb.UserCreateReq{ //设置请求参数
|
||||||
@ -19,7 +19,7 @@ var user_builders = []*builder{
|
|||||||
rsp: &pb.UserCreateRsp{},
|
rsp: &pb.UserCreateRsp{},
|
||||||
// enabled: true,
|
// enabled: true,
|
||||||
}, {
|
}, {
|
||||||
desc: "添加资源",
|
Desc: "添加资源",
|
||||||
mainType: string(comm.ModuleUser),
|
mainType: string(comm.ModuleUser),
|
||||||
subType: user.UserSubTypeAddRes,
|
subType: user.UserSubTypeAddRes,
|
||||||
req: &pb.UserAddResReq{ //设置请求参数
|
req: &pb.UserAddResReq{ //设置请求参数
|
||||||
@ -27,7 +27,7 @@ var user_builders = []*builder{
|
|||||||
Count: 100,
|
Count: 100,
|
||||||
},
|
},
|
||||||
rsp: &pb.UserAddResResp{},
|
rsp: &pb.UserAddResResp{},
|
||||||
// enabled: true,
|
enabled: true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ func (this *apiComp) ListCheck(session comm.IUserSession, req *pb.FriendListReq)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//好友列表
|
//好友列表
|
||||||
func (this *apiComp) List(session comm.IUserSession, chk map[string]interface{}, req *pb.FriendListReq) (code pb.ErrorCode, data proto.Message) {
|
func (this *apiComp) List(session comm.IUserSession, req *pb.FriendListReq) (code pb.ErrorCode, data proto.Message) {
|
||||||
var (
|
var (
|
||||||
self *pb.DBFriend
|
self *pb.DBFriend
|
||||||
rsp *pb.FriendListRsp
|
rsp *pb.FriendListRsp
|
||||||
|
@ -7,9 +7,9 @@ import (
|
|||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (this *apiComp) SearchCheck(session comm.IUserSession, req *pb.FriendSearchReq) (code comm.ErrorCode) {
|
func (this *apiComp) SearchCheck(session comm.IUserSession, req *pb.FriendSearchReq) (code pb.ErrorCode) {
|
||||||
if req.NickName == "" {
|
if req.NickName == "" {
|
||||||
code = comm.ErrorCode{Code: pb.ErrorCode_FriendSearchNameEmpty}
|
code = pb.ErrorCode_FriendSearchNameEmpty
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
@ -104,7 +104,7 @@ func (this *apiComp) Awaken(session comm.IUserSession, req *pb.HeroAwakenReq) (c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err1 = this.module.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
err1 = this.module.modelHero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
log.Errorf("PushHeroProperty err!")
|
log.Errorf("PushHeroProperty err!")
|
||||||
}
|
}
|
||||||
|
@ -26,12 +26,12 @@ func (this *apiComp) Chouka(session comm.IUserSession, req *pb.HeroChoukaReq) (c
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
heroCfgIds := req.HeroIds
|
heroCfgIds := req.HeroIds
|
||||||
if err := this.module.hero.createMultiHero(session.GetUserId(), heroCfgIds...); err != nil {
|
if err := this.module.modelHero.createMultiHero(session.GetUserId(), heroCfgIds...); err != nil {
|
||||||
code = pb.ErrorCode_HeroCreate
|
code = pb.ErrorCode_HeroCreate
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
heroes, err := this.module.hero.getHeroList(session.GetUserId())
|
heroes, err := this.module.modelHero.getHeroList(session.GetUserId())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("%v", err)
|
log.Errorf("%v", err)
|
||||||
code = pb.ErrorCode_DBError
|
code = pb.ErrorCode_DBError
|
||||||
|
@ -24,7 +24,7 @@ func (this *apiComp) Info(session comm.IUserSession, req *pb.HeroInfoReq) (code
|
|||||||
utils.TraceFunc(session.GetUserId(), string(this.module.GetType()), HeroSubTypeList, req, rsp)
|
utils.TraceFunc(session.GetUserId(), string(this.module.GetType()), HeroSubTypeList, req, rsp)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
hero := this.module.hero.getOneHero(session.GetUserId(), req.HeroId)
|
hero := this.module.modelHero.getOneHero(session.GetUserId(), req.HeroId)
|
||||||
if hero == nil {
|
if hero == nil {
|
||||||
code = pb.ErrorCode_HeroNoExist
|
code = pb.ErrorCode_HeroNoExist
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ func (this *apiComp) List(session comm.IUserSession, req *pb.HeroListReq) (code
|
|||||||
utils.TraceFunc(session.GetUserId(), string(this.module.GetType()), HeroSubTypeList, req, rsp)
|
utils.TraceFunc(session.GetUserId(), string(this.module.GetType()), HeroSubTypeList, req, rsp)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
list, err := this.module.hero.getHeroList(session.GetUserId())
|
list, err := this.module.modelHero.getHeroList(session.GetUserId())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
code = pb.ErrorCode_DBError
|
code = pb.ErrorCode_DBError
|
||||||
return
|
return
|
||||||
|
@ -104,7 +104,7 @@ func (this *apiComp) Resonance(session comm.IUserSession, req *pb.HeroResonanceR
|
|||||||
_heroMap := map[string]interface{}{
|
_heroMap := map[string]interface{}{
|
||||||
"resonateNum": _hero.ResonateNum + resonConfig.Energy,
|
"resonateNum": _hero.ResonateNum + resonConfig.Energy,
|
||||||
}
|
}
|
||||||
err1 = this.module.hero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap) // 修改英雄信息
|
err1 = this.module.modelHero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap) // 修改英雄信息
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
log.Errorf("update hero skill failed:%v", err1)
|
log.Errorf("update hero skill failed:%v", err1)
|
||||||
}
|
}
|
||||||
@ -117,11 +117,11 @@ func (this *apiComp) Resonance(session comm.IUserSession, req *pb.HeroResonanceR
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
for i := 0; i < int(v.N); i++ { // 有多少张加多少次
|
for i := 0; i < int(v.N); i++ { // 有多少张加多少次
|
||||||
this.module.hero.createOneHero(session.GetUserId(), int32(value))
|
this.module.modelHero.createOneHero(session.GetUserId(), int32(value))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
err1 = this.module.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
err1 = this.module.modelHero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
log.Errorf("PushHeroProperty err!")
|
log.Errorf("PushHeroProperty err!")
|
||||||
}
|
}
|
||||||
|
@ -75,13 +75,20 @@ func (this *apiComp) ResonanceReset(session comm.IUserSession, req *pb.HeroReson
|
|||||||
"Energy": _hero.Energy,
|
"Energy": _hero.Energy,
|
||||||
}
|
}
|
||||||
|
|
||||||
err1 = this.module.hero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap) // 修改英雄信息
|
err1 = this.module.modelHero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap) // 修改英雄信息
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
log.Errorf("update hero skill failed:%v", err1)
|
log.Errorf("update hero skill failed:%v", err1)
|
||||||
}
|
}
|
||||||
err1 = this.module.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
err1 = this.module.modelHero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
log.Errorf("PushHeroProperty err!")
|
log.Errorf("PushHeroProperty err!")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
property := make(map[string]int32, 0)
|
||||||
|
property[comm.HpPro] -= _hero.AddProperty[comm.HpPro]
|
||||||
|
property[comm.AtkPro] -= _hero.AddProperty[comm.AtkPro]
|
||||||
|
property[comm.DefPro] -= _hero.AddProperty[comm.DefPro]
|
||||||
|
this.module.modelHero.mergeMainProperty(session.GetUserId(), _hero.Id, property)
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -4,13 +4,14 @@ import (
|
|||||||
"go_dreamfactory/comm"
|
"go_dreamfactory/comm"
|
||||||
"go_dreamfactory/lego/sys/log"
|
"go_dreamfactory/lego/sys/log"
|
||||||
"go_dreamfactory/pb"
|
"go_dreamfactory/pb"
|
||||||
|
"math"
|
||||||
|
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
//参数校验
|
//参数校验
|
||||||
func (this *apiComp) ResonanceUseEnergyCheck(session comm.IUserSession, req *pb.HeroResonanceUseEnergyReq) (code pb.ErrorCode) {
|
func (this *apiComp) ResonanceUseEnergyCheck(session comm.IUserSession, req *pb.HeroResonanceUseEnergyReq) (code pb.ErrorCode) {
|
||||||
if len(req.HeroObjID) == 0 || req.UseEnergy <= 0 || req.UseType < 0 {
|
if len(req.HeroObjID) == 0 || req.UseEnergy <= 0 || req.UseType < 0 || req.UseType > 3 {
|
||||||
code = pb.ErrorCode_ReqParameterError
|
code = pb.ErrorCode_ReqParameterError
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
@ -40,13 +41,30 @@ func (this *apiComp) ResonanceUseEnergy(session comm.IUserSession, req *pb.HeroR
|
|||||||
"Energy": _hero.Energy,
|
"Energy": _hero.Energy,
|
||||||
}
|
}
|
||||||
|
|
||||||
err1 := this.module.hero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap) // 修改英雄信息
|
err1 := this.module.modelHero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap) // 修改英雄信息
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
code = pb.ErrorCode_DBError
|
code = pb.ErrorCode_DBError
|
||||||
log.Errorf("update hero skill failed:%v", err1)
|
log.Errorf("update hero skill failed:%v", err1)
|
||||||
}
|
}
|
||||||
|
// 计算属性
|
||||||
|
resonConfig, errr := this.module.configure.GetHeroResonanceConfig(_hero.HeroID)
|
||||||
|
if errr != nil {
|
||||||
|
code = pb.ErrorCode_ConfigNoFound
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
err1 = this.module.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
property := make(map[string]int32, 0)
|
||||||
|
switch req.UseType {
|
||||||
|
case 1:
|
||||||
|
property[comm.Hp] = int32(math.Floor((1.0 + float64(resonConfig.Hppro*req.UseEnergy)/1000) * float64(_hero.Property[comm.Hp])))
|
||||||
|
case 2:
|
||||||
|
property[comm.Atk] = int32(math.Floor((1.0 + float64(resonConfig.Atkpro*req.UseEnergy)/1000) * float64(_hero.Property[comm.Atk])))
|
||||||
|
case 3:
|
||||||
|
property[comm.Def] = int32(math.Floor((1.0 + float64(resonConfig.Defpro*req.UseEnergy)/1000) * float64(_hero.Property[comm.Def])))
|
||||||
|
}
|
||||||
|
this.module.modelHero.mergeMainProperty(session.GetUserId(), _hero.Id, property)
|
||||||
|
|
||||||
|
err1 = this.module.modelHero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
log.Errorf("PushHeroProperty err!")
|
log.Errorf("PushHeroProperty err!")
|
||||||
}
|
}
|
||||||
|
@ -116,7 +116,7 @@ func (this *apiComp) StrengthenUpSkill(session comm.IUserSession, req *pb.HeroSt
|
|||||||
_heroMap := map[string]interface{}{
|
_heroMap := map[string]interface{}{
|
||||||
"normalSkill": _hero.NormalSkill,
|
"normalSkill": _hero.NormalSkill,
|
||||||
}
|
}
|
||||||
err1 = this.module.hero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap) // 修改英雄信息
|
err1 = this.module.modelHero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap) // 修改英雄信息
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
log.Errorf("update hero skill failed:%v", err)
|
log.Errorf("update hero skill failed:%v", err)
|
||||||
}
|
}
|
||||||
@ -126,7 +126,7 @@ func (this *apiComp) StrengthenUpSkill(session comm.IUserSession, req *pb.HeroSt
|
|||||||
code = pb.ErrorCode_DBError
|
code = pb.ErrorCode_DBError
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err1 = this.module.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
err1 = this.module.modelHero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
log.Errorf("PushHeroProperty err!")
|
log.Errorf("PushHeroProperty err!")
|
||||||
}
|
}
|
||||||
|
@ -21,9 +21,7 @@ func (this *apiComp) StrengthenUpStarCheck(session comm.IUserSession, req *pb.He
|
|||||||
func (this *apiComp) StrengthenUpStar(session comm.IUserSession, req *pb.HeroStrengthenUpStarReq) (code pb.ErrorCode, data proto.Message) {
|
func (this *apiComp) StrengthenUpStar(session comm.IUserSession, req *pb.HeroStrengthenUpStarReq) (code pb.ErrorCode, data proto.Message) {
|
||||||
var (
|
var (
|
||||||
target *cfg.Game_heroStarupData // 配置表目标升星英雄信息
|
target *cfg.Game_heroStarupData // 配置表目标升星英雄信息
|
||||||
raceHero *pb.DBHero // 消耗的阵容英雄
|
|
||||||
costRaceCount int32
|
costRaceCount int32
|
||||||
curGold int32
|
|
||||||
)
|
)
|
||||||
_hero, err := this.module.GetHero(session.GetUserId(), req.HeroObjID)
|
_hero, err := this.module.GetHero(session.GetUserId(), req.HeroObjID)
|
||||||
defer func() {
|
defer func() {
|
||||||
@ -71,7 +69,7 @@ func (this *apiComp) StrengthenUpStar(session comm.IUserSession, req *pb.HeroStr
|
|||||||
}
|
}
|
||||||
// 校验阵容英雄消耗
|
// 校验阵容英雄消耗
|
||||||
for _, v := range req.HeroRace {
|
for _, v := range req.HeroRace {
|
||||||
if raceHero, err = this.module.GetHero(session.GetUserId(), v.CostCardObj); err != pb.ErrorCode_Success {
|
if raceHero, err := this.module.GetHero(session.GetUserId(), v.CostCardObj); err != pb.ErrorCode_Success {
|
||||||
code = pb.ErrorCode_ReqParameterError
|
code = pb.ErrorCode_ReqParameterError
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
@ -100,7 +98,7 @@ func (this *apiComp) StrengthenUpStar(session comm.IUserSession, req *pb.HeroStr
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 金币消耗判断
|
// 金币消耗判断
|
||||||
curGold = this.module.ModuleUser.QueryAttributeValue(session.GetUserId(), "gold")
|
curGold := this.module.ModuleUser.QueryAttributeValue(session.GetUserId(), "gold")
|
||||||
if curGold < target.Gold { // 金币不足
|
if curGold < target.Gold { // 金币不足
|
||||||
code = pb.ErrorCode_GoldNoEnough
|
code = pb.ErrorCode_GoldNoEnough
|
||||||
return
|
return
|
||||||
@ -131,19 +129,6 @@ func (this *apiComp) StrengthenUpStar(session comm.IUserSession, req *pb.HeroStr
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_hero.Star += 1
|
code = this.module.modelHero.HeroStarUp(session, _hero) // 执行升星操作
|
||||||
_heroMap := map[string]interface{}{
|
|
||||||
"star": _hero.Star,
|
|
||||||
}
|
|
||||||
// 保存数据
|
|
||||||
err1 = this.module.hero.modifyHeroData(session.GetUserId(), req.HeroObjID, _heroMap)
|
|
||||||
if err1 != nil {
|
|
||||||
code = pb.ErrorCode_DBError
|
|
||||||
log.Errorf("update hero skill failed:%v", err)
|
|
||||||
}
|
|
||||||
err1 = this.module.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
|
||||||
if err1 != nil {
|
|
||||||
log.Errorf("PushHeroProperty err!")
|
|
||||||
}
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -23,12 +23,12 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
|
|||||||
var (
|
var (
|
||||||
curLv int32
|
curLv int32
|
||||||
curExp int32 // 当前英雄的经验
|
curExp int32 // 当前英雄的经验
|
||||||
costRes int32 // 当前需要消资源的数量
|
costRes map[string]int32 // 当前需要消资源的数量
|
||||||
addExp int32 // 需要增加的经验
|
addExp int32 // 需要增加的经验
|
||||||
curRes int32
|
curRes map[string]int32
|
||||||
atn = map[string]interface{}{}
|
|
||||||
)
|
)
|
||||||
atn = make(map[string]interface{}, 0)
|
curRes = make(map[string]int32, 0)
|
||||||
|
costRes = make(map[string]int32, 0)
|
||||||
_hero, err := this.module.GetHero(session.GetUserId(), req.HeroObjID) // 校验升级的对象是否存在
|
_hero, err := this.module.GetHero(session.GetUserId(), req.HeroObjID) // 校验升级的对象是否存在
|
||||||
|
|
||||||
if err != pb.ErrorCode_Success {
|
if err != pb.ErrorCode_Success {
|
||||||
@ -91,19 +91,18 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
|
|||||||
curLv -= 1
|
curLv -= 1
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
costRes += _data.Gold[0].N
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for _, v := range _data.Gold {
|
for _, v := range _data.Gold {
|
||||||
atn["a"] = v.A
|
_curRes := this.module.ModuleUser.QueryAttributeValue(session.GetUserId(), v.T)
|
||||||
atn["t"] = v.T
|
if _curRes < v.N {
|
||||||
atn["n"] = v.N
|
|
||||||
}
|
|
||||||
// 资源消耗判断
|
|
||||||
curRes = this.module.ModuleUser.QueryAttributeValue(session.GetUserId(), atn["t"].(string))
|
|
||||||
if curRes < costRes {
|
|
||||||
code = pb.ErrorCode_GoldNoEnough
|
code = pb.ErrorCode_GoldNoEnough
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
curRes[v.T] = _curRes
|
||||||
|
costRes[v.T] += v.N
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
code = pb.ErrorCode_HeroNoExist
|
code = pb.ErrorCode_HeroNoExist
|
||||||
return
|
return
|
||||||
@ -117,25 +116,28 @@ func (this *apiComp) StrengthenUplv(session comm.IUserSession, req *pb.HeroStren
|
|||||||
session.SendMsg(string(this.module.GetType()), StrengthenUplv, &pb.HeroStrengthenUplvResp{Hero: _hero})
|
session.SendMsg(string(this.module.GetType()), StrengthenUplv, &pb.HeroStrengthenUplvResp{Hero: _hero})
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
log.Debugf("升级后当前等级: %d,经验: %d,需要消耗的金币: %d,增加的经验: %d", curLv, curExp, costRes, addExp)
|
log.Debugf("升级后当前等级: %d,经验: %d,需要消耗的金币: %d,增加的经验: %d", curLv, curExp, costRes["gold"], addExp)
|
||||||
// 执行升级逻辑
|
// 执行升级逻辑
|
||||||
code = this.module.AddCardExp(session.GetUserId(), req.HeroObjID, addExp) // 加经验
|
code = this.module.AddCardExp(session.GetUserId(), req.HeroObjID, addExp) // 加经验
|
||||||
if code != pb.ErrorCode_Success {
|
if code != pb.ErrorCode_Success {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 消耗道具
|
// 消耗道具
|
||||||
code = this.module.ModuleUser.AddAttributeValue(session.GetUserId(), atn["t"].(string), int32(curRes-costRes)) // 减少金币
|
for k, v := range costRes {
|
||||||
|
|
||||||
|
code = this.module.ModuleUser.AddAttributeValue(session.GetUserId(), k, int32(curRes[k]-v)) // 减少金币
|
||||||
if code != pb.ErrorCode_Success {
|
if code != pb.ErrorCode_Success {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// 删除经验卡
|
// 删除经验卡
|
||||||
err1 := this.module.hero.consumeOneHeroCard(session.GetUserId(), req.ExpCardID, req.Amount)
|
err1 := this.module.modelHero.consumeOneHeroCard(session.GetUserId(), req.ExpCardID, req.Amount)
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
log.Errorf("delete err failed err:%T!", err)
|
log.Errorf("delete err failed err:%T!", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err1 = this.module.hero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
err1 = this.module.modelHero.PushHeroProperty(session, _hero.Id) // 推送属性变化
|
||||||
if err1 != nil {
|
if err1 != nil {
|
||||||
log.Errorf("PushHeroProperty err!")
|
log.Errorf("PushHeroProperty err!")
|
||||||
}
|
}
|
||||||
|
@ -70,23 +70,23 @@ func TestMain(m *testing.M) {
|
|||||||
|
|
||||||
//创建一个英雄s
|
//创建一个英雄s
|
||||||
func TestCreateOneHero(t *testing.T) {
|
func TestCreateOneHero(t *testing.T) {
|
||||||
err := module.hero.createOneHero("u1", 25001)
|
err := module.modelHero.createOneHero("u1", 25001)
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
//获取玩家英雄
|
//获取玩家英雄
|
||||||
func TestGetOneHero(t *testing.T) {
|
func TestGetOneHero(t *testing.T) {
|
||||||
d := module.hero.getOneHero("u1", "62b534bebf4745d4117acabe")
|
d := module.modelHero.getOneHero("u1", "62b534bebf4745d4117acabe")
|
||||||
fmt.Printf("%v", d)
|
fmt.Printf("%v", d)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPropertyCompute(t *testing.T) {
|
func TestPropertyCompute(t *testing.T) {
|
||||||
m := module.hero.PropertyCompute("u1", "62b534bebf4745d4117acabe")
|
m := module.modelHero.PropertyCompute("u1", "62b534bebf4745d4117acabe")
|
||||||
fmt.Println(m)
|
fmt.Println(m)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestHeroList(t *testing.T) {
|
func TestHeroList(t *testing.T) {
|
||||||
heroes, err := module.hero.getHeroList("u1")
|
heroes, err := module.modelHero.getHeroList("u1")
|
||||||
fmt.Printf("%v %v", heroes, err)
|
fmt.Printf("%v %v", heroes, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,6 +95,6 @@ func TestModify(t *testing.T) {
|
|||||||
"lv": 2,
|
"lv": 2,
|
||||||
"exp": 1000,
|
"exp": 1000,
|
||||||
}
|
}
|
||||||
err := module.hero.modifyHeroData("u1", "62b534bebf4745d4117acabe", data)
|
err := module.modelHero.modifyHeroData("u1", "62b534bebf4745d4117acabe", data)
|
||||||
fmt.Printf("%v ", err)
|
fmt.Printf("%v ", err)
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ func (this *ModelHero) initHero(uid string, heroCfgId int32) *pb.DBHero {
|
|||||||
func (this *ModelHero) createOneHero(uid string, heroCfgId int32) (err error) {
|
func (this *ModelHero) createOneHero(uid string, heroCfgId int32) (err error) {
|
||||||
hero := this.initHero(uid, heroCfgId)
|
hero := this.initHero(uid, heroCfgId)
|
||||||
if hero != nil {
|
if hero != nil {
|
||||||
if err = this.moduleHero.hero.AddList(uid, hero.Id, hero); err != nil {
|
if err = this.moduleHero.modelHero.AddList(uid, hero.Id, hero); err != nil {
|
||||||
log.Errorf("%v", err)
|
log.Errorf("%v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -67,7 +67,7 @@ func (this *ModelHero) createOneHero(uid string, heroCfgId int32) (err error) {
|
|||||||
|
|
||||||
//创建多个指定的英雄 heroCfgIds可填入多个英雄ID
|
//创建多个指定的英雄 heroCfgIds可填入多个英雄ID
|
||||||
func (this *ModelHero) createMultiHero(uid string, heroCfgIds ...int32) error {
|
func (this *ModelHero) createMultiHero(uid string, heroCfgIds ...int32) error {
|
||||||
heroes, err := this.moduleHero.hero.getHeroList(uid)
|
heroes, err := this.moduleHero.modelHero.getHeroList(uid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -111,7 +111,7 @@ func (this *ModelHero) createMultiHero(uid string, heroCfgIds ...int32) error {
|
|||||||
//获取一个英雄
|
//获取一个英雄
|
||||||
func (this *ModelHero) getOneHero(uid, heroId string) *pb.DBHero {
|
func (this *ModelHero) getOneHero(uid, heroId string) *pb.DBHero {
|
||||||
hero := &pb.DBHero{}
|
hero := &pb.DBHero{}
|
||||||
err := this.moduleHero.hero.GetListObj(uid, heroId, hero)
|
err := this.moduleHero.modelHero.GetListObj(uid, heroId, hero)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -121,7 +121,7 @@ func (this *ModelHero) getOneHero(uid, heroId string) *pb.DBHero {
|
|||||||
//消耗一张英雄卡
|
//消耗一张英雄卡
|
||||||
func (this *ModelHero) consumeOneHeroCard(uid, heroId string, count int32) (err error) {
|
func (this *ModelHero) consumeOneHeroCard(uid, heroId string, count int32) (err error) {
|
||||||
for i := 0; i < int(count); i++ {
|
for i := 0; i < int(count); i++ {
|
||||||
if err := this.moduleHero.hero.DelListlds(uid, heroId); err != nil {
|
if err := this.moduleHero.modelHero.DelListlds(uid, heroId); err != nil {
|
||||||
log.Errorf("%v", err)
|
log.Errorf("%v", err)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -131,7 +131,7 @@ func (this *ModelHero) consumeOneHeroCard(uid, heroId string, count int32) (err
|
|||||||
|
|
||||||
//更新英雄数据
|
//更新英雄数据
|
||||||
func (this *ModelHero) modifyHeroData(uid, heroId string, data map[string]interface{}) error {
|
func (this *ModelHero) modifyHeroData(uid, heroId string, data map[string]interface{}) error {
|
||||||
return this.moduleHero.hero.ChangeList(uid, heroId, data)
|
return this.moduleHero.modelHero.ChangeList(uid, heroId, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
//获取玩家的英雄列表
|
//获取玩家的英雄列表
|
||||||
@ -165,6 +165,14 @@ func (this *ModelHero) mergeMainProperty(uid, heroId string, data map[string]int
|
|||||||
hero.Property[comm.Hp] += data[comm.Hp]
|
hero.Property[comm.Hp] += data[comm.Hp]
|
||||||
hero.Property[comm.Atk] += data[comm.Atk]
|
hero.Property[comm.Atk] += data[comm.Atk]
|
||||||
hero.Property[comm.Def] += data[comm.Def]
|
hero.Property[comm.Def] += data[comm.Def]
|
||||||
|
update := map[string]interface{}{
|
||||||
|
comm.Hp: hero.Property[comm.Hp],
|
||||||
|
comm.Atk: hero.Property[comm.Atk],
|
||||||
|
comm.Def: hero.Property[comm.Def],
|
||||||
|
}
|
||||||
|
if err := this.modifyHeroData(uid, heroId, update); err != nil {
|
||||||
|
log.Errorf("mergeMainProperty err %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//合并附加属性
|
//合并附加属性
|
||||||
@ -173,9 +181,17 @@ func (this *ModelHero) mergeAddProperty(uid, heroId string, data map[string]int3
|
|||||||
if hero == nil {
|
if hero == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
hero.AddProperty[comm.Hp] += data[comm.Hp]
|
hero.AddProperty[comm.HpPro] += data[comm.HpPro]
|
||||||
hero.AddProperty[comm.Atk] += data[comm.Atk]
|
hero.AddProperty[comm.AtkPro] += data[comm.AtkPro]
|
||||||
hero.AddProperty[comm.Def] += data[comm.Def]
|
hero.AddProperty[comm.DefPro] += data[comm.DefPro]
|
||||||
|
update := map[string]interface{}{
|
||||||
|
comm.HpPro: hero.AddProperty[comm.HpPro],
|
||||||
|
comm.AtkPro: hero.AddProperty[comm.AtkPro],
|
||||||
|
comm.DefPro: hero.AddProperty[comm.DefPro],
|
||||||
|
}
|
||||||
|
if err := this.modifyHeroData(uid, heroId, update); err != nil {
|
||||||
|
log.Errorf("mergeAddProperty err %v", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//属性计算 - 暂时放在modelHero里实现
|
//属性计算 - 暂时放在modelHero里实现
|
||||||
@ -250,3 +266,37 @@ func (this *ModelHero) PushHeroProperty(session comm.IUserSession, heroId string
|
|||||||
}
|
}
|
||||||
return session.SendMsg("push", "property", &pb.HeroProperty{Property: m})
|
return session.SendMsg("push", "property", &pb.HeroProperty{Property: m})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 英雄升星
|
||||||
|
func (this *ModelHero) HeroStarUp(session comm.IUserSession, hero *pb.DBHero) (code pb.ErrorCode) {
|
||||||
|
|
||||||
|
_heroMap := map[string]interface{}{
|
||||||
|
"star": hero.Star,
|
||||||
|
}
|
||||||
|
// 保存数据
|
||||||
|
err1 := this.modifyHeroData(session.GetUserId(), hero.Id, _heroMap)
|
||||||
|
if err1 != nil {
|
||||||
|
code = pb.ErrorCode_DBError
|
||||||
|
log.Errorf("update hero skill failed:%v", err1)
|
||||||
|
}
|
||||||
|
// 计算属性
|
||||||
|
data := make(map[string]int32, 0)
|
||||||
|
newConfig := this.moduleHero.configure.GetHeroStar(hero.Star - 1)
|
||||||
|
if newConfig == nil {
|
||||||
|
code = pb.ErrorCode_ConfigurationException
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
data[comm.Hp] = int32(math.Floor((1.0 + float64(newConfig.StarupHp)) * float64(hero.Property[comm.Hp]) / 100))
|
||||||
|
data[comm.Atk] = int32(math.Floor((1.0 + float64(newConfig.StarupAtk)) * float64(hero.Property[comm.Atk]) / 100))
|
||||||
|
data[comm.Def] = int32(math.Floor((1.0 + float64(newConfig.StarupDef)) * float64(hero.Property[comm.Def]) / 100))
|
||||||
|
data[comm.Speed] = int32(math.Floor((1.0 + float64(newConfig.StarupSpeed)) * float64(hero.Property[comm.Speed]) / 100))
|
||||||
|
this.mergeMainProperty(session.GetUserId(), hero.Id, data)
|
||||||
|
|
||||||
|
err1 = this.PushHeroProperty(session, hero.Id) // 推送属性变化
|
||||||
|
if err1 != nil {
|
||||||
|
code = pb.ErrorCode_Unknown
|
||||||
|
log.Errorf("PushHeroProperty err!")
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
@ -16,7 +16,7 @@ type Hero struct {
|
|||||||
modules.ModuleBase
|
modules.ModuleBase
|
||||||
api *apiComp
|
api *apiComp
|
||||||
configure *configureComp
|
configure *configureComp
|
||||||
hero *ModelHero
|
modelHero *ModelHero
|
||||||
items comm.IItems
|
items comm.IItems
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,13 +35,13 @@ func (this *Hero) Init(service core.IService, module core.IModule, options core.
|
|||||||
func (this *Hero) OnInstallComp() {
|
func (this *Hero) OnInstallComp() {
|
||||||
this.ModuleBase.OnInstallComp()
|
this.ModuleBase.OnInstallComp()
|
||||||
this.api = this.RegisterComp(new(apiComp)).(*apiComp)
|
this.api = this.RegisterComp(new(apiComp)).(*apiComp)
|
||||||
this.hero = this.RegisterComp(new(ModelHero)).(*ModelHero)
|
this.modelHero = this.RegisterComp(new(ModelHero)).(*ModelHero)
|
||||||
this.configure = this.RegisterComp(new(configureComp)).(*configureComp)
|
this.configure = this.RegisterComp(new(configureComp)).(*configureComp)
|
||||||
}
|
}
|
||||||
|
|
||||||
//创建新英雄
|
//创建新英雄
|
||||||
func (this *Hero) CreateHero(uid string, heroCfgId ...int32) error {
|
func (this *Hero) CreateHero(uid string, heroCfgId ...int32) error {
|
||||||
return this.hero.createMultiHero(uid, heroCfgId...)
|
return this.modelHero.createMultiHero(uid, heroCfgId...)
|
||||||
}
|
}
|
||||||
|
|
||||||
//消耗英雄卡
|
//消耗英雄卡
|
||||||
@ -58,7 +58,7 @@ func (this *Hero) ChangeCard(uId string, heroCfgId int32, count int32) (code pb.
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, v := range curList {
|
for _, v := range curList {
|
||||||
err := this.hero.consumeOneHeroCard(v.Uid, v.Id, count)
|
err := this.modelHero.consumeOneHeroCard(v.Uid, v.Id, count)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return pb.ErrorCode_DBError
|
return pb.ErrorCode_DBError
|
||||||
}
|
}
|
||||||
@ -69,7 +69,7 @@ func (this *Hero) ChangeCard(uId string, heroCfgId int32, count int32) (code pb.
|
|||||||
|
|
||||||
//获取英雄
|
//获取英雄
|
||||||
func (this *Hero) GetHero(uid, heroId string) (*pb.DBHero, pb.ErrorCode) {
|
func (this *Hero) GetHero(uid, heroId string) (*pb.DBHero, pb.ErrorCode) {
|
||||||
hero := this.hero.getOneHero(uid, heroId)
|
hero := this.modelHero.getOneHero(uid, heroId)
|
||||||
if hero == nil {
|
if hero == nil {
|
||||||
return nil, pb.ErrorCode_HeroNoExist
|
return nil, pb.ErrorCode_HeroNoExist
|
||||||
}
|
}
|
||||||
@ -91,14 +91,14 @@ func (this *Hero) UpdateEquipment(hero *pb.DBHero, equip []*pb.DB_Equipment) (co
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.hero.mergeMainProperty(hero.Uid, hero.Id, property)
|
this.modelHero.mergeMainProperty(hero.Uid, hero.Id, property)
|
||||||
this.hero.mergeAddProperty(hero.Uid, hero.Id, addProperty)
|
this.modelHero.mergeAddProperty(hero.Uid, hero.Id, addProperty)
|
||||||
return this.hero.setEquipment(hero.Uid, hero.Id, equipIds)
|
return this.modelHero.setEquipment(hero.Uid, hero.Id, equipIds)
|
||||||
}
|
}
|
||||||
|
|
||||||
//英雄列表
|
//英雄列表
|
||||||
func (this *Hero) GetHeroList(uid string) []*pb.DBHero {
|
func (this *Hero) GetHeroList(uid string) []*pb.DBHero {
|
||||||
list, err := this.hero.getHeroList(uid)
|
list, err := this.modelHero.getHeroList(uid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -159,16 +159,27 @@ func (this *Hero) AddCardExp(uid string, heroId string, exp int32) (code pb.Erro
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// _hero.Lv = curLv
|
|
||||||
// _hero.Exp = curExp
|
// 检测等级有变化 推送属性
|
||||||
|
if curLv != _hero.Lv {
|
||||||
|
data := make(map[string]int32, 0)
|
||||||
|
preConfig := this.configure.GetHeroLv(_hero.Lv)
|
||||||
|
nowConfig := this.configure.GetHeroLv(curLv)
|
||||||
|
data["hp"] = int32(nowConfig.Hp - preConfig.Hp)
|
||||||
|
data["atk"] = int32(nowConfig.Atk - preConfig.Atk)
|
||||||
|
data["def"] = int32(nowConfig.Def - preConfig.Def)
|
||||||
|
this.modelHero.mergeMainProperty(uid, heroId, data)
|
||||||
|
}
|
||||||
|
|
||||||
update := map[string]interface{}{
|
update := map[string]interface{}{
|
||||||
"lv": curLv,
|
"lv": curLv,
|
||||||
"exp": curExp,
|
"exp": curExp,
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := this.hero.modifyHeroData(uid, heroId, update); err != nil {
|
if err := this.modelHero.modifyHeroData(uid, heroId, update); err != nil {
|
||||||
code = pb.ErrorCode_DBError
|
code = pb.ErrorCode_DBError
|
||||||
} // 修改英雄数据
|
} // 修改英雄数据
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
code = pb.ErrorCode_HeroNoExist
|
code = pb.ErrorCode_HeroNoExist
|
||||||
return
|
return
|
||||||
|
@ -29,7 +29,7 @@ message DBHero {
|
|||||||
int32 resonateNum = 18; //@go_tags(`bson:"resonateNum"`) 共鸣次数
|
int32 resonateNum = 18; //@go_tags(`bson:"resonateNum"`) 共鸣次数
|
||||||
int32 distributionResonate =
|
int32 distributionResonate =
|
||||||
19; //@go_tags(`bson:"distributionResonate"`) 分配的共鸣能量
|
19; //@go_tags(`bson:"distributionResonate"`) 分配的共鸣能量
|
||||||
map<int32, int32> energy = 20; // @go_tags(`bson:"energy"`)能量分配到哪里
|
map<int32, int32> energy = 20; // @go_tags(`bson:"energy"`)能量分配到哪里[1,0]
|
||||||
int32 sameCount = 21; // @go_tags(`bson:"sameCount"`) 卡片叠加数量
|
int32 sameCount = 21; // @go_tags(`bson:"sameCount"`) 卡片叠加数量
|
||||||
int32 suiteId = 22; //@go_tags(`bson:"suiteId"`) 套装Id
|
int32 suiteId = 22; //@go_tags(`bson:"suiteId"`) 套装Id
|
||||||
int32 suiteExtId = 23; // go_tags(`bson:"suiteExtId"`) 扩展套装Id
|
int32 suiteExtId = 23; // go_tags(`bson:"suiteExtId"`) 扩展套装Id
|
||||||
|
Loading…
Reference in New Issue
Block a user