voicemeeter-api-powershell/lib/special.ps1
onyx-and-iris 29c53da38c Update special.ps1
add lock command.

showvbanchat can now be set to true or false.

reword write only warning on attempt to read, for clarity.
2022-01-09 14:24:09 +00:00

61 lines
1.6 KiB
PowerShell

class Special {
hidden AddPublicMembers($commands) {
$commands | ForEach-Object {
# Define getter
$GetterSignature = "`$this.Getter(`$this.cmd('{0}'))" -f $_
# Define setter
$SetterSignature = "`$this.Setter(`$this.cmd('{0}'))" -f $_
$AddMemberParams = @{
Name = $_
MemberType = 'ScriptProperty'
Value = [ScriptBlock]::Create($SetterSignature)
SecondValue = [ScriptBlock]::Create($GetterSignature)
}
$this | Add-Member @AddMemberParams
}
}
# Constructor
Special()
{
$this.AddPublicMembers(@('restart', 'shutdown', 'show'))
}
[String] Getter($param) {
return Write-Warning("ERROR: Usage: $param")
}
[void] Setter($param, $val = $true) {
Param_Set -PARAM $param -VALUE $(if ($val) {1} else {0})
}
[String] cmd ($arg) {
return "Command.$arg"
}
hidden $_showvbanchat = $($this | Add-Member ScriptProperty 'showvbanchat' `
{
$this.Getter($this.cmd('DialogShow.VBANCHAT'))
}`
{
param( [bool]$arg )
$this._showvbanchat = $this.Setter($this.cmd('DialogShow.VBANCHAT'), $arg)
}
)
hidden $_lock = $($this | Add-Member ScriptProperty 'lock' `
{
$this._lock = $this.Getter($this.cmd('lock'))
}`
{
param( [bool]$arg )
$this._lock = $this.Setter($this.cmd('lock'), $arg)
}
)
}
Function Special {
return [Special]::new()
}