42 lines
1.0 KiB
C#
42 lines
1.0 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using BITKit;
|
|
using BITKit.Entities;
|
|
using UnityEngine;
|
|
|
|
namespace Net.Project.B.Buff
|
|
{
|
|
public class UnityBuffService:IDisposable
|
|
{
|
|
private IEntitiesService _entitiesService;
|
|
private readonly ITicker _ticker;
|
|
|
|
public UnityBuffService(IEntitiesService entitiesService, ITicker ticker)
|
|
{
|
|
_entitiesService = entitiesService;
|
|
_ticker = ticker;
|
|
|
|
_ticker.Add(OnTick);
|
|
}
|
|
|
|
private void OnTick(float obj)
|
|
{
|
|
foreach (var buffComponent in _entitiesService.QueryComponents<IBuffComponent>())
|
|
{
|
|
var buffs = buffComponent.Buffs.Span;
|
|
for (var i = 0; i < buffs.Length; i++)
|
|
{
|
|
ref var buff = ref buffs[i];
|
|
buff.Value= Mathf.Max(0, buff.Value - obj/12f);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
_ticker.Remove(OnTick);
|
|
}
|
|
}
|
|
}
|