2
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
2.5 KiB
C#

using Entitas;
using System.Collections.Generic;
public enum EProperty
{
None,
StunCount,
Speed,
BasicAttack,
BasicStun,
StaggerDefLevel,
ShieldStaggerDefLevel,
Max,
}
public enum EPropertyChangeType
{
Value,
Percent,
}
public class Property
{
public int Value;
public int Percent;
}
[Game]
public class PropertyComponent : IComponent
{
public Dictionary<EProperty, Property> Property = new Dictionary<EProperty, Property>();
}
namespace Game
{
public abstract partial class Util
{
public static void ClearProperty(GameEntity entity)
{
var property = entity.property.Property;
if (property.Count == 0)
{
for (int i = 0; i < (int)EProperty.Max; i++)
{
property[(EProperty)i] = new Property();
}
}
else
{
for (int i = 0; i < (int)EProperty.Max; i++)
{
var p = property[(EProperty)i];
p.Value = 0;
p.Percent = 0;
}
}
}
public static void SetProperty(GameEntity entity, EProperty propertyType, int value)
{
var property = entity.property.Property[propertyType];
property.Value = value;
}
public static int GetProperty(GameEntity entity, EProperty propertyType)
{
var property = entity.property.Property[propertyType];
return (int)(property.Value * (100f + property.Percent) / 100);
}
public static float GetPropertyRate(GameEntity entity, EProperty propertyType)
{
var property = entity.property.Property[propertyType];
return (100f + property.Percent) / 100f;
}
public static bool EntityIsStagger(GameEntity entity)
{
if (!entity.hasProperty)
{
return false;
}
var property = entity.property;
return property.Property[EProperty.StunCount].Value > 0;
}
public static void AddStunCount(int entity, int count)
{
var e = Util.GetEntity(entity);
if (e != null && e.hasProperty)
{
var p = e.property.Property[EProperty.StunCount];
p.Value += 1;
}
}
}
}