Wegfindung wird jetzt ausgeführt, wenn auf ein Feld auf der Karte geklickt wird
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user