TSAGE: Initial implementation of Scene #3700 - Remote Viewer

This commit is contained in:
Paul Gilbert 2011-03-20 11:12:11 +11:00 committed by strangerke
parent 51602483a4
commit 08918b512e
3 changed files with 156 additions and 0 deletions

View File

@ -102,6 +102,8 @@ Scene *SceneFactory::createScene(int sceneNumber) {
/* Scene group 4 */
// Ringworld Scan
case 3500: return new Scene3500();
// Remote Viewer
case 3700: return new Scene3700();
/* Scene group 5 */

View File

@ -90,4 +90,125 @@ void Scene3500::postInit(SceneObjectList *OwnerList) {
setAction((_globals->_stripNum == 3600) ? (Action *)&_action2 : (Action *)&_action1);
}
/*--------------------------------------------------------------------------
* Scene 3700 - Remote Viewer
*
*--------------------------------------------------------------------------*/
Scene3700::Viewer::Viewer() {
_imgList[0] = surfaceFromRes(3705, 1, 1);
for (int idx = 1; idx <= 3; ++idx)
_imgList[idx] = surfaceFromRes(3705, 2, _globals->_randomSource.getRandomNumber(4) + 1);
_field88 = 1;
_percent = 120;
_field94 = 50;
_field96 = 75;
_field98 = 114;
}
void Scene3700::Viewer::reposition() {
_bounds = Rect(123, 40, 285, 123);
}
void Scene3700::Viewer::draw() {
for (int idx = 0; idx < 4; ++idx) {
Rect destRect = _imgList[idx].getBounds();
destRect.resize(_imgList[idx], (_position.x - _globals->_sceneOffset.x),
(_position.y - _globals->_sceneOffset.y - _yDiff), _percent);
destRect.translate(-_globals->_sceneManager._scene->_sceneBounds.left,
-_globals->_sceneManager._scene->_sceneBounds.top);
Region *priorityRegion = _globals->_sceneManager._scene->_priorities.find(1);
_globals->gfxManager().copyFrom(_imgList[idx], destRect, priorityRegion);
}
}
/*--------------------------------------------------------------------------*/
void Scene3700::Action1::signal() {
Scene3700 *scene = (Scene3700 *)_globals->_sceneManager._scene;
switch (_actionIndex++) {
case 0:
setDelay(10);
break;
case 1:
scene->_stripManager.start(2162, this);
break;
case 2:
scene->_viewer._field88 = 0;
setDelay(90);
break;
case 3:
scene->_soundHandler.startSound(196);
scene->_viewer.flag100();
scene->_hotspot1.postInit();
scene->_hotspot1.setVisage(3710);
scene->_hotspot1.setStrip(1);
scene->_hotspot1.setFrame(1);
scene->_hotspot1.setPosition(Common::Point(204, 120));
setDelay(90);
break;
case 4:
scene->_soundHandler.startSound(197);
scene->_hotspot1.flag100();
scene->_hotspot2.postInit();
scene->_hotspot2.setVisage(3710);
scene->_hotspot2.setStrip(2);
scene->_hotspot2.setFrame(1);
scene->_hotspot2.setPosition(Common::Point(204, 120));
setDelay(30);
break;
case 5:
scene->_soundHandler.startSound(198);
scene->_hotspot2.flag100();
scene->_hotspot1.unflag100();
setDelay(90);
break;
case 6:
scene->_stripManager.start(2166, this);
break;
case 7:
setDelay(60);
break;
case 8:
scene->_hotspot1.remove();
scene->_hotspot2.unflag100();
_globals->setFlag(59);
setDelay(30);
break;
case 9:
_globals->_sceneManager.changeScene(2100);
break;
}
}
/*--------------------------------------------------------------------------*/
void Scene3700::postInit(tSage::SceneObjectList *OwnerList) {
Scene::postInit();
loadScene(3700);
_stripManager.addSpeaker(&_speakerSText);
_stripManager.addSpeaker(&_speakerMText);
_stripManager.addSpeaker(&_speakerMR);
_speakerSText.setTextPos(Common::Point(20, 15));
_speakerMText.setTextPos(Common::Point(20, 15));
_viewer.postInit();
_viewer.setVisage(3705);
_viewer.setStrip(1);
_viewer.setFrame(2);
_viewer.setPosition(Common::Point(195, 83));
setAction(&_action1);
_globals->_soundHandler.startSound(195);
}
} // End of namespace tSage

View File

@ -53,6 +53,39 @@ public:
virtual void postInit(SceneObjectList *OwnerList = NULL);
};
class Scene3700: public Scene {
/* Custom classes */
class Viewer: public SceneObject {
public:
GfxSurface _imgList[4];
int _field88;
int _percent;
int _field94;
int _field96;
int _field98;
Viewer();
virtual void reposition();
virtual void draw();
};
/* Actions */
class Action1: public Action {
public:
virtual void signal();
};
public:
Viewer _viewer;
Action _action1;
SceneObject _hotspot1, _hotspot2;
SpeakerSText _speakerSText;
SpeakerMText _speakerMText;
SpeakerMR _speakerMR;
SoundHandler _soundHandler;
virtual void postInit(SceneObjectList *OwnerList = NULL);
};
} // End of namespace tSage
#endif