Пример #1
0
/** Initialize 3D actor
	@param bodyIdx 3D actor body index
	@param actorIdx 3D actor index */
void initModelActor(int32 bodyIdx, int16 actorIdx) {
	ActorStruct *localActor;
	int32  entityIdx;
	int32  entityIdxOld;
	int    currentIndex;
	uint16 *ptr;
	int16  var1, var2, var3, var4;

	int32 result, result1, result2;

	result = 0;

	localActor = &sceneActors[actorIdx];

	if (localActor->staticFlags.bIsSpriteActor)
		return;

	if (actorIdx == 0 && heroBehaviour == kProtoPack && localActor->armor != 0 && localActor->armor != 1) { // if hero
		setBehaviour(kNormal);
	}

	if (bodyIdx != -1) {
		entityIdx = initBody(bodyIdx, actorIdx);
	} else {
		entityIdx = -1;
	}

	if (entityIdx != -1) {
		if (localActor->entity == entityIdx)
			return;

		entityIdxOld = localActor->entity;
		localActor->entity = entityIdx;
		localActor->body = bodyIdx;
		currentIndex = localActor->entity;

		if (bottomLeftX == -32000) {
			ptr = (uint16 *) bodyTable[localActor->entity];
			ptr++;

			var1 = *((int16 *)ptr++);
			var2 = *((int16 *)ptr++);
			localActor->boudingBox.Y.bottomLeft = *((int16 *)ptr++);
			localActor->boudingBox.Y.topRight = *((int16 *)ptr++);
			var3 = *((int16 *)ptr++);
			var4 = *((int16 *)ptr++);

			if (localActor->staticFlags.bUseMiniZv) {
				result1 = var2 - var1; // take smaller for bound
				result2 = var4 - var3;

				if (result1 < result2)
					result = result1;
				else
					result = result2;

				result = abs(result);
				result >>= 1;
			} else {
Пример #2
0
 inline void initializeNewObject(size_t mark, void *vft, RexxBehaviour *b)
 {
     // we need to make this a function object of some type in case
     // a GC cycle gets triggered before this is complete.  By default,
     // we make this a generic object
     setVirtualFunctions(vft);
     setBehaviour(b);
     // this has a clean set of flags, except for the live mark
     header.initHeader(mark);
     // make sure the object is cleared in case this gets marked out of any of
     // the constructors.
     clearObject();
 }
Пример #3
0
/** Restart hero variables while opening new scenes */
void restartHeroScene() {
	sceneHero->controlMode = 1;
	memset(&sceneHero->dynamicFlags, 0, 2);
	memset(&sceneHero->staticFlags, 0, 2);

	sceneHero->staticFlags.bComputeCollisionWithObj = 1;
	sceneHero->staticFlags.bComputeCollisionWithBricks = 1;
	sceneHero->staticFlags.bIsZonable = 1;
	sceneHero->staticFlags.bCanDrown = 1;
	sceneHero->staticFlags.bCanFall = 1;

	sceneHero->armor = 1;
	sceneHero->positionInMoveScript = -1;
	sceneHero->labelIdx = -1;
	sceneHero->positionInLifeScript = 0;
	sceneHero->zone = -1;
	sceneHero->angle = previousHeroAngle;

	setActorAngleSafe(sceneHero->angle, sceneHero->angle, 0, &sceneHero->move);
	setBehaviour(previousHeroBehaviour);
	
	cropBottomScreen = 0;
}
Пример #4
0
	void setFemale ()
							{ setBehaviour (__DRAGONNINJAFEMALEBEHAVIOUR); }
Пример #5
0
	// To control the aspect of the ninja
	// It can be male or female!
	void setMale ()
							{ setBehaviour (__DRAGONNINJAMALEBEHAVIOUR); }