```
refactor(common): 统一使用 common.TomeeHeader 替代 player.TomeeHeader 将多处
This commit is contained in:
@@ -2,8 +2,8 @@ package controller
|
||||
|
||||
import (
|
||||
"blazing/cool"
|
||||
"blazing/logic/service/common"
|
||||
|
||||
"blazing/logic/service/player"
|
||||
"strings"
|
||||
|
||||
"bytes"
|
||||
@@ -102,7 +102,7 @@ func getcmd(t reflect.Type) []uint32 {
|
||||
field := t.Field(i)
|
||||
//fmt.Printf("- 字段名: %s\n", field.Name)
|
||||
//fmt.Printf(" 类型: %v\n", field.Type)
|
||||
if field.Type == reflect.TypeOf(player.TomeeHeader{}) {
|
||||
if field.Type == reflect.TypeOf(common.TomeeHeader{}) {
|
||||
// fmt.Println(reflect.ValueOf(field))
|
||||
|
||||
return gconv.SliceUint32(strings.Split(field.Tag.Get("cmd"), "|"))
|
||||
|
||||
@@ -46,9 +46,6 @@ func processMonID(bm string) string {
|
||||
|
||||
// 挑战地图boss
|
||||
func (h Controller) PlayerFightBoss(data *fight.ChallengeBossInboundInfo, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
||||
if !c.CanFight() {
|
||||
return nil, errorcode.ErrorCodes.ErrPokemonNotEligible
|
||||
}
|
||||
|
||||
var mo *model.PetInfo
|
||||
moinfo := &model.PlayerInfo{}
|
||||
@@ -94,11 +91,10 @@ func (h Controller) PlayerFightBoss(data *fight.ChallengeBossInboundInfo, c *pla
|
||||
}
|
||||
|
||||
}
|
||||
c.Fightinfo = &info.Fightinfo{
|
||||
|
||||
Status: info.BattleStatus.FIGHT_WITH_BOSS,
|
||||
Mode: info.BattleMode.MULTI_MODE,
|
||||
}
|
||||
c.Fightinfo.Status = info.BattleStatus.FIGHT_WITH_BOSS
|
||||
c.Fightinfo.Mode = info.BattleMode.MULTI_MODE
|
||||
|
||||
ai := player.NewAI_player(moinfo)
|
||||
//给予打过一次的奖励
|
||||
event := c.Done.SPT(c.Info.MapID, data.BossId, 1, func() {
|
||||
@@ -115,9 +111,7 @@ func (h Controller) PlayerFightBoss(data *fight.ChallengeBossInboundInfo, c *pla
|
||||
|
||||
// 战斗野怪
|
||||
func (h Controller) OnPlayerFightNpcMonster(data *fight.FightNpcMonsterInboundInfo, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
||||
if !c.CanFight() {
|
||||
return nil, errorcode.ErrorCodes.ErrPokemonNotEligible
|
||||
}
|
||||
|
||||
refpet := c.OgreInfo.Data[data.Number]
|
||||
if refpet.Id == 0 {
|
||||
|
||||
@@ -134,10 +128,9 @@ func (h Controller) OnPlayerFightNpcMonster(data *fight.FightNpcMonsterInboundIn
|
||||
moinfo.Nick = xmlres.PetMAP[int(mo.ID)].DefName
|
||||
moinfo.PetList = append(moinfo.PetList, *mo)
|
||||
ai := player.NewAI_player(moinfo)
|
||||
c.Fightinfo = &info.Fightinfo{
|
||||
Mode: info.BattleMode.MULTI_MODE,
|
||||
Status: info.BattleStatus.FIGHT_WITH_NPC,
|
||||
}
|
||||
|
||||
c.Fightinfo.Status = info.BattleStatus.FIGHT_WITH_NPC
|
||||
c.Fightinfo.Mode = info.BattleMode.MULTI_MODE
|
||||
|
||||
fight.NewFight(c, ai, func(foi *info.FightOverInfo) {
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ package controller
|
||||
|
||||
import (
|
||||
"blazing/common/socket/errorcode"
|
||||
"sync/atomic"
|
||||
|
||||
"blazing/logic/service/common"
|
||||
"blazing/logic/service/fight"
|
||||
"blazing/logic/service/fight/info"
|
||||
"blazing/logic/service/player"
|
||||
@@ -15,12 +15,19 @@ import (
|
||||
// 前端到后端无数据内容 空包
|
||||
// 后端到前端无数据内容 空包
|
||||
// 都需要通过2419包广播更新擂台状态
|
||||
func (h Controller) ARENA_SET_OWENR(data *fight.ARENA_SET_OWENR, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
||||
if !c.CanFight() {
|
||||
return nil, errorcode.ErrorCodes.ErrPokemonNotEligible
|
||||
func (h Controller) ARENA_SET_OWENR(data *fight.ARENA_SET_OWENR, c *player.Player) (result *space.ARENA, err errorcode.ErrorCode) {
|
||||
|
||||
if atomic.CompareAndSwapUint32(&c.GetSpace().Owner.Flag, 0, 1) {
|
||||
|
||||
c.GetSpace().Owner.UserID = c.GetInfo().UserID //添加用户ID
|
||||
c.GetSpace().Owner.Nick = c.GetInfo().Nick
|
||||
c.GetSpace().ARENA_Player = c //添加用户
|
||||
|
||||
c.GetSpace().Broadcast(c, 2419, &c.GetSpace().Owner)
|
||||
return &c.GetSpace().Owner, 0
|
||||
}
|
||||
space.GetSpace(c.Info.MapID).UP_ARENA(c, 1)
|
||||
return
|
||||
|
||||
return nil, errorcode.ErrorCodes.ErrChampionExists
|
||||
}
|
||||
|
||||
// public static const ARENA_FIGHT_OWENR:uint = 2418;
|
||||
@@ -29,27 +36,32 @@ func (h Controller) ARENA_SET_OWENR(data *fight.ARENA_SET_OWENR, c *player.Playe
|
||||
// 后端到前端无数据内容 空包
|
||||
// 还是后端主动发送2503的包给双方前端后 等待前端加载完毕 主动发送2404包通知后端开始战斗
|
||||
// 并不会通知对方是否接受挑战。只要有人挑战就直接进入对战
|
||||
func (h Controller) ARENA_FIGHT_OWENR(data *fight.ARENA_FIGHT_OWENR, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
||||
if !c.CanFight() {
|
||||
return nil, errorcode.ErrorCodes.ErrPokemonNotEligible
|
||||
}
|
||||
func (h Controller) ARENA_FIGHT_OWENR(data *fight.ARENA_FIGHT_OWENR, c *player.Player) (result *space.ARENA, err errorcode.ErrorCode) {
|
||||
s := c.GetSpace()
|
||||
|
||||
space.GetSpace(c.Info.MapID).ARENA_join(func(ownerID common.PlayerI) common.PlayerI {
|
||||
c.Fightinfo = &info.Fightinfo{
|
||||
Mode: info.BattleMode.SINGLE_MODE,
|
||||
Status: info.BattleStatus.FIGHT_WITH_PLAYER,
|
||||
}
|
||||
_, fighterr := fight.NewFight(c, ownerID, func(foi *info.FightOverInfo) { //我方邀请擂主挑战,我方先手
|
||||
//原子操作,修改擂台状态
|
||||
if atomic.CompareAndSwapUint32(&s.Owner.Flag, 1, 2) {
|
||||
//成功发起擂台挑战后才修改我放状态
|
||||
c.Fightinfo.Mode = info.BattleMode.SINGLE_MODE
|
||||
c.Fightinfo.Status = info.BattleStatus.FIGHT_WITH_PLAYER
|
||||
|
||||
_, err = fight.NewFight(c, s.ARENA_Player, func(foi *info.FightOverInfo) { //我方邀请擂主挑战,我方先手
|
||||
|
||||
}) ///开始对战,房主方以及被邀请方
|
||||
|
||||
if fighterr != nil {
|
||||
return nil
|
||||
}
|
||||
return c
|
||||
})
|
||||
if err <= 0 { //发起战斗成功
|
||||
atomic.StoreUint32(&s.Owner.ChallengerID, c.GetInfo().UserID) //传回的指针赋值给ID
|
||||
|
||||
} else {
|
||||
//发起失败,改回1
|
||||
atomic.StoreUint32(&s.Owner.Flag, 1)
|
||||
}
|
||||
|
||||
s.Broadcast(c, 2419, &s.Owner)
|
||||
return &s.Owner, 0
|
||||
}
|
||||
return nil, errorcode.ErrorCodes.ErrChampionExists
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// 获取星际擂台信息的包 进入空间站地图前端会发送请求包 或者 有人站到星际擂台上后 广播回包
|
||||
@@ -57,8 +69,7 @@ func (h Controller) ARENA_FIGHT_OWENR(data *fight.ARENA_FIGHT_OWENR, c *player.P
|
||||
// 后端到前端
|
||||
func (h Controller) ARENA_GET_INFO(data *fight.ARENA_GET_INFO, c *player.Player) (result *space.ARENA, err errorcode.ErrorCode) {
|
||||
|
||||
result = &space.GetSpace(c.Info.MapID).ARENA
|
||||
return
|
||||
return &space.GetSpace(c.Info.MapID).Owner, 0
|
||||
}
|
||||
|
||||
// public static const ARENA_UPFIGHT:uint = 2420;
|
||||
@@ -66,10 +77,17 @@ func (h Controller) ARENA_GET_INFO(data *fight.ARENA_GET_INFO, c *player.Player)
|
||||
// 前端到后端无数据内容
|
||||
// 后端到前端无数据内容
|
||||
// 都需要通过2419包广播更新擂台状态
|
||||
func (h Controller) ARENA_UPFIGHT(data *fight.ARENA_UPFIGHT, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
||||
space.GetSpace(c.Info.MapID).UP_ARENA(c, 0)
|
||||
//result = &info.S2C_ARENA_GET_INFO{}
|
||||
return
|
||||
func (h Controller) ARENA_UPFIGHT(data *fight.ARENA_UPFIGHT, c *player.Player) (result *space.ARENA, err errorcode.ErrorCode) {
|
||||
//原子操作,修改擂台状态
|
||||
s := c.GetSpace()
|
||||
if atomic.CompareAndSwapUint32(&s.Owner.UserID, c.GetInfo().UserID, 0) {
|
||||
s.ARENA_Player = nil
|
||||
|
||||
s.Broadcast(c, 2419, &s.Owner)
|
||||
return &s.Owner, 0
|
||||
}
|
||||
return nil, errorcode.ErrorCodes.ErrChampionCannotCancel
|
||||
|
||||
}
|
||||
|
||||
// public static const ARENA_OWENR_ACCE:uint = 2422;
|
||||
@@ -78,8 +96,25 @@ func (h Controller) ARENA_UPFIGHT(data *fight.ARENA_UPFIGHT, c *player.Player) (
|
||||
// 后端到前端无数据内容
|
||||
// public static const ARENA_OWENR_OUT:uint = 2423;
|
||||
// 此包不清楚具体怎么触发 但已知此包为后端主动发送。不清楚什么情况下回用到
|
||||
func (h Controller) ARENA_OWENR_ACCE(data *fight.ARENA_OWENR_ACCE, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
||||
space.GetSpace(c.Info.MapID).UP_ARENA(c, 2)
|
||||
//result = &info.S2C_ARENA_GET_INFO{}
|
||||
return
|
||||
func (h Controller) ARENA_OWENR_ACCE(data *fight.ARENA_OWENR_ACCE, c *player.Player) (result *space.ARENA, err errorcode.ErrorCode) {
|
||||
|
||||
s := c.GetSpace()
|
||||
if atomic.LoadUint32(&s.Owner.UserID) != c.GetInfo().UserID && c.GetInfo().UserID != atomic.LoadUint32(&s.Owner.ChallengerID) { //说明已经有人了
|
||||
return nil, errorcode.ErrorCodes.Err24hBanCheatTool
|
||||
}
|
||||
if c.GetInfo().UserID == atomic.LoadUint32(&s.Owner.UserID) {
|
||||
|
||||
s.Owner.HostWins += 1 //连胜+1
|
||||
|
||||
} else {
|
||||
s.Owner.HostWins = 0 //连胜重置
|
||||
s.Owner.UserID = c.GetInfo().UserID //添加用户ID
|
||||
s.Owner.Nick = c.GetInfo().Nick
|
||||
s.ARENA_Player = c //添加用户
|
||||
}
|
||||
|
||||
atomic.StoreUint32(&s.Owner.Flag, 1)
|
||||
|
||||
s.Broadcast(c, 2419, &s.Owner)
|
||||
return &s.Owner, 0
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package controller
|
||||
import (
|
||||
"blazing/common/socket/errorcode"
|
||||
|
||||
"blazing/logic/service/common"
|
||||
"blazing/logic/service/fight"
|
||||
"blazing/logic/service/fight/info"
|
||||
"blazing/logic/service/player"
|
||||
@@ -11,30 +12,22 @@ import (
|
||||
//大乱斗
|
||||
|
||||
func (h Controller) PET_MELEE(data *fight.StartPetWarInboundInfo, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
||||
if !c.CanFight(1) {
|
||||
return nil, errorcode.ErrorCodes.ErrPokemonNotEligible
|
||||
}
|
||||
|
||||
c.Fightinfo.Mode = info.BattleMode.PET_MELEE
|
||||
c.Fightinfo.PlayerID = 0
|
||||
g := c.Pet_joinFight()
|
||||
if g != nil {
|
||||
fight.NewFight(g, c, func(foi *info.FightOverInfo) {
|
||||
c.JoinFight(func(p common.PlayerI) bool {
|
||||
fight.NewFight(p, c, func(foi *info.FightOverInfo) {
|
||||
|
||||
}) ///开始对战,房主方以及被邀请方
|
||||
|
||||
}
|
||||
return true
|
||||
})
|
||||
|
||||
return
|
||||
}
|
||||
func (h Controller) PET_King(data *fight.PetKingJoinInboundInfo, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
||||
if !c.CanFight() {
|
||||
return nil, errorcode.ErrorCodes.ErrPokemonNotEligible
|
||||
}
|
||||
|
||||
c.Fightinfo = &info.Fightinfo{
|
||||
|
||||
Status: info.BattleStatus.FIGHT_WITH_PLAYER}
|
||||
c.Fightinfo.Status = info.BattleStatus.FIGHT_WITH_PLAYER
|
||||
|
||||
switch data.Type {
|
||||
case 5:
|
||||
@@ -42,21 +35,13 @@ func (h Controller) PET_King(data *fight.PetKingJoinInboundInfo, c *player.Playe
|
||||
case 6:
|
||||
c.Fightinfo.Mode = info.BattleMode.MULTI_MODE
|
||||
}
|
||||
g := c.Pet_joinFight()
|
||||
if g != nil {
|
||||
switch data.Type {
|
||||
case 5:
|
||||
fight.NewFight(g, c, func(foi *info.FightOverInfo) {
|
||||
c.JoinFight(func(p common.PlayerI) bool {
|
||||
fight.NewFight(p, c, func(foi *info.FightOverInfo) {
|
||||
|
||||
}) ///开始对战,房主方以及被邀请方
|
||||
}) ///开始对战,房主方以及被邀请方
|
||||
|
||||
case 6:
|
||||
fight.NewFight(g, c, func(foi *info.FightOverInfo) {
|
||||
|
||||
}) ///开始对战,房主方以及被邀请方
|
||||
}
|
||||
|
||||
}
|
||||
return true
|
||||
})
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"blazing/common/socket/errorcode"
|
||||
"sync/atomic"
|
||||
|
||||
"blazing/logic/service/common"
|
||||
"blazing/logic/service/fight"
|
||||
"blazing/logic/service/fight/info"
|
||||
"blazing/logic/service/player"
|
||||
@@ -12,18 +13,20 @@ import (
|
||||
// 接收战斗或者取消战斗的包
|
||||
func (h Controller) OnPlayerHandleFightInvite(data *fight.HandleFightInviteInboundInfo, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
||||
|
||||
|
||||
if !atomic.CompareAndSwapUint32(&c.Fightinfo.Status, 0, 1) { //邀请前提是自己没在战斗
|
||||
return nil, errorcode.ErrorCodes.ErrInBattle
|
||||
|
||||
}
|
||||
if ok, p1 := c.AgreeBattle(data.UserID, data.Flag, data.Mode); ok {
|
||||
c.Fightinfo.PlayerID = data.UserID
|
||||
c.Fightinfo.Mode = data.Mode
|
||||
err = c.AgreeBattle(data.UserID, data.Flag, func(p common.PlayerI) bool {
|
||||
|
||||
fight.NewFight(p1, c, func(foi *info.FightOverInfo) {
|
||||
_, err = fight.NewFight(p, c, func(foi *info.FightOverInfo) {
|
||||
|
||||
}) ///开始对战,房主方以及被邀请方
|
||||
}
|
||||
return nil, -1
|
||||
})
|
||||
return err <= 0
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// 邀请其他人进行战斗
|
||||
|
||||
@@ -34,7 +34,7 @@ func IsToday(t time.Time) bool {
|
||||
func (h *Controller) Login(data *user.MAIN_LOGIN_IN, c gnet.Conn) (result *user.LoginMSInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||||
tt := data.CheakSession()
|
||||
if !tt {
|
||||
err = errorcode.ErrorCodes.ErrLoginServerError
|
||||
|
||||
defer c.Close()
|
||||
return
|
||||
}
|
||||
@@ -52,14 +52,14 @@ func (h *Controller) Login(data *user.MAIN_LOGIN_IN, c gnet.Conn) (result *user.
|
||||
t := player.GetPlayer(c, data.Head.UserID)
|
||||
if t == nil {
|
||||
cool.Loger.Error(context.Background(), "获取玩家失败", data.Head.UserID)
|
||||
err = errorcode.ErrorCodes.ErrLoginServerError
|
||||
|
||||
defer c.Close()
|
||||
return
|
||||
}
|
||||
t.Service = blservice.NewUserService(data.Head.UserID)
|
||||
t.Info = t.Service.Info.Person(data.Head.UserID)
|
||||
if t.Info == nil {
|
||||
err = errorcode.ErrorCodes.ErrLoginServerError
|
||||
defer c.Close()
|
||||
return
|
||||
}
|
||||
t.Info.UserID = data.Head.UserID
|
||||
@@ -96,7 +96,7 @@ func (h *Controller) Login(data *user.MAIN_LOGIN_IN, c gnet.Conn) (result *user.
|
||||
result = user.NewOutInfo() //设置登录消息
|
||||
|
||||
result.PlayerInfo = *t.Info
|
||||
space.GetSpace(t.Info.MapID).EnterMap(t)
|
||||
space.GetSpace(t.Info.MapID).EnterMap(t)
|
||||
|
||||
return result, 0
|
||||
|
||||
|
||||
@@ -8,13 +8,13 @@ import (
|
||||
)
|
||||
|
||||
func (h Controller) Walk(data *maps.WalkInInfo, c *player.Player) (result *info.WalkOutInfo, err errorcode.ErrorCode) {
|
||||
|
||||
c.GetSpace().Walk(c, info.WalkOutInfo{
|
||||
result = &info.WalkOutInfo{
|
||||
Flag: data.Flag,
|
||||
Point: data.Point,
|
||||
Path: data.Path,
|
||||
UserID: c.Info.UserID,
|
||||
})
|
||||
}
|
||||
c.GetSpace().Walk(c, result)
|
||||
|
||||
c.Info.Pos = data.Point
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user