API Changes in P3_SDK_V0.9

The list of changes in P3_SDK_V0.9 appears in the release notes. We will not repeat it here.

This tech tip documents the API changes only.

Legend: + is a new addition, - is a deletion

GameAttributes

App-Specific GameAttributes

GameAttribute

Description

Min

Max

Increment

Default

+

BallSearchSubsystemEnable

Allow Ball Searching

true

+

SearchLaunchEnable

Automatically Launch a Chase Ball After x Failed Searches

true

Global GameAttributes

GameAttribute

Description

Min

Max

Increment

Default

+

TimeBeforeStartOfBallAutolaunch

Seconds to wait before auto-launching ball, in seconds. 0 waits forever.

0

300

10

0

+

AutoRefreshWallsScoops

Auto-refresh Walls/Scoops position

false

+

ScoopEntranceOperationStyle

Use both scoop optos to detect ball entry more accurately, but a bit slower.

false

+

ScoopMoatEntranceRetriggerDelay

Time to ignore repeat scoop entry events. Contact support for advice.

0.05f

1.0f

0.05f

0.30f

+

ScoopMoatExitRetriggerDelay

Time to ignore repeat scoop exit events. Contact support for advice.

0.05f

1.0f

0.05f

0.15f

Playfield Module-Specific GameAttributes

GameAttribute

Description

Min

Max

Increment

Default

+

launchStrengthMin<N>

Minimum pulse time for trough VUK N,

where N is the VUKNumber of a TroughLauncher and N > 7

10

40

1

30

+

launchStrengthMax<N>

Maximum pulse time for trough VUK N,

where N is the VUKNumber of a TroughLauncher and N > 7

10

40

1

30

-

launchStrengthMin<N>

Minimum pulse time for trough VUK N,

where 0 ≤ N ≤ 7 and N is not a VUKNumber of a TroughLauncher

10

40

1

30

-

launchStrengthMax<N>

Maximum pulse time for trough VUK N,

where 0 ≤ N ≤ 7 and N is not a VUKNumber of a TroughLauncher

10

40

1

30

Profile GameAttributes

GameAttribute

Description

-

SavedStateAvailable

No longer needed, since restoring is now based on restorePoints existing.

Statistics GameAttributes

GameAttribute

Description

Min

Max

Increment

Default

+

CreditPointsPurchased

Credit points purchased

0

0

1

0

ModeToMode Events

Event

Arg Type

Posters

Handlers

Description

+

Evt_AddAdditionalBallSearchItems

(ignored)

BallSearchMode

(none)

Notifies that ball search is ready to handle the events Evt_AddBallSearchCoils, Evt_AddBallSearchResetSwitches, Evt_AddBallSearchPauseSwitches

+

Evt_AddBallSearchCoils

List<Driver>

(none)

BallSearchMode

Add the given coils to the ball search coils

+

Evt_AddBallSearchPauseSwitches

List<Switch>

(none)

BallSearchMode

Add the given switches to the ball search pause switches

+

Evt_AddBallSearchResetSwitches

List<Switch>

(none)

BallSearchMode

Add the given switches to the ball search reset switches

+

Evt_AddCredits

int

(none)

MoneyMode

Add the specified number of credits

+

Evt_AddGUIInsertScript

GUIInsertScript or

KeyValuePair<GUIInsertScript,float>

GUIInsertHelpers

LEDShow

BaseAppMode

Register a GUIInsertScript for execution. Now also accepts a KeyValuePair where the float is the activation delay.

+

Evt_AttributeSelectorGameAttributeAborted

GameAttribute

GameAttributeManagerMode

(none)

GameAttribute modification was aborted

+

Evt_AttributeSelectorGameAttributePreviewed

GameAttribute

GameAttributeManagerMode

(none)

GameAttribute was previewed

+

Evt_AttributeSelectorGameAttributeSaved

GameAttribute

GameAttributeManagerMode

(none)

GameAttribute previewed was saved

-

Evt_BallDrained

(ignored)

HomeMode

GameMode

Removed

+

Evt_BallSearchIgnoreGrid

bool

(none)

BallSearchMode

Controls whether ball search should ignore Grid Events.

+

Evt_CreditPointsPurchased

int

MoneyMode

StatisticsMode

Notifies the given number of credit points were purchased

+

Evt_DisableSlingshotByName

string

(none)

BumpersMode

Disables the slingshot coil, argument is the Bumpers name

+

Evt_EnableFlipperNoHoldByName

string

(none)

FlippersMode

Enable no-hold mode of the named flipper, where the flipper doesn't stay up when the button is held

+

Evt_GetTiltWarnings

(ignored)

(none)

TiltMode

Return the number of already issued tilt warnings, the response comes in a Evt_TiltWarningCountResponse event

+

Evt_P3App_LaunchCallbackResult

bool

BallLauncher

(none)

Notifies whether the launch succeeded

+

Evt_ReAddRemovedFlipperByName

string

(none)

FlippersMode

Restore a previously removed flipper from the available flippers. The flipper will be enabled and also automatically enabled/disabled by subsequent commands to all flippers

+

Evt_RegisterWallScoopSearchPattern

List<List<int>>

(none)

WallsScoops

Specifies how ball search should activate the walls and scoops, inner List<int> is a triplet { mech, direction, index } where mech is 0 for wall, 1 for scoop; direction is 0 for down, 1 for up; index is wall or scoop index between 0 and 5 inclusive; Outer List<List<int>> is a list of those triplets

+

Evt_RemoveFlipperByName

string

(none)

FlippersMode

Remove a named flipper from the available flippers; the flipper will be disabled, but also removed from subsequent enables to all flippers until ReAdded

+

Evt_SetScoopEntranceOperationStyle

bool

GlobalSettingsMode

WallsScoops

Notifies a change in the ScoopEntranceOperationStyle GameAttribute

+

Evt_SetScoopMoatEntranceRetriggerDelay

float

GlobalSettingsMode

WallsScoops

Notifies a change in the ScoopMoatEntranceRetriggerDelay GameAttribute

+

Evt_SetScoopMoatExitRetriggerDelay

float

GlobalSettingsMode

WallsScoops

Notifies a change in the ScoopMoatExitRetriggerDelay GameAttribute

+

Evt_SetTiltWarnings

int

(none)

TiltMode

Set the number of already issued tilt warnings

+

Evt_SetUpPlayerReplayData

(ignored)

Score

BaseGameMode

Sets ReplayLevel as a long and ReplayAchieved as a bool in the currentPlayer's PlayerData

+

Evt_StartSearchNow

(ignored)

(none)

BallSearchMode

Initiate ball search immediately

+

Evt_TiltWarningCountResponse

int

TiltMode

(none)

Returns the number of already issued tilt warnings, this is the response to Evt_GetTiltWarnings

+

Evt_UseDefaultWallScoopSearchPattern

(ignored)

(none)

WallsScoops

Reverts to factory ball search pattern for walls and scoops: all walls up, all walls down, all scoops up, all scoops down.

GUIToMode Events

Event

Arg Type

Posters

Handlers

Description

+

Evt_AttributeSelectorGameAttributePreviewed

GameAttribute

AttributeSelector

GameAttributeManagerMode

GameAttribute was previewed

+

Evt_AttributeSelectorGameAttributeAborted

GameAttribute

AttributeSelector

GameAttributeManagerMode

GameAttribute modification was aborted

+

Evt_AttributeSelectorGameAttributeSaved

GameAttribute

AttributeSelector

GameAttributeManagerMode

GameAttribute previewed was saved

ModeToGUI Events

Event

Arg Type

Posters

Handlers

Description

+

Evt_AttributeSelectorGameAttributePreviewed

GameAttribute

GameAttributeManagerMode

(none)

GameAttribute was previewed

+

Evt_AttributeSelectorGameAttributeAborted

GameAttribute

GameAttributeManagerMode

(none)

GameAttribute modification was aborted

+

Evt_AttributeSelectorGameAttributeSaved

GameAttribute

GameAttributeManagerMode

(none)

GameAttribute previewed was saved

Method Changes

Class

Method

+

Multimorphic.P3App.Data.Player

public void SaveData(string key, long dataToSave)

-

Multimorphic.P3App.Modes.Data.HighScoreCategory

public float zeroValue {get; private set;}

-

Multimorphic.P3App.Modes.Data.HighScoreCategory

public List<float> defaultValues {get; private set;}

+

Multimorphic.P3App.Modes.Data.HighScoreCategory

public double zeroValue {get; private set; }

+

Multimorphic.P3App.Modes.Data.HighScoreCategory

public List<double> defaultValues {get; private set;}

+

Multimorphic.P3App.Modes.Data.HighScoreCategory

public bool disallowedForRestoredGames { get; private set; }

+

Multimorphic.P3App.Modes.Data.HighScoreCategory

public void SetDefaultValues(List<double> values)

+

Multimorphic.P3App.Modes.Data.HighScoreCategory

public void SetZeroValue(double value)

+

Multimorphic.P3App.Modes.Data.HighScoreCategory

public void DisallowFromRestoredGames(bool disallow)

-

Multimorphic.P3App.Modes.Data.HighScoreDisplayData

public void AddItem(string name, float value)

+

Multimorphic.P3App.Modes.Data.HighScoreDisplayData

public void AddItem(string name, double value)

-

Multimorphic.P3App.Modes.Data.HighScoreDisplayData

public void AddItem(string name, float value, bool highlighted)

+

Multimorphic.P3App.Modes.Data.HighScoreDisplayData

public void AddItem(string name, double value, bool highlighted)

-

Multimorphic.P3App.Modes.Data.HighScoreDisplayItem

public HighScoreDisplayItem(string name, float value, bool highlighted)

+

Multimorphic.P3App.Modes.Data.HighScoreDisplayItem

public HighScoreDisplayItem(string name, double value, bool highlighted)

+

Multimorphic.P3App.Modes.Data.HighScoresMode

public static string GetEntryFromNameAndValue(string name, double value)

-

Multimorphic.P3App.Modes.Data.HighScoresMode

public static float GetValueFromEntry(string Entry)

+

Multimorphic.P3App.Modes.Data.HighScoresMode

public static double GetValueFromEntry(string Entry)

-

Multimorphic.P3App.Modes.Data.StatisticsMode

protected void IncAttr(string item)

+

Multimorphic.P3App.Modes.Data.StatisticsMode

protected void IncAttr(string item, bool storeImmediately = false)

-

Multimorphic.P3App.Modes.Data.StatisticsMode

protected void DecAttr(string item)

+

Multimorphic.P3App.Modes.Data.StatisticsMode

protected void DecAttr(string item, bool storeImmediately = false)

-

Multimorphic.P3App.Modes.Data.StatisticsMode

protected void AddToAttr(string item, float value)

+

Multimorphic.P3App.Modes.Data.StatisticsMode

protected void AddToAttr(string item, float value, bool storeImmediately = false)

-

Multimorphic.P3App.Modes.Data.StatisticsMode

protected void SetAttr(string item, float value)

+

Multimorphic.P3App.Modes.Data.StatisticsMode

protected void SetAttr(string item, float value, bool storeImmediately = false)

-

Multimorphic.P3App.Modes.FlippersMode

public void Enable(bool on)

+

Multimorphic.P3App.Modes.FlippersMode

public void Enable(bool on, string specificFlipperName=null)

+

Multimorphic.P3App.Modes.FlippersMode

public bool PulseFlipperByName(string name)

+

Multimorphic.P3App.Modes.Selector.SelectorMode

protected bool NoAction(Switch sw) // used for inactive buttons in button legends

+

Multimorphic.P3.Config.TroughLauncherConfigFileEntry

public string Tags { get; set; }

+

Multimorphic.NetProcMachine.Config.BumperEntry

public string Tags { get; set; }

+

Multimorphic.NetProcMachine.Config.FlipperEntry

public string Tags { get; set; }

+

Multimorphic.NetProcMachine.Config.LEDConfigFileEntry

public double MaxBrightness { get; set; }

-

Multimorphic.NetProcMachine.Config.MachineConfiguration

public void AddLED(string Name, string Number, bool Polarity, string Label)

+

Multimorphic.NetProcMachine.Config.MachineConfiguration

public void AddLED(string Name, string Number, bool Polarity, string Label, double MaxBrightness)

-

Multimorphic.NetProcMachine.Config.MachineConfiguration

public void AddLED(string Name, string Number, bool Polarity, string Label, string Tags)

+

Multimorphic.NetProcMachine.Config.MachineConfiguration

public void AddLED(string Name, string Number, bool Polarity, string Label, double MaxBrightness, string Tags)

+

Multimorphic.NetProcMachine.Machine.LED

public ushort[] GetAddrs()

+

Multimorphic.NetProcMachine.Machine.LED

public void SetAddrs(ushort[] addrs)

Member Variable Changes

Class

Member Variable

-

Multimorphic.P3App.Modes.Data.HighScoreDisplayItem

public float value;

+

Multimorphic.P3App.Modes.Data.HighScoreDisplayItem

public double value;

-

Multimorphic.P3App.Modes.Data.HighScoreField

public float value;

+

Multimorphic.P3App.Modes.Data.HighScoreField

public double value;

+

Multimorphic.P3.Mechs.TroughLauncherDefinition

public string name;

Constants Changes

Class

Constant

+

Multimorphic.P3App.Modes.EventNames

public const string EnableFlipperNoHoldByName = "Evt_EnableFlipperNoHoldByName";

+

Multimorphic.P3App.Modes.EventNames

public const string RemoveFlipperByName = "Evt_RemoveFlipperByName";

+

Multimorphic.P3App.Modes.EventNames

public const string ReAddRemovedFlipperByName = "Evt_ReAddRemovedFlipperByName";

+

Multimorphic.P3App.Modes.EventNames

public const string DisableSlingshotByName = "Evt_DisableSlingshotByName";

+

Multimorphic.P3App.Modes.EventNames

public const string TiltIssueNonStandardWarning = "Evt_NonStandardTiltWarning";

+

Multimorphic.P3App.Modes.EventNames

public const string TiltIssueNonStandardTilt = "Evt_NonStandardTilt";

+

Multimorphic.P3App.Modes.EventNames

public const string TiltResetWarningCount = "Evt_ResetTiltWarnings";

+

Multimorphic.P3App.Modes.EventNames

public const string TiltSetWarningCount = "Evt_SetTiltWarnings";

+

Multimorphic.P3App.Modes.EventNames

public const string TiltGetWarningCount = "Evt_GetTiltWarnings";

+

Multimorphic.P3App.Modes.EventNames

public const string TiltEnable = "Evt_EnableTilt";

+

Multimorphic.P3App.Modes.EventNames

public const string TiltEventTilted = "Evt_Tilted";

+

Multimorphic.P3App.Modes.EventNames

public const string TiltEventTiltWarning = "Evt_TiltWarning";

+

Multimorphic.P3App.Modes.EventNames

public const string TiltEventTiltSettled = "Evt_TiltSettled";

+

Multimorphic.P3App.Modes.EventNames

public const string TiltEventTiltProcessingComplete = "Evt_TiltProcessingComplete";

+

Multimorphic.P3App.Modes.EventNames

public const string TiltEventWarningCountResponse = "Evt_TiltWarningCountResponse";

+

Multimorphic.P3App.Modes.FrameworkAppGameAttributes

public const string TimeBeforeStartOfBallAutolaunch = "TimeBeforeStartOfBallAutolaunch";

-

Multimorphic.NetProcMachine.Config.BallPathExitType

Path = 7

Non-backward-compatible Changes

LED string segments in BallPaths EntranceLEDs and ExitLEDs are now expanded. For example, baseNameX-Y is replaced by baseNameX,...,baseNameY

In the base machine definition, non-existent switches vukPresent0, vukTube1, ..., vukTube7 were renamed to unused0, …, unused7

In Assets\Resources\Prefabs\Framework\ButtonLegend.prefab, button captions are now located with the correct button