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#
		
	
			
		
		
	
	
			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;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|     }
 | |
| } |