private static MapDelta _handleDelta(string deltaString)
 {
     MapDelta changes = new MapDelta(deltaString);
     playScene.ClearControls();
     playScene.Remove(changes.RemovedTiles);
     playScene.Remove(changes.RemovedCharacters);
     playScene.Add(changes.AddedTiles);
     playScene.Add(changes.AddedCharacters);
     playScene.ManageChanges(changes.ChangedCharacters);
     return changes;
 }
 static void Updater_DoWork(object sender, DoWorkEventArgs e)
 {
     Thread.Sleep(100);
     string result = ServiceConsumer.UpdatePlayScene(DrivingCharacter.AccountName, DrivingCharacter.CharacterName);
     if (String.IsNullOrWhiteSpace(result))
     {
         UpdateResult = null;
     }
     else
     {
         UpdateResult = new MapDelta(result);
     }
 }
 static void playScene_ControlSelected(object Sender, EventArgs e)
 {
     PlaySceneControl ctl = Sender as PlaySceneControl;
     if(ctl.ControlType == PlaySceneControlType.Move)
     {
         playScene.ClearControls();
         PlaySceneControl bl = new PlaySceneControl(playScene.ViewCenterX, playScene.ViewCenterY, playScene.ViewCenterZ, ctl.GetObjectPositionX(), ctl.GetObjectPositionY(), ctl.GetObjectPositionZ(), playScene, playScene.TopDirection, PlaySceneControlType.FaceBottomLeft, 5);
         PlaySceneControl br = new PlaySceneControl(playScene.ViewCenterX, playScene.ViewCenterY, playScene.ViewCenterZ, ctl.GetObjectPositionX(), ctl.GetObjectPositionY(), ctl.GetObjectPositionZ(), playScene, playScene.TopDirection, PlaySceneControlType.FaceBottomRight, 6);
         PlaySceneControl tl = new PlaySceneControl(playScene.ViewCenterX, playScene.ViewCenterY, playScene.ViewCenterZ, ctl.GetObjectPositionX(), ctl.GetObjectPositionY(), ctl.GetObjectPositionZ(), playScene, playScene.TopDirection, PlaySceneControlType.FaceTopLeft, 7);
         PlaySceneControl tr = new PlaySceneControl(playScene.ViewCenterX, playScene.ViewCenterY, playScene.ViewCenterZ, ctl.GetObjectPositionX(), ctl.GetObjectPositionY(), ctl.GetObjectPositionZ(), playScene, playScene.TopDirection, PlaySceneControlType.FaceTopRight, 8);
         bl.ControlSelected += playScene_ControlSelected;
         br.ControlSelected += playScene_ControlSelected;
         tl.ControlSelected += playScene_ControlSelected;
         tr.ControlSelected += playScene_ControlSelected;
         List<PlaySceneControl> ctls = new List<PlaySceneControl>() { bl, br, tl, tr };
         playScene.Add(ctls);
     }
     else if(ctl.ControlType == PlaySceneControlType.FaceBottomLeft)
     {
         Direction facing = Direction.DirectionLess;
         switch(playScene.TopDirection)
         {
             case Direction.NorthWest: facing = Direction.South; break;
             case Direction.SouthWest: facing = Direction.East;  break;
             case Direction.NorthEast: facing = Direction.West;  break;
             case Direction.SouthEast: facing = Direction.North; break;
             default:                  facing = Direction.North; break;
         }
         ctl.Selected = false;
         string resp = ServiceConsumer.MoveCharacter(DrivingCharacter.AccountName, DrivingCharacter.CharacterName, ctl.GetObjectPositionX(), ctl.GetObjectPositionY(), ctl.GetObjectPositionZ(), facing);
         if (!String.IsNullOrEmpty(resp))
         {
             MapDelta changes = new MapDelta(resp);
             playScene.ClearControls();
             playScene.Remove(changes.RemovedTiles);
             playScene.Remove(changes.RemovedCharacters);
             playScene.Add(changes.AddedTiles);
             playScene.Add(changes.AddedCharacters);
             playScene.ManageChanges(changes.ChangedCharacters);
         }
     }
     else if (ctl.ControlType == PlaySceneControlType.FaceBottomRight)
     {
         Direction facing = Direction.DirectionLess;
         switch (playScene.TopDirection)
         {
             case Direction.NorthWest: facing = Direction.East;  break;
             case Direction.SouthWest: facing = Direction.North; break;
             case Direction.NorthEast: facing = Direction.South; break;
             case Direction.SouthEast: facing = Direction.West;  break;
             default: facing = Direction.North; break;
         }
         ctl.Selected = false;
         string resp = ServiceConsumer.MoveCharacter(DrivingCharacter.AccountName, DrivingCharacter.CharacterName, ctl.GetObjectPositionX(), ctl.GetObjectPositionY(), ctl.GetObjectPositionZ(), facing);
         if (!String.IsNullOrEmpty(resp))
         {
             MapDelta changes = new MapDelta(resp);
             playScene.ClearControls();
             playScene.Remove(changes.RemovedTiles);
             playScene.Remove(changes.RemovedCharacters);
             playScene.Add(changes.AddedTiles);
             playScene.Add(changes.AddedCharacters);
             playScene.ManageChanges(changes.ChangedCharacters);
         }
     }
     else if (ctl.ControlType == PlaySceneControlType.FaceTopLeft)
     {
         Direction facing = Direction.DirectionLess;
         switch (playScene.TopDirection)
         {
             case Direction.NorthWest: facing = Direction.West;  break;
             case Direction.SouthWest: facing = Direction.South; break;
             case Direction.NorthEast: facing = Direction.North; break;
             case Direction.SouthEast: facing = Direction.East;  break;
             default: facing = Direction.North; break;
         }
         ctl.Selected = false;
         string resp = ServiceConsumer.MoveCharacter(DrivingCharacter.AccountName, DrivingCharacter.CharacterName, ctl.GetObjectPositionX(), ctl.GetObjectPositionY(), ctl.GetObjectPositionZ(), facing);
         if (!String.IsNullOrEmpty(resp))
         {
             MapDelta changes = new MapDelta(resp);
             playScene.ClearControls();
             playScene.Remove(changes.RemovedTiles);
             playScene.Remove(changes.RemovedCharacters);
             playScene.Add(changes.AddedTiles);
             playScene.Add(changes.AddedCharacters);
             playScene.ManageChanges(changes.ChangedCharacters);
         }
     }
     else if (ctl.ControlType == PlaySceneControlType.FaceTopRight)
     {
         Direction facing = Direction.DirectionLess;
         switch (playScene.TopDirection)
         {
             case Direction.NorthWest: facing = Direction.North; break;
             case Direction.SouthWest: facing = Direction.West; break;
             case Direction.NorthEast: facing = Direction.East; break;
             case Direction.SouthEast: facing = Direction.South; break;
             default: facing = Direction.North; break;
         }
         ctl.Selected = false;
         string resp = ServiceConsumer.MoveCharacter(DrivingCharacter.AccountName, DrivingCharacter.CharacterName, ctl.GetObjectPositionX(), ctl.GetObjectPositionY(), ctl.GetObjectPositionZ(), facing);
         if (!String.IsNullOrEmpty(resp))
         {
             MapDelta changes = new MapDelta(resp);
             playScene.ClearControls();
             playScene.Remove(changes.RemovedTiles);
             playScene.Remove(changes.RemovedCharacters);
             playScene.Add(changes.AddedTiles);
             playScene.Add(changes.AddedCharacters);
             playScene.ManageChanges(changes.ChangedCharacters);
         }
     }
 }