예제 #1
0
        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);
        }
예제 #2
0
        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 });
 }