From e20c69f46535c36dbea225796c54aa3997850804 Mon Sep 17 00:00:00 2001 From: xeon Date: Sat, 24 Feb 2024 15:23:00 +0300 Subject: [PATCH] More combat handlers --- .../Controllers/Combat/CombatManager.cs | 56 +++++++++++++++++-- .../Controllers/CombatMessageController.cs | 1 - GameServer/Controllers/CreatureController.cs | 4 +- .../Component/EntitySummonerComponent.cs | 2 +- GameServer/Systems/Entity/EntityBase.cs | 2 + GameServer/Systems/Entity/PlayerEntity.cs | 6 +- 6 files changed, 57 insertions(+), 14 deletions(-) diff --git a/GameServer/Controllers/Combat/CombatManager.cs b/GameServer/Controllers/Combat/CombatManager.cs index 7d07ad4..80ee432 100644 --- a/GameServer/Controllers/Combat/CombatManager.cs +++ b/GameServer/Controllers/Combat/CombatManager.cs @@ -1,7 +1,6 @@ using System.Collections.Immutable; using System.Linq.Expressions; using System.Reflection; -using System.Security.Cryptography; using GameServer.Controllers.Attributes; using GameServer.Network; using GameServer.Systems.Entity; @@ -33,6 +32,45 @@ internal class CombatManager _creatureController = creatureController; } + [CombatRequest(CombatRequestData.MessageOneofCase.RTimeStopRequest)] + public CombatResponseData OnRTimeStopRequest(CombatRequestContext context) => new() + { + CombatCommon = context.Request.CombatCommon, + RTimeStopResponse = new() + }; + + [CombatRequest(CombatRequestData.MessageOneofCase.ActivateBuffRequest)] + public CombatResponseData OnActivateBuffRequest(CombatRequestContext context) => new() + { + CombatCommon = context.Request.CombatCommon, + ActivateBuffResponse = new() + }; + + [CombatRequest(CombatRequestData.MessageOneofCase.UseSkillRequest)] + public CombatResponseData OnUseSkillRequest(CombatRequestContext context) => new() + { + CombatCommon = context.Request.CombatCommon, + UseSkillResponse = new() + { + SkillSingleId = context.Request.UseSkillRequest.SkillSingleId, + UseSkillInfo = context.Request.UseSkillRequest.UseSkillInfo + } + }; + + [CombatRequest(CombatRequestData.MessageOneofCase.ApplyGameplayEffectRequest)] + public CombatResponseData OnApplyGameplayEffectRequest(CombatRequestContext context) => new() + { + CombatCommon = context.Request.CombatCommon, + ApplyGameplayEffectResponse = new ApplyGameplayEffectResponse() + }; + + [CombatRequest(CombatRequestData.MessageOneofCase.RemoveGameplayEffectRequest)] + public CombatResponseData OnRemoveGameplayEffectRequest(CombatRequestContext context) => new() + { + CombatCommon = context.Request.CombatCommon, + RemoveGameplayEffectResponse = new RemoveGameplayEffectResponse() + }; + [CombatRequest(CombatRequestData.MessageOneofCase.CreateBulletRequest)] public CombatResponseData OnCreateBulletRequest(CombatRequestContext context) { @@ -209,12 +247,18 @@ internal class CombatManager if (entity.ComponentSystem.TryGet(out EntityFsmComponent? fsmComponent)) { DFsm? dfsm = fsmComponent.Fsms.FirstOrDefault(fsm => fsm.FsmId == request.FsmId); - dfsm ??= new() + + if (dfsm == null) { - FsmId = request.FsmId, - Status = 1, - Flag = (int)EFsmStateFlag.Confirmed - }; + dfsm = new DFsm + { + FsmId = request.FsmId, + Status = 1, + Flag = (int)EFsmStateFlag.Confirmed + }; + + fsmComponent.Fsms.Add(dfsm); + } dfsm.CurrentState = request.State; context.Notifies.Add(new CombatNotifyData diff --git a/GameServer/Controllers/CombatMessageController.cs b/GameServer/Controllers/CombatMessageController.cs index f3c6a67..7005149 100644 --- a/GameServer/Controllers/CombatMessageController.cs +++ b/GameServer/Controllers/CombatMessageController.cs @@ -1,7 +1,6 @@ using GameServer.Controllers.Attributes; using GameServer.Controllers.Combat; using GameServer.Network; -using GameServer.Network.Messages; using Protocol; namespace GameServer.Controllers; diff --git a/GameServer/Controllers/CreatureController.cs b/GameServer/Controllers/CreatureController.cs index 221c416..3bbff68 100644 --- a/GameServer/Controllers/CreatureController.cs +++ b/GameServer/Controllers/CreatureController.cs @@ -288,8 +288,9 @@ internal class CreatureController : Controller PlayerEntity concomitant = _entityFactory.CreatePlayer(roleId, 0); _entitySystem.Create(concomitant); - EntityConcomitantsComponent concomitants = entity.ComponentSystem.Get(); + EntityConcomitantsComponent concomitants = entity.ComponentSystem.Create(); concomitants.CustomEntityIds.Clear(); + concomitants.VisionEntityId = concomitant.Id; concomitants.CustomEntityIds.Add(concomitant.Id); EntitySummonerComponent summoner = concomitant.ComponentSystem.Create(); @@ -297,6 +298,7 @@ internal class CreatureController : Controller summoner.SummonConfigId = summonConfigId; summoner.SummonType = ESummonType.ConcomitantCustom; summoner.PlayerId = _modelManager.Player.Id; + concomitant.InitProps(_configManager.GetConfig(roleId)!); } } diff --git a/GameServer/Systems/Entity/Component/EntitySummonerComponent.cs b/GameServer/Systems/Entity/Component/EntitySummonerComponent.cs index 7402cfe..049e193 100644 --- a/GameServer/Systems/Entity/Component/EntitySummonerComponent.cs +++ b/GameServer/Systems/Entity/Component/EntitySummonerComponent.cs @@ -19,7 +19,7 @@ internal class EntitySummonerComponent : EntityComponentBase Type = (int)SummonType, SummonerId = SummonerId, PlayerId = PlayerId, - SummonSkillId = SummonSkillId + SummonSkillId = SummonSkillId, } }; } diff --git a/GameServer/Systems/Entity/EntityBase.cs b/GameServer/Systems/Entity/EntityBase.cs index d6d97ef..53a69c9 100644 --- a/GameServer/Systems/Entity/EntityBase.cs +++ b/GameServer/Systems/Entity/EntityBase.cs @@ -15,6 +15,8 @@ internal abstract class EntityBase public EntityState State { get; protected set; } + public bool IsConcomitant => ComponentSystem.TryGet(out _); + public EntityBase(long id) { Id = id; diff --git a/GameServer/Systems/Entity/PlayerEntity.cs b/GameServer/Systems/Entity/PlayerEntity.cs index 0c5fa93..6da3dd6 100644 --- a/GameServer/Systems/Entity/PlayerEntity.cs +++ b/GameServer/Systems/Entity/PlayerEntity.cs @@ -37,10 +37,6 @@ internal class PlayerEntity : EntityBase { base.OnCreate(); - // Should be created immediately - EntityConcomitantsComponent concomitantsComponent = ComponentSystem.Create(); - concomitantsComponent.CustomEntityIds.Add(Id); - EntityVisionSkillComponent visionSkillComponent = ComponentSystem.Create(); visionSkillComponent.SetExploreTool(1001); @@ -82,7 +78,7 @@ internal class PlayerEntity : EntityBase public override EEntityType Type => EEntityType.Player; public override EntityConfigType ConfigType => EntityConfigType.Character; - public override bool IsVisible => IsCurrentRole; + public override bool IsVisible => IsCurrentRole || IsConcomitant; public override EntityPb Pb {