修改buff机制
parent
3a7063757c
commit
d604b2edd7
|
|
@ -28,7 +28,7 @@ namespace Gameplay.Buff
|
|||
}
|
||||
}
|
||||
|
||||
private bool _needRemove;
|
||||
private bool _needRemove = false;
|
||||
public bool needRemove
|
||||
{
|
||||
get
|
||||
|
|
@ -36,13 +36,11 @@ namespace Gameplay.Buff
|
|||
switch (configData.ExistType)
|
||||
{
|
||||
case EExistType.Once:
|
||||
return true;
|
||||
return _needRemove;
|
||||
case EExistType.During:
|
||||
return runtimeData.passTime >= configData.MaxExistTime;
|
||||
case EExistType.Allways:
|
||||
return false;
|
||||
case EExistType.AfterReload:
|
||||
return _needRemove;
|
||||
default:
|
||||
DebugUtil.LogError("暂未处理的buff existType:{0}",configData.ExistType);
|
||||
return true;
|
||||
|
|
@ -66,6 +64,7 @@ namespace Gameplay.Buff
|
|||
this.creator = creator;
|
||||
this.configData = configData;
|
||||
isParamOverride = false;
|
||||
_needRemove = false;
|
||||
if (runtimeData == null)
|
||||
{
|
||||
runtimeData = new BuffRuntimeData();
|
||||
|
|
@ -91,6 +90,16 @@ namespace Gameplay.Buff
|
|||
|
||||
}
|
||||
|
||||
public void Trigger()
|
||||
{
|
||||
_OnTrigger();
|
||||
|
||||
if (configData.ExistType == EExistType.Once)
|
||||
{
|
||||
_needRemove = true;
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void _OnTrigger()
|
||||
{
|
||||
|
||||
|
|
@ -104,11 +113,11 @@ namespace Gameplay.Buff
|
|||
|
||||
public void TriggerAdd()
|
||||
{
|
||||
_OnAdd();
|
||||
if (configData.TriggerType == ETriggerType.ON_ADD)
|
||||
{
|
||||
_OnTrigger();
|
||||
Trigger();
|
||||
}
|
||||
_OnAdd();
|
||||
|
||||
if (configData.ExistType == EExistType.During ||
|
||||
configData.ExistType == EExistType.Allways)
|
||||
|
|
@ -136,11 +145,11 @@ namespace Gameplay.Buff
|
|||
|
||||
public void TriggerRemove()
|
||||
{
|
||||
_OnRemove();
|
||||
if (configData.TriggerType == ETriggerType.ON_REMOVE)
|
||||
{
|
||||
_OnTrigger();
|
||||
Trigger();
|
||||
}
|
||||
_OnRemove();
|
||||
|
||||
if (_existEffectData != null)
|
||||
{
|
||||
|
|
@ -158,7 +167,7 @@ namespace Gameplay.Buff
|
|||
_remainTriggerTime -= dt;
|
||||
if (_remainTriggerTime <= 0)
|
||||
{
|
||||
_OnTrigger();
|
||||
Trigger();
|
||||
_remainTriggerTime += configData.TiggerUnitTime;
|
||||
}
|
||||
}
|
||||
|
|
@ -170,23 +179,13 @@ namespace Gameplay.Buff
|
|||
{
|
||||
runtimeData.passTime = 0;
|
||||
}
|
||||
|
||||
public void TriggerOnReload()
|
||||
|
||||
public void SpecialTrigger(ETriggerType triggerType)
|
||||
{
|
||||
if (configData.TriggerType == ETriggerType.ON_RELOAD)
|
||||
if (configData.TriggerType == triggerType)
|
||||
{
|
||||
_OnTrigger();
|
||||
Trigger();
|
||||
}
|
||||
if (configData.ExistType == EExistType.AfterReload)
|
||||
{
|
||||
_needRemove = true;
|
||||
}
|
||||
_OnReload();
|
||||
}
|
||||
|
||||
protected virtual void _OnReload()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected virtual void _OnLogicUpdate(float dt)
|
||||
|
|
|
|||
|
|
@ -207,6 +207,7 @@ namespace Gameplay.Buff
|
|||
_unitDict.Add(c, unitManager);
|
||||
_unitList.Add(unitManager);
|
||||
|
||||
// 默认全局buff
|
||||
var autoRecoverMoraleBuff = CreateBuffById(c, InnerBuffID.AUTO_RECOVER_MORALE);
|
||||
unitManager.AddBuff(autoRecoverMoraleBuff);
|
||||
|
||||
|
|
|
|||
|
|
@ -224,14 +224,29 @@ namespace Gameplay.Buff
|
|||
}
|
||||
|
||||
public void TriggerReload()
|
||||
{
|
||||
_InnerTrigger(ETriggerType.ON_RELOAD);
|
||||
}
|
||||
|
||||
public void TriggerEnterBattle()
|
||||
{
|
||||
_InnerTrigger(ETriggerType.ON_ENTER_BATTLE);
|
||||
}
|
||||
|
||||
public void TriggerExitBattle()
|
||||
{
|
||||
_InnerTrigger(ETriggerType.ON_EXIT_BATTLE);
|
||||
}
|
||||
|
||||
private void _InnerTrigger(ETriggerType triggerType)
|
||||
{
|
||||
for (int i = 0; i < totalBuffList.Count; i++)
|
||||
{
|
||||
var buff = totalBuffList[i];
|
||||
if (buff.needRemove) continue;
|
||||
buff.TriggerOnReload();
|
||||
buff.SpecialTrigger(triggerType);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -126,6 +126,8 @@ namespace Gameplay.Character
|
|||
_characterDict.Add(character.GetID(), character);
|
||||
_characterList.Add(character);
|
||||
_AddToTroop(character);
|
||||
|
||||
character.buffManager.TriggerEnterBattle();
|
||||
}
|
||||
|
||||
private void _RemoveCharacter(Character c,
|
||||
|
|
@ -380,6 +382,8 @@ namespace Gameplay.Character
|
|||
|
||||
if (character.runtimeData.needRemove)
|
||||
{
|
||||
// 触发buff
|
||||
character.buffManager.TriggerExitBattle();
|
||||
_RemoveCharacter(character, i);
|
||||
i--;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -120,6 +120,11 @@ namespace Gameplay.Common
|
|||
/// 第一次开枪时间
|
||||
/// </summary>
|
||||
public ObscuredFloat firstShootTime;
|
||||
|
||||
/// <summary>
|
||||
/// 士气恢复缩放
|
||||
/// </summary>
|
||||
public ObscuredFloat moraleRecoverScale = 1f;
|
||||
|
||||
/// <summary>
|
||||
/// 装弹时间
|
||||
|
|
|
|||
|
|
@ -114,6 +114,11 @@ namespace Gameplay.Skill
|
|||
var addUnit = new UnitSkillManager(charactor);
|
||||
// 增加主动技能
|
||||
await addUnit.AddSkill(charactor.runtimeData.configData.skillId);
|
||||
|
||||
// 获取主动技能
|
||||
var skill = addUnit.positiveSkill;
|
||||
// 增加附带的被动buff技能
|
||||
addUnit.AddPassiveBuffIds(skill.runtimeData.configData.PassiveBuffIds);
|
||||
|
||||
_AddToManager(charactor, addUnit);
|
||||
}
|
||||
|
|
@ -125,6 +130,11 @@ namespace Gameplay.Skill
|
|||
// 增加主动技能
|
||||
await addUnit.AddSkill(vehicle.runtimeData.configData.skillId);
|
||||
|
||||
// 获取主动技能
|
||||
var skill = addUnit.positiveSkill;
|
||||
// 增加附带的被动buff技能
|
||||
addUnit.AddPassiveBuffIds(skill.runtimeData.configData.PassiveBuffIds);
|
||||
|
||||
_AddToManager(vehicle, addUnit);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -54,6 +54,16 @@ namespace Gameplay.Skill
|
|||
return true;
|
||||
}
|
||||
|
||||
public void AddPassiveBuffIds(List<int> buffIds)
|
||||
{
|
||||
if (buffIds == null || buffIds.Count == 0) return;
|
||||
for (var i = 0; i < buffIds.Count; ++i)
|
||||
{
|
||||
var buffId = buffIds[i];
|
||||
owner.buffManager.AddBuffById(buffId);
|
||||
}
|
||||
}
|
||||
|
||||
public void LogicUpdate(float dt)
|
||||
{
|
||||
for (var i = 0; i < handles.Count; ++i)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using System.Collections.Generic;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Framework;
|
||||
using Gameplay.Buff;
|
||||
using Gameplay.Bullet;
|
||||
using Gameplay.Common;
|
||||
using Gameplay.Level;
|
||||
|
|
@ -65,10 +66,13 @@ namespace Gameplay.Vehicle.Impl
|
|||
|
||||
_InitFsm();
|
||||
|
||||
EventManager.Instance.Send(EventManager.EventName.INFIGHT_UNIT_READY, this);
|
||||
isReady = true;
|
||||
|
||||
BuffManager.instance.InitVehicle(this);
|
||||
await SkillManager.instance.InitVehicle(this);
|
||||
|
||||
buffManager.TriggerEnterBattle();
|
||||
|
||||
isReady = true;
|
||||
EventManager.Instance.Send(EventManager.EventName.INFIGHT_UNIT_READY, this);
|
||||
}
|
||||
|
||||
private void _InitProps()
|
||||
|
|
|
|||
|
|
@ -64,8 +64,6 @@ namespace Gameplay.Vehicle
|
|||
private void _AddVehicle(NormalVehicle vehicle)
|
||||
{
|
||||
_vehicles.Add(vehicle);
|
||||
|
||||
BuffManager.instance.InitVehicle(vehicle);
|
||||
}
|
||||
|
||||
private void _RegistEvents()
|
||||
|
|
|
|||
|
|
@ -103,6 +103,14 @@ namespace cfg.BuffCfg
|
|||
/// 每X秒回复Y点护甲值
|
||||
/// </summary>
|
||||
LoopRecoverShiled = 22,
|
||||
/// <summary>
|
||||
/// 添加己方全局buff
|
||||
/// </summary>
|
||||
AddSelfSideBuff = 23,
|
||||
/// <summary>
|
||||
/// 移除己方全局buff
|
||||
/// </summary>
|
||||
RemoveSelfSideBuff = 24,
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,10 +23,6 @@ namespace cfg.BuffCfg
|
|||
/// 持续一段时间
|
||||
/// </summary>
|
||||
During = 2,
|
||||
/// <summary>
|
||||
/// 换弹后移除
|
||||
/// </summary>
|
||||
AfterReload = 3,
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,6 +31,14 @@ namespace cfg.BuffCfg
|
|||
/// 换弹时触发
|
||||
/// </summary>
|
||||
ON_RELOAD = 4,
|
||||
/// <summary>
|
||||
/// 上场时触发
|
||||
/// </summary>
|
||||
ON_ENTER_BATTLE = 5,
|
||||
/// <summary>
|
||||
/// 下场时触发
|
||||
/// </summary>
|
||||
ON_EXIT_BATTLE = 6,
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue