コード例 #1
0
 public void Execute(TriggerEvent triggerEvent)
 {
     if ((damageData.HasComponent(triggerEvent.EntityA) && takeDamage.HasComponent(triggerEvent.EntityB)) ||
         (damageData.HasComponent(triggerEvent.EntityB) && takeDamage.HasComponent(triggerEvent.EntityA)))
     {
         Entity attacker = damageData.HasComponent(triggerEvent.EntityA) ? triggerEvent.EntityA : triggerEvent.EntityB;
         Entity target   = takeDamage.HasComponent(triggerEvent.EntityA) ? triggerEvent.EntityA : triggerEvent.EntityB;
         if (colorData.HasComponent(triggerEvent.EntityA) && colorData.HasComponent(triggerEvent.EntityB))
         {
             if (colorData[attacker].Value == colorData[target].Value)
             {
                 TakeDamageData takeDamageData = new TakeDamageData {
                     Value = damageData[attacker]
                 };
                 takeDamage[target] = takeDamageData;
             }
         }
         else if (!colorData.HasComponent(triggerEvent.EntityA) && !colorData.HasComponent(triggerEvent.EntityB))
         {
             TakeDamageData takeDamageData = new TakeDamageData {
                 Value = damageData[attacker]
             };
             takeDamage[target] = takeDamageData;
         }
         //destroyData[attacker] = new DestroyData { Value = true };
         if (freeSpot.HasComponent(triggerEvent.EntityA) || freeSpot.HasComponent(triggerEvent.EntityB))
         {
             Entity spot = freeSpot.HasComponent(triggerEvent.EntityA) ? triggerEvent.EntityA : triggerEvent.EntityB;
             freeSpot[spot] = new FreeSpotData {
                 Value = false
             };
         }
     }
 }
コード例 #2
0
    protected override void OnUpdate()
    {
        var EM = EntityManager;

        Entities
        .ForEach((Entity entity, ref TakeDamageData damage, ref Hp hp, ref DestroyData destroy) =>
        {
            if (damage.Value.damage > 0)
            {
                hp.Value -= damage.Value.damage;
                if (hp.Value < 1)
                {
                    destroy.Value = true;
                }
                damage = new TakeDamageData();
            }
        }).Schedule();
    }
コード例 #3
0
 public void Execute(CollisionEvent collisionEvent)
 {
     if ((damageData.HasComponent(collisionEvent.EntityA) && takeDamage.HasComponent(collisionEvent.EntityB)) ||
         (damageData.HasComponent(collisionEvent.EntityB) && takeDamage.HasComponent(collisionEvent.EntityA)))
     {
         Entity attacker;
         Entity target;
         attacker = damageData.HasComponent(collisionEvent.EntityA) ? collisionEvent.EntityA : collisionEvent.EntityB;
         target   = takeDamage.HasComponent(collisionEvent.EntityA) ? collisionEvent.EntityA : collisionEvent.EntityB;
         if (colorData[attacker].Value == colorData[target].Value)
         {
             TakeDamageData takeDamageData = new TakeDamageData {
                 Value = damageData[attacker]
             };
             takeDamage[target] = takeDamageData;
         }
         destroyData[attacker] = new DestroyData {
             Value = true
         };
     }
 }