254 lines
9.7 KiB
C++
254 lines
9.7 KiB
C++
//=====================================================================================================
|
|
// name: ReplayEditorParameters.h
|
|
// description: Parameters used for editing/manipulating a replay editor objects from a higher level
|
|
//=====================================================================================================
|
|
#include "control/replay/ReplaySettings.h"
|
|
|
|
#if GTA_REPLAY
|
|
|
|
#ifndef INC_REPLAY_EDITOR_PARAMETERS_H_
|
|
#define INC_REPLAY_EDITOR_PARAMETERS_H_
|
|
|
|
// rage
|
|
#include "atl/hashstring.h"
|
|
#include "system/bit.h"
|
|
|
|
//=====================================================================================================
|
|
#define THUMBNAIL_FILE_EXTENSION ".jpg"
|
|
#define RAW_CLIP_FILE_EXTENSION ".clip"
|
|
|
|
//=====================================================================================================
|
|
class CReplayEditorParameters
|
|
{
|
|
public:
|
|
//-------------------------------------------------------------------------------------------------
|
|
#define CLIP_TRANSITION_DEFAULT_DURATION_MS (1000)
|
|
static const u32 MAX_CLIP_NAME_LENGTH = 64;
|
|
static const u32 AUTO_GENERATION_SMALL_LENGTH = 600; //10 min
|
|
static const u32 AUTO_GENERATION_MEDIUM_LENGTH = 2700; //45 mins
|
|
static const u32 AUTO_GENERATION_LARGE_LENGTH = 5400; //90 mins
|
|
static const u32 AUTO_GENERATION_EXTRA_LARGE_LENGTH = 10800; //3 hours
|
|
|
|
//-------------------------------------------------------------------------------------------------
|
|
enum eAutoGenerationDuration
|
|
{
|
|
AUTO_GENERATION_SMALL,
|
|
AUTO_GENERATION_MEDIUM,
|
|
AUTO_GENERATION_LARGE,
|
|
AUTO_GENERATION_EXTRA_LARGE,
|
|
|
|
AUTO_GENERATION_MAX
|
|
};
|
|
|
|
enum eCLIP_LOAD_RESULT_FLAGS : rage::u64
|
|
{
|
|
CLIP_LOAD_RESULT_SUCCESS = 0,
|
|
|
|
CLIP_LOAD_RESULT_EARLY_EOF = BIT_64(0),
|
|
CLIP_LOAD_RESULT_OOM = BIT_64(1),
|
|
|
|
CLIP_LOAD_RESULT_BAD_VERSION = BIT_64(2),
|
|
CLIP_LOAD_RESULT_UNSUPPORTED_VERSION = BIT_64(3),
|
|
CLIP_LOAD_RESULT_HEADER_INVALID = BIT_64(4),
|
|
|
|
CLIP_LOAD_RESULT_BAD_MARKER_VERSION = BIT_64(5),
|
|
CLIP_LOAD_RESULT_UNSPPORTED_MARKER_VERSION = BIT_64(6),
|
|
CLIP_LOAD_RESULT_BAD_MARKER_SIZE = BIT_64(7),
|
|
CLIP_LOAD_RESULT_TOO_MANY_MARKERS = BIT_64(8),
|
|
CLIP_LOAD_RESULT_OVERLAPPING_MARKERS = BIT_64(9),
|
|
|
|
CLIP_LOAD_RESULT_BAD_THUMBNAIL_SIZE = BIT_64(10),
|
|
CLIP_LOAD_RESULT_BAD_TIME_DATA = BIT_64(11),
|
|
|
|
// Misc flags we may want to report on
|
|
CLIP_LOAD_RESULT_MARKER_VERSION_UPGRADED = BIT_64(12),
|
|
|
|
// Count of bitfields, for debug purposes
|
|
CLIP_LOAD_RESULT_USED_BITFIELDS = 13,
|
|
|
|
//! Common flag combinations
|
|
CLIP_LOAD_RESULT_UNSAFE_TO_CONTINUE = CLIP_LOAD_RESULT_EARLY_EOF | CLIP_LOAD_RESULT_OOM | CLIP_LOAD_RESULT_BAD_VERSION |
|
|
CLIP_LOAD_RESULT_BAD_MARKER_VERSION,
|
|
|
|
CLIP_LOAD_RESULT_FAILED = CLIP_LOAD_RESULT_UNSAFE_TO_CONTINUE,
|
|
|
|
CLIP_LOAD_RESULT_MARKERS_RESET = CLIP_LOAD_RESULT_UNSPPORTED_MARKER_VERSION | CLIP_LOAD_RESULT_BAD_MARKER_SIZE |
|
|
CLIP_LOAD_RESULT_OVERLAPPING_MARKERS,
|
|
|
|
CLIP_LOAD_RESULT_MARKERS_TRUNCATED = CLIP_LOAD_RESULT_TOO_MANY_MARKERS,
|
|
|
|
// Load failed, but we can try loading further clips
|
|
CLIP_LOAD_RESULT_CULL_FROM_PROJECT = CLIP_LOAD_RESULT_HEADER_INVALID,
|
|
};
|
|
|
|
enum eTEXT_LOAD_RESULT_FLAGS : rage::u64
|
|
{
|
|
TEXT_LOAD_RESULT_SUCCESS = 0,
|
|
|
|
TEXT_LOAD_RESULT_EARLY_EOF = BIT_64(0),
|
|
TEXT_LOAD_RESULT_OOM = BIT_64(1),
|
|
|
|
TEXT_LOAD_RESULT_BAD_VERSION = BIT_64(2),
|
|
TEXT_LOAD_RESULT_UNSUPPORTED_VERSION = BIT_64(3),
|
|
TEXT_LOAD_RESULT_BAD_SIZE = BIT_64(4),
|
|
TEXT_LOAD_RESULT_PROFANE = BIT_64(5),
|
|
|
|
// Misc flags we may want to report on
|
|
TEXT_LOAD_RESULT_VERSION_UPGRADED = BIT_64(6),
|
|
|
|
// Count of bitfields, for debug purposes
|
|
TEXT_LOAD_RESULT_USED_BITFIELDS = 7,
|
|
|
|
//! Common flag combinations
|
|
TEXT_LOAD_RESULT_UNSAFE_TO_CONTINUE = TEXT_LOAD_RESULT_EARLY_EOF | TEXT_LOAD_RESULT_OOM | TEXT_LOAD_RESULT_BAD_VERSION,
|
|
|
|
TEXT_LOAD_RESULT_FAILED = TEXT_LOAD_RESULT_UNSAFE_TO_CONTINUE,
|
|
|
|
TEXT_LOAD_RESULT_CULL_FROM_PROJECT = TEXT_LOAD_RESULT_UNSUPPORTED_VERSION | TEXT_LOAD_RESULT_PROFANE,
|
|
};
|
|
|
|
enum eMUSIC_LOAD_RESULT_FLAGS : rage::u64
|
|
{
|
|
MUSIC_LOAD_RESULT_SUCCESS = 0,
|
|
|
|
MUSIC_LOAD_RESULT_EARLY_EOF = BIT_64(0),
|
|
MUSIC_LOAD_RESULT_OOM = BIT_64(1),
|
|
|
|
MUSIC_LOAD_RESULT_BAD_VERSION = BIT_64(2),
|
|
MUSIC_LOAD_RESULT_UNSUPPORTED_VERSION = BIT_64(3),
|
|
MUSIC_LOAD_RESULT_BAD_SIZE = BIT_64(4),
|
|
MUSIC_LOAD_RESULT_INVALID_SOUNDHASH = BIT_64(5),
|
|
MUSIC_LOAD_RESULT_ALREADY_USED = BIT_64(6),
|
|
|
|
// Misc flags we may want to report on
|
|
MUSIC_LOAD_RESULT_VERSION_UPGRADED = BIT_64(7),
|
|
|
|
// Count of bitfields, for debug purposes
|
|
MUSIC_LOAD_RESULT_USED_BITFIELDS = 8,
|
|
|
|
//! Common flag combinations
|
|
MUSIC_LOAD_RESULT_UNSAFE_TO_CONTINUE = MUSIC_LOAD_RESULT_EARLY_EOF | MUSIC_LOAD_RESULT_OOM | MUSIC_LOAD_RESULT_BAD_VERSION,
|
|
|
|
MUSIC_LOAD_RESULT_FAILED = MUSIC_LOAD_RESULT_UNSAFE_TO_CONTINUE,
|
|
|
|
MUSIC_LOAD_RESULT_CULL_FROM_PROJECT = MUSIC_LOAD_RESULT_UNSUPPORTED_VERSION | MUSIC_LOAD_RESULT_INVALID_SOUNDHASH | MUSIC_LOAD_RESULT_ALREADY_USED,
|
|
};
|
|
|
|
enum ePROJECT_LOAD_RESULT_FLAGS : rage::u64
|
|
{
|
|
PROJECT_LOAD_RESULT_SUCCESS = 0,
|
|
|
|
PROJECT_LOAD_RESULT_INVALID_FILE = BIT_64(0),
|
|
PROJECT_LOAD_RESULT_EARLY_EOF = BIT_64(1),
|
|
PROJECT_LOAD_RESULT_OOM = BIT_64(2),
|
|
|
|
PROJECT_LOAD_RESULT_BAD_VERSION = BIT_64(3),
|
|
PROJECT_LOAD_RESULT_UNSUPPORTED_VERSION = BIT_64(4),
|
|
|
|
PROJECT_LOAD_RESULT_BAD_REPLAY_VERSION = BIT_64(5),
|
|
PROJECT_LOAD_RESULT_UNSUPPORTED_REPLAY_VERSION = BIT_64(6),
|
|
|
|
PROJECT_LOAD_RESULT_BAD_CACHED_DURATION = BIT_64(7),
|
|
|
|
PROJECT_LOAD_RESULT_BAD_CLIP_DATA = BIT_64(8),
|
|
PROJECT_LOAD_RESULT_CLIP_MARKERS_RESET = BIT_64(9),
|
|
PROJECT_LOAD_RESULT_CLIP_MARKERS_TRUNCATED = BIT_64(10),
|
|
PROJECT_LOAD_RESULT_CLIP_TIME_DATA_RESET = BIT_64(11),
|
|
PROJECT_LOAD_RESULT_CLIPS_TRUNCATED = BIT_64(12),
|
|
|
|
PROJECT_LOAD_RESULT_BAD_TEXT_DATA = BIT_64(13),
|
|
PROJECT_LOAD_RESULT_TEXT_RESET = BIT_64(14),
|
|
PROJECT_LOAD_RESULT_TEXT_HAD_PROFANITY = BIT_64(15),
|
|
PROJECT_LOAD_RESULT_TEXT_TRUNCATED = BIT_64(16),
|
|
|
|
PROJECT_LOAD_RESULT_BAD_MUSIC_DATA = BIT_64(17),
|
|
PROJECT_LOAD_RESULT_MUSIC_RESET = BIT_64(18),
|
|
PROJECT_LOAD_RESULT_MUSIC_INVALID_SOUNDHASH = BIT_64(19),
|
|
PROJECT_LOAD_RESULT_MUSIC_ALREADY_USED = BIT_64(20),
|
|
PROJECT_LOAD_RESULT_MUSIC_TRUNCATED = BIT_64(21),
|
|
|
|
// Misc flags we may want to report on
|
|
PROJECT_LOAD_RESULT_VERSION_UPGRADED = BIT_64(22),
|
|
|
|
// Count of bitfields, for debug purposes
|
|
PROJECT_LOAD_RESULT_USED_BITFIELDS = 23,
|
|
|
|
//! Common flag combinations
|
|
PROJECT_LOAD_RESULT_UNSAFE_TO_CONTINUE = PROJECT_LOAD_RESULT_INVALID_FILE | PROJECT_LOAD_RESULT_EARLY_EOF | PROJECT_LOAD_RESULT_OOM |
|
|
PROJECT_LOAD_RESULT_BAD_VERSION | PROJECT_LOAD_RESULT_BAD_REPLAY_VERSION |
|
|
PROJECT_LOAD_RESULT_BAD_CACHED_DURATION | PROJECT_LOAD_RESULT_BAD_CLIP_DATA,
|
|
|
|
PROJECT_LOAD_RESULT_FAILED = PROJECT_LOAD_RESULT_UNSAFE_TO_CONTINUE,
|
|
|
|
PROJECT_LOAD_RESULT_TEXT_REMOVED = PROJECT_LOAD_RESULT_TEXT_RESET | PROJECT_LOAD_RESULT_TEXT_HAD_PROFANITY |
|
|
PROJECT_LOAD_RESULT_TEXT_TRUNCATED,
|
|
|
|
PROJECT_LOAD_RESULT_MUSIC_REMOVED = PROJECT_LOAD_RESULT_MUSIC_RESET | PROJECT_LOAD_RESULT_MUSIC_ALREADY_USED |
|
|
PROJECT_LOAD_RESULT_MUSIC_INVALID_SOUNDHASH | PROJECT_LOAD_RESULT_MUSIC_TRUNCATED,
|
|
|
|
PROJECT_LOAD_RESULT_CONTENTS_REMOVED = PROJECT_LOAD_RESULT_CLIPS_TRUNCATED | PROJECT_LOAD_RESULT_CLIP_MARKERS_TRUNCATED |
|
|
PROJECT_LOAD_RESULT_TEXT_REMOVED | PROJECT_LOAD_RESULT_MUSIC_REMOVED,
|
|
|
|
PROJECT_LOAD_RESULT_CONTENTS_MODIFIED = PROJECT_LOAD_RESULT_CONTENTS_REMOVED | PROJECT_LOAD_RESULT_CLIP_MARKERS_RESET |
|
|
PROJECT_LOAD_RESULT_CLIP_TIME_DATA_RESET | PROJECT_LOAD_RESULT_TEXT_RESET |
|
|
PROJECT_LOAD_RESULT_MUSIC_RESET
|
|
};
|
|
|
|
enum ePROJECT_SAVE_RESULT_FLAGS : rage::u64
|
|
{
|
|
PROJECT_SAVE_RESULT_SUCCESS = 0,
|
|
|
|
PROJECT_SAVE_RESULT_BAD_NAME = BIT_64(0),
|
|
PROJECT_SAVE_RESULT_BAD_PATH = BIT_64(1),
|
|
PROJECT_SAVE_RESULT_NO_SPACE = BIT_64(2),
|
|
|
|
PROJECT_SAVE_RESULT_FILE_ACCESS_ERROR = BIT_64(3),
|
|
PROJECT_SAVE_RESULT_WRITE_FAIL = BIT_64(4),
|
|
PROJECT_SAVE_RESULT_CLOSE_FAIL = BIT_64(5),
|
|
|
|
PROJECT_SAVE_RESULT_NO_CLIPS = BIT_64(6),
|
|
PROJECT_SAVE_RESULT_BAD_TIME_DATA = BIT_64(7),
|
|
PROJECT_SAVE_RESULT_NOT_ENOUGH_MARKERS = BIT_64(8),
|
|
PROJECT_SAVE_RESULT_INVALID_MARKERS = BIT_64(9),
|
|
|
|
// Count of bitfields, for debug purposes
|
|
PROJECT_SAVE_RESULT_USED_BITFIELDS = 10,
|
|
|
|
PROJECT_SAVE_RESULT_FAILED_PATHS = PROJECT_SAVE_RESULT_BAD_PATH | PROJECT_SAVE_RESULT_BAD_PATH,
|
|
|
|
PROJECT_SAVE_RESULT_FAILED_FILE_ACCESS = PROJECT_SAVE_RESULT_FILE_ACCESS_ERROR | PROJECT_SAVE_RESULT_WRITE_FAIL | PROJECT_SAVE_RESULT_CLOSE_FAIL,
|
|
|
|
PROJECT_SAVE_RESULT_FAILED = PROJECT_SAVE_RESULT_FAILED_PATHS | PROJECT_SAVE_RESULT_NO_SPACE |
|
|
PROJECT_SAVE_RESULT_NO_CLIPS | PROJECT_SAVE_RESULT_FAILED_FILE_ACCESS | PROJECT_SAVE_RESULT_INVALID_MARKERS,
|
|
|
|
|
|
|
|
PROJECT_SAVE_RESULT_UNSAFE_TO_CONTINUE = PROJECT_SAVE_RESULT_FAILED,
|
|
};
|
|
|
|
static void PrintClipLoadResultStrings( u64 const resultFlags );
|
|
static void PrintTextLoadResultStrings( u64 const resultFlags );
|
|
static void PrintMusicLoadResultStrings( u64 const resultFlags );
|
|
static void PrintProjectLoadResultStrings( u64 const resultFlags );
|
|
|
|
static void PrintProjectSaveResultStrings( u64 const resultFlags );
|
|
|
|
static inline bool IsOnlyOneErrorSet( u64 const flags, u64 const mask )
|
|
{
|
|
u64 const c_flagsToCheck = flags & mask;
|
|
|
|
bool const c_result = c_flagsToCheck && !( c_flagsToCheck & (c_flagsToCheck-1) );
|
|
return c_result;
|
|
}
|
|
|
|
static u32 GetAutoGenerationDuration(eAutoGenerationDuration duration);
|
|
static atHashString const& GetAutogenDurationLngKey( eAutoGenerationDuration const eType );
|
|
|
|
private:
|
|
static atHashString const sc_autogenDurationLngKey[AUTO_GENERATION_MAX];
|
|
};
|
|
|
|
#endif // INC_REPLAY_EDITOR_PARAMETERS_H_
|
|
|
|
#endif // GTA_REPLAY
|