public void ShowDelete() { var window = PopupWindow.Create(this, game, "Do you want to delete the current track?", "Delete Track", true, true); window.FindChildByName("Okay", true).Clicked += (o, e) => { game.Track.Stop(); game.Track.ChangeTrack(new Track() { Name = "untitled" }); game.Invalidate(); window.Close(); }; window.FindChildByName("Cancel", true).Clicked += (o, e) => { window.Close(); }; }
private void loadbtn_Clicked(ControlBase sender, ClickedEventArgs arguments) { var window = (WindowControl)sender.Parent.Parent; var tv = (TreeControl)window.FindChildByName("loadtree", true); var en = (List <TreeNode>)tv.SelectedChildren; if (en.Count > 0) { var selected = en[0]; if (selected.UserData is sol_track) { var data = (sol_track)selected.UserData; try { game.EnableSong = false; game.Track.ChangeTrack(TrackLoader.LoadTrack(data)); } catch { window.Close(); var wc = PopupWindow.Create(this, game, "An error occured loading the track.", "Error", true, false); wc.FindChildByName("Okay", true).Clicked += (o, e) => { wc.Close(); }; return; } } else if (selected.UserData is string[]) { var data = (string[])selected.UserData; try { game.EnableSong = false; game.Track.ChangeTrack(TrackLoader.LoadTrackTRK(data[0], data[1])); } catch { window.Close(); var wc = PopupWindow.Create(this, game, "An error occured loading the track. \nIt might be from a newer version.", "Error", true, false); wc.FindChildByName("Okay", true).Clicked += (o, e) => { wc.Close(); }; return; } } game.Track.TrackUpdated(); window.Close(); } }
public void ShowNewTrack() { game.StopTools(); var window = PopupWindow.Create("Do you want to start a new track? Your current progress will not be saved.", "New Track", true, true); window.Dismissed += (o, e) => { if (window.Result == System.Windows.Forms.DialogResult.OK) { game.Track.Stop(); game.Track.ChangeTrack(new Track() { Name = Utils.Constants.DefaultTrackName }); game.Invalidate(); } }; }
public void ExportAsSol() { Dictionary <string, bool> features; using (var trk = game.Track.CreateTrackReader()) { if (trk.GetOldestLine() == null) { return; } features = trk.GetFeatures(); } bool six_one; bool redmultiplier; bool scenerywidth; features.TryGetValue("SIX_ONE", out six_one); features.TryGetValue("REDMULTIPLIER", out redmultiplier); features.TryGetValue("SCENERYWIDTH", out scenerywidth); if (six_one || redmultiplier || scenerywidth) { var window = PopupWindow.Error("Unable to export SOL file due to it containing special LRA specific features.\n" + (six_one ? "\nthe track is based on 6.1, " : "") + (redmultiplier ? "\nthe track uses red multiplier lines, " : "") + (scenerywidth ? "\nthe track uses varying scenery line width " : "") + "\n\nand therefore cannot be loaded"); } else { var window = PopupWindow.Create("Are you sure you wish to save this track as an SOL file? It will overwrite any file with its name. (trackname+savedLines.sol)", "Are you sure?", true, true); window.Dismissed += (o, e) => { if (window.Result == System.Windows.Forms.DialogResult.OK) { using (var track = game.Track.CreateTrackReader()) { track.SaveTrackAsSol(); } } }; } }
public void ExportAsSol() { if (_track.Lines.Count != 0) { var features = TrackLoader.TrackFeatures(_track); bool six_one; bool redmultiplier; bool scenerywidth; features.TryGetValue("SIX_ONE", out six_one); features.TryGetValue("REDMULTIPLIER", out redmultiplier); features.TryGetValue("SCENERY_WIDTH", out scenerywidth); if (six_one || redmultiplier || scenerywidth) { var window = PopupWindow.Create(game.Canvas, game, "Unable to export SOL file due to it containing special LRA specific features,\nspecifically, " + (six_one ? "\nthe track is based on 6.1, " : "") + (redmultiplier ? "\nthe track uses red multiplier lines, " : "") + (scenerywidth ? "\nthe track uses varying scenery line width " : "") + "\nand therefore cannot be loaded", "Error!", true, false); window.FindChildByName("Okay", true).Clicked += (o, e) => { window.Close(); }; } else { var window = PopupWindow.Create(game.Canvas, game, "Are you sure you wish to save this track as an SOL file? It will overwrite any file named savedLines.sol", "Are you sure?", true, true); window.FindChildByName("Okay", true).Clicked += (o, e) => { window.Close(); TrackLoader.SaveTrackSol(_track); game.Canvas.UpdateSaveNodes(); }; window.FindChildByName("Cancel", true).Clicked += (o, e) => { window.Close(); }; } } }
public void ShowOutOfDate() { if (Program.NewVersion == null) { return; } var window = PopupWindow.Create("Would you like to download the latest version?", "Update Available! v" + Program.NewVersion, true, true); window.Dismissed += (o, e) => { if (window.Result == System.Windows.Forms.DialogResult.OK) { try { OpenUrl(@"https://github.com/jealouscloud/linerider-advanced/releases/latest"); } catch { PopupWindow.Error("Unable to open the browser."); } } }; Program.NewVersion = null; }
protected override void OnMouseDown(MouseButtonEventArgs e) { base.OnMouseDown(e); try { InputUtils.UpdateMouse(e.Mouse); if (linerider.IO.TrackRecorder.Recording) { return; } var r = _input.ProcessMouseMessage(e); if (Canvas.GetOpenWindows().Count != 0) { return; } if (!r && !Track.Playing) { bool dragstart = false; if (!Track.Paused && e.Button == MouseButton.Left && OpenTK.Input.Keyboard.GetState()[Key.D]) { var pos = new Vector2d(e.X, e.Y) / Track.Zoom; var gamepos = (ScreenPosition + pos); dragstart = Game.Rider.GetBounds( Track.GetStart()).Contains( gamepos.X, gamepos.Y); if (dragstart) { // 5 is arbitrary, but i assume that's a decent // place to assume the user has done "work" if (!Track.MoveStartWarned && Track.LineCount > 5) { var popup = PopupWindow.Create( "You're about to move the start position of the rider." + " This cannot be undone, and may drastically change how your track plays." + "\nAre you sure you want to do this?", "Warning", true, true); popup.Dismissed += (o, args) => { if (popup.Result == DialogResult.OK) { Track.MoveStartWarned = true; } }; } else { _dragRider = dragstart; } } } if (!_dragRider && !dragstart) { if (e.Button == MouseButton.Left) { if (_handToolOverride) { HandTool.OnMouseDown(new Vector2d(e.X, e.Y)); } else { SelectedTool.OnMouseDown(new Vector2d(e.X, e.Y)); } } else if (e.Button == MouseButton.Right) { if (_handToolOverride) { HandTool.OnMouseRightDown(new Vector2d(e.X, e.Y)); } else { SelectedTool.OnMouseRightDown(new Vector2d(e.X, e.Y)); } } else if (e.Button == MouseButton.Middle) { _handToolOverride = true; HandTool.OnMouseDown(new Vector2d(e.X, e.Y)); } } if (e.Button != MouseButton.Right) { UpdateCursor(); } } else { Cursor = Cursors["default"]; } Invalidate(); } catch (Exception ex) { // SDL2 backend eats exceptions. // we have to manually crash. Program.Crash(ex, true); Close(); } }
internal void InitControls() { if (__controlsInitialized) { throw new Exception("Controls reinitialized"); } var ctrl = new ControlBase(Canvas); ctrl.Name = "buttons"; var pos = 0; Func <Bitmap, Bitmap, string, string, ImageButton> createbutton = delegate(Bitmap bmp, Bitmap bmp2, string tooltip, string name) { var ret = new ImageButton(ctrl) { Name = name }; if (tooltip != null) { ret.SetToolTipText(tooltip); } ret.SetImage(bmp, bmp2); ret.SetSize(32, 32); ret.X = pos; pos += 32; return(ret); }; //Warning: //the name parameter needs to stay consistent for these buttons //other parts of code reference it. var btn = createbutton(GameResources.pencil_icon, GameResources.pencil_icon_white, "Pencil Tool (Q)", "penciltool"); btn.Clicked += (o, e) => { SetTool(Tools.PencilTool); }; btn = createbutton(GameResources.line_icon, GameResources.line_icon_white, "Line Tool (W)", "linetool"); btn.Clicked += (o, e) => { SetTool(Tools.LineTool); }; btn = createbutton(GameResources.eraser_icon, GameResources.eraser_icon_white, "Eraser Tool (E)", "erasertool"); btn.Clicked += (o, e) => { SetTool(Tools.EraserTool); }; btn = createbutton(GameResources.line_adjust_icon, GameResources.line_adjust_icon_white, "Line Adjustment Tool (R)", "lineadjusttool"); btn.Clicked += (o, e) => { SetTool(Tools.LineAdjustTool); }; // btn = createbutton(Content.gwell_tool, Content.gwell_tool, "Gravity Well Tool (T)", // "gwelltool"); // btn.Clicked += (o, e) => { SetTool(Tools.GwellTool); }; btn = createbutton(GameResources.move_icon, GameResources.move_icon_white, "Hand Tool (Space) (T)", "handtool"); btn.Clicked += (o, e) => { SetTool(Tools.HandTool); _handToolOverride = false; }; btn = createbutton(GameResources.play_icon, GameResources.play_icon_white, "Start (Y)", "start"); btn.Clicked += (o, e) => { if (Track.Animating && Track.Paused) { Track.TogglePause(); } else { Track.Start(); } }; pos -= 32; //occupy same space as the start button btn = createbutton(GameResources.pause, GameResources.pause_white, null, "pause"); btn.IsHidden = true; btn.Clicked += (o, e) => { Track.TogglePause(); }; btn = createbutton(GameResources.stop_icon, GameResources.stop_icon_white, "Stop (U)", "stop"); btn.Clicked += (o, e) => { Track.Stop(); }; btn = createbutton(GameResources.flag_icon, GameResources.flag_icon_white, "Flag (I)", "flag"); btn.Clicked += (o, e) => { Track.Flag(); }; btn.RightClicked += (o, e) => { Canvas.CalculateFlag(Track.GetFlag()); }; Canvas.FlagTool = btn; btn = createbutton(GameResources.menu_icon, GameResources.menu_icon_white, "Menu", "menu"); var _menuEdit = new Menu(Canvas); var item = _menuEdit.AddItem("Save"); item.AutoSizeToContents = false; item.Clicked += (snd, evt) => { Canvas.ShowSaveWindow(); }; item = _menuEdit.AddItem("Load"); item.AutoSizeToContents = false; item.Clicked += (snd, evt) => { Canvas.ShowLoadWindow(); }; item = _menuEdit.AddItem("Delete"); item.AutoSizeToContents = false; item.Clicked += (snd, evt) => { Canvas.ShowDelete(); }; item = _menuEdit.AddItem("Preferences"); item.AutoSizeToContents = false; item.Clicked += (snd, msg) => { Canvas.ShowPreferences(); }; item = _menuEdit.AddItem("Song"); item.AutoSizeToContents = false; item.Clicked += (snd, msg) => { Canvas.ShowSongWindow(); }; item = _menuEdit.AddItem("Export SOL"); item.AutoSizeToContents = false; item.Clicked += (snd, msg) => { Track.ExportAsSol(); }; item = _menuEdit.AddItem("Export Video"); item.AutoSizeToContents = false; item.Clicked += (snd, msg) => { if (SafeFrameBuffer.CanRecord) { ExportVideoWindow x = new ExportVideoWindow(Canvas, this); x.Show(); x.SetPosition(RenderSize.Width / 2 - (x.Width / 2), RenderSize.Height / 2 - (x.Height / 2)); } else { var wc = PopupWindow.Create(Canvas, this, "This computer does not support recording.\nTry updating your graphics drivers.", "Error!", true, false); wc.FindChildByName("Okay", true).Clicked += (o, e) => { wc.Close(); }; } }; btn.Clicked += (o, e) => { var canvaspos = ctrl.LocalPosToCanvas(new Point(btn.X, btn.Y)); _menuEdit.MoveTo(canvaspos.X, canvaspos.Y + 32); _menuEdit.Show(); }; _menuEdit.DeleteOnClose = false; _menuEdit.Close(); var cc = new ColorControls(ctrl, new Vector2(0, 32 + 3)); cc.Selected = LineType.Blue; Canvas.ColorControls = cc; ctrl.SizeToChildren(); ctrl.ShouldCacheToTexture = true; ctrl.Position(Pos.CenterH); __controlsInitialized = true; Canvas.ButtonsToggleNightmode(); }