This commit is contained in:
R2DLiu 2020-07-16 17:18:14 -04:00
commit 68680b7e8b
9 changed files with 81 additions and 22 deletions

View file

@ -452,7 +452,6 @@ namespace Slippi {
break;
case EVENT_FRAME_START:
handleFrameStart(game.get(), payloadSize);
isProcessingComplete = false; // SLIPPITODO remove after getting on par with ishii
break;
case EVENT_PRE_FRAME_UPDATE:
handlePreFrameUpdate(game.get(), payloadSize);

View file

@ -20,6 +20,7 @@ namespace Common
#define SLIPPI_REV_STR "2.1.1"
#define IS_PLAYBACK 1
const std::string scm_slippi_semver_str = SLIPPI_REV_STR;
#ifdef IS_PLAYBACK

View file

@ -29,7 +29,6 @@
#include "Core/Slippi/SlippiReplayComm.h"
#include "Core/Slippi/SlippiPlayback.h"
#include "Core/State.h"
#include "VideoCommon/OnScreenDisplay.h"
#define FRAME_INTERVAL 900
#define SLEEP_TIME_MS 8

View file

@ -194,8 +194,8 @@ constexpr std::array<const char*, 142> s_hotkey_labels{{
// Slippi Playback
_trans("Jump backwards in Slippi replay"),
_trans("Pause/unpause Slippi replay"),
_trans("Advance one frame in Slippi replay"),
_trans("Step backwards in Slippi replay"),
_trans("Step forwards in Slippi replay"),
_trans("Jump forwards in Slippi replay"),
}};
@ -355,7 +355,7 @@ constexpr std::array<HotkeyGroupInfo, NUM_HOTKEY_GROUPS> s_groups_info = {
{_trans("Select State"), HK_SELECT_STATE_SLOT_1, HK_SELECT_STATE_SLOT_10},
{_trans("Load Last State"), HK_LOAD_LAST_STATE_1, HK_LOAD_LAST_STATE_10},
{_trans("Other State Hotkeys"), HK_SAVE_FIRST_STATE, HK_LOAD_STATE_FILE},
{_trans("Slippi playback controls"), HK_JUMP_BACK, HK_JUMP_FORWARD} } };
{_trans("Slippi playback controls"), HK_SLIPPI_JUMP_BACK, HK_SLIPPI_JUMP_FORWARD} } };
HotkeyManager::HotkeyManager()
{
@ -496,4 +496,29 @@ void HotkeyManager::LoadDefaults(const ControllerInterface& ciface)
}
set_key_expression(HK_UNDO_LOAD_STATE, NON + " & `F12`");
set_key_expression(HK_UNDO_SAVE_STATE, SHIFT + " & `F12`");
// Slippi Playback
// #ifdef PLAYBACK
#ifdef _WIN32
set_key_expression(HK_SLIPPI_JUMP_BACK, SHIFT + " & `LEFT`");
set_key_expression(HK_SLIPPI_STEP_BACK, NON + " & `LEFT`");
set_key_expression(HK_FRAME_ADVANCE, NON + " & `PERIOD`");
set_key_expression(HK_PLAY_PAUSE, NON + " & `SPACE`");
set_key_expression(HK_SLIPPI_STEP_FORWARD, NON + " & `RIGHT`");
set_key_expression(HK_SLIPPI_JUMP_FORWARD, SHIFT + " & `RIGHT`");
#elif __APPLE__
set_key_expression(HK_SLIPPI_JUMP_BACK, SHIFT + " & `Left Arrow`");
set_key_expression(HK_SLIPPI_JUMP_BACK, NON + " & `Left Arrow`");
set_key_expression(HK_FRAME_ADVANCE, NON + " & `.`");
set_key_expression(HK_PLAY_PAUSE, NON + "& `Space`");
set_key_expression(HK_SLIPPI_STEP_FORWARD, NON + " & `Right Arrow`");
set_key_expression(HK_SLIPPI_JUMP_FORWARD, SHIFT + " & `Right Arrow`");
#else
set_key_expression(HK_SLIPPI_JUMP_BACK, SHIFT + " & `Left`");
set_key_expression(HK_SLIPPI_JUMP_BACK, NON + "Left");
set_key_expression(HK_FRAME_ADVANCE, NON + " & `period`");
set_key_expression(HK_PLAY_PAUSE, NON + "& `space`");
set_key_expression(HK_SLIPPI_STEP_FORWARD, NON + " & `Right`");
set_key_expression(HK_SLIPPI_JUMP_FORWARD, SHIFT + " & `Right`");
#endif
}

View file

@ -178,10 +178,10 @@ enum Hotkey
HK_LOAD_STATE_FILE,
// Slippi Playback
HK_JUMP_BACK,
HK_TOGGLE_PLAY_PAUSE,
HK_NEXT_FRAME,
HK_JUMP_FORWARD,
HK_SLIPPI_JUMP_BACK,
HK_SLIPPI_STEP_BACK,
HK_SLIPPI_STEP_FORWARD,
HK_SLIPPI_JUMP_FORWARD,
NUM_HOTKEYS,
};

View file

@ -40,11 +40,6 @@ signals:
void RequestLowerWindow();
void RequestExit();
void RequestSeek();
void RequestPausePlay();
void RequestSkipBack();
void RequestSkipBackBig();
void RequestSkipForward();
void RequestSkipForwardBig();
private:
Host();

View file

@ -24,6 +24,7 @@
#include "Core/IOS/IOS.h"
#include "Core/IOS/USB/Bluetooth/BTBase.h"
#include "Core/State.h"
#include "Core/Slippi/SlippiPlayback.h"
#include "DolphinQt/Settings.h"
@ -36,6 +37,8 @@
#include "VideoCommon/VertexShaderManager.h"
#include "VideoCommon/VideoConfig.h"
extern std::unique_ptr<SlippiPlaybackStatus> g_playbackStatus;
constexpr const char* DUBOIS_ALGORITHM_SHADER = "dubois";
HotkeyScheduler::HotkeyScheduler() : m_stop_requested(false)
@ -506,7 +509,41 @@ void HotkeyScheduler::Run()
Config::SetCurrent(Config::GFX_ENHANCE_POST_SHADER, "");
}
}
}
#ifdef IS_PLAYBACK
// Slippi Playback
if (IsHotkey(HK_SLIPPI_JUMP_BACK))
{
if (g_playbackStatus->targetFrameNum == INT_MAX) {
g_playbackStatus->targetFrameNum = g_playbackStatus->currentPlaybackFrame - 1200;
Host_PlaybackSeek();
}
}
if (IsHotkey(HK_SLIPPI_STEP_BACK))
{
if (g_playbackStatus->targetFrameNum == INT_MAX) {
g_playbackStatus->targetFrameNum = g_playbackStatus->currentPlaybackFrame - 300;
Host_PlaybackSeek();
}
}
if (IsHotkey(HK_SLIPPI_STEP_FORWARD))
{
if (g_playbackStatus->targetFrameNum == INT_MAX) {
g_playbackStatus->targetFrameNum = g_playbackStatus->currentPlaybackFrame + 300;
Host_PlaybackSeek();
}
}
if (IsHotkey(HK_SLIPPI_JUMP_FORWARD))
{
if (g_playbackStatus->targetFrameNum == INT_MAX) {
g_playbackStatus->targetFrameNum = g_playbackStatus->currentPlaybackFrame + 1200;
Host_PlaybackSeek();
}
}
#endif
const auto stereo_depth = Config::Get(Config::GFX_STEREO_DEPTH);

View file

@ -422,12 +422,12 @@ void DrawSlippiPlaybackControls()
}
ImGui::SetCursorPos(ImVec2(0.0f, ImGui::GetWindowHeight() - 30));
ImGui::PushStyleVar(ImGuiStyleVar_ButtonTextAlign, ImVec2(0.5f, 0.45f));
auto const paused = g_playbackStatus->shouldPause;
if (ButtonCustom(paused ? ICON_FA_PLAY : ICON_FA_PAUSE, ImVec2(40.0f, 32.0f))) {
g_playbackStatus->shouldPause = !paused;
INFO_LOG(SLIPPI, "playing");
}
ImGui::SameLine(0.0f, 5.0f);
//auto const paused = g_playbackStatus->shouldPause;
//if (ButtonCustom(paused ? ICON_FA_PLAY : ICON_FA_PAUSE, ImVec2(40.0f, 32.0f))) {
// g_playbackStatus->shouldPause = !paused;
// INFO_LOG(SLIPPI, "playing");
//}
//ImGui::SameLine(0.0f, 5.0f);
if (ButtonCustom(ICON_FA_FAST_BACKWARD, ImVec2(32.0f, 32.0f))) {
INFO_LOG(SLIPPI, "fast back");
if (g_playbackStatus->targetFrameNum == INT_MAX) {
@ -461,7 +461,7 @@ void DrawSlippiPlaybackControls()
}
ImGui::PopStyleVar();
ImGuiWindow* window = ImGui::GetCurrentWindow();
ImGui::SetCursorPos(ImVec2(180.0f, window->DC.CursorPosPrevLine.y + 6.0f));
ImGui::SetCursorPos(ImVec2(135.0f, window->DC.CursorPosPrevLine.y + 6.0f));
auto playbackTime = GetTimeForFrame(g_playbackStatus->currentPlaybackFrame);
auto endTime = GetTimeForFrame(g_playbackStatus->lastFrame);

View file

@ -55,3 +55,6 @@ void Host_LowerWindow()
void Host_Exit()
{
}
void Host_PlaybackSeek()
{
}