private void GLSurface_DragDrop(object sender, DragEventArgs e) { try { if (!e.Data.GetDataPresent(DataFormats.FileDrop)) { return; } var paths = e.Data.GetData(DataFormats.FileDrop) as string[]; if (paths.Length != 1 || Resource.GetType(paths[0]) != ResourceType.Tile) { return; } var path = ExtraPath.MakeDirectoryRelated(Directory.GetCurrentDirectory(), paths[0]); bool insert = !GLSurface.TileLoaded(path); if (GLSurface.LoadTile(path, path)) { if (insert) { TileComboBox.Items.Add(path); } var pos = GLSurface.AdjustMouse(GLSurface.PointToClient(new Point(e.X, e.Y))); MouseManager.UpdateLocation(pos); int tx = (int)Math.Round(-OffsetX + pos.X + GLSurface.FieldW / 2 - 0.5); int ty = (int)Math.Round(-OffsetY + pos.Y + GLSurface.FieldH / 2 - 0.5); if (GLSurface.GetTile(tx, ty) == null) { GLSurface.PlaceTile(path, tx, ty); } else { GLSurface.PlaceTile(null, tx, ty); } TileComboBox.SelectedItem = path; } } catch (Exception ex) { MessageBox.Show(this, ex.ToString(), "Error: Can not place tile.", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public TileControl(string path) { InitializeComponent(); SolidityNumeric.FixMouseWheel(); LayerNumeric.FixMouseWheel(); SizeNumeric.FixMouseWheel(); FramesCountNumeric.FixMouseWheel(); FrameDelayNumeric.FixMouseWheel(); OffsetXNumeric.FixMouseWheel(); OffsetYNumeric.FixMouseWheel(); TileComboBox.SelectedIndex = 0; MenuTabs = new ToolStripMenuItem[] { new ToolStripMenuItem("Link texture", null, LinkTextureMenuItem_Click, Keys.Control | Keys.I), new ToolStripMenuItem("Link event", null, LinkEventMenuItem_Click, Keys.Control | Keys.Shift | Keys.I), new ToolStripMenuItem("Toggle grid", null, ToggleGridMenuItem_Click, Keys.Control | Keys.G), new ToolStripMenuItem("Background color", null, BackColorMenuItem_Click, Keys.Control | Keys.L), new ToolStripMenuItem("Reset position", null, ResetPositionMenuItem_Click, Keys.Control | Keys.R), }; GLSurface.MakeCurrent(); LoadedResource = new TileResource(path); SolidityNumeric.ValueChanged += (object sender, EventArgs e) => SyncNumericValue(sender, LoadedResource.Solidity, v => LoadedResource.Solidity = v); LayerNumeric.ValueChanged += (object sender, EventArgs e) => { SyncNumericValue(sender, LoadedResource.Layer, v => LoadedResource.Layer = v); GLSurface.ResortTiles(); }; SizeNumeric.ValueChanged += (object sender, EventArgs e) => SyncNumericValue(sender, LoadedResource.PartSize, v => LoadedResource.PartSize = v); FramesCountNumeric.ValueChanged += (object sender, EventArgs e) => SyncNumericValue(sender, LoadedResource.FramesCount, v => LoadedResource.FramesCount = v); FrameDelayNumeric.ValueChanged += (object sender, EventArgs e) => SyncNumericValue(sender, LoadedResource.FrameDelay, v => LoadedResource.FrameDelay = v); OffsetXNumeric.ValueChanged += (object sender, EventArgs e) => SyncNumericValue(sender, LoadedResource.OffsetX, v => LoadedResource.OffsetX = v); OffsetYNumeric.ValueChanged += (object sender, EventArgs e) => SyncNumericValue(sender, LoadedResource.OffsetY, v => LoadedResource.OffsetY = v); TReactionBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxReaction(sender, LoadedResource.Reactions, v => LoadedResource.Reactions = v, TileResource.Reaction.T); TLReactionBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxReaction(sender, LoadedResource.Reactions, v => LoadedResource.Reactions = v, TileResource.Reaction.TL); LReactionBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxReaction(sender, LoadedResource.Reactions, v => LoadedResource.Reactions = v, TileResource.Reaction.L); LDReactionBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxReaction(sender, LoadedResource.Reactions, v => LoadedResource.Reactions = v, TileResource.Reaction.LD); DReactionBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxReaction(sender, LoadedResource.Reactions, v => LoadedResource.Reactions = v, TileResource.Reaction.D); DRReactionBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxReaction(sender, LoadedResource.Reactions, v => LoadedResource.Reactions = v, TileResource.Reaction.DR); RReactionBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxReaction(sender, LoadedResource.Reactions, v => LoadedResource.Reactions = v, TileResource.Reaction.R); RUReactionBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxReaction(sender, LoadedResource.Reactions, v => LoadedResource.Reactions = v, TileResource.Reaction.RT); MReactionBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxReaction(sender, LoadedResource.Reactions, v => LoadedResource.Reactions = v, TileResource.Reaction.M); TAnchorBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxAnchor(sender, LoadedResource.Anchors, v => LoadedResource.Anchors = v, TileResource.Anchor.T); LAnchorBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxAnchor(sender, LoadedResource.Anchors, v => LoadedResource.Anchors = v, TileResource.Anchor.L); DAnchorBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxAnchor(sender, LoadedResource.Anchors, v => LoadedResource.Anchors = v, TileResource.Anchor.D); RAnchorBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxAnchor(sender, LoadedResource.Anchors, v => LoadedResource.Anchors = v, TileResource.Anchor.R); FAnchorBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxAnchor(sender, LoadedResource.Anchors, v => LoadedResource.Anchors = v, TileResource.Anchor.F); BAnchorBox.CheckedChanged += (object sender, EventArgs e) => SyncCheckBoxAnchor(sender, LoadedResource.Anchors, v => LoadedResource.Anchors = v, TileResource.Anchor.B); PropertiesListBox.ItemCheck += (object sender, ItemCheckEventArgs e) => SyncFlags(sender, e, LoadedResource.Properties, v => LoadedResource.Properties = v); Story = new StoryItem <State>(new State(LoadedResource)); Story.ValueChanged += Story_ValueChanged; TextureLinkTextBox.Subresource = LoadedResource.Texture; ResourcePath = path; ResourceName = Path.GetFileName(path); ShapeComboBox.Items.AddRange(Enum.GetNames(typeof(TileResource.Shape))); EventsComboBox.SelectedIndex = 0; ShapeComboBox.SelectedIndex = (int)LoadedResource.Form; for (int i = 0; i < PropertiesListBox.Items.Count; i++) { PropertiesListBox.SetItemChecked(i, LoadedResource[i]); } PropertiesListBox.SelectedIndexChanged += (object sender, EventArgs e) => PropertiesListBox.SelectedIndex = -1; SolidityNumeric.Value = (decimal)LoadedResource.Solidity; LayerNumeric.Value = (decimal)LoadedResource.Layer; SizeNumeric.Value = (decimal)LoadedResource.PartSize; FramesCountNumeric.Value = (decimal)LoadedResource.FramesCount; FrameDelayNumeric.Value = (decimal)LoadedResource.FrameDelay; OffsetXNumeric.Value = (decimal)LoadedResource.OffsetX; OffsetYNumeric.Value = (decimal)LoadedResource.OffsetY; TReactionBox.Checked = LoadedResource.Reactions.HasFlag(TileResource.Reaction.T); TLReactionBox.Checked = LoadedResource.Reactions.HasFlag(TileResource.Reaction.TL); LReactionBox.Checked = LoadedResource.Reactions.HasFlag(TileResource.Reaction.L); LDReactionBox.Checked = LoadedResource.Reactions.HasFlag(TileResource.Reaction.LD); DReactionBox.Checked = LoadedResource.Reactions.HasFlag(TileResource.Reaction.D); DRReactionBox.Checked = LoadedResource.Reactions.HasFlag(TileResource.Reaction.DR); RReactionBox.Checked = LoadedResource.Reactions.HasFlag(TileResource.Reaction.R); RUReactionBox.Checked = LoadedResource.Reactions.HasFlag(TileResource.Reaction.RT); MReactionBox.Checked = LoadedResource.Reactions.HasFlag(TileResource.Reaction.M); TAnchorBox.Checked = LoadedResource.Anchors.HasFlag(TileResource.Anchor.T); LAnchorBox.Checked = LoadedResource.Anchors.HasFlag(TileResource.Anchor.L); DAnchorBox.Checked = LoadedResource.Anchors.HasFlag(TileResource.Anchor.D); RAnchorBox.Checked = LoadedResource.Anchors.HasFlag(TileResource.Anchor.R); FAnchorBox.Checked = LoadedResource.Anchors.HasFlag(TileResource.Anchor.F); BAnchorBox.Checked = LoadedResource.Anchors.HasFlag(TileResource.Anchor.B); GLFrameTimer.Start(); int ox = (int)(GLSurface.FieldW / 2); int oy = (int)(GLSurface.FieldH / 2); GLSurface.LoadTile(LoadedResource, TileName); GLSurface.PlaceTile(TileName, ox + 0, oy + 0); GLSurface.PlaceTile(TileName, ox - 1, oy + 0); GLSurface.PlaceTile(TileName, ox + 1, oy + 0); GLSurface.PlaceTile(TileName, ox + 0, oy - 1); GLSurface.PlaceTile(TileName, ox + 0, oy + 1); GLSurface.BackColor = Color.FromArgb(LoadedResource.BackColor); GLSurface.GridEnabled = LoadedResource.GridEnabled; GetTab("Toggle grid").Checked = LoadedResource.GridEnabled; }