SCI: renamed SciGuiAnimate to GfxAnimate, moved code from SciGui into this class, now getting called directly
svn-id: r47751
This commit is contained in:
parent
6248362c38
commit
c991a5bceb
8 changed files with 134 additions and 120 deletions
|
@ -45,6 +45,7 @@
|
||||||
#include "sci/graphics/gui.h"
|
#include "sci/graphics/gui.h"
|
||||||
#include "sci/graphics/gui32.h"
|
#include "sci/graphics/gui32.h"
|
||||||
#include "sci/graphics/cursor.h"
|
#include "sci/graphics/cursor.h"
|
||||||
|
#include "sci/graphics/screen.h"
|
||||||
|
|
||||||
#include "sci/parser/vocabulary.h"
|
#include "sci/parser/vocabulary.h"
|
||||||
|
|
||||||
|
@ -1073,7 +1074,7 @@ bool Console::cmdDrawPic(int argc, const char **argv) {
|
||||||
uint16 resourceId = atoi(argv[1]);
|
uint16 resourceId = atoi(argv[1]);
|
||||||
|
|
||||||
_vm->_gamestate->_gui->drawPicture(resourceId, 100, false, false, false, 0);
|
_vm->_gamestate->_gui->drawPicture(resourceId, 100, false, false, false, 0);
|
||||||
_vm->_gamestate->_gui->animateShowPic();
|
_vm->_gamestate->_screen->copyToScreen();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -973,7 +973,7 @@ reg_t kAddToPic(EngineState *s, int argc, reg_t *argv) {
|
||||||
case 1:
|
case 1:
|
||||||
if (argv[0].isNull())
|
if (argv[0].isNull())
|
||||||
return s->r_acc;
|
return s->r_acc;
|
||||||
s->_gui->addToPicList(argv[0], argc, argv);
|
s->_gfxAnimate->kernelAddToPicList(argv[0], argc, argv);
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
viewId = argv[0].toUint16();
|
viewId = argv[0].toUint16();
|
||||||
|
@ -983,7 +983,7 @@ reg_t kAddToPic(EngineState *s, int argc, reg_t *argv) {
|
||||||
topPos = argv[4].toSint16();
|
topPos = argv[4].toSint16();
|
||||||
priority = argv[5].toSint16();
|
priority = argv[5].toSint16();
|
||||||
control = argv[6].toSint16();
|
control = argv[6].toSint16();
|
||||||
s->_gui->addToPicView(viewId, loopNo, celNo, leftPos, topPos, priority, control);
|
s->_gfxAnimate->kernelAddToPicView(viewId, loopNo, celNo, leftPos, topPos, priority, control);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
error("kAddToPic with unsupported parameter count %d", argc);
|
error("kAddToPic with unsupported parameter count %d", argc);
|
||||||
|
@ -1102,7 +1102,7 @@ reg_t kAnimate(EngineState *s, int argc, reg_t *argv) {
|
||||||
// Take care of incoming events (kAnimate is called semi-regularly)
|
// Take care of incoming events (kAnimate is called semi-regularly)
|
||||||
process_sound_events(s);
|
process_sound_events(s);
|
||||||
#endif
|
#endif
|
||||||
s->_gui->animate(castListReference, cycle, argc, argv);
|
s->_gfxAnimate->kernelAnimate(castListReference, cycle, argc, argv);
|
||||||
|
|
||||||
return s->r_acc;
|
return s->r_acc;
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,9 @@ namespace Sci {
|
||||||
|
|
||||||
class SciEvent;
|
class SciEvent;
|
||||||
class Menubar;
|
class Menubar;
|
||||||
|
class GfxAnimate;
|
||||||
class GfxPorts;
|
class GfxPorts;
|
||||||
|
class Screen;
|
||||||
class SciGui;
|
class SciGui;
|
||||||
class Cursor;
|
class Cursor;
|
||||||
class MessageState;
|
class MessageState;
|
||||||
|
@ -148,7 +150,9 @@ public:
|
||||||
|
|
||||||
/* Non-VM information */
|
/* Non-VM information */
|
||||||
|
|
||||||
GfxPorts *_gfxPorts; // Port managment for 16-bit gui
|
GfxAnimate *_gfxAnimate; // Animate for 16-bit gfx
|
||||||
|
GfxPorts *_gfxPorts; // Port managment for 16-bit gfx
|
||||||
|
Screen *_screen; // gfx screen
|
||||||
SciGui *_gui; /* Currently active Gui */
|
SciGui *_gui; /* Currently active Gui */
|
||||||
|
|
||||||
#ifdef ENABLE_SCI32
|
#ifdef ENABLE_SCI32
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#include "sci/engine/selector.h"
|
#include "sci/engine/selector.h"
|
||||||
#include "sci/engine/vm.h"
|
#include "sci/engine/vm.h"
|
||||||
#include "sci/graphics/cache.h"
|
#include "sci/graphics/cache.h"
|
||||||
|
#include "sci/graphics/cursor.h"
|
||||||
#include "sci/graphics/ports.h"
|
#include "sci/graphics/ports.h"
|
||||||
#include "sci/graphics/paint16.h"
|
#include "sci/graphics/paint16.h"
|
||||||
#include "sci/graphics/view.h"
|
#include "sci/graphics/view.h"
|
||||||
|
@ -41,17 +42,17 @@
|
||||||
|
|
||||||
namespace Sci {
|
namespace Sci {
|
||||||
|
|
||||||
SciGuiAnimate::SciGuiAnimate(EngineState *state, GfxCache *cache, GfxPorts *ports, GfxPaint16 *paint16, Screen *screen, SciPalette *palette)
|
GfxAnimate::GfxAnimate(EngineState *state, GfxCache *cache, GfxPorts *ports, GfxPaint16 *paint16, Screen *screen, SciPalette *palette, Cursor *cursor, Transitions *transitions)
|
||||||
: _s(state), _cache(cache), _ports(ports), _paint16(paint16), _screen(screen), _palette(palette) {
|
: _s(state), _cache(cache), _ports(ports), _paint16(paint16), _screen(screen), _palette(palette), _cursor(cursor), _transitions(transitions) {
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
SciGuiAnimate::~SciGuiAnimate() {
|
GfxAnimate::~GfxAnimate() {
|
||||||
free(_listData);
|
free(_listData);
|
||||||
free(_lastCastData);
|
free(_lastCastData);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SciGuiAnimate::init() {
|
void GfxAnimate::init() {
|
||||||
_listData = NULL;
|
_listData = NULL;
|
||||||
_listCount = 0;
|
_listCount = 0;
|
||||||
_lastCastData = NULL;
|
_lastCastData = NULL;
|
||||||
|
@ -67,11 +68,11 @@ void SciGuiAnimate::init() {
|
||||||
_ignoreFastCast = true;
|
_ignoreFastCast = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SciGuiAnimate::disposeLastCast() {
|
void GfxAnimate::disposeLastCast() {
|
||||||
_lastCastCount = 0;
|
_lastCastCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SciGuiAnimate::invoke(List *list, int argc, reg_t *argv) {
|
bool GfxAnimate::invoke(List *list, int argc, reg_t *argv) {
|
||||||
reg_t curAddress = list->first;
|
reg_t curAddress = list->first;
|
||||||
Node *curNode = _s->_segMan->lookupNode(curAddress);
|
Node *curNode = _s->_segMan->lookupNode(curAddress);
|
||||||
reg_t curObject;
|
reg_t curObject;
|
||||||
|
@ -108,7 +109,7 @@ bool sortHelper(const AnimateEntry* entry1, const AnimateEntry* entry2) {
|
||||||
return (entry1->y == entry2->y) ? (entry1->z < entry2->z) : (entry1->y < entry2->y);
|
return (entry1->y == entry2->y) ? (entry1->z < entry2->z) : (entry1->y < entry2->y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SciGuiAnimate::makeSortedList(List *list) {
|
void GfxAnimate::makeSortedList(List *list) {
|
||||||
reg_t curAddress = list->first;
|
reg_t curAddress = list->first;
|
||||||
Node *curNode = _s->_segMan->lookupNode(curAddress);
|
Node *curNode = _s->_segMan->lookupNode(curAddress);
|
||||||
reg_t curObject;
|
reg_t curObject;
|
||||||
|
@ -199,7 +200,7 @@ void SciGuiAnimate::makeSortedList(List *list) {
|
||||||
Common::sort(_list.begin(), _list.end(), sortHelper);
|
Common::sort(_list.begin(), _list.end(), sortHelper);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SciGuiAnimate::fill(byte &old_picNotValid) {
|
void GfxAnimate::fill(byte &old_picNotValid) {
|
||||||
reg_t curObject;
|
reg_t curObject;
|
||||||
AnimateEntry *listEntry;
|
AnimateEntry *listEntry;
|
||||||
uint16 signal;
|
uint16 signal;
|
||||||
|
@ -262,7 +263,7 @@ void SciGuiAnimate::fill(byte &old_picNotValid) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SciGuiAnimate::update() {
|
void GfxAnimate::update() {
|
||||||
reg_t curObject;
|
reg_t curObject;
|
||||||
AnimateEntry *listEntry;
|
AnimateEntry *listEntry;
|
||||||
uint16 signal;
|
uint16 signal;
|
||||||
|
@ -367,7 +368,7 @@ void SciGuiAnimate::update() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SciGuiAnimate::drawCels() {
|
void GfxAnimate::drawCels() {
|
||||||
reg_t curObject;
|
reg_t curObject;
|
||||||
AnimateEntry *listEntry;
|
AnimateEntry *listEntry;
|
||||||
AnimateEntry *lastCastEntry = _lastCastData;
|
AnimateEntry *lastCastEntry = _lastCastData;
|
||||||
|
@ -405,7 +406,7 @@ void SciGuiAnimate::drawCels() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SciGuiAnimate::updateScreen(byte oldPicNotValid) {
|
void GfxAnimate::updateScreen(byte oldPicNotValid) {
|
||||||
reg_t curObject;
|
reg_t curObject;
|
||||||
AnimateEntry *listEntry;
|
AnimateEntry *listEntry;
|
||||||
uint16 signal;
|
uint16 signal;
|
||||||
|
@ -454,7 +455,7 @@ void SciGuiAnimate::updateScreen(byte oldPicNotValid) {
|
||||||
// _screen->copyToScreen();
|
// _screen->copyToScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SciGuiAnimate::restoreAndDelete(int argc, reg_t *argv) {
|
void GfxAnimate::restoreAndDelete(int argc, reg_t *argv) {
|
||||||
reg_t curObject;
|
reg_t curObject;
|
||||||
AnimateEntry *listEntry;
|
AnimateEntry *listEntry;
|
||||||
uint16 signal;
|
uint16 signal;
|
||||||
|
@ -495,7 +496,7 @@ void SciGuiAnimate::restoreAndDelete(int argc, reg_t *argv) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SciGuiAnimate::reAnimate(Common::Rect rect) {
|
void GfxAnimate::reAnimate(Common::Rect rect) {
|
||||||
AnimateEntry *lastCastEntry;
|
AnimateEntry *lastCastEntry;
|
||||||
uint16 lastCastCount;
|
uint16 lastCastCount;
|
||||||
|
|
||||||
|
@ -542,7 +543,7 @@ void SciGuiAnimate::reAnimate(Common::Rect rect) {
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void SciGuiAnimate::addToPicDrawCels() {
|
void GfxAnimate::addToPicDrawCels() {
|
||||||
reg_t curObject;
|
reg_t curObject;
|
||||||
AnimateEntry *listEntry;
|
AnimateEntry *listEntry;
|
||||||
View *view = NULL;
|
View *view = NULL;
|
||||||
|
@ -574,7 +575,7 @@ void SciGuiAnimate::addToPicDrawCels() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SciGuiAnimate::addToPicDrawView(GuiResourceId viewId, int16 loopNo, int16 celNo, int16 leftPos, int16 topPos, int16 priority, int16 control) {
|
void GfxAnimate::addToPicDrawView(GuiResourceId viewId, int16 loopNo, int16 celNo, int16 leftPos, int16 topPos, int16 priority, int16 control) {
|
||||||
View *view = _cache->getView(viewId);
|
View *view = _cache->getView(viewId);
|
||||||
Common::Rect celRect;
|
Common::Rect celRect;
|
||||||
|
|
||||||
|
@ -583,4 +584,95 @@ void SciGuiAnimate::addToPicDrawView(GuiResourceId viewId, int16 loopNo, int16 c
|
||||||
_paint16->drawCel(view, loopNo, celNo, celRect, priority, 0);
|
_paint16->drawCel(view, loopNo, celNo, celRect, priority, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GfxAnimate::animateShowPic() {
|
||||||
|
Port *picPort = _ports->_picWind;
|
||||||
|
Common::Rect picRect = picPort->rect;
|
||||||
|
bool previousCursorState = _cursor->isVisible();
|
||||||
|
|
||||||
|
if (previousCursorState)
|
||||||
|
_cursor->hide();
|
||||||
|
// Adjust picRect to become relative to screen
|
||||||
|
picRect.translate(picPort->left, picPort->top);
|
||||||
|
_transitions->doit(picRect);
|
||||||
|
if (previousCursorState)
|
||||||
|
_cursor->show();
|
||||||
|
|
||||||
|
// We set SCI1.1 priority band information here
|
||||||
|
_ports->priorityBandsRecall();
|
||||||
|
}
|
||||||
|
|
||||||
|
void GfxAnimate::kernelAnimate(reg_t listReference, bool cycle, int argc, reg_t *argv) {
|
||||||
|
byte old_picNotValid = _screen->_picNotValid;
|
||||||
|
|
||||||
|
if (listReference.isNull()) {
|
||||||
|
disposeLastCast();
|
||||||
|
if (_screen->_picNotValid)
|
||||||
|
animateShowPic();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List *list = _s->_segMan->lookupList(listReference);
|
||||||
|
if (!list)
|
||||||
|
error("kAnimate called with non-list as parameter");
|
||||||
|
|
||||||
|
if (cycle) {
|
||||||
|
if (!invoke(list, argc, argv))
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Port *oldPort = _ports->setPort((Port *)_ports->_picWind);
|
||||||
|
disposeLastCast();
|
||||||
|
|
||||||
|
makeSortedList(list);
|
||||||
|
fill(old_picNotValid);
|
||||||
|
|
||||||
|
if (old_picNotValid) {
|
||||||
|
_ports->beginUpdate(_ports->_picWind);
|
||||||
|
update();
|
||||||
|
_ports->endUpdate(_ports->_picWind);
|
||||||
|
}
|
||||||
|
|
||||||
|
drawCels();
|
||||||
|
|
||||||
|
if (_screen->_picNotValid)
|
||||||
|
animateShowPic();
|
||||||
|
|
||||||
|
updateScreen(old_picNotValid);
|
||||||
|
restoreAndDelete(argc, argv);
|
||||||
|
|
||||||
|
if (getLastCastCount() > 1)
|
||||||
|
_s->_throttleTrigger = true;
|
||||||
|
|
||||||
|
_ports->setPort(oldPort);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GfxAnimate::addToPicSetPicNotValid() {
|
||||||
|
if (getSciVersion() <= SCI_VERSION_1_EARLY)
|
||||||
|
_screen->_picNotValid = 1;
|
||||||
|
else
|
||||||
|
_screen->_picNotValid = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GfxAnimate::kernelAddToPicList(reg_t listReference, int argc, reg_t *argv) {
|
||||||
|
List *list;
|
||||||
|
|
||||||
|
_ports->setPort((Port *)_ports->_picWind);
|
||||||
|
|
||||||
|
list = _s->_segMan->lookupList(listReference);
|
||||||
|
if (!list)
|
||||||
|
error("kAddToPic called with non-list as parameter");
|
||||||
|
|
||||||
|
makeSortedList(list);
|
||||||
|
addToPicDrawCels();
|
||||||
|
|
||||||
|
addToPicSetPicNotValid();
|
||||||
|
}
|
||||||
|
|
||||||
|
void GfxAnimate::kernelAddToPicView(GuiResourceId viewId, int16 loopNo, int16 celNo, int16 leftPos, int16 topPos, int16 priority, int16 control) {
|
||||||
|
_ports->setPort((Port *)_ports->_picWind);
|
||||||
|
addToPicDrawView(viewId, loopNo, celNo, leftPos, topPos, priority, control);
|
||||||
|
addToPicSetPicNotValid();
|
||||||
|
}
|
||||||
|
|
||||||
} // End of namespace Sci
|
} // End of namespace Sci
|
||||||
|
|
|
@ -62,10 +62,10 @@ class GfxPaint16;
|
||||||
class Screen;
|
class Screen;
|
||||||
class SciPalette;
|
class SciPalette;
|
||||||
class Transitions;
|
class Transitions;
|
||||||
class SciGuiAnimate {
|
class GfxAnimate {
|
||||||
public:
|
public:
|
||||||
SciGuiAnimate(EngineState *state, GfxCache *cache, GfxPorts *ports, GfxPaint16 *paint16, Screen *screen, SciPalette *palette);
|
GfxAnimate(EngineState *state, GfxCache *cache, GfxPorts *ports, GfxPaint16 *paint16, Screen *screen, SciPalette *palette, Cursor *cursor, Transitions *transitions);
|
||||||
~SciGuiAnimate();
|
~GfxAnimate();
|
||||||
|
|
||||||
// FIXME: Don't store EngineState
|
// FIXME: Don't store EngineState
|
||||||
void resetEngineState(EngineState *newState) { _s = newState; }
|
void resetEngineState(EngineState *newState) { _s = newState; }
|
||||||
|
@ -84,15 +84,24 @@ public:
|
||||||
|
|
||||||
uint16 getLastCastCount() { return _lastCastCount; };
|
uint16 getLastCastCount() { return _lastCastCount; };
|
||||||
|
|
||||||
|
virtual void kernelAnimate(reg_t listReference, bool cycle, int argc, reg_t *argv);
|
||||||
|
virtual void kernelAddToPicList(reg_t listReference, int argc, reg_t *argv);
|
||||||
|
virtual void kernelAddToPicView(GuiResourceId viewId, int16 loopNo, int16 celNo, int16 leftPos, int16 topPos, int16 priority, int16 control);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
|
void addToPicSetPicNotValid();
|
||||||
|
void animateShowPic();
|
||||||
|
|
||||||
EngineState *_s;
|
EngineState *_s;
|
||||||
GfxCache *_cache;
|
GfxCache *_cache;
|
||||||
GfxPorts *_ports;
|
GfxPorts *_ports;
|
||||||
GfxPaint16 *_paint16;
|
GfxPaint16 *_paint16;
|
||||||
Screen *_screen;
|
Screen *_screen;
|
||||||
SciPalette *_palette;
|
SciPalette *_palette;
|
||||||
|
Cursor *_cursor;
|
||||||
|
Transitions *_transitions;
|
||||||
|
|
||||||
uint16 _listCount;
|
uint16 _listCount;
|
||||||
AnimateEntry *_listData;
|
AnimateEntry *_listData;
|
||||||
|
|
|
@ -57,7 +57,8 @@ SciGui::SciGui(EngineState *state, Screen *screen, SciPalette *palette, Cursor *
|
||||||
_compare = new GfxCompare(_s->_segMan, _s->_kernel, _cache, _screen);
|
_compare = new GfxCompare(_s->_segMan, _s->_kernel, _cache, _screen);
|
||||||
_paint16 = new GfxPaint16(_s->resMan, _s->_segMan, _s->_kernel, _cache, _ports, _screen, _palette);
|
_paint16 = new GfxPaint16(_s->resMan, _s->_segMan, _s->_kernel, _cache, _ports, _screen, _palette);
|
||||||
_transitions = new Transitions(this, _screen, _palette, _s->resMan->isVGA());
|
_transitions = new Transitions(this, _screen, _palette, _s->resMan->isVGA());
|
||||||
_animate = new SciGuiAnimate(_s, _cache, _ports, _paint16, _screen, _palette);
|
_animate = new GfxAnimate(_s, _cache, _ports, _paint16, _screen, _palette, _cursor, _transitions);
|
||||||
|
_s->_gfxAnimate = _animate;
|
||||||
_text = new Text(_s->resMan, _ports, _paint16, _screen);
|
_text = new Text(_s->resMan, _ports, _paint16, _screen);
|
||||||
_controls = new Controls(_s->_segMan, _ports, _paint16, _text);
|
_controls = new Controls(_s->_segMan, _ports, _paint16, _text);
|
||||||
_menu = new Menu(_s->_event, _s->_segMan, this, _ports, _paint16, _text, _screen, _cursor);
|
_menu = new Menu(_s->_event, _s->_segMan, this, _ports, _paint16, _text, _screen, _cursor);
|
||||||
|
@ -572,96 +573,6 @@ uint16 SciGui::onControl(byte screenMask, Common::Rect rect) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SciGui::animateShowPic() {
|
|
||||||
Port *picPort = _ports->_picWind;
|
|
||||||
Common::Rect picRect = picPort->rect;
|
|
||||||
bool previousCursorState = _cursor->isVisible();
|
|
||||||
|
|
||||||
if (previousCursorState)
|
|
||||||
_cursor->hide();
|
|
||||||
// Adjust picRect to become relative to screen
|
|
||||||
picRect.translate(picPort->left, picPort->top);
|
|
||||||
_transitions->doit(picRect);
|
|
||||||
if (previousCursorState)
|
|
||||||
_cursor->show();
|
|
||||||
|
|
||||||
// We set SCI1.1 priority band information here
|
|
||||||
_ports->priorityBandsRecall();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SciGui::animate(reg_t listReference, bool cycle, int argc, reg_t *argv) {
|
|
||||||
byte old_picNotValid = _screen->_picNotValid;
|
|
||||||
|
|
||||||
if (listReference.isNull()) {
|
|
||||||
_animate->disposeLastCast();
|
|
||||||
if (_screen->_picNotValid)
|
|
||||||
animateShowPic();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
List *list = _s->_segMan->lookupList(listReference);
|
|
||||||
if (!list)
|
|
||||||
error("kAnimate called with non-list as parameter");
|
|
||||||
|
|
||||||
if (cycle) {
|
|
||||||
if (!_animate->invoke(list, argc, argv))
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Port *oldPort = _ports->setPort((Port *)_ports->_picWind);
|
|
||||||
_animate->disposeLastCast();
|
|
||||||
|
|
||||||
_animate->makeSortedList(list);
|
|
||||||
_animate->fill(old_picNotValid);
|
|
||||||
|
|
||||||
if (old_picNotValid) {
|
|
||||||
_ports->beginUpdate(_ports->_picWind);
|
|
||||||
_animate->update();
|
|
||||||
_ports->endUpdate(_ports->_picWind);
|
|
||||||
}
|
|
||||||
|
|
||||||
_animate->drawCels();
|
|
||||||
|
|
||||||
if (_screen->_picNotValid)
|
|
||||||
animateShowPic();
|
|
||||||
|
|
||||||
_animate->updateScreen(old_picNotValid);
|
|
||||||
_animate->restoreAndDelete(argc, argv);
|
|
||||||
|
|
||||||
if (_animate->getLastCastCount() > 1)
|
|
||||||
_s->_throttleTrigger = true;
|
|
||||||
|
|
||||||
_ports->setPort(oldPort);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SciGui::addToPicSetPicNotValid() {
|
|
||||||
if (getSciVersion() <= SCI_VERSION_1_EARLY)
|
|
||||||
_screen->_picNotValid = 1;
|
|
||||||
else
|
|
||||||
_screen->_picNotValid = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SciGui::addToPicList(reg_t listReference, int argc, reg_t *argv) {
|
|
||||||
List *list;
|
|
||||||
|
|
||||||
_ports->setPort((Port *)_ports->_picWind);
|
|
||||||
|
|
||||||
list = _s->_segMan->lookupList(listReference);
|
|
||||||
if (!list)
|
|
||||||
error("kAddToPic called with non-list as parameter");
|
|
||||||
|
|
||||||
_animate->makeSortedList(list);
|
|
||||||
_animate->addToPicDrawCels();
|
|
||||||
|
|
||||||
addToPicSetPicNotValid();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SciGui::addToPicView(GuiResourceId viewId, int16 loopNo, int16 celNo, int16 leftPos, int16 topPos, int16 priority, int16 control) {
|
|
||||||
_ports->setPort((Port *)_ports->_picWind);
|
|
||||||
_animate->addToPicDrawView(viewId, loopNo, celNo, leftPos, topPos, priority, control);
|
|
||||||
addToPicSetPicNotValid();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SciGui::setNowSeen(reg_t objectReference) {
|
void SciGui::setNowSeen(reg_t objectReference) {
|
||||||
_compare->SetNowSeen(objectReference);
|
_compare->SetNowSeen(objectReference);
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,10 +123,6 @@ public:
|
||||||
virtual void shakeScreen(uint16 shakeCount, uint16 directions);
|
virtual void shakeScreen(uint16 shakeCount, uint16 directions);
|
||||||
|
|
||||||
virtual uint16 onControl(byte screenMask, Common::Rect rect);
|
virtual uint16 onControl(byte screenMask, Common::Rect rect);
|
||||||
virtual void animateShowPic();
|
|
||||||
virtual void animate(reg_t listReference, bool cycle, int argc, reg_t *argv);
|
|
||||||
virtual void addToPicList(reg_t listReference, int argc, reg_t *argv);
|
|
||||||
virtual void addToPicView(GuiResourceId viewId, int16 loopNo, int16 celNo, int16 leftPos, int16 topPos, int16 priority, int16 control);
|
|
||||||
virtual void setNowSeen(reg_t objectReference);
|
virtual void setNowSeen(reg_t objectReference);
|
||||||
virtual bool canBeHere(reg_t curObject, reg_t listReference);
|
virtual bool canBeHere(reg_t curObject, reg_t listReference);
|
||||||
virtual bool isItSkip(GuiResourceId viewId, int16 loopNo, int16 celNo, Common::Point position);
|
virtual bool isItSkip(GuiResourceId viewId, int16 loopNo, int16 celNo, Common::Point position);
|
||||||
|
@ -177,13 +173,12 @@ protected:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual void initPriorityBands();
|
virtual void initPriorityBands();
|
||||||
virtual void addToPicSetPicNotValid();
|
|
||||||
virtual int getControlPicNotValid();
|
virtual int getControlPicNotValid();
|
||||||
static void palVaryCallback(void *refCon);
|
static void palVaryCallback(void *refCon);
|
||||||
void doPalVary();
|
void doPalVary();
|
||||||
|
|
||||||
AudioPlayer *_audio;
|
AudioPlayer *_audio;
|
||||||
SciGuiAnimate *_animate;
|
GfxAnimate *_animate;
|
||||||
Controls *_controls;
|
Controls *_controls;
|
||||||
Menu *_menu;
|
Menu *_menu;
|
||||||
Text *_text;
|
Text *_text;
|
||||||
|
|
|
@ -172,6 +172,7 @@ Common::Error SciEngine::run() {
|
||||||
#ifdef ENABLE_SCI32
|
#ifdef ENABLE_SCI32
|
||||||
if (getSciVersion() >= SCI_VERSION_2) {
|
if (getSciVersion() >= SCI_VERSION_2) {
|
||||||
_gamestate->_gfxPorts = 0;
|
_gamestate->_gfxPorts = 0;
|
||||||
|
_gamestate->_gfxAnimate = 0;
|
||||||
_gamestate->_gui = 0;
|
_gamestate->_gui = 0;
|
||||||
_gamestate->_gui32 = new SciGui32(_gamestate, screen, palette, cursor);
|
_gamestate->_gui32 = new SciGui32(_gamestate, screen, palette, cursor);
|
||||||
} else {
|
} else {
|
||||||
|
@ -183,6 +184,7 @@ Common::Error SciEngine::run() {
|
||||||
_gamestate->_ports = new GfxPorts(_segMan, _screen);
|
_gamestate->_ports = new GfxPorts(_segMan, _screen);
|
||||||
_gamestate->_gui = new SciGui(_gamestate, screen, palette, cursor, _audio);
|
_gamestate->_gui = new SciGui(_gamestate, screen, palette, cursor, _audio);
|
||||||
#endif
|
#endif
|
||||||
|
_gamestate->_screen = screen;
|
||||||
|
|
||||||
if (game_init(_gamestate)) { /* Initialize */
|
if (game_init(_gamestate)) { /* Initialize */
|
||||||
warning("Game initialization failed: Aborting...");
|
warning("Game initialization failed: Aborting...");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue