Letzte Bugfixes. Wegfindung funktioniert wieder

This commit is contained in:
2014-05-15 21:43:14 +02:00
parent ec6d0d6af0
commit 128adc7282
3 changed files with 22 additions and 22 deletions

View File

@@ -33,8 +33,8 @@ namespace WorldOfPeacecraft
Parse = new Parser (this, receiverBuffer); Parse = new Parser (this, receiverBuffer);
Rec = new Receiver (Client, receiverBuffer); Rec = new Receiver (Client, receiverBuffer);
Send = new Sender (Client, SenderBuffer); Send = new Sender (Client, SenderBuffer);
SenderBuffer.AddLine ("get:me");
SenderBuffer.AddLine ("get:ents"); SenderBuffer.AddLine ("get:ents");
SenderBuffer.AddLine ("get:me");
SenderBuffer.AddLine ("get:map"); SenderBuffer.AddLine ("get:map");
} }
@@ -76,7 +76,11 @@ namespace WorldOfPeacecraft
public Player getPlayer (int playerId) public Player getPlayer (int playerId)
{ {
try {
return Players [playerId]; return Players [playerId];
} catch (KeyNotFoundException e) {
return null;
}
} }
public Dictionary<int, Player> getPlayerList() public Dictionary<int, Player> getPlayerList()
@@ -167,6 +171,7 @@ namespace WorldOfPeacecraft
Pathwalker.Stop(); Pathwalker.Stop();
LinkedList<Coordinate> path = Pathfinder.FindPath (Players [SelfId].Coord, new Coordinate (x, y), Map); LinkedList<Coordinate> path = Pathfinder.FindPath (Players [SelfId].Coord, new Coordinate (x, y), Map);
Pathwalker.SetCoords (path); Pathwalker.SetCoords (path);
MoveStep();
} }
public void MoveStep () public void MoveStep ()

View File

@@ -300,19 +300,20 @@ namespace WorldOfPeacecraft
private void ProcessPlayer (Block playerBlock) private void ProcessPlayer (Block playerBlock)
{ {
int id = MapPlayer(playerBlock).GetId(); Player newPlayer = MapPlayer(playerBlock);
int id = newPlayer.GetId();
if (Backend.getPlayer(id) == null) if (Backend.getPlayer(id) == null)
{ {
lock (Backend) lock (Backend)
{ {
Backend.SetPlayer(MapPlayer(playerBlock)); Backend.SetPlayer(newPlayer);
} }
Backend.RefreshGui();
} }
else else
{ {
MapPlayerUPD(playerBlock); MapPlayerUPD(newPlayer);
} }
Backend.RefreshGui();
} }
@@ -359,9 +360,7 @@ namespace WorldOfPeacecraft
foreach (Block entityBlock in entitiesBlock.GetBlocks ()) { foreach (Block entityBlock in entitiesBlock.GetBlocks ()) {
switch (entityBlock.GetName ()) { switch (entityBlock.GetName ()) {
case MessPlayer: case MessPlayer:
lock (Backend) { ProcessPlayer(entityBlock);
Backend.SetPlayer (MapPlayer (entityBlock));
}
break; break;
case MessDragon: case MessDragon:
Backend.SetDragon (MapDragon (entityBlock)); Backend.SetDragon (MapDragon (entityBlock));
@@ -381,7 +380,7 @@ namespace WorldOfPeacecraft
lock (Backend) { lock (Backend) {
Backend.clearPlayers (); Backend.clearPlayers ();
foreach (Block playerBlock in playersBlock.GetBlocks ()) { foreach (Block playerBlock in playersBlock.GetBlocks ()) {
Backend.SetPlayer (MapPlayer (playerBlock)); ProcessPlayer(playerBlock);
} }
} }
Backend.RefreshGui (); Backend.RefreshGui ();
@@ -417,19 +416,15 @@ namespace WorldOfPeacecraft
return new Player (id, x, y, desc, busy, score); return new Player (id, x, y, desc, busy, score);
} }
private void MapPlayerUPD(Block playerBlock) private void MapPlayerUPD(Player p)
{ {
int id = playerBlock.GetIntValue(ValueId); Player backendPlayer = Backend.getPlayer(p.GetId());
int score = playerBlock.GetIntValue(ValuePoints);
bool busy = playerBlock.GetBoolValue(ValueBusy);
string desc = playerBlock.GetStringValue(ValueDescription);
int x = playerBlock.GetIntValue(ValueX);
int y = playerBlock.GetIntValue(ValueY);
Backend.getPlayer(id).SetScore(score); backendPlayer.SetScore(p.GetScore());
Backend.getPlayer(id).SetDesc(desc); backendPlayer.SetDesc(p.GetName());
Backend.getPlayer(id).SetX(x); backendPlayer.SetBusy(p.GetBusy());
Backend.getPlayer(id).SetY(y); backendPlayer.SetScore(p.GetScore());
backendPlayer.SetPos(p.GetX(), p.GetY());
} }
private Tile MapMapcell (Block cellBlock) private Tile MapMapcell (Block cellBlock)

View File

@@ -33,7 +33,7 @@ namespace WorldOfPeacecraft
if (x != GetX() || y != GetY ()) if (x != GetX() || y != GetY ())
positionChanged = true; positionChanged = true;
base.SetPos (x, y); base.SetPos (x, y);
if (LocationChanged != null) if (positionChanged && LocationChanged != null)
LocationChanged(x, y); LocationChanged(x, y);
} }