public override void Init(Game game) { Game = (RogueskivGame)game; BoardComp = Game.Entities.GetSingleComponent <BoardComp>(); var player = Game .Entities .GetWithComponent <PlayerComp>() .Single(); PlayerId = player.Id; PlayerPosComp = player.GetComponent <CurrentPositionComp>(); PlayerHealthComp = player.GetComponent <HealthComp>(); PlayerMovementComp = player.GetComponent <MovementComp>(); }
private static List <(Point tilePos, int distance)> GetDistancesFrom( BoardComp boardComp, Point initialTile ) { var currentDistance = 0; var visitingTiles = new List <Point> { initialTile }; var measuredTiles = new List <(Point tilePos, int distance)>() { (initialTile, currentDistance) }; var pendingTiles = boardComp .TileIdByTilePos .Keys .Where(tilePos => tilePos != initialTile) .ToList(); while (pendingTiles.Count > 0) { currentDistance++; visitingTiles = visitingTiles .SelectMany(tilePos => NeighbourTilePositions .Select(neighbour => tilePos.Add(neighbour)) ) .Distinct() .Where(neighbourId => pendingTiles.Contains(neighbourId)) .ToList(); measuredTiles.AddRange( visitingTiles.Select(neighbourTilePos => ( tilePos: neighbourTilePos, distance: currentDistance )) ); visitingTiles.ForEach(tilePos => pendingTiles.Remove(tilePos)); } return(measuredTiles); }
private List <IComponent> CreateEnemy( Range <float> enemySpeedRange, BoardComp boardComp, List <(Point tilePos, int distance)> tilePositionsAndDistances,
public override void Init(Game game) { base.Init(game); FOVComp = game.Entities.GetSingleComponent <FOVComp>(); BoardComp = game.Entities.GetSingleComponent <BoardComp>(); }
public override void Init(Game game) { Game = (RogueskivGame)game; BoardComp = game.Entities.GetSingleComponent <BoardComp>(); }