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
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. |
GameAttribute | Description | Min | Max | Increment | Default | |
+ | CreditPointsPurchased | Credit points purchased | 0 | 0 | 1 | 0 |
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. |
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 |
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 |
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) |
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; |
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 |
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