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 }; } } }
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(); }
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 }; } }