/** * See if moving actor is stood within a polygon. */ bool MoverIsInPolygon(PMOVER pMover, HPOLYGON hp) { assert(pMover); // Checking if null moving actor is in polygon assert(pMover->actorObj); // Checking if null moving actor is in polygon int aniX, aniY; GetAniPosition(pMover->actorObj, &aniX, &aniY); return IsInPolygon(aniX, aniY, hp); }
/** * Get position of a moving actor. */ void GetMoverPosition(PMOVER pMover, int *paniX, int *paniY) { assert(pMover); // Getting null moving actor's position if (pMover->actorObj != NULL) GetAniPosition(pMover->actorObj, paniX, paniY); else { *paniX = 0; *paniY = 0; } }
void MultiSetAniY(OBJECT *pMultiObj, int newAniY) { int curAniX, curAniY; // objects current animation position // validate object pointer assert(pMultiObj >= objectList && pMultiObj <= objectList + NUM_OBJECTS - 1); // get master objects current animation position GetAniPosition(pMultiObj, &curAniX, &curAniY); // calc y difference between current and new positions curAniX = 0; newAniY -= curAniY; // move all pieces by the difference MultiMoveRelXY(pMultiObj, curAniX, newAniY); }
void MultiSetAniX(OBJECT *pMultiObj, int newAniX) { int curAniX, curAniY; // objects current animation position // validate object pointer assert(isValidObject(pMultiObj)); // get master objects current animation position GetAniPosition(pMultiObj, &curAniX, &curAniY); // calc x difference between current and new positions newAniX -= curAniX; curAniY = 0; // move all pieces by the difference MultiMoveRelXY(pMultiObj, newAniX, curAniY); }