// Mouse drag. private void LevelViewer_MouseDrag(object sender, TileViewerMouseEventArgs e) { switch (LayerSelect.SelectedIndex) { case 0: // Navigate // LevelViewerNavigate_MouseDown (e); break; case 5: // Plm layer if (LevelData.MarkerVisible == true && DraggingPlm) { MainProject.GetPlmPosition(out int x, out int y, out int width, out int height); LevelData.SetMarker(x + e.PosTileX - e.TileClickX, y + e.PosTileY - e.TileClickY, width, height); } break; case 6: // Enemy layer if (LevelData.MarkerVisible == true && DraggingEnemy) { MainProject.GetEnemyPosition(out double x, out double y, out double width, out double height); LevelData.SetMarker(x + e.PosX - e.ClickX - width / 2, y + e.PosY - e.ClickY - height / 2, width, height); } break; } }
private void MapEditor_MouseUp(object sender, TileViewerMouseEventArgs e) { if (MapEditRadio.IsChecked == true && e.Button == MouseButton.Left) { MainProject.SetMapTile(e.TileClickX, e.TileClickY, e.PosTileX, e.PosTileY); } }
//======================================================================================== // events // TileSelector Mouse down. private void TileSelector_MouseDown(object sender, TileViewerMouseEventArgs e) { if (e.Button != MouseButton.Left && e.Button != MouseButton.Left) { return; } MainProject.TileIndex = e.TileClickY * 32 + e.TileClickX; }
//======================================================================================== // Event handlers private void RoomSizeEditor_MouseDown(object sender, TileViewerMouseEventArgs e) { if (e.Button == MouseButton.Left && e.TileClickY > 0) { NewPositionX = e.TileClickX; NewPositionY = e.TileClickY; } UpdateSelection(); }
// BtsSelector Mouse down. private void BtsSelector_MouseDown(object sender, TileViewerMouseEventArgs e) { if (e.Button != MouseButton.Left && e.Button != MouseButton.Left) { return; } BtsConvert.TextureIndexToBts(e.TileClickX, e.TileClickY, out int btsType, out int btsValue); MainProject.BtsValue = btsValue; MainProject.BtsType = btsType; }
//---------------------------------------------------------------------------------------- // Level viewer events // Mouse down. private void LevelViewer_MouseDown(object sender, TileViewerMouseEventArgs e) { switch (LayerSelect.SelectedIndex) { case 0: // Navigate // LevelViewerNavigate_MouseDown (e); break; case 5: // PLM layer DraggingPlm = false; if (e.Button == MouseButton.Right) { MainProject.SelectPlmAt(e.TileClickX, e.TileClickY); } if (e.Button == MouseButton.Left) { MainProject.GetPlmPosition(out int x, out int y, out int width, out int height); if (e.TileClickX >= x && e.TileClickX < x + width && e.TileClickY >= y && e.TileClickY < y + height) { DraggingPlm = true; } } break; case 6: // Enemy layer DraggingEnemy = false; if (e.Button == MouseButton.Right) { MainProject.SelectEnemyAt(e.ClickX * 16, e.ClickY * 16); } if (e.Button == MouseButton.Left) { MainProject.GetEnemyPosition(out double x, out double y, out double width, out double height); width /= 2; height /= 2; if (e.ClickX >= x - width && e.ClickX < x + width && e.ClickY >= y - height && e.ClickY < y + height) { DraggingEnemy = true; } } break; case 2: // Properties break; default: break; } }
private void MapEditor_MouseDown(object sender, TileViewerMouseEventArgs e) { if (MapNavigateRadio.IsChecked == true) { if (MainProject.NavigateToMapPosition(e.TileClickX, e.TileClickY - 1, out int screenX, out int screenY)) { ScreenSelected?.Invoke(this, new RoomSelectEventArgs(screenX, screenY)); } } else if (e.Button == MouseButton.Right) { MainProject.SelectMapTile(e.TileClickX, e.TileClickY); } }
// Mouse Up. private void LevelViewer_MouseUp(object sender, TileViewerMouseEventArgs e) { switch (LayerSelect.SelectedIndex) { case 0: // Navigate LevelViewerNavigate_MouseDown(e); break; case 1: // Properties break; default: // Edit LevelViewerEdit_MouseUp(e); break; } DraggingPlm = false; DraggingEnemy = false; }
private void LevelViewerNavigate_MouseDown(TileViewerMouseEventArgs e) { switch (e.Button) { case MouseButton.Left: // Check if door and navigate through there. if (MainProject.NavigateThroughDoor(e.TileClickY, e.TileClickX, out int screenX, out int screenY)) { LevelData.ScrollToScreen(screenX, screenY); } break; case MouseButton.Right: // Check if door and select it in the editor. MainProject.SelectDoorAt(e.TileClickY, e.TileClickX); break; default: break; } }
private void RoomSizeEditor_MouseUp(object sender, TileViewerMouseEventArgs e) { if (e.Button == MouseButton.Left && e.TileClickY > 0) { NewPositionX = Math.Min(e.TileClickX, e.PosTileX); NewPositionY = Math.Min(e.TileClickY, e.PosTileY); NewWidth = Math.Min(Math.Abs(e.PosTileX - e.TileClickX) + 1, 15); NewHeight = Math.Min(Math.Abs(e.PosTileY - e.TileClickY) + 1, 15); double ratio = (double)NewWidth / (double)NewHeight; while (NewWidth * NewHeight > 50) { if (Math.Abs(ratio * (NewHeight - 1) - NewWidth) < Math.Abs(ratio * (NewHeight) - NewWidth + 1)) { NewHeight--; } else { NewWidth--; } } } UpdateSelection(); }
private void Tile_Click(object sender, TileViewerMouseEventArgs e) { DoorCapX = e.TileClickX + (ScreenX << 4); DoorCapY = e.TileClickY + (ScreenY << 4); UpdateDoorCap(); }
private void MapTileSelector_MouseDown(object sender, TileViewerMouseEventArgs e) { MainProject.MapTilePalette = MapPaletteSelect.SelectedIndex; MainProject.MapTileType = 16 * e.TileClickY + e.TileClickX; }
private void LevelViewerEdit_MouseUp(TileViewerMouseEventArgs e) { switch (e.Button) { case MouseButton.Left: // Place tiles in selected area. switch (LayerSelect.SelectedIndex) { case 2: // Layer 1 MainProject.SetLayer1(e.PosTileY, e.PosTileX, e.TileClickY, e.TileClickX); if (TileLayersEditor.LinkBts) { MainProject.SetBts(e.PosTileY, e.PosTileX, e.TileClickY, e.TileClickX); } break; case 3: // Bts MainProject.SetBts(e.PosTileY, e.PosTileX, e.TileClickY, e.TileClickX); break; case 4: // Layer 2 MainProject.SetLayer2(e.PosTileY, e.PosTileX, e.TileClickY, e.TileClickX); break; case 5: // PLMs if (DraggingPlm) { MainProject.SetPlmPositionRelative(e.PosTileX - e.TileClickX, e.PosTileY - e.TileClickY); } break; case 6: // Enemies if (DraggingEnemy) { MainProject.SetEnemyPositionRelative(e.PosX - e.ClickX, e.PosY - e.ClickY); } break; case 7: // Scrolls MainProject.SetScroll(e.PosTileX / 16, e.PosTileY / 16, e.TileClickX / 16, e.TileClickY / 16); break; default: break; } break; case MouseButton.Right: switch (LayerSelect.SelectedIndex) { case 2: // Layer 1 MainProject.SelectLayer1(e.PosTileX, e.PosTileY); if (TileLayersEditor.LinkBts) { MainProject.SelectBts(e.PosTileX, e.PosTileY); } break; case 3: // Bts MainProject.SelectBts(e.PosTileX, e.PosTileY); break; case 4: // Layer 2 MainProject.SelectLayer2(e.PosTileX, e.PosTileY); break; default: break; } break; default: break; } }