/* * This software is licensed under the terms of the MIT License. * See COPYING for further information. * --- * Copyright (c) 2011-2024, Lukas Weber . * Copyright (c) 2012-2024, Andrei Alexeyev . */ #pragma once #include "taisei.h" #include "util/callchain.h" #include #define REPLAY_EXTENSION "tsr" #ifdef DEBUG // #define REPLAY_LOAD_DEBUG #endif typedef struct Replay Replay; typedef struct ReplayStage ReplayStage; typedef struct ReplayEvent ReplayEvent; typedef enum ReplayReadMode { // bitflags REPLAY_READ_META = (1 << 0), REPLAY_READ_EVENTS = (1 << 1), REPLAY_READ_IGNORE_ERRORS = (1 << 2), REPLAY_READ_ALL = REPLAY_READ_META | REPLAY_READ_EVENTS, } ReplayReadMode; void replay_reset(Replay *rpy) attr_nonnull_all; void replay_destroy_events(Replay *rpy) attr_nonnull_all; bool replay_write(Replay *rpy, SDL_RWops *file, uint16_t version) attr_nonnull_all; bool replay_read(Replay *rpy, SDL_RWops *file, ReplayReadMode mode, const char *source) attr_nonnull(1, 2); bool replay_save(Replay *rpy, const char *name) attr_nonnull_all; bool replay_save_syspath(Replay *rpy, const char *path, uint16_t version) attr_nonnull_all; bool replay_load(Replay *rpy, const char *name, ReplayReadMode mode) attr_nonnull_all; bool replay_load_syspath(Replay *rpy, const char *path, ReplayReadMode mode) attr_nonnull_all; bool replay_load_vfspath(Replay *rpy, const char *path, ReplayReadMode mode) attr_nonnull_all; int replay_find_stage_idx(Replay *rpy, uint8_t stageid) attr_nonnull_all; void replay_play(Replay *rpy, int firstidx, bool demo_mode, CallChain next) attr_nonnull_all;