private void RemoveOldIslandsFromView(PythonDataEventArgs pythonData) { if (RemoveIslandFromView == null) { return; } var namesOfIslandsCurrentlyDisplayed = _islands.GetAllNames(); var newIslandNames = new HashSet <string>(); foreach (var data in pythonData.ArchipelagoData) { newIslandNames.Add(data.Item1); } newIslandNames.SymmetricExceptWith(namesOfIslandsCurrentlyDisplayed); var oldIslandNames = newIslandNames; foreach (var old in oldIslandNames) { _islands.Delete(old); _branchNames.Remove(old); RemoveIslandFromView(this, new DisplayRemoveDrawableDataEventArgs(old)); } }
private void NewDataReceivedFromPythonScript(object sender, PythonDataEventArgs pythonData) { AddNewIslandsToView(pythonData); RemoveOldIslandsFromView(pythonData); _islands.MoveAll(); // manual tick, so that the label isn't left hanging in the middle of nowhere if the new islands were added or existing ones moved __DisplayTextualDataUpdateTimer_Tick(this, new EventArgs()); }
private void AddNewIslandsToView(PythonDataEventArgs pythonData) { if (AddNewIslandToView == null) { return; } foreach (var data in pythonData.ArchipelagoData) { var branchName = data.Item1; var branchExists = _islands.Contains(branchName); var branchHasBeenDisplayedBefore = branchExists; if (!branchHasBeenDisplayedBefore) { var branch = CreateBranch(branchName); AddNewIslandToView(this, new DisplayAddDrawableDataEventArgs(branch.Name, branch.Shape.Drawables())); } var distance = data.Item2; _islands.SetBranchDistance(branchName, distance); } }