Ejemplo n.º 1
0
        public void Removing_an_island_and_getting_all_island_names_does_not_include_the_removed_island_in_the_list()
        {
            // Given
            var unused             = 0.0;
            var width              = 1000;
            var height             = 2000;
            var viewControlData    = new ViewControlData(unused, unused, unused, width, height);
            var releaseBranchName  = "ReleaseBranch";
            var unusedColour       = Color.FromRgb(255, 255, 255);
            var releaseArchipelago = new Branch(releaseBranchName, unusedColour);

            Islands islands = new Islands(viewControlData, releaseArchipelago);
            var     branch1 = new Branch("one", unusedColour);
            var     branch2 = new Branch("island-to-delete", unusedColour);
            var     branch3 = new Branch("three", unusedColour);

            islands.Add(branch1);
            islands.Add(branch2);
            islands.Add(branch3);

            islands.Delete("island-to-delete");

            // When
            var nameList = islands.GetAllNames();

            // Then
            var expectedCount = 2;
            var actualCount   = nameList.Count;

            Assert.AreEqual(expectedCount, actualCount);

            var islandToDeleteIsInTheList = nameList.Contains("island-to-delete");

            Assert.IsFalse(islandToDeleteIsInTheList);
        }
Ejemplo n.º 2
0
        public void An_island_does_not_exist_if_it_has_been_deleted()
        {
            // Given
            var unused             = 0.0;
            var width              = 1000;
            var height             = 2000;
            var viewControlData    = new ViewControlData(unused, unused, unused, width, height);
            var releaseBranchName  = "ReleaseBranch";
            var unusedColour       = Color.FromRgb(255, 255, 255);
            var releaseArchipelago = new Branch(releaseBranchName, unusedColour);

            Islands islands = new Islands(viewControlData, releaseArchipelago);

            var branch  = new Branch("existingBranch", unusedColour);
            var branch2 = new Branch("branch-to-delete", unusedColour);
            var branch3 = new Branch("anotherBranch", unusedColour);

            islands.Add(branch);
            islands.Add(branch2);
            islands.Add(branch3);

            // When
            islands.Delete("branch-to-delete");

            // Then
            var islandExists = islands.Contains("branch-to-delete");

            Assert.IsFalse(islandExists);
        }
Ejemplo n.º 3
0
        public void Highlighting_a_branch_that_does_exist_highlights_only_that_branch()
        {
            // Given
            var unused             = 0.0;
            var width              = 1000;
            var height             = 2000;
            var viewControlData    = new ViewControlData(unused, unused, unused, width, height);
            var releaseBranchName  = "ReleaseBranch";
            var unusedColour       = Color.FromRgb(255, 255, 255);
            var releaseArchipelago = new Branch(releaseBranchName, unusedColour);

            Islands islands = new Islands(viewControlData, releaseArchipelago);

            var branch  = new Branch("existingBranch", unusedColour);
            var branch2 = new Branch("anotherBranch", unusedColour);

            // this is a bit of a kludge, really, we should be mocking
            double[] islandStrokeThicknessesBeforeHighlighting =
            {
                branch.Shape.MainIslandShape.Shape.StrokeThickness,
                releaseArchipelago.Shape.MainIslandShape.Shape.StrokeThickness,
                branch2.Shape.MainIslandShape.Shape.StrokeThickness
            };

            islands.Add(branch);
            islands.Add(branch2);

            // When
            islands.Highlight("existingBranch");

            // Then
            Assert.AreNotEqual(islandStrokeThicknessesBeforeHighlighting[0], branch.Shape.MainIslandShape.Shape.StrokeThickness);
            Assert.AreEqual(islandStrokeThicknessesBeforeHighlighting[1], releaseArchipelago.Shape.MainIslandShape.Shape.StrokeThickness);
            Assert.AreEqual(islandStrokeThicknessesBeforeHighlighting[2], branch2.Shape.MainIslandShape.Shape.StrokeThickness);
        }
Ejemplo n.º 4
0
        public void Moving_multiple_islands_with_distances_set_does_not_set_their_positions_to_be_the_same()
        {
            // Given
            var unused             = 0.0;
            var width              = 1000;
            var height             = 2000;
            var viewControlData    = new ViewControlData(unused, unused, unused, width, height);
            var releaseBranchName  = "ReleaseBranch";
            var unusedColour       = Color.FromRgb(255, 255, 255);
            var releaseArchipelago = new Branch(releaseBranchName, unusedColour);

            Islands islands = new Islands(viewControlData, releaseArchipelago);

            var newBranchOne   = new Branch("bob", unusedColour);
            var newBranchTwo   = new Branch("ben", unusedColour);
            var newBranchThree = new Branch("bill", unusedColour);

            newBranchOne.Distance   = 10;
            newBranchTwo.Distance   = 20;
            newBranchThree.Distance = 30;

            islands.Add(newBranchOne);
            islands.Add(newBranchTwo);
            islands.Add(newBranchThree);

            // When
            islands.MoveAll();

            // Then
            List <Branch> islandArray = new List <Branch>(new Branch[]
            {
                newBranchOne,
                newBranchTwo,
                newBranchThree
            }
                                                          );

            foreach (var island in islandArray)
            {
                var otherIslands = islandArray.Where(b => b != island);

                foreach (var comparingIsland in otherIslands)
                {
                    Assert.AreNotEqual(comparingIsland.Shape.CentrePoint.X, island.Shape.CentrePoint.X);
                    Assert.AreNotEqual(comparingIsland.Shape.CentrePoint.Y, island.Shape.CentrePoint.Y);
                }
            }
        }
Ejemplo n.º 5
0
        public void Moving_multiple_branches_to_the_collision_free_location_instead_of_a_rotated_location_when_there_are_collisions()
        {
            // Given
            CreateMockFactory();
            var collisionFreeLocation = new System.Windows.Point(999, 999);

            _mockCollisionDetector.Setup(m => m.GetNearestFreeLocation(It.IsAny <IslandShape>(),
                                                                       It.IsAny <IslandShape>())).Returns(collisionFreeLocation);

            var unused             = 0.0;
            var width              = 1000;
            var height             = 2000;
            var viewControlData    = new ViewControlData(unused, unused, unused, width, height);
            var releaseBranchName  = "ReleaseBranch";
            var unusedColour       = Color.FromRgb(255, 255, 255);
            var releaseArchipelago = new Branch(releaseBranchName, unusedColour);

            Islands islands = new Islands(viewControlData, releaseArchipelago);

            var branch1 = new Branch("mr 1", unusedColour);
            var branch2 = new Branch("mr 2", unusedColour);
            var branch3 = new Branch("mr 3", unusedColour);

            branch1.Distance = 50;
            branch2.Distance = 50;
            branch3.Distance = 50;

            islands.Add(branch1);
            islands.Add(branch2);
            islands.Add(branch3);

            // When
            islands.MoveAll();

            // Then
            var branchCentre = branch1.Shape.CentrePoint;

            Assert.AreEqual(collisionFreeLocation.X, branchCentre.X);
            Assert.AreEqual(collisionFreeLocation.Y, branchCentre.Y);

            branchCentre = branch2.Shape.CentrePoint;
            Assert.AreEqual(collisionFreeLocation.X, branchCentre.X);
            Assert.AreEqual(collisionFreeLocation.Y, branchCentre.Y);

            branchCentre = branch3.Shape.CentrePoint;
            Assert.AreEqual(collisionFreeLocation.X, branchCentre.X);
            Assert.AreEqual(collisionFreeLocation.Y, branchCentre.Y);
        }
Ejemplo n.º 6
0
        public void Moving_with_multiple_islands_added_moves_the_islands()
        {
            // Given
            var unused             = 0.0;
            var width              = 100;
            var height             = 200;
            var viewControlData    = new ViewControlData(unused, unused, unused, width, height);
            var releaseBranchName  = "ReleaseBranch";
            var unusedColour       = Color.FromRgb(255, 255, 255);
            var releaseArchipelago = new Branch(releaseBranchName, unusedColour);

            Islands islands = new Islands(viewControlData, releaseArchipelago);

            var newBranchNameOne = "bob";
            var newBranchOne     = new Branch(newBranchNameOne, unusedColour);

            islands.Add(newBranchOne);
            var newBranchNameTwo = "ben";
            var newBranchTwo     = new Branch(newBranchNameTwo, unusedColour);

            islands.Add(newBranchTwo);
            var newBranchNameThree = "bill";
            var newBranchThree     = new Branch(newBranchNameThree, unusedColour);

            islands.Add(newBranchThree);

            Assert.AreEqual(0.0, newBranchOne.Shape.CentrePoint.X);
            Assert.AreEqual(0.0, newBranchOne.Shape.CentrePoint.Y);

            Assert.AreEqual(0.0, newBranchTwo.Shape.CentrePoint.X);
            Assert.AreEqual(0.0, newBranchTwo.Shape.CentrePoint.Y);

            Assert.AreEqual(0.0, newBranchThree.Shape.CentrePoint.X);
            Assert.AreEqual(0.0, newBranchThree.Shape.CentrePoint.Y);

            // When
            islands.MoveAll();

            // Then
            Assert.AreNotEqual(0.0, newBranchOne.Shape.CentrePoint.X);
            Assert.AreNotEqual(0.0, newBranchOne.Shape.CentrePoint.Y);

            Assert.AreNotEqual(0.0, newBranchTwo.Shape.CentrePoint.X);
            Assert.AreNotEqual(0.0, newBranchTwo.Shape.CentrePoint.Y);

            Assert.AreNotEqual(0.0, newBranchThree.Shape.CentrePoint.X);
            Assert.AreNotEqual(0.0, newBranchThree.Shape.CentrePoint.Y);
        }
Ejemplo n.º 7
0
        public void Setting_an_islands_distance()
        {
            // Given
            var unused             = 0.0;
            var width              = 1000;
            var height             = 2000;
            var viewControlData    = new ViewControlData(unused, unused, unused, width, height);
            var releaseBranchName  = "ReleaseBranch";
            var unusedColour       = Color.FromRgb(255, 255, 255);
            var releaseArchipelago = new Branch(releaseBranchName, unusedColour);

            Islands islands = new Islands(viewControlData, releaseArchipelago);

            var branch = new Branch("existingBranch", unusedColour);

            islands.Add(branch);

            var distanceToSet = 123.45;

            islands.SetBranchDistance("existingBranch", distanceToSet);

            // When
            var actualDistance = islands.GetDistance("existingBranch");

            // Then
            var expectedDistance = distanceToSet;

            Assert.AreEqual(expectedDistance, actualDistance);
        }
Ejemplo n.º 8
0
        public void Moving_with_one_island_added_moves_the_island()
        {
            // Given
            var unused             = 0.0;
            var width              = 100;
            var height             = 200;
            var viewControlData    = new ViewControlData(unused, unused, unused, width, height);
            var releaseBranchName  = "ReleaseBranch";
            var unusedColour       = Color.FromRgb(255, 255, 255);
            var releaseArchipelago = new Branch(releaseBranchName, unusedColour);

            Islands islands = new Islands(viewControlData, releaseArchipelago);

            var newBranchName = "bob";
            var newBranch     = new Branch(newBranchName, unusedColour);

            islands.Add(newBranch);

            // the island has never been moved
            Assert.AreEqual(0.0, newBranch.Shape.CentrePoint.X);
            Assert.AreEqual(0.0, newBranch.Shape.CentrePoint.Y);

            // When
            islands.MoveAll();

            // Then
            Assert.AreNotEqual(0.0, newBranch.Shape.CentrePoint.X);
            Assert.AreNotEqual(0.0, newBranch.Shape.CentrePoint.Y);
        }
Ejemplo n.º 9
0
        public void Getting_all_island_names()
        {
            // Given
            var unused             = 0.0;
            var width              = 1000;
            var height             = 2000;
            var viewControlData    = new ViewControlData(unused, unused, unused, width, height);
            var releaseBranchName  = "ReleaseBranch";
            var unusedColour       = Color.FromRgb(255, 255, 255);
            var releaseArchipelago = new Branch(releaseBranchName, unusedColour);

            Islands islands = new Islands(viewControlData, releaseArchipelago);
            var     branch1 = new Branch("one", unusedColour);
            var     branch2 = new Branch("two", unusedColour);
            var     branch3 = new Branch("three", unusedColour);

            islands.Add(branch1);
            islands.Add(branch2);
            islands.Add(branch3);

            // When
            var nameList = islands.GetAllNames();

            // Then
            var expectedCount = 3;
            var actualCount   = nameList.Count;

            Assert.AreEqual(expectedCount, actualCount);

            var branchOneIsInTheList = nameList.Contains("one");

            Assert.IsTrue(branchOneIsInTheList);

            var branchTwoIsInTheList = nameList.Contains("two");

            Assert.IsTrue(branchTwoIsInTheList);

            var branchThreeIsInTheList = nameList.Contains("three");

            Assert.IsTrue(branchThreeIsInTheList);
        }
Ejemplo n.º 10
0
        public void Adding_multiple_islands_make_them_exist_in_the_collection()
        {
            // Given
            var unused             = 0.0;
            var width              = 100;
            var height             = 200;
            var viewControlData    = new ViewControlData(unused, unused, unused, width, height);
            var releaseBranchName  = "ReleaseBranch";
            var unusedColour       = Color.FromRgb(255, 255, 255);
            var releaseArchipelago = new Branch(releaseBranchName, unusedColour);

            Islands islands = new Islands(viewControlData, releaseArchipelago);

            // When
            var newBranchNameOne = "bob";
            var newBranch        = new Branch(newBranchNameOne, unusedColour);

            islands.Add(newBranch);

            var newBranchNameTwo = "ben";

            newBranch = new Branch(newBranchNameTwo, unusedColour);
            islands.Add(newBranch);

            var newBranchNameThree = "bill";

            newBranch = new Branch(newBranchNameThree, unusedColour);
            islands.Add(newBranch);

            // Then
            var exists = islands.Contains(newBranchNameOne);

            Assert.IsTrue(exists);

            exists = islands.Contains(newBranchNameTwo);
            Assert.IsTrue(exists);

            exists = islands.Contains(newBranchNameThree);
            Assert.IsTrue(exists);
        }
Ejemplo n.º 11
0
        public void Highlighting_a_branch_that_does_not_exist_does_not_highlight_any_branches()
        {
            // Given
            var unused             = 0.0;
            var width              = 1000;
            var height             = 2000;
            var viewControlData    = new ViewControlData(unused, unused, unused, width, height);
            var releaseBranchName  = "ReleaseBranch";
            var unusedColour       = Color.FromRgb(255, 255, 255);
            var releaseArchipelago = new Branch(releaseBranchName, unusedColour);

            Islands islands = new Islands(viewControlData, releaseArchipelago);

            var branch = new Branch("existingBranch", unusedColour);

            // this is a bit of a kludge, really, we should be mocking
            double[] islandStrokeThicknessesBeforeHighlighting =
            {
                branch.Shape.MainIslandShape.Shape.StrokeThickness,
                releaseArchipelago.Shape.MainIslandShape.Shape.StrokeThickness
            };

            islands.Add(branch);

            // When
            bool exceptionRaised = false;

            try
            {
                islands.Highlight("name of a branch that does not exist");
            }
            catch (IndexOutOfRangeException)
            {
                exceptionRaised = true;
            }

            // Then
            Assert.IsTrue(exceptionRaised);

            Assert.AreEqual(islandStrokeThicknessesBeforeHighlighting[0], branch.Shape.MainIslandShape.Shape.StrokeThickness);
            Assert.AreEqual(islandStrokeThicknessesBeforeHighlighting[1], releaseArchipelago.Shape.MainIslandShape.Shape.StrokeThickness);
        }
Ejemplo n.º 12
0
        public void Branch_moves_to_rotated_location_when_there_is_no_collision()
        {
            // Given
            CreateMockFactory();

            var unused             = 0.0;
            var width              = 1000;
            var height             = 2000;
            var viewControlData    = new ViewControlData(unused, unused, unused, width, height);
            var releaseBranchName  = "ReleaseBranch";
            var unusedColour       = Color.FromRgb(255, 255, 255);
            var releaseArchipelago = new Branch(releaseBranchName, unusedColour);

            Islands islands = new Islands(viewControlData, releaseArchipelago);

            var branch = new Branch("mr branch", unusedColour);

            branch.Distance = 50;
            islands.Add(branch);

            _mockCollisionDetector.Setup(m => m.GetNearestFreeLocation(It.IsAny <IslandShape>(),
                                                                       It.IsAny <IslandShape>())).Returns(
                (IslandShape possibleCollidingIslandShapeParameterPassedIn,
                 IslandShape releaseArchipelagoIslandShapeParameterPassedIn) =>
                possibleCollidingIslandShapeParameterPassedIn.CentrePoint);           // there is no collision, always returns given location

            // When
            islands.MoveAll();

            // Then
            var expectedRotatedLocation = new System.Windows.Point(
                (branch.Distance * viewControlData.PixelsPerArchipelagoUnitDistance) + viewControlData.CentrePoint.X,
                viewControlData.CentrePoint.Y);
            var branchCentre = branch.Shape.CentrePoint;

            Assert.AreEqual(expectedRotatedLocation.X, branchCentre.X);
            Assert.AreEqual(expectedRotatedLocation.Y, branchCentre.Y);
        }
Ejemplo n.º 13
0
        public void Getting_an_islands_location()
        {
            // Given
            var unused             = 0.0;
            var width              = 1000;
            var height             = 2000;
            var viewControlData    = new ViewControlData(unused, unused, unused, width, height);
            var releaseBranchName  = "ReleaseBranch";
            var unusedColour       = Color.FromRgb(255, 255, 255);
            var releaseArchipelago = new Branch(releaseBranchName, unusedColour);

            Islands islands = new Islands(viewControlData, releaseArchipelago);
            var     branch  = new Branch("existingBranch", unusedColour);

            islands.Add(branch);

            // When
            var actualLocation = islands.GetLocation("existingBranch");

            // Then
            var expectedLocation = branch.Shape.CentrePoint;

            Assert.AreEqual(expectedLocation, actualLocation);
        }
Ejemplo n.º 14
0
        public void Deleting_an_island_that_does_not_exist()
        {
            // Given
            var unused             = 0.0;
            var width              = 1000;
            var height             = 2000;
            var viewControlData    = new ViewControlData(unused, unused, unused, width, height);
            var releaseBranchName  = "ReleaseBranch";
            var unusedColour       = Color.FromRgb(255, 255, 255);
            var releaseArchipelago = new Branch(releaseBranchName, unusedColour);

            Islands islands = new Islands(viewControlData, releaseArchipelago);

            var branch = new Branch("existingBranch", unusedColour);

            islands.Add(branch);

            // When
            bool exceptionRaised = false;

            try
            {
                islands.Delete("branch-that-does-not-exist");
            }
            catch (IndexOutOfRangeException)
            {
                exceptionRaised = true;
            }

            // Then
            Assert.IsTrue(exceptionRaised);

            var islandExists = islands.Contains("branch-that-does-not-exist");

            Assert.IsFalse(islandExists);
        }
Ejemplo n.º 15
0
        public void Moving_four_islands_with_distances_set_moves_each_island_to_a_corner()
        {
            // Given
            var unused             = 0.0;
            var width              = 1000;
            var height             = 2000;
            var viewControlData    = new ViewControlData(unused, unused, unused, width, height);
            var releaseBranchName  = "ReleaseBranch";
            var unusedColour       = Color.FromRgb(255, 255, 255);
            var releaseArchipelago = new Branch(releaseBranchName, unusedColour);

            Islands islands = new Islands(viewControlData, releaseArchipelago);

            var rightBranch  = new Branch("right", unusedColour);
            var bottomBranch = new Branch("bottom", unusedColour);
            var leftBranch   = new Branch("left", unusedColour);
            var topBranch    = new Branch("top", unusedColour);

            rightBranch.Distance  = 50;
            bottomBranch.Distance = 50;
            leftBranch.Distance   = 50;
            topBranch.Distance    = 50;

            // Locations are determinted by the order in which they're added, as we use the index of the
            //      underlying list.

            /*
             *  -------------------
             |        4        |
             |                 |
             |                 |
             | 3      C      1 |
             |                 |
             |                 |
             |        2        |
             |  -------------------
             */
            islands.Add(rightBranch);   // 1
            islands.Add(bottomBranch);  // 2
            islands.Add(leftBranch);    // 3
            islands.Add(topBranch);     // 4

            // When
            islands.MoveAll();

            // Then
            var centre            = viewControlData.CentrePoint;
            var rightBranchCentre = rightBranch.Shape.CentrePoint;

            rightBranchCentre.X = Math.Round(rightBranchCentre.X, 0, MidpointRounding.AwayFromZero);   // There may be some very small inaccuracy
            rightBranchCentre.Y = Math.Round(rightBranchCentre.Y, 0, MidpointRounding.AwayFromZero);   //   when we do the rotation.
            var isOnPositiveXRelativeToCentre = (rightBranchCentre.X > centre.X);
            var isOnEqualYToCentre            = (rightBranchCentre.Y == centre.Y);
            var rightBranchIsOnTheRight       = (isOnPositiveXRelativeToCentre && isOnEqualYToCentre);

            Assert.IsTrue(rightBranchIsOnTheRight, "rightBranchIsOnTheRight");

            var bottomBranchCentre = bottomBranch.Shape.CentrePoint;

            bottomBranchCentre.X = Math.Round(bottomBranchCentre.X, 0, MidpointRounding.AwayFromZero);
            bottomBranchCentre.Y = Math.Round(bottomBranchCentre.Y, 0, MidpointRounding.AwayFromZero);
            var isOnEqualXToCentre            = (bottomBranchCentre.X == centre.X);
            var isOnPositiveYRelativeToCentre = (bottomBranchCentre.Y > centre.Y);
            var bottomBranchIsOnTheBottom     = (isOnEqualXToCentre && isOnPositiveYRelativeToCentre);

            Assert.IsTrue(bottomBranchIsOnTheBottom, "bottomBranchIsOnTheBottom");

            var leftBranchCentre = leftBranch.Shape.CentrePoint;

            leftBranchCentre.X            = Math.Round(leftBranchCentre.X, 0, MidpointRounding.AwayFromZero);
            leftBranchCentre.Y            = Math.Round(leftBranchCentre.Y, 0, MidpointRounding.AwayFromZero);
            isOnPositiveXRelativeToCentre = (leftBranchCentre.X > centre.X);
            isOnEqualYToCentre            = (leftBranchCentre.Y == centre.Y);
            var leftBranchIsOnTheLeft = (!isOnPositiveXRelativeToCentre && isOnEqualYToCentre);

            Assert.IsTrue(leftBranchIsOnTheLeft, "leftBranchIsOnTheLeft");

            var topBranchCentre = topBranch.Shape.CentrePoint;

            topBranchCentre.X  = Math.Round(topBranchCentre.X, 0, MidpointRounding.AwayFromZero);
            topBranchCentre.Y  = Math.Round(topBranchCentre.Y, 0, MidpointRounding.AwayFromZero);
            isOnEqualXToCentre = (topBranchCentre.X == centre.X);
            var isOnNegativeYRelativeToCentre = (topBranchCentre.Y < centre.Y);
            var topBranchIsOnTheTop           = (isOnNegativeYRelativeToCentre && isOnEqualXToCentre);

            Assert.IsTrue(topBranchIsOnTheTop, "topBranchIsOnTheTop");
        }
Ejemplo n.º 16
0
        /// <summary>
        /// 島読み込み
        /// </summary>
        /// <param name="count"></param>
        public static void Load(ref int count)
        {
            try
            {
                Islands.ClearOnScheduler();
                foreach (IslandType type in Enum.GetValues(typeof(IslandType)))
                {
                    var island = new Island(type, World.WorldData);

                    // 実際の座標と画像のピクセル数から画像上の島(エンドポータルフレーム)の位置を計算
                    // 画像のサイズが変わると壊れます()
                    var X = (island.IslandType.GetCoordinate().X + 221) / 512.0;
                    var Z = (island.IslandType.GetCoordinate().Z + 237) / 512.0;

                    // 別ディメンションは特殊な位置なので個別指定
                    switch (island.IslandType)
                    {
                    case IslandType.TheUnderworld:
                        X = 47 / 256.0;
                        Z = 234 / 256.0;
                        break;

                    case IslandType.TheNether:
                        X = 128 / 256.0;
                        Z = 234 / 256.0;
                        break;

                    case IslandType.GulliversLand:
                        X = 183 / 256.0;
                        Z = 234 / 256.0;
                        break;

                    case IslandType.Cloudia:
                        X = 43 / 256.0;
                        Z = 246 / 256.0;
                        break;

                    case IslandType.TableMountain:
                        X = 82 / 256.0;
                        Z = 246 / 256.0;
                        break;

                    case IslandType.TocultColde:
                        X = 157 / 256.0;
                        Z = 246 / 256.0;
                        break;

                    case IslandType.TheEnd:
                        X = 218 / 256.0;
                        Z = 246 / 256.0;
                        break;
                    }

                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        Islands.Add(new IslandPointer()
                        {
                            IslandName = island.IslandType.GetName(),
                            Center     = new Point(X, Z),
                            IsComplete = island.IsComplete
                        });

                        CompletionCount.Value = Islands.Where(x => x.IsComplete).Count();
                        CompletionRate.Value  = (CompletionCount.Value / (double)islandCount) * 100;
                    });

                    World.LoadingProgress.Value = (++count / 297.0) * 100;
                }
            }
            catch
            {
                Reset();
                throw;
            }
        }