Skip to content

Commit

Permalink
TsAGE: Implement two functions in PalettedScene, fix a bug in scene 935
Browse files Browse the repository at this point in the history
  • Loading branch information
Strangerke committed Sep 26, 2011
1 parent 8c431e1 commit 35e36e4
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 10 deletions.
36 changes: 36 additions & 0 deletions engines/tsage/blue_force/blueforce_logic.cpp
Expand Up @@ -783,6 +783,42 @@ PaletteFader *PalettedScene::addFader(const byte *arrBufferRGB, int step, Action
return BF_GLOBALS._scenePalette.addFader(arrBufferRGB, 1, step, action);
}

void PalettedScene::sub15DD6(const byte *arrBufferRGB, int step, int paletteNum, Action *action) {
BF_GLOBALS._scenePalette.addFader(arrBufferRGB, 1, 100, NULL);
_palette.loadPalette(paletteNum);
_palette.loadPalette(2);
BF_GLOBALS._scenePalette.addFader(_palette._palette, 256, step, action);
}

void PalettedScene::sub15E4F(const byte *arrBufferRGB, int arg8, int paletteNum, Action *action, int fromColor1, int fromColor2, int toColor1, int toColor2, bool flag) {
byte tmpPalette[768];

_palette.loadPalette(paletteNum);
_palette.loadPalette(2);
if (!flag) {
for (int i = fromColor1; i <= fromColor2; i++) {
tmpPalette[(3 * i)] = BF_GLOBALS._scenePalette._palette[(3 * i)];
tmpPalette[(3 * i) + 1] = BF_GLOBALS._scenePalette._palette[(3 * i) + 1];
tmpPalette[(3 * i) + 2] = BF_GLOBALS._scenePalette._palette[(3 * i) + 2];
}
} else {
for (int i = fromColor1; i <= fromColor2; i++) {
tmpPalette[(3 * i)] = _palette._palette[(3 * i)];
tmpPalette[(3 * i) + 1] = _palette._palette[(3 * i) + 1];
tmpPalette[(3 * i) + 2] = _palette._palette[(3 * i) + 2];
}
}

for (int i = toColor1; i <= toColor2; i++) {
tmpPalette[i] = _palette._palette[i] - ((_palette._palette[i] - arrBufferRGB[0]) * (100 - arg8)) / 100;
tmpPalette[i + 1] = _palette._palette[i + 1] - ((_palette._palette[i + 1] - arrBufferRGB[1]) * (100 - arg8)) / 100;
tmpPalette[i + 2] = _palette._palette[i + 2] - ((_palette._palette[i + 2] - arrBufferRGB[2]) * (100 - arg8)) / 100;
}

BF_GLOBALS._scenePalette.addFader((const byte *)tmpPalette, 256, 100, action);
}


/*--------------------------------------------------------------------------*/

void SceneHandlerExt::postInit(SceneObjectList *OwnerList) {
Expand Down
4 changes: 3 additions & 1 deletion engines/tsage/blue_force/blueforce_logic.h
Expand Up @@ -198,7 +198,7 @@ class SceneExt: public Scene {
AObjectArray _timerList, _objArray2;
int _field372;
bool _savedPlayerEnabled;
bool _savedUiEnabled;
bool _savedUiEnabled;
bool _savedCanWalk;
int _field37A;

Expand Down Expand Up @@ -234,6 +234,8 @@ class PalettedScene: public SceneExt {
virtual void postInit(SceneObjectList *OwnerList = NULL);
virtual void remove();
PaletteFader *addFader(const byte *arrBufferRGB, int step, Action *action);
void sub15DD6(const byte *arrBufferRGB, int step, int paletteNum, Action *action);
void sub15E4F(const byte *arrBufferRGB, int arg8, int paletteNum, Action *action, int fromColor1, int fromColor2, int toColor1, int toColor2, bool flag);
};

class SceneHandlerExt: public SceneHandler {
Expand Down
17 changes: 8 additions & 9 deletions engines/tsage/blue_force/blueforce_scenes9.cpp
Expand Up @@ -909,16 +909,16 @@ void Scene920::synchronize(Serializer &s) {

void Scene935::Action1::signal() {
Scene935 *scene = (Scene935 *)BF_GLOBALS._sceneManager._scene;
static uint32 v50ECC = 0, v50EEE = 0, v50F2A = 0, v50F66 = 0;
static uint32 v50ECC = 0, v50EEA = 0, v50EEE = 0, v50F26 = 0, v50F2A = 0, v50F62 = 0, v50F66 = 0, v50F6A = 0;

switch (_actionIndex++) {
case 0:
scene->addFader((const byte *)&v50ECC, 100, this);
break;
case 1:
scene->_visualSpeaker.setText("Jake! Hide in the closet!");
// for (int i = 1; i < 21; i++)
// scene->sub_15E4F(&v50EEA, 5 * i, 935, 0, 0, 0, 255, 249, 255, 1);
for (int i = 1; i < 21; i++)
scene->sub15E4F((const byte *)&v50EEA, 5 * i, 935, NULL, 0, 255, 249, 255, 1);
warning("Scene935::Action1::signal(): sub_15E4F");
setDelay(3);
break;
Expand All @@ -935,8 +935,8 @@ void Scene935::Action1::signal() {
break;
case 4:
scene->_visualSpeaker.setText("Jake! Hide in the closet!");
// for (int i = 1; i < 21; i++)
// scene->sub_15E4F(&v50F26, 5 * i, 935, 0, 0, 0, 255, 249, 255, 1);
for (int i = 1; i < 21; i++)
scene->sub15E4F((const byte *)&v50F26, 5 * i, 935, NULL, 0, 255, 249, 255, 1);
warning("Scene935::Action1::signal(): sub_15E4F");
setDelay(3);
break;
Expand All @@ -953,8 +953,8 @@ void Scene935::Action1::signal() {
break;
case 7:
scene->_visualSpeaker.setText("Jake! Hide in the closet!");
// for (int i = 1; i < 21; i++)
// scene->sub_15E4F(&v50F62, 5 * i, 935, 0, 0, 0, 255, 249, 255, 1);
for (int i = 1; i < 21; i++)
scene->sub15E4F((const byte *)&v50F62, 5 * i, 935, NULL, 0, 255, 249, 255, 1);
warning("Scene935::Action1::signal(): sub_15E4F");
setDelay(3);
break;
Expand All @@ -967,8 +967,7 @@ void Scene935::Action1::signal() {
break;
case 10:
scene->_sceneMode = 1;
// scene->sub_15DD6(&v50F6A, 5, 935, this);
warning("Scene935::Action1::signal(): sub_15DD6");
scene->sub15DD6((const byte *)&v50F6A, 5, 935, scene);
remove();
break;
default:
Expand Down

0 comments on commit 35e36e4

Please sign in to comment.