Skip to content

Commit

Permalink
FULLPIPE: Implement scene18_initScene1()
Browse files Browse the repository at this point in the history
  • Loading branch information
sev- committed Mar 1, 2014
1 parent afd21ac commit 094a86e
Show file tree
Hide file tree
Showing 4 changed files with 132 additions and 0 deletions.
5 changes: 5 additions & 0 deletions engines/fullpipe/constants.h
Expand Up @@ -877,6 +877,7 @@ namespace Fullpipe {
#define ANI_GIRL18 1484
#define ANI_KRESLO 1459
#define ANI_WHIRLIGIG_18 829
#define MV_WHR18_SPIN 1300
#define PIC_SC18_DOMIN 5184
#define PIC_SC18_LADDER1 1471
#define PIC_SC18_LADDER2 1472
Expand All @@ -886,7 +887,11 @@ namespace Fullpipe {
#define SND_18_010 4994

// Scene 19
#define ANI_WHIRLGIG_19 1302
#define MV_WHR19_SPIN 1317
#define PIC_SC19_RTRUBA3 1515
#define SND_19_015 3928
#define SND_19_016 4995

// Scene 20
#define ANI_GRANDMA_20 2427
Expand Down
1 change: 1 addition & 0 deletions engines/fullpipe/scenes.cpp
Expand Up @@ -279,6 +279,7 @@ Vars::Vars() {
scene18_var20 = 1032;
scene18_var04 = -318;
scene18_var08 = 0;
scene18_var09 = 0;
scene18_var03 = false;
scene18_var21 = 0;
scene18_var11 = 0;
Expand Down
3 changes: 3 additions & 0 deletions engines/fullpipe/scenes.h
Expand Up @@ -32,6 +32,7 @@ class MGM;
class MctlLadder;
struct Ring;
class StaticANIObject;
struct Swinger;

int defaultUpdateCursor();

Expand Down Expand Up @@ -466,9 +467,11 @@ class Vars {
int scene18_var18;
int scene18_var19;
StaticANIObject *scene18_whirlgig;
Common::Array<Swinger *> scene18_var07;
int scene18_var20;
int scene18_var04;
int scene18_var08;
int scene18_var09;
bool scene18_var03;
int scene18_var21;
int scene18_var11;
Expand Down
123 changes: 123 additions & 0 deletions engines/fullpipe/scenes/scene18and19.cpp
Expand Up @@ -36,6 +36,18 @@

namespace Fullpipe {

struct Swinger {
StaticANIObject *ani;
int sfield_4;
double angle;
int sx;
int sy;
int ix;
int iy;
int sflags;
int sfield_24;
};

void scene18_preload() {
warning("WARNING: scene18_preload()");
}
Expand All @@ -48,6 +60,117 @@ void scene18_sub2(StaticANIObject *ani, Scene *sc) {
warning("WARNING: scene18_sub2()");
}

void scene18_initScene1(Scene *sc) {
PicAniInfo info;

int oldx = g_vars->scene18_var20;
int oldy = g_vars->scene18_var04;

g_vars->scene18_var03 = (g_fp->getObjectState(sO_Girl) == g_fp->getObjectEnumState(sO_Girl, sO_IsSwinging));

if (sc->_sceneId == SC_18) {
g_vars->scene18_whirlgig = sc->getStaticANIObject1ById(ANI_WHIRLIGIG_18, -1);
g_vars->scene18_var20 = 1032;
g_vars->scene18_var04 = -318;
} else {
g_vars->scene18_whirlgig = sc->getStaticANIObject1ById(ANI_WHIRLGIG_19, -1);
g_vars->scene18_var20 = 1024;
g_vars->scene18_var04 = 242;
}

int newx = g_vars->scene18_var20 - oldx;
int newy = g_vars->scene18_var04 - oldy;

g_vars->scene18_var29 += newx;
g_vars->scene18_var30 += newy;
g_vars->scene18_var05 += newx;
g_vars->scene18_var06 += newy;

for (uint i = 0; i < g_vars->scene18_var07.size(); i++) {
g_vars->scene18_var07[i]->ani->getPicAniInfo(&info);
sc->addStaticANIObject(g_vars->scene18_var07[i]->ani, 1);
g_vars->scene18_var07[i]->ani->setPicAniInfo(&info);

g_vars->scene18_var07[i]->sx += newx;
g_vars->scene18_var07[i]->sy += newy;
g_vars->scene18_var07[i]->ix += newx;
g_vars->scene18_var07[i]->iy += newy;

GameObject *go;

if (g_vars->scene18_var07[i]->ani->_movement)
go = g_vars->scene18_var07[i]->ani->_movement;
else
go = g_vars->scene18_var07[i]->ani;

go->setOXY(newx + go->_ox, newy + go->_oy);
}

if (g_vars->scene18_var08 && g_vars->scene18_var09 != -1) {
g_vars->scene18_whirlgig->startAnim(sc->_sceneId != SC_18 ? MV_WHR19_SPIN : MV_WHR18_SPIN, 0, -1);
g_vars->scene18_whirlgig->_movement->setDynamicPhaseIndex(g_vars->scene18_var09);
}

int sndid;

if (sc->_sceneId == SC_19) {
if (g_vars->scene18_var08)
sndid = SND_19_015;
else
sndid = SND_19_016;
} else {
if (g_vars->scene18_var08)
sndid = SND_18_006;
else
sndid = SND_18_010;
}

g_fp->playSound(sndid, 1);

g_vars->scene18_boy->getPicAniInfo(&info);
sc->addStaticANIObject(g_vars->scene18_boy, 1);
g_vars->scene18_boy->setPicAniInfo(&info);

int x, y;

if (g_vars->scene18_boy->_movement) {
x = g_vars->scene18_boy->_movement->_ox;
y = g_vars->scene18_boy->_movement->_oy;
} else {
x = g_vars->scene18_boy->_ox;
y = g_vars->scene18_boy->_oy;
}

g_vars->scene18_boy->setOXY(newx + x, newy + y);

g_vars->scene18_girl->getPicAniInfo(&info);
sc->addStaticANIObject(g_vars->scene18_girl, 1);
g_vars->scene18_girl->setPicAniInfo(&info);

if (g_vars->scene18_girl->_movement) {
x = g_vars->scene18_girl->_movement->_ox;
y = g_vars->scene18_girl->_movement->_oy;
} else {
x = g_vars->scene18_girl->_ox;
y = g_vars->scene18_girl->_oy;
}

g_vars->scene18_girl->setOXY(newx + x, newy + y);

g_vars->scene18_var12 = 0;
g_vars->scene18_var13 = -1;
g_vars->scene18_var14 = -1;

if (g_vars->scene18_var15) {
if (sc->_sceneId == SC_19)
g_fp->_aniMan2 = 0;
else
g_fp->_aniMan2 = g_vars->scene18_var07[g_vars->scene18_var27]->ani;
} else {
g_fp->_aniMan2 = g_fp->_aniMan;
}
}

void scene18_initScene2(Scene *sc) {
g_vars->scene18_var16 = 200;
g_vars->scene18_var17 = 200;
Expand Down

0 comments on commit 094a86e

Please sign in to comment.