| 12345678910111213141516171819202122232425262728 |
- #pragma once
- #include "ember_movies.h"
- namespace sunrise::client::hooks::ember_movies {
- // E15D50's normal gameplay choices -> E2EAE0's native movie presentation state.
- // Both cinematic states 21h/22h map to native UI category 4 at E2E9F0.
- constexpr int movie_ui_state(int requested,bool presenting) noexcept {
- return presenting && (requested==0x2B || requested==0x2D || requested==0x2F)
- ? 0x22 : requested;
- }
- constexpr bool can_chain_movies(Owner current,Owner next,Owner firstCompleted,
- unsigned previous,unsigned requested,Status state) noexcept {
- return current.session && current.generation && current==next && current==firstCompleted
- && previous==1 && requested==2 && state==Status::complete;
- }
- // A queued request and decoder preparation do not prove rendered playback.
- struct Playback {
- bool seen{};
- Status observe(bool exactAsset, int decoderState, bool busy) noexcept {
- if (!exactAsset) return seen ? Status::failed : Status::preparing;
- if (decoderState==5) seen=true;
- if (!busy) {
- if (decoderState!=0 && decoderState!=6) return Status::failed;
- return seen ? Status::complete : Status::preparing;
- }
- return seen ? Status::playing : Status::preparing;
- }
- };
- }
|