mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-04 16:02:26 +08:00
动画同步调试
This commit is contained in:
@@ -15,6 +15,8 @@ import (
|
|||||||
pb "google.golang.org/protobuf/proto"
|
pb "google.golang.org/protobuf/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// TODO 暂时只做3.2协议的兼容了 在GS这边处理不同版本的协议太烦人了 有机会全部改到GATE那边处理 GS所有接收和发送的都应该是3.2版本的协议
|
||||||
|
|
||||||
var cmdProtoMap *cmd.CmdProtoMap = nil
|
var cmdProtoMap *cmd.CmdProtoMap = nil
|
||||||
|
|
||||||
func DoForward[IET model.InvokeEntryType](player *model.Player, invokeHandler *model.InvokeHandler[IET],
|
func DoForward[IET model.InvokeEntryType](player *model.Player, invokeHandler *model.InvokeHandler[IET],
|
||||||
@@ -218,21 +220,20 @@ func (g *GameManager) CombatInvocationsNotify(player *model.Player, payloadMsg p
|
|||||||
logger.Error("parse EvtAnimatorParameterInfo error: %v", err)
|
logger.Error("parse EvtAnimatorParameterInfo error: %v", err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
// logger.Debug("EvtAnimatorParameterInfo: %v, ForwardType: %v", evtAnimatorParameterInfo, entry.ForwardType)
|
logger.Debug("EvtAnimatorParameterInfo: %v, ForwardType: %v", evtAnimatorParameterInfo, entry.ForwardType)
|
||||||
|
|
||||||
// 这是否?
|
// 这是否?
|
||||||
if evtAnimatorParameterInfo.IsServerCache {
|
evtAnimatorParameterInfo.IsServerCache = false
|
||||||
evtAnimatorParameterInfo.IsServerCache = false
|
newCombatData, err := pb.Marshal(evtAnimatorParameterInfo)
|
||||||
// TODO 暂时只做3.2协议的兼容了 在GS这边处理不同版本的协议太烦人了 有机会全部改到GATE那边处理 GS所有接收和发送的都应该是3.2版本的协议
|
if err != nil {
|
||||||
newCombatData, err := pb.Marshal(evtAnimatorParameterInfo)
|
logger.Error("build EvtAnimatorParameterInfo error: %v", err)
|
||||||
if err != nil {
|
continue
|
||||||
logger.Error("build EvtAnimatorParameterInfo error: %v", err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
entry.CombatData = newCombatData
|
|
||||||
}
|
}
|
||||||
|
entry.CombatData = newCombatData
|
||||||
player.CombatInvokeHandler.AddEntry(entry.ForwardType, entry)
|
player.CombatInvokeHandler.AddEntry(entry.ForwardType, entry)
|
||||||
|
g.SendToWorldAEC(world, cmd.EvtAnimatorParameterNotify, player.ClientSeq, &proto.EvtAnimatorParameterNotify{
|
||||||
|
AnimatorParamInfo: evtAnimatorParameterInfo,
|
||||||
|
ForwardType: entry.ForwardType,
|
||||||
|
}, player.PlayerID)
|
||||||
case proto.CombatTypeArgument_COMBAT_ANIMATOR_STATE_CHANGED:
|
case proto.CombatTypeArgument_COMBAT_ANIMATOR_STATE_CHANGED:
|
||||||
evtAnimatorStateChangedInfo := new(proto.EvtAnimatorStateChangedInfo)
|
evtAnimatorStateChangedInfo := new(proto.EvtAnimatorStateChangedInfo)
|
||||||
err := pb.Unmarshal(entry.CombatData, evtAnimatorStateChangedInfo)
|
err := pb.Unmarshal(entry.CombatData, evtAnimatorStateChangedInfo)
|
||||||
@@ -241,7 +242,20 @@ func (g *GameManager) CombatInvocationsNotify(player *model.Player, payloadMsg p
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
logger.Debug("EvtAnimatorStateChangedInfo: %v, ForwardType: %v", evtAnimatorStateChangedInfo, entry.ForwardType)
|
logger.Debug("EvtAnimatorStateChangedInfo: %v, ForwardType: %v", evtAnimatorStateChangedInfo, entry.ForwardType)
|
||||||
|
// 试试看?
|
||||||
|
evtAnimatorStateChangedInfo.HandleAnimatorStateImmediately = true
|
||||||
|
evtAnimatorStateChangedInfo.ForceSync = true
|
||||||
|
newCombatData, err := pb.Marshal(evtAnimatorStateChangedInfo)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("build EvtAnimatorParameterInfo error: %v", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
entry.CombatData = newCombatData
|
||||||
player.CombatInvokeHandler.AddEntry(entry.ForwardType, entry)
|
player.CombatInvokeHandler.AddEntry(entry.ForwardType, entry)
|
||||||
|
g.SendToWorldAEC(world, cmd.EvtAnimatorStateChangedNotify, player.ClientSeq, &proto.EvtAnimatorStateChangedNotify{
|
||||||
|
ForwardType: entry.ForwardType,
|
||||||
|
EvtAnimatorStateChangedInfo: evtAnimatorStateChangedInfo,
|
||||||
|
}, player.PlayerID)
|
||||||
default:
|
default:
|
||||||
player.CombatInvokeHandler.AddEntry(entry.ForwardType, entry)
|
player.CombatInvokeHandler.AddEntry(entry.ForwardType, entry)
|
||||||
}
|
}
|
||||||
@@ -453,34 +467,30 @@ func (g *GameManager) AbilityInvocationsNotify(player *model.Player, payloadMsg
|
|||||||
if player.SceneLoadState != model.SceneEnterDone {
|
if player.SceneLoadState != model.SceneEnterDone {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, entry := range req.Invokes {
|
for _, entry := range req.Invokes {
|
||||||
// logger.Debug("AbilityInvocationsNotify: %v", entry, player.PlayerID)
|
// logger.Debug("AbilityInvocationsNotify: %v", entry, player.PlayerID)
|
||||||
|
switch entry.ArgumentType {
|
||||||
// switch entry.ArgumentType {
|
case proto.AbilityInvokeArgument_ABILITY_META_MODIFIER_CHANGE:
|
||||||
// case proto.AbilityInvokeArgument_ABILITY_INVOKE_ARGUMENT_META_MODIFIER_CHANGE:
|
world := WORLD_MANAGER.GetWorldByID(player.WorldId)
|
||||||
// world := WORLD_MANAGER.GetWorldByID(player.WorldId)
|
worldAvatar := world.GetWorldAvatarByEntityId(entry.EntityId)
|
||||||
// worldAvatar := world.GetWorldAvatarByEntityId(entry.EntityId)
|
if worldAvatar != nil {
|
||||||
// if worldAvatar != nil {
|
for _, ability := range worldAvatar.abilityList {
|
||||||
// for _, ability := range worldAvatar.abilityList {
|
if ability.InstancedAbilityId == entry.Head.InstancedAbilityId {
|
||||||
// if ability.InstancedAbilityId == entry.Head.InstancedAbilityId {
|
// logger.Error("A: %v", ability)
|
||||||
// logger.Error("A: %v", ability)
|
}
|
||||||
// }
|
}
|
||||||
// }
|
for _, modifier := range worldAvatar.modifierList {
|
||||||
// for _, modifier := range worldAvatar.modifierList {
|
if modifier.InstancedAbilityId == entry.Head.InstancedAbilityId {
|
||||||
// if modifier.InstancedAbilityId == entry.Head.InstancedAbilityId {
|
// logger.Error("B: %v", modifier)
|
||||||
// logger.Error("B: %v", modifier)
|
}
|
||||||
// }
|
}
|
||||||
// }
|
for _, modifier := range worldAvatar.modifierList {
|
||||||
// for _, modifier := range worldAvatar.modifierList {
|
if modifier.InstancedModifierId == entry.Head.InstancedModifierId {
|
||||||
// if modifier.InstancedModifierId == entry.Head.InstancedModifierId {
|
// logger.Error("C: %v", modifier)
|
||||||
// logger.Error("C: %v", modifier)
|
}
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// case proto.AbilityInvokeArgument_ABILITY_INVOKE_ARGUMENT_NONE:
|
|
||||||
// }
|
|
||||||
|
|
||||||
// 处理耐力消耗
|
// 处理耐力消耗
|
||||||
g.HandleAbilityStamina(player, entry)
|
g.HandleAbilityStamina(player, entry)
|
||||||
player.AbilityInvokeHandler.AddEntry(entry.ForwardType, entry)
|
player.AbilityInvokeHandler.AddEntry(entry.ForwardType, entry)
|
||||||
|
|||||||
@@ -373,6 +373,9 @@ func (g *GameManager) SceneEntityDrownReq(player *model.Player, payloadMsg pb.Me
|
|||||||
req := payloadMsg.(*proto.SceneEntityDrownReq)
|
req := payloadMsg.(*proto.SceneEntityDrownReq)
|
||||||
|
|
||||||
world := WORLD_MANAGER.GetWorldByID(player.WorldId)
|
world := WORLD_MANAGER.GetWorldByID(player.WorldId)
|
||||||
|
if world == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
scene := world.GetSceneById(player.SceneId)
|
scene := world.GetSceneById(player.SceneId)
|
||||||
scene.DestroyEntity(req.EntityId)
|
scene.DestroyEntity(req.EntityId)
|
||||||
|
|
||||||
|
|||||||
@@ -132,6 +132,8 @@ func (c *CmdProtoMap) registerAllMessage() {
|
|||||||
c.regMsg(EvtEntityRenderersChangedNotify, func() any { return new(proto.EvtEntityRenderersChangedNotify) }) // 实体可视状态改变通知
|
c.regMsg(EvtEntityRenderersChangedNotify, func() any { return new(proto.EvtEntityRenderersChangedNotify) }) // 实体可视状态改变通知
|
||||||
c.regMsg(EvtCreateGadgetNotify, func() any { return new(proto.EvtCreateGadgetNotify) }) // 创建实体通知
|
c.regMsg(EvtCreateGadgetNotify, func() any { return new(proto.EvtCreateGadgetNotify) }) // 创建实体通知
|
||||||
c.regMsg(EvtDestroyGadgetNotify, func() any { return new(proto.EvtDestroyGadgetNotify) }) // 销毁实体通知
|
c.regMsg(EvtDestroyGadgetNotify, func() any { return new(proto.EvtDestroyGadgetNotify) }) // 销毁实体通知
|
||||||
|
c.regMsg(EvtAnimatorParameterNotify, func() any { return new(proto.EvtAnimatorParameterNotify) }) // 动画参数通知
|
||||||
|
c.regMsg(EvtAnimatorStateChangedNotify, func() any { return new(proto.EvtAnimatorStateChangedNotify) }) // 动画状态通知
|
||||||
|
|
||||||
// 队伍
|
// 队伍
|
||||||
c.regMsg(ChangeAvatarReq, func() any { return new(proto.ChangeAvatarReq) }) // 更换角色请求 切人
|
c.regMsg(ChangeAvatarReq, func() any { return new(proto.ChangeAvatarReq) }) // 更换角色请求 切人
|
||||||
|
|||||||
Reference in New Issue
Block a user