Game operations
These are mandatory functions for using this add-on for gameplay functionality.
Game operation parts in interface:
Copy this to your project and extend with your parts or leave functions complete away where not used or supported.
|
| | Class: CStream |
| | Class: kodi::addon::CInstanceGame::CStream Game stream handler
|
| |
◆ LoadGame()
| virtual GAME_ERROR LoadGame |
( |
const std::string & | url | ) |
|
|
inlinevirtual |
◆ LoadGameSpecial()
Load a game that requires multiple files.
- Parameters
-
| [in] | type | The game type |
| [in] | urls | An array of urls |
- Returns
- The error, or GAME_ERROR_NO_ERROR if the game was loaded
◆ LoadStandalone()
Begin playing without a game file.
If the add-on supports standalone mode, it must add the <supports_standalone> tag to the extension point in addon.xml:
<supports_no_game>false</supports_no_game>
- Returns
- The error, or GAME_ERROR_NO_ERROR if the game add-on was loaded
◆ UnloadGame()
Unload the current game.
Unloads a currently loaded game
- Returns
- The error, or GAME_ERROR_NO_ERROR if the game was unloaded
◆ GetGameTiming()
Get timing information about the loaded game.
- Parameters
-
| [out] | timing_info | The info structure to fill |
- Returns
- The error, or GAME_ERROR_NO_ERROR if info was filled
◆ GetRegion()
Get region of the loaded game.
- Returns
- The region, or GAME_REGION_UNKNOWN if unknown or no game is loaded
◆ RequiresGameLoop()
| virtual bool RequiresGameLoop |
( |
| ) |
|
|
inlinevirtual |
Return true if the client requires the frontend to provide a game loop.
The game loop is a thread that calls RunFrame() in a loop at a rate determined by the playback speed and the client's FPS.
- Returns
- True if the frontend should provide a game loop, false otherwise
◆ RunFrame()
Run a single frame for add-ons that use a game loop.
- Returns
- The error, or GAME_ERROR_NO_ERROR if there was no error
◆ RunFrameSpeculative()
Run a frame that the frontend will roll back afterwards.
Used for run-ahead. The emulator advances exactly as in RunFrame(), but anything that must only happen once per real frame, such as evaluating achievements, is skipped, because the frontend restores the emulator's state afterwards.
- Returns
- The error, or GAME_ERROR_NOT_IMPLEMENTED if the add-on can't run a frame without side effects
◆ Reset()
◆ CloseGame()
Callback to Kodi Function
Requests the frontend to stop the current game
◆ ReportMissingFile()
| void ReportMissingFile |
( |
const std::string & | path | ) |
|
|
inline |
Callback to Kodi Function
Name a file the game client looked for and couldn't find, such as a BIOS file, so Kodi can tell the user which one is missing.
- Parameters
-
| [in] | path | The file's path, relative to the system directory |
◆ GetPlaybackSpeed()
| double GetPlaybackSpeed |
( |
| ) |
|
|
inline |
Callback to Kodi Function
Get the speed the game is being played back at
- Returns
- The speed as a multiple of normal speed
The value is the same one Kodi shows the user, so it follows the player's fast-forward and rewind semantics:
1.0 is normal speed
0.0 is paused
- greater than
1.0 is fast-forward
- between
0.0 and 1.0 is slow motion
- less than
0.0 is rewind
Rewind is driven by Kodi replaying saved states, so a client is run forwards even while the speed is negative. A client that changes its behaviour with the speed should read the sign as "the user is going
backwards", not as a direction to run in.
◆ SetGameTiming()
Callback to Kodi Function
Update the video and audio timing of the running game
- Parameters
-
| [in] | timingInfo | The new video frame rate and audio sample rate |
This updates timing reported by the add-on after gameplay has started. Add-ons should call this when the game changes its timing dynamically.
◆ SetFastForwarding()
| void SetFastForwarding |
( |
bool | fastForward, |
|
|
double | ratio ) |
|
inline |
Callback to Kodi Function
Ask Kodi to fast-forward the game, or to stop a fast-forward it asked for
- Parameters
-
| [in] | fastForward | True to fast-forward, false to return to normal speed |
| [in] | ratio | The speed asked for if above 1, otherwise Kodi chooses |
For a game that wants to pass over a wait of its own, such as loading from tape. Kodi leaves a speed the user chose alone: it only fast-forwards from normal speed, and only returns to normal speed from the one it set.