protected override void OnExecuteEvent(VEntity entity) { MovementEvent moveEvent = VEntityComponentSystemManager.GetVComponent <MovementEvent>(entity); PositionTrackSystem positionTrackSystem = ecsManager.GetSystem <PositionTrackSystem>(); // check to make sure that the square is unoccupied bool isUnoccupied = true; foreach (VEntity v in positionTrackSystem.GetAtCoord(moveEvent.targetCoord)) { if (VEntityComponentSystemManager.HasVComponent <MovementBlockComponent>(v)) { isUnoccupied = false; } } if (isUnoccupied) { PositionComponent movedPosition = ecsManager.GetVComponent <PositionComponent>(moveEvent.sourceId); Coord prevPosition = movedPosition.position; movedPosition.position = moveEvent.targetCoord; positionTrackSystem.Update(movedPosition.position, moveEvent.sourceId); ecsManager.QueueAnimationEvent(ecsManager.CreateEntity("MoveAnim", component: new MovementAnimationEvent { entityToMove = moveEvent.sourceId, from = prevPosition, to = moveEvent.targetCoord })); } }
public VEntity GetCellAtCoord(Coord c) { PositionTrackSystem positionTracker = ecsManager.GetSystem <PositionTrackSystem>(); IEnumerable <VEntity> entitiesAtCoord = positionTracker.GetAtCoord(c); foreach (VEntity v in entitiesAtCoord) { if (v.HasVComponent <TerrainCellComponent>()) { return(v); } } return(null); }