private void CreateUIComponents() { SpriteBatch sb = batchService.GetSpriteBatch(DebuggingOutputComponent.SpriteBatchName); // Where all the magic happens: tileSelector = new TileSelector(this, sb, new RectangleF(40, 0, 600, 480), world.interactiveLayers.Values.First<TileMapLayer>(), inputMonitor); tileSelector.DrawOrder = 0; this.Components.Add(tileSelector); this.subTextureSelectors = new List<SubTextureSelector>(); for (int i = 0; i < world.Map.LayerCount; ++i) { for (int j = 0; j < world.Map.SubLayerCount; ++j) { int index = i * world.Map.SubLayerCount + j; SubTextureSelector subTexSel = new SubTextureSelector(this, sb, TileSelector, i, j); tileSelector.TilePropertyComponents.Add(subTexSel); subTexSel.DrawOrder = 25; this.Components.Add(subTexSel); SubTextureSelectors.Add(subTexSel); } } this.worldObjectMovers = new List<WorldObjectMover>(); foreach (WorldObject wo in World.WorldObjects) { WorldObjectMover wom = new WorldObjectMover(this, sb, wo); WorldObjectMovers.Add(wom); this.Components.Add(wom); } RectangleF tmp = ((SubTextureSelector)tileSelector.TilePropertyComponents.Last<ITilePropertyComponent>()).Bounds; tmp.Y += 20 + world.Map.TileHeight; this.edgeToggler = new EdgeToggler(this, sb, tmp, TileSelector); EdgeToggler.DrawOrder = 25; TileSelector.TilePropertyComponents.Add(EdgeToggler); this.Components.Add(EdgeToggler); tmp.Y += 20 + world.Map.TileHeight; this.destructableToggler = new DestructableToggler(this, sb, tmp, TileSelector); DestructableToggler.DrawOrder = 25; TileSelector.TilePropertyComponents.Add(DestructableToggler); this.Components.Add(DestructableToggler); SaveButton saveButton = new SaveButton(this, sb, new RectangleF(5, 400, 30, 15), World); saveButton.DrawOrder = 20; this.Components.Add(saveButton); worldObjectPlacer = new WorldObjectPlacer(this, sb, new RectangleF(40, 0, 600, 480), World); worldObjectPlacer.DrawOrder = 25; this.Components.Add(worldObjectPlacer); playerMover = new WorldObjectMover(this, sb, World.Player); this.Components.Add(playerMover); }
protected override void OnMouseClick(int button) { switch (button) { case 0: // Left click, place a new WorldObject. object[] woParams = new object[]{World, World.SpriteBatch, Mouse.WorldPosition}; WorldObject wo = (WorldObject)World.WorldObjectCtorInfos[index].Invoke(woParams); //wo.Initialize(); world.AddWorldObject(wo); WorldObjectMover wom = new WorldObjectMover(EditorScreen, SpriteBatch, wo); EditorScreen.WorldObjectMovers.Add(wom); ParentScreen.Components.Add(wom); break; } base.OnMouseClick(button); }