mirror of
https://github.com/Detanup01/gbe_fork.git
synced 2024-12-27 19:04:19 +08:00
127 lines
6.7 KiB
C
127 lines
6.7 KiB
C
|
#ifndef ISTEAMTIMELINE003_H
|
||
|
#define ISTEAMTIMELINE003_H
|
||
|
#ifdef STEAM_WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
// this interface version is not found in public SDK archives, it is based on reversing the returned vftable from steamclient64.dll
|
||
|
|
||
|
class ISteamTimeline003
|
||
|
{
|
||
|
public:
|
||
|
// Sets a description for the current game state in the timeline. These help the user to find specific
|
||
|
// moments in the timeline when saving clips. Setting a new state description replaces any previous
|
||
|
// description.
|
||
|
//
|
||
|
// Examples could include:
|
||
|
// * Where the user is in the world in a single player game
|
||
|
// * Which round is happening in a multiplayer game
|
||
|
// * The current score for a sports game
|
||
|
//
|
||
|
// Parameters:
|
||
|
// - pchDescription: provide a localized string in the language returned by SteamUtils()->GetSteamUILanguage()
|
||
|
// - flTimeDelta: The time offset in seconds to apply to this event. Negative times indicate an
|
||
|
// event that happened in the past.
|
||
|
virtual void SetTimelineTooltip( const char *pchDescription, float flTimeDelta ) = 0;
|
||
|
virtual void ClearTimelineTooltip( float flTimeDelta ) = 0;
|
||
|
|
||
|
// Changes the color of the timeline bar. See ETimelineGameMode comments for how to use each value
|
||
|
virtual void SetTimelineGameMode( ETimelineGameMode eMode ) = 0;
|
||
|
|
||
|
|
||
|
///////////////////////////////////// the following functions are not found in public SDK
|
||
|
virtual TimelineEventHandle_t AddTimelineEvent( const char *pchTitle, const char *pchDescription, const char *pchIcon, uint32 unIconPriority, float flStartOffsetSeconds, float flDurationSeconds, ETimelineEventClipPriority ePossibleClip ) = 0;
|
||
|
|
||
|
virtual uint32 unknown_ret0_1() = 0; // xor eax, eax; ret;
|
||
|
virtual uint32 unknown_ret0_2() = 0; // xor eax, eax; ret;
|
||
|
|
||
|
virtual void unknown_nop_3() = 0; // ret;
|
||
|
/////////////////////////////////////
|
||
|
|
||
|
|
||
|
// delete the event from the timeline. This can be called on a timeline event from AddInstantaneousTimelineEvent,
|
||
|
// AddRangeTimelineEvent, or StartRangeTimelineEvent/EndRangeTimelineEvent. The timeline event handle must be from the
|
||
|
// current game process.
|
||
|
virtual void RemoveTimelineEvent( TimelineEventHandle_t ulEvent ) = 0;
|
||
|
|
||
|
|
||
|
///////////////////////////////////// the following functions are not found in public SDK
|
||
|
virtual void unknown_nop_4() = 0; // ret;
|
||
|
virtual void unknown_nop_5() = 0; // ret;
|
||
|
virtual void unknown_nop_6() = 0; // ret;
|
||
|
/////////////////////////////////////
|
||
|
|
||
|
|
||
|
// add a tag to whatever time range is represented by the event
|
||
|
STEAM_CALL_RESULT( SteamTimelineEventRecordingExists_t )
|
||
|
virtual SteamAPICall_t DoesEventRecordingExist( TimelineEventHandle_t ulEvent ) = 0;
|
||
|
|
||
|
/******************* Game Phases *******************/
|
||
|
|
||
|
// Game phases allow the user to navigate their background recordings and clips. Exactly what a game phase means will vary game to game, but
|
||
|
// the game phase should be a section of gameplay that is usually between 10 minutes and a few hours in length, and should be the
|
||
|
// main way a user would think to divide up the game. These are presented to the user in a UI that shows the date the game was played,
|
||
|
// with one row per game slice. Game phases should be used to mark sections of gameplay that the user might be interested in watching.
|
||
|
//
|
||
|
// Examples could include:
|
||
|
// * A single match in a multiplayer PvP game
|
||
|
// * A chapter of a story-based singleplayer game
|
||
|
// * A single run in a roguelike
|
||
|
//
|
||
|
// Game phases are started with StartGamePhase, and while a phase is still happening, they can have tags and attributes added to them.
|
||
|
//
|
||
|
// Phase attributes represent generic text fields that can be updated throughout the duration of the phase. They are meant
|
||
|
// to be used for phase metadata that is not part of a well defined set of options. For example, a KDA attribute that starts
|
||
|
// with the value "0/0/0" and updates as the phase progresses, or something like a played-entered character name. Attributes
|
||
|
// can be set as many times as the game likes with SetGamePhaseAttribute, and only the last value will be shown to the user.
|
||
|
//
|
||
|
// Phase tags represent data with a well defined set of options, which could be data such as match resolution, hero played,
|
||
|
// game mode, etc. Tags can have an icon in addition to a text name. Multiple tags within the same group may be added per phase
|
||
|
// and all will be remembered. For example, AddGamePhaseTag may be called multiple times for a "Bosses Defeated" group, with
|
||
|
// different names and icons for each boss defeated during the phase, all of which will be shown to the user.
|
||
|
//
|
||
|
// The phase will continue until the game exits, until the game calls EndGamePhase, or until the game calls
|
||
|
// StartGamePhase to start a new phase.
|
||
|
//
|
||
|
// The game phase functions take these parameters:
|
||
|
// - pchTagIcon: The name of a game provided timeline icon or builtin "steam_" icon.
|
||
|
// - pchPhaseID: A game-provided persistent ID for a game phase. This could be a the match ID in a multiplayer game, a chapter name in a
|
||
|
// single player game, the ID of a character, etc.
|
||
|
// - pchTagName: The localized name of the tag in the language returned by SteamUtils()->GetSteamUILanguage().
|
||
|
// - pchTagGroup: The localized name of the tag group.
|
||
|
// - pchAttributeValue: The localized name of the attribute.
|
||
|
// - pchAttributeGroup: The localized name of the attribute group.
|
||
|
// - unPriority: Used to order tags and attributes in the UI displayed to the user, with higher priority values leading
|
||
|
// to more prominent positioning. In contexts where there is limited space, lower priority items may be hidden.
|
||
|
virtual void StartGamePhase() = 0;
|
||
|
virtual void EndGamePhase() = 0;
|
||
|
|
||
|
// Games can set a phase ID so they can refer back to a phase in OpenOverlayToPhase
|
||
|
virtual void SetGamePhaseID( const char *pchPhaseID ) = 0;
|
||
|
STEAM_CALL_RESULT( SteamTimelineGamePhaseRecordingExists_t )
|
||
|
virtual SteamAPICall_t DoesGamePhaseRecordingExist( const char *pchPhaseID ) = 0;
|
||
|
|
||
|
// Add a tag that applies to the entire phase
|
||
|
virtual void AddGamePhaseTag( const char *pchTagName, const char *pchTagIcon, const char *pchTagGroup, uint32 unPriority ) = 0;
|
||
|
|
||
|
// Add a text attribute that applies to the entire phase
|
||
|
virtual void SetGamePhaseAttribute( const char *pchAttributeGroup, const char *pchAttributeValue, uint32 unPriority ) = 0;
|
||
|
|
||
|
/******************* Opening the overlay *******************/
|
||
|
|
||
|
// Opens the Steam overlay to a game phase.
|
||
|
//
|
||
|
// Parameters:
|
||
|
// - pchPhaseID: The ID of a phase that was previously provided by the game in SetGamePhaseID.
|
||
|
virtual void OpenOverlayToGamePhase( const char *pchPhaseID ) = 0;
|
||
|
|
||
|
// Opens the Steam overlay to a timeline event.
|
||
|
//
|
||
|
// Parameters:
|
||
|
// - ulEventID: The ID of a timeline event returned by StartEvent or AddSimpleTimelineEvent
|
||
|
virtual void OpenOverlayToTimelineEvent( const TimelineEventHandle_t ulEvent ) = 0;
|
||
|
|
||
|
};
|
||
|
|
||
|
#endif // ISTEAMTIMELINE003_H
|