Example #1
0
DDWORD CDestructable::ObjectMessageFn(LPBASECLASS pObject, HOBJECT hSender, DDWORD messageID, HMESSAGEREAD hRead)
{
	switch(messageID)
	{
		case MID_DAMAGE:
		{
			HandleDamage(hSender, hRead);
			break;
		}

		case MID_REPAIR:
		{
			HandleRepair(hSender, hRead);
			break;
		}

		case MID_HEAL:
		{
			HandleHeal(hSender, hRead);
			break;
		}

		case MID_TRIGGER:
		{
			HandleTrigger(hSender, hRead);
			break;
		}

		default : break;
	}

	return Aggregate::ObjectMessageFn(pObject, hSender, messageID, hRead);
}
float AZombieCharacter::TakeDamage(float DamageAmount, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser)
{
	//Determines the damage amount and type in order to apply it to the zombie
	const float ActualDamage = Super::TakeDamage(DamageAmount, DamageEvent, EventInstigator, DamageCauser);

	OurCharacter = Cast<ARoguelikeChar>(DamageCauser);

	HandleDamage(DamageAmount, DamageEvent);

	return ActualDamage;
}
uint32 Body::ObjectMessageFn(HOBJECT hSender, uint32 messageID, HMESSAGEREAD hRead)
{
	switch(messageID)
	{
		case MID_DAMAGE:
		{
			DamageStruct damage;
			damage.InitFromMessage(hRead);

			HandleDamage(damage);
		}
		break;

		default : break;
	}

	return Prop::ObjectMessageFn(hSender, messageID, hRead);
}