private void onRoomChanged() { var children = _treeView.Tree.TreeNode.Children; var prevRoom = children.FirstOrDefault(c => c.Text.StartsWith(_roomPrefix, StringComparison.InvariantCulture)); var room = _editor.Game.State.Room?.ID; var newRoom = room == null ? null : _moreRoomsNode.TreeNode.Children.FirstOrDefault(c => c.Text.EndsWith(room, StringComparison.InvariantCulture)); var expander = new NodesExpander(_treeView); prevRoom?.TreeNode.SetParent(_moreRoomsNode.TreeNode); newRoom?.TreeNode.SetParent(_treeView.Tree.TreeNode); //removing and re-adding "more rooms" so that it would be after the current room in the tree view _moreRoomsNode.TreeNode.SetParent(null); _moreRoomsNode.TreeNode.SetParent(_treeView.Tree.TreeNode); expander.Expand(); }
private void onGuiChanged(AGSHashSetChangedEventArgs <IObject> args) { var uiNode = _treeView.Tree.TreeNode.Children.First(c => c.Text == _uiPrefix); var expander = new NodesExpander(_treeView); if (args.ChangeType == ListChangeType.Add) { foreach (var item in args.Items) { addObjectToTree(item, uiNode); } } else { foreach (var item in args.Items) { removeFromTree(item.ID, uiNode); } } expander.Expand(); }
private void onRoomAreasChanged(AGSListChangedEventArgs <IArea> args) { var roomNode = _findRoom(Room); var expander = new NodesExpander(_treeView); var areas = roomNode.TreeNode.Children.First(c => c.Text == _areasPrefix); if (args.ChangeType == ListChangeType.Add) { foreach (var area in args.Items) { _addAreaToTree(area.Item, areas); } } else { foreach (var area in args.Items) { _removeFromTree(area.Item.ID, areas); } } expander.Expand(); }
private void onRoomObjectsChanged(AGSHashSetChangedEventArgs <IObject> args) { var roomNode = _findRoom(Room); var expander = new NodesExpander(_treeView); var objects = roomNode.TreeNode.Children.First(c => c.Text == _objectsPrefix); if (args.ChangeType == ListChangeType.Add) { foreach (var obj in args.Items) { _addObjToTree(obj, objects); } } else { foreach (var obj in args.Items) { _removeFromTree(obj.ID, objects); } } expander.Expand(); }
private void onRoomsChanged(AGSListChangedEventArgs <IRoom> args) { var expander = new NodesExpander(_treeView); if (args.ChangeType == ListChangeType.Add) { subscribeRooms(args.Items.Select(i => i.Item)); foreach (var room in args.Items) { addRoomToTree(room.Item, _moreRoomsNode); } } else { unsubscribeRooms(args.Items.Select(i => i.Item)); foreach (var room in args.Items) { var roomNode = findRoom(room.Item); roomNode?.TreeNode.SetParent(null); } } expander.Expand(); }