Skip to content

Commit

Permalink
FULLPIPE: Implement MGM::recalcOffsets()
Browse files Browse the repository at this point in the history
  • Loading branch information
sev- committed Apr 25, 2014
1 parent 1726f57 commit 8230577
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 27 deletions.
46 changes: 20 additions & 26 deletions engines/fullpipe/motion.cpp
Expand Up @@ -2182,9 +2182,8 @@ void MGM::clearMovements2(int idx) {
}

int MGM::recalcOffsets(int idx, int st1idx, int st2idx, bool flip, bool flop) {
#if 0
MGMItem *item = _items[idx];
int subIdx = st1idx + st2idx * item->staticsListCount;
int subIdx = st1idx + st2idx * item->statics.size();

if (st1idx == st2idx) {
memset(&item->subItems[subIdx], 0, sizeof(item->subItems[subIdx]));
Expand All @@ -2196,31 +2195,30 @@ int MGM::recalcOffsets(int idx, int st1idx, int st2idx, bool flip, bool flop) {

Common::Point point;

for (int i = 0; i < item->movementListCount; i++) {
mov = item->movements1[i];
for (int i = 0; i < item->movements1.size(); i++) {
Movement *mov = item->movements1[i];

if (mov->_staticsObj1 == item->statics[st1idx]) {
if (!item->movements2[i] && (!flop || mov->_field_50)) {
item->movements2[i] = 1;

int stidx = getStaticsIndex(idx, item->movements1[i]->_staticsObj2);
int recalc = recalcOffsets(idx, stidx, st2idx, flip, flop);
int sz = mov->_currMovement ? mov->_currMovement->_dynamicPhases.size() : mov->_dynamicPhases.size();
int newsz = sz + item->subItems[stidx + 6 * st2idx * _items[idx]->statics.size()]->field_C;

if (recalc >= 0) {
if (!item->subItems[subIdx].movement || item->subItems[subIdx].field_8 > recalc + 1 ||
(item->subItems[subIdx].field_8 == recalc + 1 && item->subItems[subIdx].field_C > v20) {
item->subItems[subIdx].movement = mov;
item->subItems[subIdx].staticsIndex = stidx;
item->subItems[subIdx].field_8 = recalc + 1;

int sz = mov->_currMovement ? mov->_currMovement->_dynamicPhases.size() : mov->_dynamicPhases.size();

item->subItems[subIdx].field_C = sz + item->subItems[stidx + 6 * st2idx * _items[idx].staticsListCount]->field_C;
if (!item->subItems[subIdx]->movement || item->subItems[subIdx]->field_8 > recalc + 1 ||
(item->subItems[subIdx]->field_8 == recalc + 1 && item->subItems[subIdx]->field_C > newsz)) {
item->subItems[subIdx]->movement = mov;
item->subItems[subIdx]->staticsIndex = stidx;
item->subItems[subIdx]->field_8 = recalc + 1;
item->subItems[subIdx]->field_C = newsz;

mov->calcSomeXY(&point, 0);
mov->calcSomeXY(point, 0);

item->subItems[subIdx].x = item->subItems[stidx + 6 * st2idx * _items[idx].staticsListCount]->x + point.x;
item->subItems[subIdx].y = item->subItems[stidx + 6 * st2idx * _items[idx].staticsListCount]->y + point.y;
item->subItems[subIdx]->x = item->subItems[stidx + 6 * st2idx * _items[idx]->statics.size()]->x + point.x;
item->subItems[subIdx]->y = item->subItems[stidx + 6 * st2idx * _items[idx]->statics.size()]->y + point.y;
}
}
}
Expand All @@ -2235,17 +2233,17 @@ int MGM::recalcOffsets(int idx, int st1idx, int st2idx, bool flip, bool flop) {
if (recalc >= 0) {
if (!item->subItems[subIdx]->movement || item->subItems[subIdx]->field_8 > recalc + 1) {
item->subItems[subIdx]->movement = mov;
item->subItems[subIdx].staticsIndex = stidx;
item->subItems[subIdx].field_8 = recalc + 1;
item->subItems[subIdx]->staticsIndex = stidx;
item->subItems[subIdx]->field_8 = recalc + 1;

int sz = mov->_currMovement ? mov->_currMovement->_dynamicPhases.size() : mov->_dynamicPhases.size();

item->subItems[subIdx].field_C = sz + item->subItems[stidx + 6 * st2idx * _items[idx].staticsListCount]->field_C;
item->subItems[subIdx]->field_C = sz + item->subItems[stidx + 6 * st2idx * _items[idx]->statics.size()]->field_C;

mov->calcSomeXY(&point, 0);
mov->calcSomeXY(point, 0);

item->subItems[subIdx].x = item->subItems[stidx + 6 * st2idx * _items[idx].staticsListCount]->x - point.x;
item->subItems[subIdx].y = item->subItems[stidx + 6 * st2idx * _items[idx].staticsListCount]->y - point.y;
item->subItems[subIdx]->x = item->subItems[stidx + 6 * st2idx * _items[idx]->statics.size()]->x - point.x;
item->subItems[subIdx]->y = item->subItems[stidx + 6 * st2idx * _items[idx]->statics.size()]->y - point.y;
}
}
}
Expand All @@ -2257,10 +2255,6 @@ int MGM::recalcOffsets(int idx, int st1idx, int st2idx, bool flip, bool flop) {
return item->subItems[subIdx]->field_8;

return -1;
#endif
warning("STUB: MGM::recalcOffsets()");

return 0;
}

Common::Point *MGM::calcLength(Common::Point *pRes, Movement *mov, int x, int y, int *mult, int *len, int flag) {
Expand Down
2 changes: 1 addition & 1 deletion engines/fullpipe/motion.h
Expand Up @@ -138,7 +138,7 @@ struct MGMItem {
Common::Array<MGMSubItem *> subItems;
Common::Array<Statics *> statics;
Common::Array<Movement *> movements1;
Common::Array<Movement *> movements2;
Common::Array<int> movements2;

MGMItem();
};
Expand Down

0 comments on commit 8230577

Please sign in to comment.