diff --git a/src/Backend.cs b/src/Backend.cs index cae9716..f78799a 100644 --- a/src/Backend.cs +++ b/src/Backend.cs @@ -41,6 +41,16 @@ namespace Frontend { Players.Remove (player.GetId ()); } + + public void clearPlayers () + { + Players.Clear (); + } + + public void clearDragons () + { + Dragons.Clear (); + } public Player getPlayer (int playerId) { diff --git a/src/Parser.cs b/src/Parser.cs index 0623fd8..99c95d9 100644 --- a/src/Parser.cs +++ b/src/Parser.cs @@ -214,9 +214,26 @@ namespace WorldOfPeacecraft //OK das ist hier so'n bissle der gleiche scheiß wie "Answer" wie soll das gehn, ohne Block!? } - private void ProcessChallenge (Block block) + private void ProcessChallenge (Block challengeBlock) { - + //TODO -> Samed + int id = challengeBlock.GetIntValue("id"); + String type; + switch (challengeBlock.GetStringValue()) + { + case "DRAGON": + type = "Dragon"; + break; + case "STAGHUNT": + type = "Staghunt"; + break; + case "SKIRMISCH": + type = "Skirmisch"; + break; + } + bool accepted = challengeBlock.GetBoolValue("accepted"); + //Challenge c = new Challenge(id, type, accepted); + //CHALLENGE: "begin:challenge","id:",INT,"type:",("DRAGON"|"STAGHUNT"|"SKIRMISH"),"accepted:",BOOLEAN,"end:challenge" } private void ProcessPlayer (Block playerBlock) @@ -229,6 +246,11 @@ namespace WorldOfPeacecraft int y = playerBlock.GetIntValue ("y"); //Player p = new Player(points, id, busy, desc, x, y,); } + + private void ProcessMapcell (Block mapcellBlock) + { + backend.getMapObject().SetTile(MapMapcell(mapcellBlock)); + } private void ProcessYourid (Block yourIdBlock) { @@ -250,18 +272,36 @@ namespace WorldOfPeacecraft //TODO -> Wafa } - private void ProcessEntities (Block block) + private void ProcessEntities (Block entitiesBlock) { - // TODO -> Manu + backend.clearDragons (); + backend.clearPlayers (); + foreach (Block entityBlock in entitiesBlock.GetBlocks ()) { + switch (entityBlock.GetName()) { + case MessPlayer: + backend.SetPlayer(MapPlayer(entityBlock)); + break; + case MessDragon: + backend.SetDragon(MapDragon(entityBlock)); + break; + default: + ThrowUnknownBlockException(entitiesBlock, entityBlock); + break; + } + } } - private void ProcessPlayers (Block block) + private void ProcessPlayers (Block playersBlock) { - // TODO -> Manu + backend.clearPlayers (); + foreach (Block playerBlock in playersBlock.GetBlocks ()) { + backend.SetPlayer(MapPlayer(playerBlock)); + } } - private void ProcessDragon (Block block) + private void ProcessDragon (Block dragonBlock) { + backend.SetDragon(MapDragon(dragonBlock)); } private Dragon MapDragon (Block dragonBlock)