mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-14 00:54:05 +02:00
fix FMV in VR mode; more buttons to skip FMV; remove gamepad selection for SNES (CLOVER) platform; do not play FMV for level restart and title screen;
This commit is contained in:
@@ -949,9 +949,10 @@ namespace Core {
|
||||
|
||||
void endFrame() {
|
||||
GAPI::endFrame();
|
||||
active.targetOp |= RT_STORE_COLOR;
|
||||
GAPI::setTarget(NULL, RT_STORE_COLOR);
|
||||
validateRenderState();
|
||||
if (active.target != defaultTarget) {
|
||||
GAPI::setTarget(NULL, 0);
|
||||
validateRenderState();
|
||||
}
|
||||
Core::stats.stop();
|
||||
}
|
||||
|
||||
|
12
src/game.h
12
src/game.h
@@ -14,10 +14,20 @@ namespace Game {
|
||||
Stream *nextLevel;
|
||||
|
||||
void startLevel(Stream *lvl) {
|
||||
TR::LevelID id = TR::LVL_MAX;
|
||||
if (level)
|
||||
id = level->level.id;
|
||||
|
||||
Input::stopJoyVibration();
|
||||
delete level;
|
||||
level = new Level(*lvl);
|
||||
level->init();
|
||||
|
||||
bool playVideo = id != level->level.id;
|
||||
if (level->level.isTitle() && id != TR::LVL_MAX)
|
||||
playVideo = false;
|
||||
|
||||
level->init(playVideo);
|
||||
|
||||
UI::game = level;
|
||||
#if !defined(_OS_PSP) && !defined(_OS_CLOVER)
|
||||
UI::helpTipTime = 5.0f;
|
||||
|
@@ -153,8 +153,10 @@ static const OptionItem optControls[] = {
|
||||
OptionItem( OptionItem::TYPE_TITLE, STR_SET_CONTROLS ),
|
||||
OptionItem( ),
|
||||
OptionItem( OptionItem::TYPE_PARAM, STR_NOT_IMPLEMENTED , SETTINGS( playerIndex ), STR_PLAYER_1, 0, 1 ),
|
||||
#ifndef _OS_CLOVER
|
||||
OptionItem( OptionItem::TYPE_PARAM, STR_OPT_CONTROLS_GAMEPAD , SETTINGS( controls[0].joyIndex ), STR_GAMEPAD_1, 0, 3 ),
|
||||
#ifdef _OS_WIN
|
||||
#endif
|
||||
#if defined(_OS_WIN) || defined(_OS_LINUX) || defined(_OS_RPI)
|
||||
OptionItem( OptionItem::TYPE_PARAM, STR_OPT_CONTROLS_VIBRATION , SETTINGS( controls[0].vibration ), STR_OFF, 0, 1 ),
|
||||
#endif
|
||||
OptionItem( OptionItem::TYPE_PARAM, STR_OPT_CONTROLS_RETARGET , SETTINGS( controls[0].retarget ), STR_OFF, 0, 1 ),
|
||||
@@ -543,8 +545,8 @@ struct Inventory {
|
||||
delete background[i];
|
||||
}
|
||||
|
||||
void init() {
|
||||
new Stream(TR::getGameVideo(game->getLevel()->id), loadVideo, this);
|
||||
void init(bool playVideo) {
|
||||
new Stream(playVideo ? TR::getGameVideo(game->getLevel()->id) : NULL, loadVideo, this);
|
||||
}
|
||||
|
||||
bool isActive() {
|
||||
@@ -926,7 +928,9 @@ struct Inventory {
|
||||
}
|
||||
|
||||
void update() {
|
||||
if (video && (Input::state[0][cInventory] || Input::state[1][cInventory]))
|
||||
if (video && (Input::state[0][cInventory] || Input::state[0][cAction] || Input::state[0][cJump] ||
|
||||
Input::state[1][cInventory] || Input::state[1][cAction] || Input::state[1][cJump] ||
|
||||
Input::down[ikCtrl] || Input::down[ikEnter] || Input::down[ikAlt]))
|
||||
skipVideo();
|
||||
|
||||
if (video) {
|
||||
@@ -1438,11 +1442,9 @@ struct Inventory {
|
||||
vertices[10].texCoord =
|
||||
vertices[11].texCoord = short4(0, 0, 0, 0);
|
||||
|
||||
if (Core::settings.detail.stereo == Core::Settings::STEREO_VR || !background[0]) {
|
||||
for (int i = 0; i < 4; i++)
|
||||
vertices[i].light.x = vertices[i].light.y = vertices[i].light.z = 0;
|
||||
Core::whiteTex->bind(sDiffuse); // black background
|
||||
} else
|
||||
if ((Core::settings.detail.stereo == Core::Settings::STEREO_VR && !video) || !background[0])
|
||||
Core::blackTex->bind(sDiffuse); // black background
|
||||
else
|
||||
background[0]->bind(sDiffuse);
|
||||
|
||||
game->setShader(Core::passFilter, Shader::FILTER_UPSCALE, false, false);
|
||||
|
@@ -759,8 +759,8 @@ struct Level : IGame {
|
||||
Sound::stopAll();
|
||||
}
|
||||
|
||||
void init() {
|
||||
inventory->init();
|
||||
void init(bool playVideo) {
|
||||
inventory->init(playVideo);
|
||||
}
|
||||
|
||||
void addPlayer(int index) {
|
||||
@@ -2636,9 +2636,6 @@ struct Level : IGame {
|
||||
}
|
||||
|
||||
void render() {
|
||||
if (inventory->video)
|
||||
return;
|
||||
|
||||
bool title = inventory->isActive() || level.isTitle();
|
||||
bool copyBg = title && lastTitle != title;
|
||||
lastTitle = title;
|
||||
|
@@ -1454,6 +1454,7 @@ static const uint32 BIT_MASK[] = {
|
||||
0x1FFFFFFF, 0x3FFFFFFF, 0x7FFFFFFF, 0xFFFFFFFF,
|
||||
};
|
||||
|
||||
// TODO: refactor for LE, BE, byte and word reading
|
||||
struct BitStream {
|
||||
uint8 *data;
|
||||
uint8 *end;
|
||||
|
Reference in New Issue
Block a user