public TileGridAction(MouseButton button, MouseModifier mod, GridAction action, TileGridEventHandler callback = null) { this.button = button; this.mod = mod; this.action = action; this.callback = callback; }
public SubTileCollisionEditor() : base() { Width = 2; Height = 2; TileWidth = 8; TileHeight = 8; Scale = 2; // On clicked... TileGridEventHandler callback = delegate(object sender, int index) { // Toggle the collision of the subtile if it uses the // "basic" collision mode (upper nibble is zero). if ((tileset.GetTileCollision(TileIndex) & 0xf0) == 0) { SetBasicCollision(TileIndex, HoveringX, HoveringY, !GetBasicCollision(TileIndex, HoveringX, HoveringY)); } }; base.AddMouseAction(MouseButton.Any, MouseModifier.Any | MouseModifier.Drag, GridAction.Callback, callback); }
// Constructors public SelectionBox() : base() { base.Width = 8; base.Height = 2; base.TileWidth = 18; base.TileHeight = 18; base.TilePaddingX = 2; base.TilePaddingY = 2; base.Selectable = true; base.BackgroundColor = new Cairo.Color(0.8, 0.8, 0.8); base.HoverColor = RoomEditor.ObjectHoverColor; TileGridEventHandler dragCallback = (sender, index) => { if (index != SelectedIndex) { OnMoveSelection(SelectedIndex, index); SelectedIndex = index; } }; base.AddMouseAction(MouseButton.LeftClick, MouseModifier.Any | MouseModifier.Drag, GridAction.Callback, dragCallback); this.ButtonPressEvent += (sender, args) => { if (args.Event.Button == 3) { if (HoveringIndex != -1) { SelectedIndex = HoveringIndex; } ShowPopupMenu(args.Event); } }; }
public void AddMouseAction(MouseButton button, MouseModifier mod, GridAction action, TileGridEventHandler callback = null) { TileGridAction act; if (action == GridAction.Callback) { if (callback == null) { throw new Exception("Need to specify a callback."); } act = new TileGridAction(button, mod, action, callback); } else { if (callback != null) { throw new Exception("This action doesn't take a callback."); } act = new TileGridAction(button, mod, action); } actionList.Add(act); }