p2sr / SourceAutoRecord

Speedrun plugin for Source engine games.
MIT License
89 stars 27 forks source link

fix: orange demo angles #171

Closed ThisAMJ closed 1 year ago

ThisAMJ commented 1 year ago

because a. engine->IsOrange() is apparently false in orange demos, and b. angles are apparently always stored in slot 0 in demos

Resolves: #169

mlugg commented 1 year ago

Better would be to try and make IsOrange work correctly in demo playback. Try this:

bool Engine::IsOrange() {
    static bool isOrange;
    if (engine->demoPlayer->IsPlaying()) {
        isOrange = GET_SLOT() == 1;
    } else if (session->signonState == SIGNONSTATE_FULL) {
        isOrange = this->IsCoop() && !engine->hoststate->m_activeGame && !engine->demoplayer->IsPlaying();
    }
    return isOrange;
}