FULLPIPE: Implement MovGraph2::initDirections()
This commit is contained in:
parent
dd7995958d
commit
ac1be668d9
4 changed files with 137 additions and 7 deletions
|
@ -244,9 +244,132 @@ int MovGraph2::getItemIndexByGameObjectId(int objectId) {
|
|||
}
|
||||
|
||||
bool MovGraph2::initDirections(StaticANIObject *obj, MovGraph2Item *item) {
|
||||
warning("STUB: MovGraph2::initDirections()");
|
||||
item->_obj = obj;
|
||||
item->_objectId = obj->_id;
|
||||
|
||||
return false;
|
||||
GameVar *var = g_fullpipe->getGameLoaderGameVar()->getSubVarByName(obj->_objectName);
|
||||
if (!var)
|
||||
return false;
|
||||
|
||||
var = var->getSubVarByName("Test_walk");
|
||||
|
||||
if (!var)
|
||||
return false;
|
||||
|
||||
GameVar *varD = 0;
|
||||
Common::Point point;
|
||||
|
||||
for (int dir = 0; dir < 4; dir++) {
|
||||
switch (dir) {
|
||||
case 0:
|
||||
varD = var->getSubVarByName("Right");
|
||||
break;
|
||||
case 1:
|
||||
varD = var->getSubVarByName("Left");
|
||||
break;
|
||||
case 2:
|
||||
varD = var->getSubVarByName("Up");
|
||||
break;
|
||||
case 3:
|
||||
varD = var->getSubVarByName("Down");
|
||||
break;
|
||||
}
|
||||
|
||||
if (!varD)
|
||||
return false;
|
||||
|
||||
for (int act = 0; act < 3; act++) {
|
||||
int idx;
|
||||
|
||||
switch(act) {
|
||||
case 0:
|
||||
idx = varD->getSubVarAsInt("Start");
|
||||
break;
|
||||
case 1:
|
||||
idx = varD->getSubVarAsInt("Go");
|
||||
break;
|
||||
case 2:
|
||||
idx = varD->getSubVarAsInt("Stop");
|
||||
break;
|
||||
}
|
||||
|
||||
item->_subItems[dir]._walk[act]._movementId = idx;
|
||||
|
||||
Movement *mov = obj->getMovementById(idx);
|
||||
|
||||
item->_subItems[dir]._walk[act]._mov = mov;
|
||||
if (mov) {
|
||||
mov->calcSomeXY(point, 0);
|
||||
item->_subItems[dir]._walk[act]._mx = point.x;
|
||||
item->_subItems[dir]._walk[act]._my = point.y;
|
||||
}
|
||||
}
|
||||
|
||||
for (int act = 0; act < 4; act++) {
|
||||
int idx;
|
||||
|
||||
switch(act) {
|
||||
case 0:
|
||||
idx = varD->getSubVarAsInt("TurnR");
|
||||
break;
|
||||
case 1:
|
||||
idx = varD->getSubVarAsInt("TurnL");
|
||||
break;
|
||||
case 2:
|
||||
idx = varD->getSubVarAsInt("TurnU");
|
||||
break;
|
||||
case 3:
|
||||
idx = varD->getSubVarAsInt("TurnD");
|
||||
break;
|
||||
}
|
||||
|
||||
item->_subItems[dir]._turn[act]._movementId = idx;
|
||||
|
||||
Movement *mov = obj->getMovementById(idx);
|
||||
|
||||
item->_subItems[dir]._turn[act]._mov = mov;
|
||||
if (mov) {
|
||||
mov->calcSomeXY(point, 0);
|
||||
item->_subItems[dir]._turn[act]._mx = point.x;
|
||||
item->_subItems[dir]._turn[act]._my = point.y;
|
||||
}
|
||||
}
|
||||
|
||||
for (int act = 0; act < 4; act++) {
|
||||
int idx;
|
||||
|
||||
switch(act) {
|
||||
case 0:
|
||||
idx = varD->getSubVarAsInt("TurnSR");
|
||||
break;
|
||||
case 1:
|
||||
idx = varD->getSubVarAsInt("TurnSL");
|
||||
break;
|
||||
case 2:
|
||||
idx = varD->getSubVarAsInt("TurnSU");
|
||||
break;
|
||||
case 3:
|
||||
idx = varD->getSubVarAsInt("TurnSD");
|
||||
break;
|
||||
}
|
||||
|
||||
item->_subItems[dir]._turnS[act]._movementId = idx;
|
||||
|
||||
Movement *mov = obj->getMovementById(idx);
|
||||
|
||||
item->_subItems[dir]._turnS[act]._mov = mov;
|
||||
if (mov) {
|
||||
mov->calcSomeXY(point, 0);
|
||||
item->_subItems[dir]._turnS[act]._mx = point.x;
|
||||
item->_subItems[dir]._turnS[act]._my = point.y;
|
||||
}
|
||||
}
|
||||
|
||||
item->_subItems[dir]._staticsId1 = item->_subItems[dir]._walk[0]._mov->_staticsObj1->_staticsId;
|
||||
item->_subItems[dir]._staticsId2 = item->_subItems[dir]._walk[0]._mov->_staticsObj2->_staticsId;
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void MovGraph2::addObject(StaticANIObject *obj) {
|
||||
|
@ -257,7 +380,6 @@ void MovGraph2::addObject(StaticANIObject *obj) {
|
|||
if (id >= 0) {
|
||||
_items[id]->_obj = obj;
|
||||
} else {
|
||||
|
||||
MovGraph2Item *item = new MovGraph2Item;
|
||||
|
||||
if (initDirections(obj, item)) {
|
||||
|
|
|
@ -204,7 +204,7 @@ class Movement;
|
|||
|
||||
struct MG2I {
|
||||
int _movementId;
|
||||
Movement *_movement;
|
||||
Movement *_mov;
|
||||
int _mx;
|
||||
int _my;
|
||||
};
|
||||
|
@ -212,9 +212,9 @@ struct MG2I {
|
|||
struct MovGraph2ItemSub {
|
||||
int _staticsId2;
|
||||
int _staticsId1;
|
||||
MG2I _field_8[3];
|
||||
MG2I _field_38[4];
|
||||
MG2I _field_78[4];
|
||||
MG2I _walk[3];
|
||||
MG2I _turn[4];
|
||||
MG2I _turnS[4];
|
||||
};
|
||||
|
||||
struct MovGraph2Item {
|
||||
|
|
|
@ -1245,6 +1245,12 @@ Common::Point *Movement::getCurrDynamicPhaseXY(Common::Point &p) {
|
|||
return &p;
|
||||
}
|
||||
|
||||
Common::Point *Movement::calcSomeXY(Common::Point &p, int idx) {
|
||||
warning("STUB: Movement::calcSomeXY()");
|
||||
|
||||
return &p;
|
||||
}
|
||||
|
||||
void Movement::setAlpha(int alpha) {
|
||||
if (_currMovement)
|
||||
for (uint i = 0; i < _currMovement->_dynamicPhases.size(); i++) {
|
||||
|
|
|
@ -140,6 +140,8 @@ class Movement : public GameObject {
|
|||
Common::Point *getCenter(Common::Point *p);
|
||||
Common::Point *getDimensionsOfPhase(Common::Point *p, int phaseIndex);
|
||||
|
||||
Common::Point *calcSomeXY(Common::Point &p, int idx);
|
||||
|
||||
void initStatics(StaticANIObject *ani);
|
||||
void updateCurrDynamicPhase();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue