Пример #1
0
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);
	}
	}
}
Пример #2
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;
}