void FlashSpell::load(const SpellData& data, LevelMovableGameObject* mob, const sf::Vector2f& target) { setSpriteOffset(sf::Vector2f(-10.f, 0.f)); m_mob = mob; Animation* spellAnimation = new Animation(sf::milliseconds(200)); spellAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_spell_flash)); spellAnimation->addFrame(sf::IntRect(0, 0, 120, 120)); spellAnimation->addFrame(sf::IntRect(120, 0, 120, 120)); addAnimation(GameObjectState::Idle, spellAnimation); // initial values setCurrentAnimation(getAnimation(GameObjectState::Idle), false); playCurrentAnimation(true); Spell::load(data, mob, target); m_isFlashingRight = mob->isFacingRight(); m_flashingTime = FLASHING_TIME; m_flashDuration = FLASH_DURATION; sf::Vector2f position(m_mob->getPosition()); position.x += (m_mob->getBoundingBox()->width / 2.f); position.y += m_mob->getBoundingBox()->height - 20; position.x = m_isFlashingRight ? position.x - data.range : position.x + data.range; loadParticleSystem(); m_posGenerator->center = position; }
void LevelMainCharacter::load() { setBoundingBox(sf::FloatRect(0.f, 0.f, 30.f, 100.f)); setSpriteOffset(sf::Vector2f(-25.f, -20.f)); Animation walkingAnimation; walkingAnimation.setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_mainChar)); walkingAnimation.addFrame(sf::IntRect(0, 0, 80, 120)); walkingAnimation.addFrame(sf::IntRect(80, 0, 80, 120)); walkingAnimation.addFrame(sf::IntRect(160, 0, 80, 120)); walkingAnimation.addFrame(sf::IntRect(240, 0, 80, 120)); walkingAnimation.addFrame(sf::IntRect(320, 0, 80, 120)); walkingAnimation.addFrame(sf::IntRect(400, 0, 80, 120)); walkingAnimation.addFrame(sf::IntRect(480, 0, 80, 120)); walkingAnimation.addFrame(sf::IntRect(560, 0, 80, 120)); addAnimation(GameObjectState::Walking, walkingAnimation); Animation idleAnimation; idleAnimation.setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_mainChar)); idleAnimation.addFrame(sf::IntRect(640, 0, 80, 120)); addAnimation(GameObjectState::Idle, idleAnimation); Animation jumpingAnimation; jumpingAnimation.setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_mainChar)); jumpingAnimation.addFrame(sf::IntRect(720, 0, 80, 120)); addAnimation(GameObjectState::Jumping, jumpingAnimation); Animation fightingAnimation; fightingAnimation.setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_mainChar)); fightingAnimation.addFrame(sf::IntRect(800, 0, 80, 120)); fightingAnimation.addFrame(sf::IntRect(880, 0, 80, 120)); fightingAnimation.addFrame(sf::IntRect(960, 0, 80, 120)); fightingAnimation.addFrame(sf::IntRect(1040, 0, 80, 120)); fightingAnimation.addFrame(sf::IntRect(1040, 0, 80, 120)); addAnimation(GameObjectState::Fighting, fightingAnimation); Animation deadAnimation; deadAnimation.setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_mainChar)); deadAnimation.addFrame(sf::IntRect(1120, 0, 80, 120)); addAnimation(GameObjectState::Dead, deadAnimation); setFrameTime(sf::seconds(0.07f)); // initial values m_state = GameObjectState::Idle; m_isFacingRight = true; setCurrentAnimation(getAnimation(m_state), !m_isFacingRight); playCurrentAnimation(true); setDebugBoundingBox(sf::Color::White); }
void FireRatEnemy::load() { setBoundingBox(sf::FloatRect(0.f, 0.f, 40.f, 30.f)); setSpriteOffset(sf::Vector2f(-5.f, -20.f)); Animation walkingAnimation; walkingAnimation.setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_firerat)); walkingAnimation.addFrame(sf::IntRect(0, 0, 50, 50)); walkingAnimation.addFrame(sf::IntRect(50, 0, 50, 50)); walkingAnimation.addFrame(sf::IntRect(100, 0, 50, 50)); walkingAnimation.addFrame(sf::IntRect(50, 0, 50, 50)); addAnimation(GameObjectState::Walking, walkingAnimation); Animation idleAnimation; idleAnimation.setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_firerat)); idleAnimation.addFrame(sf::IntRect(50, 0, 50, 50)); idleAnimation.addFrame(sf::IntRect(300, 0, 50, 50)); addAnimation(GameObjectState::Idle, idleAnimation); Animation jumpingAnimation; jumpingAnimation.setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_firerat)); jumpingAnimation.addFrame(sf::IntRect(150, 0, 50, 50)); addAnimation(GameObjectState::Jumping, jumpingAnimation); Animation fightingAnimation; fightingAnimation.setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_firerat)); fightingAnimation.addFrame(sf::IntRect(200, 0, 50, 50)); fightingAnimation.addFrame(sf::IntRect(250, 0, 50, 50)); addAnimation(GameObjectState::Fighting, fightingAnimation); Animation deadAnimation; deadAnimation.setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_firerat)); deadAnimation.addFrame(sf::IntRect(350, 0, 50, 50)); addAnimation(GameObjectState::Dead, deadAnimation); setFrameTime(sf::seconds(0.08f)); // initial values m_state = GameObjectState::Idle; m_isFacingRight = true; setCurrentAnimation(getAnimation(m_state), !m_isFacingRight); playCurrentAnimation(true); }
void TelekinesisSpell::load(const SpellData& bean, LevelMovableGameObject* mob, const sf::Vector2f& target) { setSpriteOffset(sf::Vector2f(-10.f, -10.f)); Animation* spellAnimation = new Animation(sf::seconds(10.f)); spellAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_spell_telekinesis)); spellAnimation->addFrame(sf::IntRect(0, 0, 40, 30)); addAnimation(GameObjectState::Idle, spellAnimation); // initial values setState(GameObjectState::Idle); playCurrentAnimation(true); Spell::load(bean, mob, target); loadParticleSystem(); }
void LevelMainCharacter::loadAnimation() { setBoundingBox(sf::FloatRect(0.f, 0.f, 30.f, 90.f)); setSpriteOffset(sf::Vector2f(-25.f, -30.f)); Animation* walkingAnimation = new Animation(); walkingAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_mainChar)); for (int i = 0; i < 8; ++i) { walkingAnimation->addFrame(sf::IntRect(i * 80, 0, 80, 120)); } addAnimation(GameObjectState::Walking, walkingAnimation); Animation* idleAnimation = new Animation(); idleAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_mainChar)); idleAnimation->addFrame(sf::IntRect(640, 0, 80, 120)); addAnimation(GameObjectState::Idle, idleAnimation); Animation* jumpingAnimation = new Animation(); jumpingAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_mainChar)); jumpingAnimation->addFrame(sf::IntRect(720, 0, 80, 120)); addAnimation(GameObjectState::Jumping, jumpingAnimation); Animation* fightingAnimation = new Animation(sf::milliseconds(70)); fightingAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_mainChar)); for (int i = 10; i < 14; ++i) { fightingAnimation->addFrame(sf::IntRect(i * 80, 0, 80, 120)); } // duplicate last frame because of level equipment fightingAnimation->addFrame(sf::IntRect(1040, 0, 80, 120)); addAnimation(GameObjectState::Fighting, fightingAnimation); Animation* deadAnimation = new Animation(); deadAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_mainChar)); deadAnimation->addFrame(sf::IntRect(1120, 0, 80, 120)); addAnimation(GameObjectState::Dead, deadAnimation); // initial values setState(GameObjectState::Idle); playCurrentAnimation(true); setDebugBoundingBox(COLOR_WHITE); }
void GargoyleEnemy::loadAnimation(int skinNr) { m_animations.clear(); setBoundingBox(sf::FloatRect(0.f, 0.f, 50.f, 80.f)); setSpriteOffset(sf::Vector2f(-127.f, -42.f)); Animation* flyingAnimation = new Animation(); flyingAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_gargoyle)); for (int i = 0; i < 8; i++) { flyingAnimation->addFrame(sf::IntRect(195 * i, 0, 195, 180)); } addAnimation(GameObjectState::Flying, flyingAnimation); Animation* idleAnimation = new Animation(); idleAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_gargoyle)); for (int i = 0; i < 8; i++) { idleAnimation->addFrame(sf::IntRect(195 * i, 0, 195, 180)); } addAnimation(GameObjectState::Idle, idleAnimation); // TODO: create other animations Animation* fightingAnimation = new Animation(); fightingAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_gargoyle)); for (int i = 0; i < 3; i++) { fightingAnimation->addFrame(sf::IntRect(195 * i, 180, 195, 180)); } fightingAnimation->setLooped(false); addAnimation(GameObjectState::Fighting, fightingAnimation); Animation* deadAnimation = new Animation(); deadAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_gargoyle)); for (int i = 0; i < 10; i++) { deadAnimation->addFrame(sf::IntRect(195 * i, 360, 195, 180)); } deadAnimation->setLooped(false); addAnimation(GameObjectState::Dead, deadAnimation); // initial values setState(GameObjectState::Idle); playCurrentAnimation(true); }
void AureolaSpell::load(const SpellData& bean, LevelMovableGameObject* mob, const sf::Vector2f& target) { setSpriteOffset(sf::Vector2f(-10.f, -10.f)); Animation* spellAnimation = new Animation(sf::seconds(0.3f)); spellAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_spell_aureola)); spellAnimation->addFrame(sf::IntRect(0, 0, 40, 40)); spellAnimation->addFrame(sf::IntRect(40, 0, 40, 40)); addAnimation(GameObjectState::Idle, spellAnimation); // initial values setCurrentAnimation(getAnimation(GameObjectState::Idle), false); playCurrentAnimation(true); m_rangeLeft = bean.range; Spell::load(bean, mob, target); }
void FireBallSpell::load(const SpellData& data, LevelMovableGameObject* mob, const sf::Vector2f& target) { setSpriteOffset(sf::Vector2f(-20.f, -20.f)); Animation* spellAnimation = new Animation(); spellAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_spell_fireball)); for (int i = 0; i < 4; ++i) { spellAnimation->addFrame(sf::IntRect(i * 50, data.skinNr * 50, 50, 50)); } addAnimation(GameObjectState::Idle, spellAnimation); // initial values setCurrentAnimation(getAnimation(GameObjectState::Idle), false); playCurrentAnimation(true); Spell::load(data, mob, target); g_resourceManager->playSound(m_sound, ResourceID::Sound_spell_fireball); }
void SkeletonEnemy::loadAnimation() { setBoundingBox(sf::FloatRect(0.f, 0.f, 40.f, 135.f)); setSpriteOffset(sf::Vector2f(-35.f, -15.f)); Animation* walkingAnimation = new Animation(sf::seconds(0.1f)); walkingAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_skeleton)); for (int i = 0; i < 8; i++) { walkingAnimation->addFrame(sf::IntRect(i * 150, 0, 150, 150)); } addAnimation(GameObjectState::Walking, walkingAnimation); Animation* jumpingAnimation = new Animation(); jumpingAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_skeleton)); jumpingAnimation->addFrame(sf::IntRect(0, 0, 150, 150)); addAnimation(GameObjectState::Jumping, jumpingAnimation); Animation* idleAnimation = new Animation(); idleAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_skeleton)); idleAnimation->addFrame(sf::IntRect(00, 150, 150, 150)); addAnimation(GameObjectState::Idle, idleAnimation); Animation* fightingAnimation = new Animation(sf::seconds(0.05f)); fightingAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_skeleton)); for (int i = 0; i < 8; i++) { fightingAnimation->addFrame(sf::IntRect(i * 150, 300, 150, 150)); } addAnimation(GameObjectState::Fighting, fightingAnimation); Animation* deadAnimation = new Animation(); deadAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_skeleton)); for (int i = 0; i < 2; i++) { deadAnimation->addFrame(sf::IntRect(i * 150, 450, 150, 150)); } deadAnimation->setLooped(false); addAnimation(GameObjectState::Dead, deadAnimation); // initial values setState(GameObjectState::Idle); playCurrentAnimation(true); }
void FireRatEnemy::loadAnimation() { setBoundingBox(sf::FloatRect(0.f, 0.f, 40.f, 30.f)); setSpriteOffset(sf::Vector2f(-5.f, -20.f)); Animation* walkingAnimation = new Animation(); walkingAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_firerat)); walkingAnimation->addFrame(sf::IntRect(0, 0, 50, 50)); walkingAnimation->addFrame(sf::IntRect(50, 0, 50, 50)); walkingAnimation->addFrame(sf::IntRect(100, 0, 50, 50)); walkingAnimation->addFrame(sf::IntRect(50, 0, 50, 50)); addAnimation(GameObjectState::Walking, walkingAnimation); Animation* idleAnimation = new Animation(); idleAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_firerat)); idleAnimation->addFrame(sf::IntRect(50, 0, 50, 50)); idleAnimation->addFrame(sf::IntRect(300, 0, 50, 50)); addAnimation(GameObjectState::Idle, idleAnimation); Animation* jumpingAnimation = new Animation(); jumpingAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_firerat)); jumpingAnimation->addFrame(sf::IntRect(150, 0, 50, 50)); addAnimation(GameObjectState::Jumping, jumpingAnimation); Animation* fightingAnimation = new Animation(sf::seconds(0.08f)); fightingAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_firerat)); fightingAnimation->addFrame(sf::IntRect(200, 0, 50, 50)); fightingAnimation->addFrame(sf::IntRect(250, 0, 50, 50)); addAnimation(GameObjectState::Fighting, fightingAnimation); Animation* deadAnimation = new Animation(); deadAnimation->setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_enemy_firerat)); deadAnimation->addFrame(sf::IntRect(350, 0, 50, 50)); addAnimation(GameObjectState::Dead, deadAnimation); // initial values setState(GameObjectState::Idle); playCurrentAnimation(true); }
void FearSpell::load(const SpellBean& bean, LevelMovableGameObject* mob, const sf::Vector2f& target) { setSpriteOffset(sf::Vector2f(-10.f, -10.f)); Animation spellAnimation; spellAnimation.setSpriteSheet(g_resourceManager->getTexture(ResourceID::Texture_spell_fear)); spellAnimation.addFrame(sf::IntRect(0, 0, 30, 30)); spellAnimation.addFrame(sf::IntRect(30, 0, 30, 30)); addAnimation(GameObjectState::Idle, spellAnimation); setFrameTime(sf::seconds(0.1f)); // initial values setCurrentAnimation(getAnimation(GameObjectState::Idle), false); playCurrentAnimation(true); Spell::load(bean, mob, target); }
void UnstableTile::init() { setSpriteOffset(sf::Vector2f(-1.f, 0.f)); setBoundingBox(sf::FloatRect(0.f, 0.f, static_cast<float>(TILE_SIZE) - 2.f, TILE_SIZE_F)); }
void CookingTile::init() { setBoundingBox(sf::FloatRect(0.f, 0.f, TILE_SIZE_F, TILE_SIZE_F)); setSpriteOffset(sf::Vector2f(0.f, -50.f)); }
void ShiftableTile::init() { setSpriteOffset(sf::Vector2f(-1.f, 0.f)); setBoundingBox(sf::FloatRect(0.f, 0.f, TILE_SIZE_F - 2.f, TILE_SIZE_F)); }
void DestructibleTile::init() { setSpriteOffset(sf::Vector2f(0.f, 0.f)); setBoundingBox(sf::FloatRect(0.f, 0.f, TILE_SIZE_F, TILE_SIZE_F)); }
void GargoyleEnemy::setDead() { m_boundingBox.width = 138.f; m_boundingBox.height = 46.f; setSpriteOffset(sf::Vector2f(-25.f, -133.f)); Enemy::setDead(); }