Editor/SFXRSoundControlWidget.cs
using Editor;
using Sandbox;
using System.Linq;
namespace SFXR.Editor;
[CustomEditor( typeof( SFXRControls ) )]
public class SFXRSoundControlWidget : ControlWidget
{
SerializedObject Target;
public SFXRSoundControlWidget( SerializedProperty property ) : base( property )
{
if ( !property.TryGetAsObject( out Target ) )
return;
var component = property.Parent.Targets.First() as SFXRComponent;
// Randomize Button
var btnRandomize = new Button( "Randomize All", "casino" );
btnRandomize.Clicked = () =>
{
component.Randomize();
component.PlaySound();
};
btnRandomize.ToolTip = "Randomize all sound properties";
// Play Sound Button
var btnPlaySound = new Button( "Play Sound", "play_arrow" );
btnPlaySound.Clicked = () =>
{
component.PlaySound();
};
btnPlaySound.MinimumWidth = 200;
btnPlaySound.ToolTip = "Play the current sound";
// Mutate Button
var btnMutate = new Button( "Mutate", "shuffle" );
btnMutate.Clicked = () =>
{
component.Mutate();
component.PlaySound();
};
btnMutate.ToolTip = "Mutate all sound properties";
// Randomize Pickup Button
var btnRandomizePickup = new Button( "", "monetization_on" );
btnRandomizePickup.Clicked = () =>
{
component.RandomizePickup();
component.PlaySound();
};
btnRandomizePickup.ToolTip = "Generate random pickup sound";
// Randomize Laser Button
var btnRandomizeLaser = new Button( "", "bolt" );
btnRandomizeLaser.Clicked = () =>
{
component.RandomizeLaser();
component.PlaySound();
};
btnRandomizeLaser.ToolTip = "Generate random laser sound";
// Randomize Explosion Button
var btnRandomizeExplosion = new Button( "", "flare" );
btnRandomizeExplosion.Clicked = () =>
{
component.RandomizeExplosion();
component.PlaySound();
};
btnRandomizeExplosion.ToolTip = "Generate random explosion sound";
// Randomize Powerup Button
var btnRandomizePowerup = new Button( "", "star" );
btnRandomizePowerup.Clicked = () =>
{
component.RandomizePowerup();
component.PlaySound();
};
btnRandomizePowerup.ToolTip = "Generate random powerup sound";
// Randomize Hit Hurt Button
var btnRandomizeHit = new Button( "", "sentiment_very_dissatisfied" );
btnRandomizeHit.Clicked = () =>
{
component.RandomizeHit();
component.PlaySound();
};
btnRandomizeHit.ToolTip = "Generate random hit/hurt sound";
// Randomize Jump Button
var btnRandomizeJump = new Button( "", "settings_accessibility" );
btnRandomizeJump.Clicked = () =>
{
component.RandomizeJump();
component.PlaySound();
};
btnRandomizeJump.ToolTip = "Generate random jump sound";
// Randomize Blip Select Button
var btnRandomizeBlipSelect = new Button( "", "menu" );
btnRandomizeBlipSelect.Clicked = () =>
{
component.RandomizeBlip();
component.PlaySound();
};
btnRandomizeBlipSelect.ToolTip = "Generate random blip/select sound";
Layout = Layout.Column();
Layout.Spacing = 2;
Layout.Margin = new Sandbox.UI.Margin( 0, 4 );
MinimumHeight = 90;
var grid = Layout.Grid();
grid.Spacing = 2;
grid.AddCell( 0, 0, btnRandomizePickup );
grid.AddCell( 1, 0, btnRandomizeLaser );
grid.AddCell( 2, 0, btnRandomizeExplosion );
grid.AddCell( 3, 0, btnRandomizePowerup );
grid.AddCell( 4, 0, btnRandomizeHit );
grid.AddCell( 5, 0, btnRandomizeJump );
grid.AddCell( 6, 0, btnRandomizeBlipSelect );
var randomRow = Layout.Row();
randomRow.Spacing = 2;
randomRow.Add( btnRandomize );
randomRow.Add( btnMutate );
Layout.Add( grid );
Layout.Add( randomRow );
Layout.Add( btnPlaySound );
}
protected override void OnPaint()
{
}
}