mirror of
https://github.com/korenkonder/ReDIVA.git
synced 2026-10-05 05:07:56 +03:00
TaskMovie: Don't force workaround if Interop is available
This commit is contained in:
@@ -1728,21 +1728,21 @@ bool pv_game_pv_data::dsc_ctrl(float_t delta_time, int64_t curr_time,
|
||||
if (!app::TaskWork::check_task_ready(task_movie_get(i)))
|
||||
continue;
|
||||
|
||||
TaskMovie::DispState disp_state = TaskMovie::DispState::None;
|
||||
TaskMovie::DispType disp_type = TaskMovie::DispType::None;
|
||||
if (pv_game_get()->data.movie_index == i) {
|
||||
if (!pv_game->data.enable_movie)
|
||||
state = 0;
|
||||
|
||||
switch (state) {
|
||||
case 1:
|
||||
disp_state = TaskMovie::DispState::Disp;
|
||||
disp_type = TaskMovie::DispType::SpriteTextute;
|
||||
break;
|
||||
case 2:
|
||||
disp_state = TaskMovie::DispState::Hide;
|
||||
disp_type = TaskMovie::DispType::Textute;
|
||||
break;
|
||||
}
|
||||
}
|
||||
task_movie_get(i)->disp_state = disp_state;
|
||||
task_movie_get(i)->disp_type = disp_type;
|
||||
break;
|
||||
}
|
||||
} break;
|
||||
@@ -1984,26 +1984,26 @@ bool pv_game_pv_data::dsc_ctrl(float_t delta_time, int64_t curr_time,
|
||||
|
||||
for (int32_t m = 0; m < TASK_MOVIE_COUNT; m++)
|
||||
if (app::TaskWork::check_task_ready(task_movie_get(m)))
|
||||
task_movie_get(m)->disp_state = TaskMovie::DispState::None;
|
||||
task_movie_get(m)->disp_type = TaskMovie::DispType::None;
|
||||
|
||||
if (index != -1 && app::TaskWork::check_task_ready(task_movie_get(index))) {
|
||||
task_movie_get(index)->Play();
|
||||
pv_game_get()->data.movie_index = index;
|
||||
movie_play_time_set(curr_time);
|
||||
|
||||
TaskMovie::DispState disp_state = TaskMovie::DispState::None;
|
||||
TaskMovie::DispType disp_type = TaskMovie::DispType::None;
|
||||
if (!pv_game->data.enable_movie)
|
||||
state = 0;
|
||||
|
||||
switch (state) {
|
||||
case 1:
|
||||
disp_state = TaskMovie::DispState::Disp;
|
||||
disp_type = TaskMovie::DispType::SpriteTextute;
|
||||
break;
|
||||
case 2:
|
||||
disp_state = TaskMovie::DispState::Hide;
|
||||
disp_type = TaskMovie::DispType::Textute;
|
||||
break;
|
||||
}
|
||||
task_movie_get(index)->disp_state = disp_state;
|
||||
task_movie_get(index)->disp_type = disp_type;
|
||||
}
|
||||
} break;
|
||||
case DSC_FT_CHARA_LIGHT: {
|
||||
|
||||
@@ -205,7 +205,7 @@ void TaskMovie::Player::UpdateInteropTexture(TaskMovie::PlayerVideoParams* playe
|
||||
}
|
||||
|
||||
TaskMovie::TaskMovie() : player(), player_video_params(), tex(), pause(), wait_play() {
|
||||
disp_state = TaskMovie::DispState::Disp;
|
||||
disp_type = TaskMovie::DispType::SpriteTextute;
|
||||
state = TaskMovie::State::Wait;
|
||||
}
|
||||
|
||||
@@ -242,12 +242,16 @@ bool TaskMovie::ctrl() {
|
||||
if (!tex)
|
||||
tex = sub_14041E560();
|
||||
|
||||
if (disp_state != TaskMovie::DispState::None)
|
||||
if (disp_type != TaskMovie::DispType::None)
|
||||
player->GetInteropTexture(tex);
|
||||
}
|
||||
|
||||
if (!player->interop_texture && !no_interop)
|
||||
task_movie_player_no_interop.insert({ player, {} }).first->second.Create();
|
||||
if (player && !player->interop_texture
|
||||
&& !no_interop && disp_type != TaskMovie::DispType::None) {
|
||||
HRESULT hr = player->player->GetGLDXIntreropTexture(&player->interop_texture);
|
||||
if (hr < S_FALSE)
|
||||
task_movie_player_no_interop.insert({ player, {} }).first->second.Create();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -273,7 +277,7 @@ bool TaskMovie::dest() {
|
||||
}
|
||||
|
||||
void TaskMovie::disp() {
|
||||
if (state != TaskMovie::State::Disp || disp_state != TaskMovie::DispState::Disp || !tex)
|
||||
if (state != TaskMovie::State::Disp || disp_type != TaskMovie::DispType::SpriteTextute || !tex)
|
||||
return;
|
||||
|
||||
float_t width = (float_t)player_video_params->width;
|
||||
@@ -512,7 +516,7 @@ void TaskMovie::Start(const std::string& path) {
|
||||
|
||||
bool TaskMovie::Unload() {
|
||||
bool res = TaskMovie::Shutdown();
|
||||
disp_state = TaskMovie::DispState::Disp;
|
||||
disp_type = TaskMovie::DispType::SpriteTextute;
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -575,7 +579,7 @@ void TaskMoviePlayerNoInterop::Ctrl(TaskMovie* task_movie,
|
||||
if (!task_movie->tex)
|
||||
task_movie->tex = sub_14041E560();
|
||||
|
||||
if (task_movie->disp_state != TaskMovie::DispState::None)
|
||||
if (task_movie->disp_type != TaskMovie::DispType::None)
|
||||
GetD3D11Texture(player, task_movie->tex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,10 +21,10 @@ public:
|
||||
Max,
|
||||
};
|
||||
|
||||
enum class DispState {
|
||||
enum class DispType {
|
||||
None = 0,
|
||||
Disp,
|
||||
Hide,
|
||||
SpriteTextute,
|
||||
Textute,
|
||||
Max,
|
||||
};
|
||||
|
||||
@@ -83,7 +83,7 @@ public:
|
||||
};
|
||||
|
||||
std::string path;
|
||||
DispState disp_state;
|
||||
DispType disp_type;
|
||||
SprParams spr_params;
|
||||
State state;
|
||||
Player* player;
|
||||
|
||||
Reference in New Issue
Block a user