fixed lense creation bug ( fade in/out now has separate flag)

svn-id: r18340
This commit is contained in:
Andrew Kurushin 2005-06-04 15:02:17 +00:00
parent 2a3227911b
commit d3587c3a1e
6 changed files with 54 additions and 29 deletions

View file

@ -405,8 +405,8 @@ int Events::handleOneShot(EVENT *event) {
_vm->_interface->setStatusText(""); _vm->_interface->setStatusText("");
_vm->_interface->drawStatusBar(); _vm->_interface->drawStatusBar();
break; break;
case EVENT_RESTORE_MODE: case EVENT_SET_FADE_MODE:
_vm->_interface->restoreMode(); _vm->_interface->setFadeMode(event->param);
break; break;
default: default:
break; break;

View file

@ -86,7 +86,7 @@ enum EVENT_OPS {
EVENT_DEACTIVATE = 2, EVENT_DEACTIVATE = 2,
EVENT_SET_STATUS = 3, EVENT_SET_STATUS = 3,
EVENT_CLEAR_STATUS = 4, EVENT_CLEAR_STATUS = 4,
EVENT_RESTORE_MODE = 5, EVENT_SET_FADE_MODE = 5,
// ACTOR events // ACTOR events
EVENT_MOVE = 1, EVENT_MOVE = 1,
// SCRIPT events // SCRIPT events

View file

@ -178,9 +178,10 @@ Interface::Interface(SagaEngine *vm) : _vm(vm), _initialized(false) {
_saveEdit = _savePanel.getButton(_vm->getDisplayInfo().saveEditIndex); _saveEdit = _savePanel.getButton(_vm->getDisplayInfo().saveEditIndex);
_savePanel.currentButton = NULL; _savePanel.currentButton = NULL;
_active = false; _active = true;
_panelMode = _lockedMode = kPanelNull; _panelMode = _lockedMode = kPanelNull;
_savedMode = -1; _savedMode = -1;
_fadeMode = kNoFade;
_inMainMode = false; _inMainMode = false;
*_statusText = 0; *_statusText = 0;
_statusOnceColor = -1; _statusOnceColor = -1;
@ -258,7 +259,7 @@ void Interface::restoreMode() {
draw(); draw();
} }
void Interface::setMode(int mode, bool force) { void Interface::setMode(int mode) {
// TODO: Is this where we should hide/show the mouse cursor? // TODO: Is this where we should hide/show the mouse cursor?
debug(0, "Interface::setMode %i", mode); debug(0, "Interface::setMode %i", mode);
if (mode == kPanelMain) { if (mode == kPanelMain) {
@ -271,13 +272,6 @@ void Interface::setMode(int mode, bool force) {
_saveReminderState = 0; _saveReminderState = 0;
} }
// This lets us to prevents actors to pop up during initial
// scene fade in.
if (_savedMode != -1 && !force) {
_savedMode = mode;
debug(0, "Saved mode: %d. my mode is %d", mode, _panelMode);
}
else
_panelMode = mode; _panelMode = mode;
switch(_panelMode) { switch(_panelMode) {
@ -527,7 +521,7 @@ void Interface::draw() {
backBuffer = _vm->_gfx->getBackBuffer(); backBuffer = _vm->_gfx->getBackBuffer();
if (_vm->_scene->isInDemo() || _panelMode == kPanelFade) if (_vm->_scene->isInDemo() || _fadeMode == kFadeOut)
return; return;
@ -1131,7 +1125,7 @@ void Interface::setOption(PanelButton *panelButton) {
void Interface::update(const Point& mousePoint, int updateFlag) { void Interface::update(const Point& mousePoint, int updateFlag) {
if (_vm->_scene->isInDemo() || _panelMode == kPanelFade || !_active) { if (_vm->_scene->isInDemo() || _fadeMode == kFadeOut || !_active) {
return; return;
} }

View file

@ -67,7 +67,12 @@ enum PanelModes {
kPanelPlacard, kPanelPlacard,
kPanelMap, kPanelMap,
// kPanelInventory, // kPanelInventory,
kPanelFade };
enum FadeModes {
kNoFade = 0,
kFadeIn,
kFadeOut
}; };
struct InterfacePanel { struct InterfacePanel {
@ -142,8 +147,6 @@ struct InterfacePanel {
}; };
struct Converse { struct Converse {
char *text; char *text;
int stringNum; int stringNum;
@ -185,8 +188,15 @@ public:
draw(); draw();
} }
bool isActive() { return _active; } bool isActive() { return _active; }
void setMode(int mode, bool force = false); void setMode(int mode);
int getMode(void) const { return _panelMode; } int getMode(void) const { return _panelMode; }
void setFadeMode(int fadeMode) {
_fadeMode = fadeMode;
draw();
}
int getFadeMode() const {
return _fadeMode;
}
void rememberMode(); void rememberMode();
void restoreMode(); void restoreMode();
bool isInMainMode() { return _inMainMode; } bool isInMainMode() { return _inMainMode; }
@ -364,6 +374,7 @@ private:
int _saveReminderState; int _saveReminderState;
bool _active; bool _active;
int _fadeMode;
int _panelMode; int _panelMode;
int _savedMode; int _savedMode;
int _lockedMode; int _lockedMode;

View file

@ -115,7 +115,7 @@ int Render::drawScene() {
// Display scene background // Display scene background
_vm->_scene->draw(); _vm->_scene->draw();
if (_vm->_interface->getMode() != kPanelFade) { if (_vm->_interface->getFadeMode() != kFadeOut) {
if (_vm->_puzzle->isActive()) { if (_vm->_puzzle->isActive()) {
_vm->_puzzle->movePiece(mouse_pt); _vm->_puzzle->movePiece(mouse_pt);
_vm->_actor->drawSpeech(); _vm->_actor->drawSpeech();

View file

@ -466,8 +466,7 @@ void Scene::loadScene(LoadSceneParams *loadSceneParams) {
if (loadSceneParams->transitionType == kTransitionFade || if (loadSceneParams->transitionType == kTransitionFade ||
loadSceneParams->transitionType == kTransitionFadeNoInterface) { loadSceneParams->transitionType == kTransitionFadeNoInterface) {
_vm->_interface->rememberMode(); _vm->_interface->setFadeMode(kFadeOut);
_vm->_interface->setMode(kPanelFade, true);
// Fade to black out // Fade to black out
_vm->_gfx->getCurrentPal(current_pal); _vm->_gfx->getCurrentPal(current_pal);
@ -489,6 +488,15 @@ void Scene::loadScene(LoadSceneParams *loadSceneParams) {
q_event = _vm->_events->chain(q_event, &event); q_event = _vm->_events->chain(q_event, &event);
} }
// set fade mode
event.type = IMMEDIATE_EVENT;
event.code = INTERFACE_EVENT;
event.op = EVENT_SET_FADE_MODE;
event.param = kNoFade;
event.time = 0;
event.duration = 0;
q_event = _vm->_events->chain(q_event, &event);
// Display scene background, but stay with black palette // Display scene background, but stay with black palette
event.type = IMMEDIATE_EVENT; event.type = IMMEDIATE_EVENT;
event.code = BG_EVENT; event.code = BG_EVENT;
@ -498,13 +506,6 @@ void Scene::loadScene(LoadSceneParams *loadSceneParams) {
event.duration = 0; event.duration = 0;
q_event = _vm->_events->chain(q_event, &event); q_event = _vm->_events->chain(q_event, &event);
// Restore interface mode
event.type = IMMEDIATE_EVENT;
event.code = INTERFACE_EVENT;
event.op = EVENT_RESTORE_MODE;
event.time = 0;
event.duration = 0;
q_event = _vm->_events->chain(q_event, &event);
} }
// Start the scene pre script, but stay with black palette // Start the scene pre script, but stay with black palette
@ -525,6 +526,16 @@ void Scene::loadScene(LoadSceneParams *loadSceneParams) {
if (loadSceneParams->transitionType == kTransitionFade || if (loadSceneParams->transitionType == kTransitionFade ||
loadSceneParams->transitionType == kTransitionFadeNoInterface) { loadSceneParams->transitionType == kTransitionFadeNoInterface) {
// set fade mode
event.type = IMMEDIATE_EVENT;
event.code = INTERFACE_EVENT;
event.op = EVENT_SET_FADE_MODE;
event.param = kFadeIn;
event.time = 0;
event.duration = 0;
q_event = _vm->_events->chain(q_event, &event);
// Fade in from black to the scene background palette // Fade in from black to the scene background palette
event.type = IMMEDIATE_EVENT; event.type = IMMEDIATE_EVENT;
event.code = PAL_EVENT; event.code = PAL_EVENT;
@ -534,6 +545,15 @@ void Scene::loadScene(LoadSceneParams *loadSceneParams) {
event.data = _bg.pal; event.data = _bg.pal;
q_event = _vm->_events->chain(q_event, &event); q_event = _vm->_events->chain(q_event, &event);
// set fade mode
event.type = IMMEDIATE_EVENT;
event.code = INTERFACE_EVENT;
event.op = EVENT_SET_FADE_MODE;
event.param = kNoFade;
event.time = 0;
event.duration = 0;
q_event = _vm->_events->chain(q_event, &event);
} }