void setObjectPosition(int16 ovlIdx, int16 objIdx, int16 param3, int16 param4) { objDataStruct *ptr = getObjectDataFromOverlay(ovlIdx, objIdx); if (!ptr) return; //overlayTable[param1].ovlData switch (ptr->_class) { case THEME: case MULTIPLE: { if (param3 != 5) return; globalVars[overlayTable[ovlIdx].state + ptr->_stateTableIdx] = param4; sortCells(ovlIdx, objIdx, &cellHead); break; } case UNIQUE: return; case VARIABLE: { objectParams *ptr2 = &overlayTable[ovlIdx].ovlData->arrayObjVar[ptr->_varTableIdx]; switch (param3) { case 0: { // x ptr2->X = param4; break; } case 1: { // y ptr2->Y = param4; break; } case 2: { // z ptr2->Z = param4; sortCells(ovlIdx, objIdx, &cellHead); break; } case 3: { ptr2->frame = param4; break; } case 4: { // scale ptr2->scale = param4; break; } case 5: { // state ptr2->state = param4; break; } default: { assert(0); } } break; } default: { assert(0); } } }
int16 objInit(int ovlIdx, int objIdx, int newState) { objDataStruct *ptr; // uint16 param; ovlDataStruct *ovlData; ptr = getObjectDataFromOverlay(ovlIdx, objIdx); if (!ptr) return -11; ovlData = overlayTable[ovlIdx].ovlData; switch (ptr->_class) { case THEME: case MULTIPLE: { globalVars[overlayTable[ovlIdx].state + ptr->_stateTableIdx] = newState; sortCells(ovlIdx, objIdx, &cellHead); break; } case UNIQUE: break; case VARIABLE: { objectParams *destEntry; objectParams *sourceEntry; if (ptr->_firstStateIdx + newState > ovlData->size8) { return 0; } destEntry = &ovlData->arrayObjVar[ptr->_varTableIdx]; sourceEntry = &ovlData->arrayStates[ptr->_firstStateIdx + newState]; memcpy(destEntry, sourceEntry, sizeof(objectParams)); destEntry->state = newState; sortCells(ovlIdx, objIdx, &cellHead); break; } default: { warning("Unsupported param = %d in objInit", ptr->_class); // exit(1); } } return 0; }