public bool HandleMouseInput(MouseInput mi) { // Exclusively uses left and right mouse buttons, but nothing else if (mi.Button != MouseButton.Left && mi.Button != MouseButton.Right) { return(false); } if (mi.Button == MouseButton.Right) { if (mi.Event == MouseInputEvent.Up) { editorWidget.ClearBrush(); return(true); } return(false); } if (mi.Button == MouseButton.Left && (mi.Event == MouseInputEvent.Up || mi.Event == MouseInputEvent.Down)) { var cell = worldRenderer.Viewport.ViewToWorld(mi.Location); switch (state) { case State.SelectFirst: if (mi.Event != MouseInputEvent.Down) { break; } start = cell; selectionLayer.SetCopyRegion(start, end); state = State.SelectSecond; break; case State.SelectSecond: if (mi.Event != MouseInputEvent.Up) { break; } end = cell; selectionLayer.SetCopyRegion(start, end); state = State.Paste; break; case State.Paste: { var gridType = worldRenderer.World.Map.Grid.Type; var source = CellRegion.BoundingRegion(gridType, new[] { start, end }); Copy(source, cell - end); editorWidget.ClearBrush(); break; } } return(true); } return(false); }
public FrozenUnderFog(ActorInitializer init, FrozenUnderFogInfo info) { // Spawned actors (e.g. building husks) shouldn't be revealed startsRevealed = info.StartsRevealed && !init.Contains <ParentActorInit>(); footprint = FootprintUtils.Tiles(init.self).ToArray(); footprintRegion = CellRegion.BoundingRegion(init.world.Map.TileShape, footprint); tooltip = Exts.Lazy(() => init.self.TraitsImplementing <IToolTip>().FirstOrDefault()); tooltip = Exts.Lazy(() => init.self.TraitsImplementing <IToolTip>().FirstOrDefault()); health = Exts.Lazy(() => init.self.TraitOrDefault <Health>()); frozen = new Dictionary <Player, FrozenActor>(); visible = init.world.Players.ToDictionary(p => p, p => false); }
public void SetPasteRegion(CPos start, CPos end) { PasteRegion = CellRegion.BoundingRegion(map.Grid.Type, new[] { start, end }); }