protected override void Initialize()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
Services.AddService(typeof(SpriteBatch), spriteBatch);
grid = new Grid(this, 20) {DrawGridLines = true};
cursor = new MouseCursor(this, spriteBatch, Content.Load<Texture2D>("cursor"));
cursor.LeftClick += (o, e) => HandleLeftButton(e.Position);
cursor.LeftDrag += (o, e) => HandleLeftButton(e.Position);
cursor.RightClick += (o, e) => HandleRightButton(e.Position);
cursor.RightDrag += (o, e) => HandleRightButton(e.Position);
aStar = new AStar(this, grid, new ManhattanDistance());
aStar.PathFound += (o, e) => {
console.WriteLine(String.Format("Heuristic: {0}; Path length: {1}; Total Explored length: {2}", aStar.Heuristic.Name, e.TotalPathLength, e.TotalExplored));
foreach (var cell in e.Path)
{
cell.Type = GridCellType.Path;
}
};
Components.Add(cursor);
gameObjects.Add(grid);
gameObjects.Add(aStar);
var singleStroke = new SingleKeyStroke(this);
singleStroke.KeyDown += (o, e) =>
{
if (console.Opened)
{
return;
}
if (e.Key == Keys.Space)
{
grid.DrawGridLines = !grid.DrawGridLines;
}
if (e.Key == Keys.Enter)
{
grid.Reset();
aStar.Start();
}
};
Components.Add(singleStroke);
console = new GameConsole(this, spriteBatch, new IConsoleCommand[]
{
new DisplayGridlinesCommand(grid),
new ResetGridCommand(grid),
new CellSizeCommand(grid),
new SetHeuristicCommand(aStar),
new FullScreenCommand(graphics)
}, new GameConsoleOptions{Prompt=">", FontColor = Color.GreenYellow});
base.Initialize();
}