public char[][] GetCurrentViewWithLight(WorldSystem.WorldSystem world) { char[][] view = new char[width][]; for (int i = 0; i < width; i++) { view[i] = new char[width]; for (int j = 0; j < width; j++) { view[i][j] = ' '; } } int yOffSet = position.YCoord - width / 2; int xOffSet = position.XCoord - width / 2; var yInLocalCoords = yOffSet - world.TopLeftCorner.YCoord; var xInLocalCoords = xOffSet - world.TopLeftCorner.XCoord; for (int y = 0; y < width; y++) { for (int x = 0; x < width; x++) { if (visionSystem.VisionMask[yInLocalCoords + y][xInLocalCoords + x] != 0) { var entitiesToBeVisualizedAtPos = world.LocalMap[yInLocalCoords + y][xInLocalCoords + x] .FirstOrDefault(e => e.HasComponent(typeof(VisualizationComponent))); if (entitiesToBeVisualizedAtPos == null) { view[y][x] = '?'; } else { var visualization = entitiesToBeVisualizedAtPos.GetComponent( typeof(VisualizationComponent)) as VisualizationComponent; view[y][x] = visualization.AsChar; } if (visionSystem.VisionMask[yInLocalCoords + y][xInLocalCoords + x] == 2) { view[y][x] = ' '; } } } } return(view); }
public MovementSystem(WorldSystem.WorldSystem world, TimeTrackingSystem timeTrackingSystem) { this._worldSystem = world; this._timeTrackingSystem = timeTrackingSystem; }