void LargeSlimeEntity::dying() { isDying = true; game().addKilledEnemy(enemyType, hurtingType); if (slimeType == SlimeTypeBlue) game().addCorpse(x, y, FRAME_CORPSE_GIANT_SLIME_BLUE); else if (slimeType == SlimeTypeRed) game().addCorpse(x, y, FRAME_CORPSE_GIANT_SLIME_RED); else if (slimeType == SlimeTypeStandard) game().addCorpse(x, y, FRAME_CORPSE_GIANT_SLIME); float xSlime = x; float ySlime = y; if (x <= 1.5 * TILE_WIDTH) x = 1.5f * TILE_WIDTH + 2; else if (x >= TILE_WIDTH * MAP_WIDTH - 1.5f * TILE_WIDTH) x = TILE_WIDTH * MAP_WIDTH - 1.5f * TILE_WIDTH -3; if (y <= 1.5 * TILE_HEIGHT) y = 1.5 * TILE_HEIGHT + 2; else if (y >= TILE_HEIGHT * MAP_HEIGHT - 1.5f * TILE_HEIGHT) y = TILE_HEIGHT * MAP_HEIGHT - 1.5f * TILE_HEIGHT -3; for (int i = 0; i < 9; i++) { game().generateBlood(xSlime, ySlime, bloodColor); if (i % 2 == 0) { switch (slimeType) { case SlimeTypeBlue: new SlimeEntity(x, y, SlimeTypeBlue, true); break; case SlimeTypeRed: new SlimeEntity(x, y, SlimeTypeRed, true); break; case SlimeTypeViolet: new SlimeEntity(x, y, SlimeTypeViolet, true); break; default: new SlimeEntity(x, y, SlimeTypeStandard, true); break; } } } game().makeShake(1.0f); SoundManager::getInstance().playSound(SOUND_SLIME_SMASH); ItemEntity* newItem = new ItemEntity(ItemSilverCoin, x, y); newItem->setVelocity(Vector2D(100.0f + rand()% 250)); newItem->setViscosity(0.96f); SpriteEntity* star = new SpriteEntity(ImageManager::getInstance().getImage(IMAGE_GIANT_SLIME), x, y, 128, 128, 8); star->setFrame(4); star->setFading(true); star->setZ(y+ 100); star->setAge(-0.4f); star->setLifetime(0.3f); star->setType(ENTITY_EFFECT); star->setSpin(400.0f); }
void ChestEntity::generateStar(sf::Color starColor) { SpriteEntity* spriteStar = new SpriteEntity( ImageManager::getInstance().getImage(IMAGE_STAR_2), x - 15 + rand() % 30, y - 10 + rand() % 30); spriteStar->setScale(0.8f, 0.8f); spriteStar->setZ(1000.0f); spriteStar->setSpin(-100 + rand()%200); spriteStar->setVelocity(Vector2D(50 + rand()%40)); spriteStar->setWeight(-130); spriteStar->setFading(true); spriteStar->setAge(-0.8f); spriteStar->setLifetime(0.2f + (rand() % 100) * 0.005f ); spriteStar->setColor(starColor); spriteStar->setType(ENTITY_EFFECT); spriteStar->setRenderAdd(); }
void SlimePetEntity::fall() { SpriteEntity* spriteEntity = new SpriteEntity(ImageManager::getInstance().getImage(IMAGE_SLIME), x, y + 6, 64, 64, 4); spriteEntity->setAge(0.0f); spriteEntity->setLifetime(3.0f); spriteEntity->setShrinking(true); spriteEntity->setFading(true); spriteEntity->setFrame(16); isDying = true; SlimePetEntity* newSlime = new SlimePetEntity(); newSlime->setAge(-4.0f); }
void GiantSlimeEntity::dying() { isDying = true; game().addKilledEnemy(enemyType, hurtingType); game().addCorpse(x, y, FRAME_CORPSE_GIANT_SLIME); float xSlime = x; float ySlime = y; if (x <= 1.5 * TILE_WIDTH) x = 1.5f * TILE_WIDTH + 2; else if (x >= TILE_WIDTH * MAP_WIDTH - 1.5f * TILE_WIDTH) x = TILE_WIDTH * MAP_WIDTH - 1.5f * TILE_WIDTH -3; if (y <= 1.5 * TILE_HEIGHT) y = 1.5 * TILE_HEIGHT + 2; else if (y >= TILE_HEIGHT * MAP_HEIGHT - 1.5f * TILE_HEIGHT) y = TILE_HEIGHT * MAP_HEIGHT - 1.5f * TILE_HEIGHT -3; for (int i = 0; i < 9; i++) { game().generateBlood(xSlime, ySlime, bloodColor); SlimeEntity* slime = new SlimeEntity(x, y, SlimeTypeStandard, true); slime->disableCollidingTemporary(); } game().makeShake(1.0f); SoundManager::getInstance().playSound(SOUND_SLIME_SMASH); ItemEntity* newItem = new ItemEntity(ItemBossHeart, x, y); newItem->setVelocity(Vector2D(100.0f + rand()% 250)); newItem->setViscosity(0.96f); SpriteEntity* star = new SpriteEntity(ImageManager::getInstance().getImage(IMAGE_GIANT_SLIME), x, y, 128, 128, 8); star->setFrame(4); star->setFading(true); star->setZ(y+ 100); star->setAge(-0.4f); star->setLifetime(0.3f); star->setType(ENTITY_EFFECT); star->setSpin(400.0f); }