Example #1
0
void *FindInTree( Node t, void *key ) {
	if ( t == (Node)0 ) return NULL;
	switch( KeyCmp( key, ItemKey(t->item) ) ) {
		case -1 : return FindInTree( t->left, key );	
		case 0: return t->item;
		case +1 : return FindInTree( t->right, key );
		}
	}
void FireProjectile::HandlePlayerCollision(Player* pPlayer, BaseArena* pArena, ItemLoaderXML* pItemLoader)
{
	// Add a "impulse" to the player.
	XMFLOAT3 dir = GetDirection();
	dir.y = 0.0f;
	pPlayer->SetVelocity(dir * GetImpactImpulse() * (1-pPlayer->GetKnockBackResistance()));
	pPlayer->ClearTargetQueue();

	// Get item data.
	Item* item = pItemLoader->GetItem(ItemKey(GetSkillType(), GetSkillLevel()));

	Player* caster = (Player*)GetWorld()->GetObjectById(GetOwner());

	// Damage the player.
	pPlayer->TakeDamage(item->GetAttributes().damage + caster->GetBonusDamage());
	pPlayer->SetLastHitter((Player*)GetWorld()->GetObjectById(GetOwner()));
}
Example #3
0
void Inventory::AddItem(HudItem* pItem)
{
	// Any free slots?
	if(!HasFreeSlots())
		return;

	// Remove previous level item.
	if(pItem->GetLevel() > 1) 
		RemoveItem(GetItemLoader()->GetItem(ItemKey(pItem->GetName(), pItem->GetLevel()-1)));

	// Add item to player.
	mPlayer->AddItem(pItem);

	// Send message to server.
	SendItemAdded(mPlayer->GetId(), pItem->GetName(), pItem->GetLevel());

	// Clear the inventory and update it with the players current items.
	UpdateItems();
}
void SkillInventory::AddItem(ItemName name, int level)
{
	AddItem(GetItemLoader()->GetItem(ItemKey(name, level)));
}