Wegfindung wird jetzt ausgeführt, wenn auf ein Feld auf der Karte geklickt wird

This commit is contained in:
2014-05-07 19:39:18 +02:00
parent 117c9e601c
commit 0e2dbe54dc
5 changed files with 49 additions and 9 deletions

View File

@@ -1,6 +1,6 @@
using System.Net.Sockets;
using System.Collections.Generic;
using WorldOfPeacecraft;
using System.Threading;
namespace WorldOfPeacecraft
{
@@ -16,6 +16,7 @@ namespace WorldOfPeacecraft
private Map Map;
private Buffer SenderBuffer;
private IGui Gui;
private int SelfId;
public Backend (IGui gui)
{
@@ -30,9 +31,15 @@ namespace WorldOfPeacecraft
Rec = new Receiver (Client, receiverBuffer);
Send = new Sender (Client, SenderBuffer);
SenderBuffer.AddLine ("get:map");
SenderBuffer.AddLine ("get:me");
SenderBuffer.AddLine ("get:ents");
}
public void SetSelfId (int id)
{
this.SelfId = id;
}
public IEnumerable<IPositionable> GetDragons ()
{
return Dragons.Values;
@@ -139,6 +146,22 @@ namespace WorldOfPeacecraft
SenderBuffer.AddLine("ask:mv:rgt");
}
public void MoveTo (int x, int y)
{
new Thread(() => WalkTo(x,y)).Start();
}
private void WalkTo (int x, int y)
{
LinkedList<Coordinate> path = Pathfinder.FindPath (Players [SelfId].Coord, new Coordinate (x, y), Map);
Pathwalker walker = new Pathwalker ();
walker.SetCoords (path);
while (walker.HasMoreSteps()) {
SenderBuffer.AddLine("ask:" + walker.NextStep());
Thread.Sleep(500);
}
}
public void RefreshGui()
{
Gui.PerformRefresh();
@@ -157,3 +180,4 @@ namespace WorldOfPeacecraft
}
}
}