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;
|
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 BlueForce
|
||||||
|
|
||||||
} // End of namespace TsAGE
|
} // End of namespace TsAGE
|
||||||
|
|
|
@ -371,6 +371,20 @@ public:
|
||||||
virtual void process(Event &event);
|
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 BlueForce
|
||||||
|
|
||||||
} // End of namespace TsAGE
|
} // 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() {
|
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) {
|
void Scene140::postInit(SceneObjectList *OwnerList) {
|
||||||
SceneExt::postInit();
|
SceneExt::postInit();
|
||||||
loadScene(999);
|
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) {
|
void Scene160::postInit(SceneObjectList *OwnerList) {
|
||||||
SceneExt::postInit();
|
SceneExt::postInit();
|
||||||
loadScene(160);
|
loadScene(160);
|
||||||
|
|
|
@ -95,27 +95,13 @@ class Scene109: public PalettedScene {
|
||||||
virtual void signal();
|
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:
|
public:
|
||||||
SequenceManager _sequenceManager1, _sequenceManager2, _sequenceManager3;
|
SequenceManager _sequenceManager1, _sequenceManager2, _sequenceManager3;
|
||||||
SequenceManager _sequenceManager4, _sequenceManager5, _sequenceManager6;
|
SequenceManager _sequenceManager4, _sequenceManager5, _sequenceManager6;
|
||||||
SequenceManager _sequenceManager7, _sequenceManager8;
|
SequenceManager _sequenceManager7, _sequenceManager8;
|
||||||
SceneObject _object1, _object2, _protaginist2, _protaginist1, _object5;
|
SceneObject _object1, _object2, _protaginist2, _protaginist1, _object5;
|
||||||
SceneObject _drunk, _object7, _bartender, _object9, _object10;
|
SceneObject _drunk, _object7, _bartender, _object9, _object10;
|
||||||
Text _text;
|
IntroSceneText _text;
|
||||||
Action1 _action1;
|
Action1 _action1;
|
||||||
Action _action2, _action3;
|
Action _action2, _action3;
|
||||||
public:
|
public:
|
||||||
|
@ -361,26 +347,12 @@ class Scene140: public SceneExt {
|
||||||
public:
|
public:
|
||||||
virtual void signal();
|
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:
|
public:
|
||||||
Action1 _action1;
|
Action1 _action1;
|
||||||
ASoundExt _soundExt1;
|
ASoundExt _soundExt1;
|
||||||
NamedObject _object1;
|
NamedObject _object1;
|
||||||
NamedObject _object2;
|
NamedObject _object2;
|
||||||
Text _text;
|
IntroSceneText _text;
|
||||||
|
|
||||||
void postInit(SceneObjectList *OwnerList);
|
void postInit(SceneObjectList *OwnerList);
|
||||||
};
|
};
|
||||||
|
@ -413,27 +385,13 @@ class Scene160: public SceneExt {
|
||||||
public:
|
public:
|
||||||
virtual void signal();
|
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:
|
public:
|
||||||
NamedObject _flag, _kid, _kidBody, _leftOfficer, _grandma, _rightOfficer;
|
NamedObject _flag, _kid, _kidBody, _leftOfficer, _grandma, _rightOfficer;
|
||||||
ASound _sound1;
|
ASound _sound1;
|
||||||
Action1 _action1;
|
Action1 _action1;
|
||||||
Action2 _action2;
|
Action2 _action2;
|
||||||
Action3 _action3;
|
Action3 _action3;
|
||||||
Text _text;
|
IntroSceneText _text;
|
||||||
|
|
||||||
void postInit(SceneObjectList *OwnerList);
|
void postInit(SceneObjectList *OwnerList);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue