TSAGE: Blue Force - Move identical intro Text classes to common game logic
This commit is contained in:
parent
c39e45ff64
commit
1d3fa7402b
4 changed files with 68 additions and 200 deletions
|
@ -1474,6 +1474,57 @@ void SceneMessage::clear() {
|
|||
g_globals->_sceneManager._hasPalette = true;
|
||||
}
|
||||
|
||||
IntroSceneText::IntroSceneText(): SceneText() {
|
||||
_action = NULL;
|
||||
_frameNumber = 0;
|
||||
_diff = 0;
|
||||
}
|
||||
|
||||
void IntroSceneText::setup(const Common::String &msg, Action *action) {
|
||||
_frameNumber = BF_GLOBALS._events.getFrameNumber();
|
||||
_diff = 180;
|
||||
_action = action;
|
||||
_fontNumber = 4;
|
||||
_width = 300;
|
||||
_textMode = ALIGN_CENTER;
|
||||
_color1 = BF_GLOBALS._scenePalette._colors.background;
|
||||
_color2 = _color3 = 0;
|
||||
|
||||
SceneText::setup(msg);
|
||||
|
||||
// Center the text on-screen
|
||||
reposition();
|
||||
_bounds.center(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2);
|
||||
|
||||
// Set the new position
|
||||
_position.x = _bounds.left;
|
||||
_position.y = _bounds.top;
|
||||
}
|
||||
|
||||
void IntroSceneText::synchronize(Serializer &s) {
|
||||
SceneText::synchronize(s);
|
||||
SYNC_POINTER(_action);
|
||||
s.syncAsUint32LE(_frameNumber);
|
||||
s.syncAsSint16LE(_diff);
|
||||
}
|
||||
|
||||
void IntroSceneText::dispatch() {
|
||||
if (_diff) {
|
||||
uint32 frameNumber = BF_GLOBALS._events.getFrameNumber();
|
||||
if (_frameNumber < frameNumber) {
|
||||
_diff -= frameNumber - _frameNumber;
|
||||
_frameNumber = frameNumber;
|
||||
|
||||
if (_diff <= 0) {
|
||||
// Time has expired, so remove the text and signal the designated action
|
||||
remove();
|
||||
if (_action)
|
||||
_action->signal();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} // End of namespace BlueForce
|
||||
|
||||
} // End of namespace TsAGE
|
||||
|
|
|
@ -371,6 +371,20 @@ public:
|
|||
virtual void process(Event &event);
|
||||
};
|
||||
|
||||
class IntroSceneText: public SceneText {
|
||||
public:
|
||||
Action *_action;
|
||||
uint32 _frameNumber;
|
||||
int _diff;
|
||||
public:
|
||||
IntroSceneText();
|
||||
void setup(const Common::String &msg, Action *action);
|
||||
|
||||
virtual Common::String getClassName() { return "BFIntroText"; }
|
||||
virtual void synchronize(Serializer &s);
|
||||
virtual void dispatch();
|
||||
};
|
||||
|
||||
} // End of namespace BlueForce
|
||||
|
||||
} // End of namespace TsAGE
|
||||
|
|
|
@ -299,59 +299,6 @@ void Scene109::Action3::signal() {
|
|||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
Scene109::Text::Text(): SceneText() {
|
||||
_action = NULL;
|
||||
_frameNumber = 0;
|
||||
_diff = 0;
|
||||
}
|
||||
|
||||
void Scene109::Text::setup(const Common::String &msg, Action *action) {
|
||||
_frameNumber = BF_GLOBALS._events.getFrameNumber();
|
||||
_diff = 180;
|
||||
_action = action;
|
||||
_fontNumber = 4;
|
||||
_width = 300;
|
||||
_textMode = ALIGN_CENTER;
|
||||
_color1 = BF_GLOBALS._scenePalette._colors.background;
|
||||
_color2 = _color3 = 0;
|
||||
|
||||
SceneText::setup(msg);
|
||||
|
||||
// Center the text on-screen
|
||||
reposition();
|
||||
_bounds.center(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2);
|
||||
|
||||
// Set the new position
|
||||
_position.x = _bounds.left;
|
||||
_position.y = _bounds.top;
|
||||
}
|
||||
|
||||
void Scene109::Text::synchronize(Serializer &s) {
|
||||
SceneText::synchronize(s);
|
||||
SYNC_POINTER(_action);
|
||||
s.syncAsUint32LE(_frameNumber);
|
||||
s.syncAsSint16LE(_diff);
|
||||
}
|
||||
|
||||
void Scene109::Text::dispatch() {
|
||||
if (_diff) {
|
||||
uint32 frameNumber = BF_GLOBALS._events.getFrameNumber();
|
||||
if (_frameNumber < frameNumber) {
|
||||
_diff -= frameNumber - _frameNumber;
|
||||
_frameNumber = frameNumber;
|
||||
|
||||
if (_diff <= 0) {
|
||||
// Time has expired, so remove the text and signal the designated action
|
||||
remove();
|
||||
if (_action)
|
||||
_action->signal();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
Scene109::Scene109(): PalettedScene() {
|
||||
}
|
||||
|
||||
|
@ -2371,57 +2318,6 @@ void Scene140::Action1::signal() {
|
|||
}
|
||||
}
|
||||
|
||||
Scene140::Text::Text(): SceneText() {
|
||||
_action = NULL;
|
||||
_frameNumber = 0;
|
||||
_diff = 0;
|
||||
}
|
||||
|
||||
void Scene140::Text::setup(const Common::String &msg, Action *action) {
|
||||
_frameNumber = BF_GLOBALS._events.getFrameNumber();
|
||||
_diff = 180;
|
||||
_action = action;
|
||||
_fontNumber = 4;
|
||||
_width = 300;
|
||||
_textMode = ALIGN_CENTER;
|
||||
_color1 = BF_GLOBALS._scenePalette._colors.background;
|
||||
_color2 = _color3 = 0;
|
||||
|
||||
SceneText::setup(msg);
|
||||
|
||||
// Center the text on-screen
|
||||
reposition();
|
||||
_bounds.center(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2);
|
||||
|
||||
// Set the new position
|
||||
_position.x = _bounds.left;
|
||||
_position.y = _bounds.top;
|
||||
}
|
||||
|
||||
void Scene140::Text::synchronize(Serializer &s) {
|
||||
SceneText::synchronize(s);
|
||||
SYNC_POINTER(_action);
|
||||
s.syncAsUint32LE(_frameNumber);
|
||||
s.syncAsSint16LE(_diff);
|
||||
}
|
||||
|
||||
void Scene140::Text::dispatch() {
|
||||
if (_diff) {
|
||||
uint32 frameNumber = BF_GLOBALS._events.getFrameNumber();
|
||||
if (_frameNumber < frameNumber) {
|
||||
_diff -= frameNumber - _frameNumber;
|
||||
_frameNumber = frameNumber;
|
||||
|
||||
if (_diff <= 0) {
|
||||
// Time has expired, so remove the text and signal the designated action
|
||||
remove();
|
||||
if (_action)
|
||||
_action->signal();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Scene140::postInit(SceneObjectList *OwnerList) {
|
||||
SceneExt::postInit();
|
||||
loadScene(999);
|
||||
|
@ -2776,57 +2672,6 @@ void Scene160::Action3::signal() {
|
|||
}
|
||||
}
|
||||
|
||||
Scene160::Text::Text(): SceneText() {
|
||||
_action = NULL;
|
||||
_frameNumber = 0;
|
||||
_diff = 0;
|
||||
}
|
||||
|
||||
void Scene160::Text::setup(const Common::String &msg, Action *action) {
|
||||
_frameNumber = BF_GLOBALS._events.getFrameNumber();
|
||||
_diff = 180;
|
||||
_action = action;
|
||||
_fontNumber = 4;
|
||||
_width = 300;
|
||||
_textMode = ALIGN_CENTER;
|
||||
_color1 = BF_GLOBALS._scenePalette._colors.background;
|
||||
_color2 = _color3 = 0;
|
||||
|
||||
SceneText::setup(msg);
|
||||
|
||||
// Center the text on-screen
|
||||
reposition();
|
||||
_bounds.center(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2);
|
||||
|
||||
// Set the new position
|
||||
_position.x = _bounds.left;
|
||||
_position.y = _bounds.top;
|
||||
}
|
||||
|
||||
void Scene160::Text::synchronize(Serializer &s) {
|
||||
SceneText::synchronize(s);
|
||||
SYNC_POINTER(_action);
|
||||
s.syncAsUint32LE(_frameNumber);
|
||||
s.syncAsSint16LE(_diff);
|
||||
}
|
||||
|
||||
void Scene160::Text::dispatch() {
|
||||
if (_diff) {
|
||||
uint32 frameNumber = BF_GLOBALS._events.getFrameNumber();
|
||||
if (_frameNumber < frameNumber) {
|
||||
_diff -= frameNumber - _frameNumber;
|
||||
_frameNumber = frameNumber;
|
||||
|
||||
if (_diff <= 0) {
|
||||
// Time has expired, so remove the text and signal the designated action
|
||||
remove();
|
||||
if (_action)
|
||||
_action->signal();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Scene160::postInit(SceneObjectList *OwnerList) {
|
||||
SceneExt::postInit();
|
||||
loadScene(160);
|
||||
|
|
|
@ -95,27 +95,13 @@ class Scene109: public PalettedScene {
|
|||
virtual void signal();
|
||||
};
|
||||
|
||||
/* Texts */
|
||||
class Text: public SceneText {
|
||||
public:
|
||||
Action *_action;
|
||||
uint32 _frameNumber;
|
||||
int _diff;
|
||||
public:
|
||||
Text();
|
||||
void setup(const Common::String &msg, Action *action);
|
||||
|
||||
virtual Common::String getClassName() { return "BF109Text"; }
|
||||
virtual void synchronize(Serializer &s);
|
||||
virtual void dispatch();
|
||||
};
|
||||
public:
|
||||
SequenceManager _sequenceManager1, _sequenceManager2, _sequenceManager3;
|
||||
SequenceManager _sequenceManager4, _sequenceManager5, _sequenceManager6;
|
||||
SequenceManager _sequenceManager7, _sequenceManager8;
|
||||
SceneObject _object1, _object2, _protaginist2, _protaginist1, _object5;
|
||||
SceneObject _drunk, _object7, _bartender, _object9, _object10;
|
||||
Text _text;
|
||||
IntroSceneText _text;
|
||||
Action1 _action1;
|
||||
Action _action2, _action3;
|
||||
public:
|
||||
|
@ -361,26 +347,12 @@ class Scene140: public SceneExt {
|
|||
public:
|
||||
virtual void signal();
|
||||
};
|
||||
/* Texts */
|
||||
class Text: public SceneText {
|
||||
public:
|
||||
Action *_action;
|
||||
uint32 _frameNumber;
|
||||
int _diff;
|
||||
public:
|
||||
Text();
|
||||
void setup(const Common::String &msg, Action *action);
|
||||
|
||||
virtual Common::String getClassName() { return "BF140Text"; }
|
||||
virtual void synchronize(Serializer &s);
|
||||
virtual void dispatch();
|
||||
};
|
||||
public:
|
||||
Action1 _action1;
|
||||
ASoundExt _soundExt1;
|
||||
NamedObject _object1;
|
||||
NamedObject _object2;
|
||||
Text _text;
|
||||
IntroSceneText _text;
|
||||
|
||||
void postInit(SceneObjectList *OwnerList);
|
||||
};
|
||||
|
@ -413,27 +385,13 @@ class Scene160: public SceneExt {
|
|||
public:
|
||||
virtual void signal();
|
||||
};
|
||||
/* Texts */
|
||||
class Text: public SceneText {
|
||||
public:
|
||||
Action *_action;
|
||||
uint32 _frameNumber;
|
||||
int _diff;
|
||||
public:
|
||||
Text();
|
||||
void setup(const Common::String &msg, Action *action);
|
||||
|
||||
virtual Common::String getClassName() { return "BF160Text"; }
|
||||
virtual void synchronize(Serializer &s);
|
||||
virtual void dispatch();
|
||||
};
|
||||
public:
|
||||
NamedObject _flag, _kid, _kidBody, _leftOfficer, _grandma, _rightOfficer;
|
||||
ASound _sound1;
|
||||
Action1 _action1;
|
||||
Action2 _action2;
|
||||
Action3 _action3;
|
||||
Text _text;
|
||||
IntroSceneText _text;
|
||||
|
||||
void postInit(SceneObjectList *OwnerList);
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue