using Microsoft.Xna.Framework;
using MonoGame.Extended;
using MonoGame.Extended.Entities;
using MonoGame.Extended.Entities.Systems;
using Platformer.Collisions;
using Platformer.Components;
namespace Platformer.Systems
{
public class EnemySystem : EntityProcessingSystem
{
public EnemySystem()
: base(Aspect.All(typeof(Body), typeof(Enemy)))
{
}
private ComponentMapper
_bodyMapper;
private ComponentMapper _enemyMapper;
public override void Initialize(IComponentMapperService mapperService)
{
_enemyMapper = mapperService.GetMapper();
_bodyMapper = mapperService.GetMapper();
}
public override void Process(GameTime gameTime, int entityId)
{
var elapsedSeconds = gameTime.GetElapsedSeconds();
var body = _bodyMapper.Get(entityId);
var enemy = _enemyMapper.Get(entityId);
enemy.TimeLeft -= elapsedSeconds;
if (enemy.TimeLeft <= 0)
{
enemy.Speed = -enemy.Speed;
enemy.TimeLeft = 1.0f;
}
body.Position = body.Position.Translate(enemy.Speed * elapsedSeconds, 0);
}
}
}