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; } }
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; } }
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(); }