private void AddBaseLayerControl(BaseLayerItem layer) { propertiesPanel.Controls.Clear(); Control ctrl = new Control(); CommonPropertyCtrl commCtrl = new CommonPropertyCtrl(); commCtrl.Dock = DockStyle.Fill; var item = new LayerPropertiesCtrl(layer.Tag, _edSvc); //item.LayerChanged += (s, evt) => { OnResourceChanged(); }; item.LayerChanged += WeakEventHandler.Wrap((s, evt) => OnResourceChanged(), (eh) => item.LayerChanged -= eh); item.Dock = DockStyle.Top; ctrl.Controls.Add(commCtrl); ctrl.Controls.Add(item); ctrl.Dock = DockStyle.Fill; propertiesPanel.Controls.Add(ctrl); commCtrl.SelectedObject = new Maestro.Editors.MapDefinition.MapLayersSectionCtrl.BaseLayerItemDesigner(layer); }
public override bool Place(BaseLayerItem item) { int posX = Player.tileTargetX; int posY = Player.tileTargetY; if (!ContainsKey(posX, posY)) { Duct element = new Duct { Position = new Point16(posX, posY), Frame = Point16.Zero, Layer = this }; data.Add(new Point16(posX, posY), element); element.UpdateFrame(); foreach (Duct neighbor in element.GetVisualNeighbors()) { neighbor.UpdateFrame(); } element.OnPlace(item); return(true); } return(false); }
private void RemoveSelectedTiledLayerItem(BaseLayerItem layer) { var grp = layer.Parent; grp.RemoveBaseMapLayer(layer.Tag); propertiesPanel.Controls.Clear(); _tiledLayerModel.Invalidate(); }
private void RestoreBaseLayerSelection(BaseLayerItem item) { //The node tag will probably be different, but the wrapped //instance is what we're checking for var it = RestoreSelection <BaseLayerItem>(trvBaseLayers, (tag) => { return(tag.Tag == item.Tag); }); if (it != null) { OnBaseLayerItemSelected(it); } }
private void OnBaseLayerItemSelected(BaseLayerItem layer) { btnRemoveBaseLayer.Enabled = true; btnMoveBaseLayerDown.Enabled = true; btnMoveBaseLayerUp.Enabled = true; //var item = new LayerPropertiesCtrl(layer.Tag, _edSvc.ResourceService, _edSvc); //item.LayerChanged += (s, evt) => { OnResourceChanged(); }; //item.Dock = DockStyle.Fill; AddBaseLayerControl(layer); }
public override void OnPlace(BaseLayerItem item) { if (item is BaseDuct d) { Tier = d.Tier; switch (Tier) { case DuctTier.Basic: Speed = 20; break; case DuctTier.Advanced: Speed = 12; break; case DuctTier.Elite: Speed = 5; break; } } List <RoutedNetwork> networks = GetNeighbors().Select(duct => duct.Network).Distinct().ToList(); RoutedNetwork network = new RoutedNetwork { Tiles = networks.SelectMany(routedNetwork => routedNetwork.Tiles).Concat(this).ToList(), NetworkItems = networks.SelectMany(routedNetwork => routedNetwork.NetworkItems).ToList() }; foreach (Duct duct in network.Tiles) { RoutedNetwork.Networks.Remove(duct.Network); duct.Network = network; } foreach (Duct duct in network.Tiles) { if ((duct.frame & 1) != 0 && (duct.frame & 16) != 0 && (duct.frame & 4) == 0 && (duct.frame & 64) == 0) { duct.isNode = false; } else if ((duct.frame & 1) == 0 && (duct.frame & 16) == 0 && (duct.frame & 4) != 0 && (duct.frame & 64) != 0) { duct.isNode = false; } else { duct.isNode = true; } } }
private void trvBaseLayers_DragDrop(object sender, DragEventArgs e) { var rids = e.Data.GetData(typeof(RepositoryHandle[])) as RepositoryHandle[]; var data = e.Data.GetData(typeof(TreeNodeAdv[])) as TreeNodeAdv[]; if (rids != null && rids.Length > 0) { int added = 0; var node = trvBaseLayers.GetNodeAt(trvBaseLayers.PointToClient(new Point(e.X, e.Y))); IBaseMapGroup group = null; if (node != null && node.Tag is BaseLayerGroupItem) { group = ((BaseLayerGroupItem)node.Tag).Tag; } //No group? Let's make one! if (group == null) { group = _tsd.AddBaseLayerGroup(GenerateBaseGroupName(_tsd)); } IBaseMapLayer focusLayer = null; foreach (var rid in rids) { if (rid.ResourceId.ResourceType == ResourceTypes.LayerDefinition.ToString()) { focusLayer = group.AddLayer(GenerateBaseLayerName(rid.ResourceId.ToString(), _tsd), rid.ResourceId.ToString()); added++; } } if (added > 0) { _tiledLayerModel.Invalidate(); if (focusLayer != null) { RestoreBaseLayerSelection(focusLayer); } } } else if (data != null && data.Length == 1) { var li = data[0].Tag as BaseLayerItem; if (li != null) { IBaseMapLayer sourceLayer = li.Tag; IBaseMapLayer targetLayer = null; IBaseMapGroup targetGroup = null; var node = trvBaseLayers.GetNodeAt(trvBaseLayers.PointToClient(new Point(e.X, e.Y))); BaseLayerItem tli = null; if (node != null) { tli = node.Tag as BaseLayerItem; var tlg = node.Tag as BaseLayerGroupItem; if (tli != null) { targetLayer = tli.Tag; } else if (tlg != null) { targetGroup = tlg.Tag; } } if (sourceLayer != null && targetGroup != null && targetGroup.GetIndex(sourceLayer) < 0) //Dropping to a different base layer group { var srcGroup = _tsd.GetGroupForLayer(sourceLayer); srcGroup.RemoveBaseMapLayer(sourceLayer); targetGroup.InsertLayer(0, sourceLayer); _tiledLayerModel.Invalidate(); //Keep group expanded if (tli != null) { RestoreBaseLayerSelection(sourceLayer); } } else if (sourceLayer != null && targetLayer != null && sourceLayer != targetLayer) { var srcGroup = _tsd.GetGroupForLayer(sourceLayer); var dstGroup = _tsd.GetGroupForLayer(targetLayer); if (srcGroup != null) { if (srcGroup == dstGroup) { int idx = srcGroup.GetIndex(targetLayer); if (idx >= 0) { srcGroup.RemoveBaseMapLayer(sourceLayer); srcGroup.InsertLayer(idx, sourceLayer); _tiledLayerModel.Invalidate(); //Keep group expanded if (tli != null) { RestoreBaseLayerSelection(sourceLayer); } } } else { srcGroup.RemoveBaseMapLayer(sourceLayer); dstGroup.InsertLayer(0, targetLayer); _tiledLayerModel.Invalidate(); //Keep group expanded if (tli != null) { RestoreBaseLayerSelection(targetLayer); } } } } } } }