FULLPIPE: Implement MGM::getPoint()

This commit is contained in:
Eugene Sandulenko 2013-12-15 14:20:13 +02:00
parent 7cb658f152
commit 5751f4c110
2 changed files with 60 additions and 3 deletions

View File

@ -1576,12 +1576,66 @@ void MGM::updateAnimStatics(StaticANIObject *ani, int staticsId) {
}
}
Common::Point *MGM::getPoint(Common::Point *point, int aniId, int staticsId1, int staticsId2) {
warning("STUB: MGM::getPoint()");
Common::Point *MGM::getPoint(Common::Point *point, int objectId, int staticsId1, int staticsId2) {
int idx = getItemIndexById(objectId);
if (idx == -1) {
point->x = -1;
point->y = -1;
} else {
int st1idx = getStaticsIndexById(idx, staticsId1);
int st2idx = getStaticsIndexById(idx, staticsId2);
if (st1idx == st2idx) {
point->x = 0;
point->y = 0;
} else {
int subidx = st1idx + st2idx * _items[idx]->statics.size();
if (!_items[idx]->subItems[subidx]->movement) {
clearMovements2(idx);
recalcOffsets(idx, st1idx, st2idx, false, true);
if (!_items[idx]->subItems[subidx]->movement) {
clearMovements2(idx);
recalcOffsets(idx, st1idx, st2idx, true, false);
}
}
MGMSubItem *sub = _items[idx]->subItems[subidx];
if (sub->movement) {
point->x = sub->x;
point->y = sub->y;
} else {
point->x = 0;
point->y = 0;
}
}
}
return point;
}
int MGM::getStaticsIndexById(int idx, int16 id) {
for (uint i = 0; i < _items[idx]->statics.size(); i++) {
if (_items[idx]->statics[i]->_staticsId == id)
return i;
}
return 0;
}
void MGM::clearMovements2(int idx) {
_items[idx]->movements2.clear();
}
int MGM::recalcOffsets(int idx, int st1idx, int st2idx, bool flip, bool flop) {
warning("STUB: MGM::recalcOffsets()");
return 0;
}
MovGraphLink::MovGraphLink() {
_distance = 0;
_angle = 0;

View File

@ -113,7 +113,7 @@ public:
};
struct MGMSubItem {
int movement;
Movement *movement;
int staticsIndex;
int field_8;
int field_C;
@ -162,6 +162,9 @@ public:
MessageQueue *genMovement(MGMInfo *mgminfo);
void updateAnimStatics(StaticANIObject *ani, int staticsId);
Common::Point *getPoint(Common::Point *point, int aniId, int staticsId1, int staticsId2);
int getStaticsIndexById(int idx, int16 id);
void clearMovements2(int idx);
int recalcOffsets(int idx, int st1idx, int st2idx, bool flip, bool flop);
};
struct MctlLadderMovementVars {