private void SetupRedOptions(PropertyTree tree) { if (_ownerline is RedLine red) { var table = tree.Add("Acceleration", 120); var multiplier = new NumberProperty(table) { Min = 1, Max = 255, NumberValue = red.Multiplier, OnlyWholeNumbers = true, }; multiplier.ValueChanged += (o, e) => { ChangeMultiplier((int)multiplier.NumberValue); }; table.Add("Multiplier", multiplier); var multilines = new NumberProperty(table) { Min = 1, Max = 9999, OnlyWholeNumbers = true, }; multilines.NumberValue = GetMultiLines(true).Count; multilines.ValueChanged += (o, e) => { Multiline((int)multilines.NumberValue); }; table.Add("Multilines", multilines); var accelinverse = GwenHelper.AddPropertyCheckbox( table, "Inverse", red.inv ); accelinverse.ValueChanged += (o, e) => { using (var trk = _editor.CreateTrackWriter()) { var multi = GetMultiLines(false); foreach (var l in multi) { var cpy = (StandardLine)l.Clone(); cpy.Position = l.Position2; cpy.Position2 = l.Position; cpy.inv = accelinverse.IsChecked; UpdateLine(trk, l, cpy); } var owner = (StandardLine)_ownerline.Clone(); owner.Position = _ownerline.Position2; owner.Position2 = _ownerline.Position; owner.inv = accelinverse.IsChecked; UpdateOwnerLine(trk, owner); } }; } }
private void Setup() { Dictionary <string, bool> trackfeatures; using (var trk = _editor.CreateTrackReader()) { trackfeatures = trk.GetFeatures(); } TabControl tabs = new TabControl(this) { Dock = Dock.Fill }; var settings = tabs.AddPage("Settings"); var song = tabs.AddPage("Song"); _tree = new PropertyTree(settings) { Dock = Dock.Fill, }; var table = _tree.Add("Settings", 150); NumberProperty startzoom = new NumberProperty(null) { Min = 1, NumberValue = _editor.StartZoom, Max = Constants.MaxZoom, }; startzoom.ValueChanged += (o, e) => { _editor.StartZoom = (float)startzoom.NumberValue; }; table.Add("Start Zoom", startzoom); var zerostart = GwenHelper.AddPropertyCheckbox(table, "Zero Start", _editor.ZeroStart); zerostart.ValueChanged += (o, e) => { _editor.ZeroStart = zerostart.IsChecked; }; table = _tree.Add("Info", 150); // var trackname = table.AddLabel("Track Name", _editor.Name); var physics = table.AddLabel("Physics", CheckFeature(trackfeatures, TrackFeatures.six_one) ? "6.1" : "6.2"); table.AddLabel("Blue Lines", _editor.BlueLines.ToString()); table.AddLabel("Red Lines", _editor.RedLines.ToString()); table.AddLabel("Scenery Lines", _editor.GreenLines.ToString()); table = _tree.Add("Features Used", 150); AddFeature(table, trackfeatures, "Red Multiplier", TrackFeatures.redmultiplier); AddFeature(table, trackfeatures, "Scenery Width", TrackFeatures.scenerywidth); AddFeature(table, trackfeatures, "Line Triggers", TrackFeatures.ignorable_trigger); PopulateSong(song); _tree.ExpandAll(); // table.Add }
private void AddFeature( PropertyTable table, Dictionary <string, bool> features, string name, string feature) { var featureval = CheckFeature(features, feature); var check = GwenHelper.AddPropertyCheckbox( table, name, featureval); check.Disable(); }
private void Setup() { Dictionary <string, bool> trackfeatures; using (var trk = _editor.CreateTrackReader()) { trackfeatures = trk.GetFeatures(); } TabControl tabs = new TabControl(this) { Dock = Dock.Fill }; var settings = tabs.AddPage("Settings"); var song = tabs.AddPage("Song"); _tree = new PropertyTree(settings) { Dock = Dock.Fill, }; var table = _tree.Add("Settings", 150); NumberProperty startzoom = new NumberProperty(null) { Min = 1, NumberValue = _editor.StartZoom, Max = Constants.MaxZoom, }; startzoom.ValueChanged += (o, e) => { _editor.StartZoom = (float)startzoom.NumberValue; }; table.Add("Start Zoom", startzoom); var zerostart = GwenHelper.AddPropertyCheckbox(table, "Zero Start", _editor.ZeroStart); zerostart.ValueChanged += (o, e) => { _editor.ZeroStart = zerostart.IsChecked; }; NumberProperty ygravity = new NumberProperty(null) { Min = float.MinValue + 1, Max = float.MaxValue - 1, }; ygravity.Value = ((float)_editor.YGravity).ToString(); ygravity.ValueChanged += (o, e) => { _editor.YGravity = float.Parse(ygravity.Value); }; table.Add("Y Gravity Multiplier", ygravity); NumberProperty xgravity = new NumberProperty(null) { Min = float.MinValue + 1, Max = float.MaxValue - 1, }; xgravity.Value = ((float)_editor.XGravity).ToString(); xgravity.ValueChanged += (o, e) => { _editor.XGravity = float.Parse(xgravity.Value); }; table.Add("X Gravity Multiplier", xgravity); NumberProperty gravitywellsize = new NumberProperty(null) { Min = 0, Max = double.MaxValue - 1, }; gravitywellsize.Value = ((double)_editor.GravityWellSize).ToString(); gravitywellsize.ValueChanged += (o, e) => { _editor.GravityWellSize = double.Parse(gravitywellsize.Value); }; table.Add("Gravity Well Size", gravitywellsize); //BG COLORS table = _tree.Add("Starting Background Color", 150); NumberProperty startbgred = new NumberProperty(null) { Min = 0, Max = 255 }; startbgred.Value = _editor.StartingBGColorR.ToString(); //Put value out here because putting it in the number property makes it get set to 100 for some reason??? startbgred.ValueChanged += (o, e) => { _editor.StartingBGColorR = int.Parse(startbgred.Value); }; table.Add("Background Red", startbgred); NumberProperty startbggreen = new NumberProperty(null) { Min = 0, Max = 255 }; startbggreen.Value = _editor.StartingBGColorG.ToString(); //Put value out here because putting it in the number property makes it get set to 100 for some reason??? startbggreen.ValueChanged += (o, e) => { _editor.StartingBGColorG = int.Parse(startbggreen.Value); }; table.Add("Background Green", startbggreen); NumberProperty startbgblue = new NumberProperty(null) { Min = 0, Max = 255 }; startbgblue.Value = _editor.StartingBGColorB.ToString(); //Put value out here because putting it in the number property makes it get set to 100 for some reason??? startbgblue.ValueChanged += (o, e) => { _editor.StartingBGColorB = int.Parse(startbgblue.Value); }; table.Add("Background Blue", startbgblue); //LINE COLORS table = _tree.Add("Starting Line Color", 150); NumberProperty startlinered = new NumberProperty(null) { Min = 0, Max = 255 }; startlinered.Value = _editor.StartingLineColorR.ToString(); //Put value out here because putting it in the number property makes it get set to 100 for some reason??? startlinered.ValueChanged += (o, e) => { _editor.StartingLineColorR = int.Parse(startlinered.Value); }; table.Add("Line Red", startlinered); NumberProperty startlinegreen = new NumberProperty(null) { Min = 0, Max = 255 }; startlinegreen.Value = _editor.StartingLineColorG.ToString(); //Put value out here because putting it in the number property makes it get set to 100 for some reason??? startlinegreen.ValueChanged += (o, e) => { _editor.StartingLineColorG = int.Parse(startlinegreen.Value); }; table.Add("Line Green", startlinegreen); NumberProperty startlineblue = new NumberProperty(null) { Min = 0, Max = 255 }; startlineblue.Value = _editor.StartingLineColorB.ToString(); //Put value out here because putting it in the number property makes it get set to 100 for some reason??? startlineblue.ValueChanged += (o, e) => { _editor.StartingLineColorB = int.Parse(startlineblue.Value); }; table.Add("Line Blue", startlineblue); table = _tree.Add("Info", 150); // var trackname = table.AddLabel("Track Name", _editor.Name); var physics = table.AddLabel("Physics", CheckFeature(trackfeatures, TrackFeatures.six_one) ? "6.1" : "6.2"); table.AddLabel("Blue Lines", _editor.BlueLines.ToString()); table.AddLabel("Red Lines", _editor.RedLines.ToString()); table.AddLabel("Scenery Lines", _editor.GreenLines.ToString()); table = _tree.Add("Features Used", 150); AddFeature(table, trackfeatures, "Red Multiplier", TrackFeatures.redmultiplier); AddFeature(table, trackfeatures, "Scenery Width", TrackFeatures.scenerywidth); AddFeature(table, trackfeatures, "Line Triggers", TrackFeatures.ignorable_trigger); table = _tree.Add("Physics Modifiers", 150); var remount = GwenHelper.AddPropertyCheckbox(table, "Remount", _editor.UseRemount); remount.ValueChanged += (o, e) => { _editor.UseRemount = remount.IsChecked; }; PopulateSong(song); _tree.ExpandAll(); // table.Add }
private void SetupTriggers(PropertyTree tree) { if (_ownerline is StandardLine physline) { var table = tree.Add("Triggers", 120); var currenttrigger = physline.Trigger; var triggerenabled = GwenHelper.AddPropertyCheckbox( table, "Enabled", currenttrigger != null); var zoom = new NumberProperty(table) { Min = Constants.MinimumZoom, Max = Constants.MaxZoom, NumberValue = 4 }; table.Add("Target Zoom", zoom); var frames = new NumberProperty(table) { Min = 0, Max = 40 * 60 * 2,//2 minutes is enough for a zoom trigger, you crazy nuts. NumberValue = 40, OnlyWholeNumbers = true, }; if (currenttrigger != null) { zoom.NumberValue = currenttrigger.ZoomTarget; frames.NumberValue = currenttrigger.ZoomFrames; } table.Add("Frames", frames); zoom.ValueChanged += (o, e) => { using (var trk = _editor.CreateTrackWriter()) { trk.DisableExtensionUpdating(); if (triggerenabled.IsChecked) { var cpy = (StandardLine)_ownerline.Clone(); cpy.Trigger.ZoomTarget = (float)zoom.NumberValue; UpdateOwnerLine(trk, cpy); } } }; frames.ValueChanged += (o, e) => { using (var trk = _editor.CreateTrackWriter()) { trk.DisableExtensionUpdating(); if (triggerenabled.IsChecked) { var cpy = (StandardLine)_ownerline.Clone(); cpy.Trigger.ZoomFrames = (int)frames.NumberValue; UpdateOwnerLine(trk, cpy); } } }; triggerenabled.ValueChanged += (o, e) => { using (var trk = _editor.CreateTrackWriter()) { trk.DisableExtensionUpdating(); var cpy = (StandardLine)_ownerline.Clone(); if (triggerenabled.IsChecked) { cpy.Trigger = new LineTrigger() { ZoomTrigger = true, ZoomFrames = (int)frames.NumberValue, ZoomTarget = (float)zoom.NumberValue }; UpdateOwnerLine(trk, cpy); } else { cpy.Trigger = null; UpdateOwnerLine(trk, cpy); } } }; } }
private void SetupRedOptions(PropertyTree tree) { var vec = _ownerline.GetVector(); var len = vec.Length; var angle = Angle.FromVector(vec); angle.Degrees += 90; var lineProp = tree.Add("Line Properties", 120); Console.WriteLine(_ownerline.GetType().ToString()); if (!(_ownerline is SceneryLine scenery)) { var id = new NumberProperty(lineProp) { Min = 0, Max = int.MaxValue - 1, NumberValue = _ownerline.ID, OnlyWholeNumbers = true, }; id.ValueChanged += (o, e) => { ChangeID((int)id.NumberValue); }; lineProp.Add("ID", id); } _length = new NumberProperty(lineProp) { Min = 0.0000001, Max = double.MaxValue - 1, NumberValue = len, }; _length.ValueChanged += (o, e) => { ChangeLength(_length.NumberValue); }; lineProp.Add("Length", _length); _angleProp = new NumberProperty(lineProp) { Min = 0, Max = 360, NumberValue = angle.Degrees, }; _angleProp.ValueChanged += (o, e) => { ChangeAngle(_angleProp.NumberValue); }; lineProp.Add("Angle", _angleProp); if (!(_ownerline is SceneryLine)) { var multilines = new NumberProperty(lineProp) { Min = 1, Max = int.MaxValue - 1, OnlyWholeNumbers = true, }; multilines.NumberValue = GetMultiLines(true).Count; multilines.ValueChanged += (o, e) => { Multiline((int)multilines.NumberValue); }; lineProp.Add("Multilines", multilines); } if (_ownerline is SceneryLine sceneryLine) { _width = new NumberProperty(lineProp) { Min = 0.1, Max = 25.5, NumberValue = _ownerline.Width, }; _width.ValueChanged += (o, e) => { ChangeWidth(_width.NumberValue); }; lineProp.Add("Width", _width); } if (_ownerline is RedLine red) { var acceleration = tree.Add("Acceleration", 120); var multiplier = new NumberProperty(acceleration) { Min = 1, Max = 255, NumberValue = red.Multiplier, OnlyWholeNumbers = true, }; multiplier.ValueChanged += (o, e) => { ChangeMultiplier((int)multiplier.NumberValue); }; acceleration.Add("Multiplier", multiplier); var accelinverse = GwenHelper.AddPropertyCheckbox( acceleration, "Inverse", red.inv ); accelinverse.ValueChanged += (o, e) => { using (var trk = _editor.CreateTrackWriter()) { var multi = GetMultiLines(false); foreach (var l in multi) { var cpy = (StandardLine)l.Clone(); cpy.Position = l.Position2; cpy.Position2 = l.Position; cpy.inv = accelinverse.IsChecked; UpdateLine(trk, l, cpy); } var owner = (StandardLine)_ownerline.Clone(); owner.Position = _ownerline.Position2; owner.Position2 = _ownerline.Position; owner.inv = accelinverse.IsChecked; UpdateOwnerLine(trk, owner); } }; } }
private void SetupBlueAndRedOptions(PropertyTree tree) { int currentMultiplier = 0; bool inv = false; StandardLine.Ext lineEXT = ((StandardLine)_ownerline).Extension; bool leftEXT = ((StandardLine)_ownerline).Extension == StandardLine.Ext.Both || ((StandardLine)_ownerline).Extension == StandardLine.Ext.Left; bool rightEXT = ((StandardLine)_ownerline).Extension == StandardLine.Ext.Both || ((StandardLine)_ownerline).Extension == StandardLine.Ext.Right; if (_ownerline is RedLine red) { currentMultiplier = red.Multiplier; inv = red.inv; } var table = tree.Add("Acceleration", 120); multiplier = new NumberProperty(table) { Min = -255, Max = 255, NumberValue = (inv ? -currentMultiplier : currentMultiplier), OnlyWholeNumbers = true, }; multiplier.ValueChanged += (o, e) => { if (multiplier.NumberValue < 0) { accelinverse.IsChecked = true; } else { accelinverse.IsChecked = false; } ChangeMultiplier((int)Math.Abs(multiplier.NumberValue)); }; table.Add("Multiplier", multiplier); multilines = new NumberProperty(table) { Min = 1, Max = 9999, OnlyWholeNumbers = true, }; multilines.NumberValue = GetMultiLines(true).Count; multilines.ValueChanged += (o, e) => { Multiline((int)multilines.NumberValue); }; table.Add("Multilines", multilines); accelinverse = GwenHelper.AddPropertyCheckbox( table, "Inverse", inv ); accelinverse.ValueChanged += (o, e) => { if (accelinverse.IsChecked) { if (multiplier.NumberValue > 0) { multiplier.NumberValue = -multiplier.NumberValue; } } else { multiplier.NumberValue = Math.Abs(multiplier.NumberValue); } using (var trk = _editor.CreateTrackWriter()) { var multi = GetMultiLines(false); foreach (var l in multi) { var cpy = (StandardLine)l.Clone(); cpy.Position = l.Position2; cpy.Position2 = l.Position; cpy.inv = accelinverse.IsChecked; UpdateLine(trk, l, cpy); } var owner = (StandardLine)_ownerline.Clone(); owner.Position = _ownerline.Position2; owner.Position2 = _ownerline.Position; owner.inv = accelinverse.IsChecked; UpdateOwnerLine(trk, owner); } var vec = _ownerline.GetVector(); var angle = Angle.FromVector(vec); angle.Degrees += 90; angleProp.NumberValue = angle.Degrees; }; multiplier.ValueChanged += (o, e) => { int val = (int)multiplier.NumberValue; if (val == 0) { accelinverse.Disable(); } else { accelinverse.Enable(); } }; if ((int)multiplier.NumberValue == 0) { accelinverse.Disable(); } table = tree.Add("Line Extensions (AGWs)", 120); leftAGW = GwenHelper.AddPropertyCheckbox(table, "Starting Extension", leftEXT); leftAGW.ValueChanged += (o, e) => { UpdateAGWs(leftAGW.IsChecked, rightAGW.IsChecked); }; rightAGW = GwenHelper.AddPropertyCheckbox(table, "Ending Extension", rightEXT); rightAGW.ValueChanged += (o, e) => { UpdateAGWs(leftAGW.IsChecked, rightAGW.IsChecked); }; }