Exemple #1
0
void Entity::worldCollide(Vector2 _pos)
{
        switch(returnDirection())
        {
        case Direction_North:
                setPosition(_pos.X,_pos.Y+20);
                break;
        case Direction_East:
                setPosition(_pos.X-20,_pos.Y);
                break;
        case Direction_West:
                setPosition(_pos.X+20,_pos.Y);
                break;
        case Direction_South:
                setPosition(_pos.X,_pos.Y-20);
                break;
        case Direction_NorthEast:
                setPosition(_pos.X-20,_pos.Y+20);
                break;
        case Direction_NorthWest:
                setPosition(_pos.X+20,_pos.Y+20);
                break;
        case Direction_SouthEast:
                setPosition(_pos.X-20,_pos.Y-20);
                break;
        case Direction_SouthWest:
                setPosition(_pos.X+20,_pos.Y-20);
                break;                    
        }          
}
Exemple #2
0
void Entity::update(float _dt)
{
        if(getTypeID() == NPC_Boy2 || getTypeID() == NPC_Girl1 || getTypeID() == NPC_Girl2 || 
                getTypeID() == NPC_MerchantFour|| getTypeID() == NPC_MerchantTwo || getTypeID() == NPC_MerchantThree)
        {
                collisionRect = Rect2(getPosition().X,getPosition().Y,32,32);
                return;
        }
        if(returnDirection()<8)
        {
                currentAnimation = allAnimations[returnDirection()];
        }

        if(currentAnimation->frames.size()!=0)
        {
                currentAnimation->Update(_dt);
                collisionRect = currentAnimation->frames[currentAnimation->getCurrFrame()]->collisionRect;
                collisionRect.x = position.X - currentAnimation->frames[currentAnimation->getCurrFrame()]->anchorPoint.X;
                collisionRect.y = position.Y - currentAnimation->frames[currentAnimation->getCurrFrame()]->anchorPoint.Y;
        }
}
Exemple #3
0
void Zumi::move()
{
	switch (returnDirection())
	{
	case KEY_PRESS_LEFT:
	{
						   Actor* leftdirection = getWorld()->WhatActorHere(getX() - 1, getY());
						   Brick* leftbrick = dynamic_cast<Brick*>(leftdirection);
						   BugSprayer* leftbs = dynamic_cast<BugSprayer*>(leftdirection);
						   if (leftbrick || leftbs)
							   resetDirection();
						   else
							   moveTo(getX() - 1, getY());
						   break;
	}
	case KEY_PRESS_RIGHT:
	{
							Actor* rightdirection = getWorld()->WhatActorHere(getX() + 1, getY());
							Brick* rightbrick = dynamic_cast<Brick*>(rightdirection);
							BugSprayer* rightbs = dynamic_cast<BugSprayer*>(rightdirection);
							if (rightbrick || rightbs)
								resetDirection();
							else
								moveTo(getX() + 1, getY());
							break;
	}
	case KEY_PRESS_UP:
	{
						 Actor* updirection = getWorld()->WhatActorHere(getX(), getY() + 1);
						 Brick* upbrick = dynamic_cast<Brick*>(updirection);
						 BugSprayer* upbs = dynamic_cast<BugSprayer*>(updirection);
						 if (upbrick || upbs)
							 resetDirection();
						 else
							 moveTo(getX(), getY() + 1);
						 break;
	}
	case KEY_PRESS_DOWN:
	{
						   Actor* downdirection = getWorld()->WhatActorHere(getX(), getY() - 1);
						   Brick* downbrick = dynamic_cast<Brick*>(downdirection);
						   BugSprayer* downbs = dynamic_cast<BugSprayer*>(downdirection);
						   if (downbrick || downbs)
							   resetDirection();
						   else
							   moveTo(getX(), getY() - 1);
						   break;
	}
	}
	reset();
}