Exemplo n.º 1
0
MY_DemonBoss::MY_DemonBoss(Shader* _shader) :
	Sprite(_shader),
	spawnSpewerTimer(0),
	spawnSpewerTimerLength(sweet::NumberUtils::randomFloat(SPEWER_TIMER_MIN, SPEWER_TIMER_MAX)),
	hits(0),
	active(true),
	isDead(false)
{
	spriteSheet = new SpriteSheet(MY_ResourceManager::globalAssets->getTexture("spritesheet_boss")->texture);
	setPrimaryTexture(MY_ResourceManager::globalAssets->getTexture("boss")->texture);
	
	auto anim = new SpriteSheetAnimation(0.4f);
	anim->pushFramesInRange(0, 1, 1024, 1024, spriteSheet->texture->width, spriteSheet->texture->height);
	spriteSheet->addAnimation("idle", anim);

	anim = new SpriteSheetAnimation(0.1f);
	anim->pushFramesInRange(2, 3, 1024, 1024, spriteSheet->texture->width, spriteSheet->texture->height);
	spriteSheet->addAnimation("attack", anim);

	anim = new SpriteSheetAnimation(1.0f);
	anim->pushFramesInRange(4, 5, 1024, 1024, spriteSheet->texture->width, spriteSheet->texture->height);
	spriteSheet->addAnimation("die", anim);

	setSpriteSheet(spriteSheet, "idle");

	for(auto & v : mesh->vertices){
		v.y += 0.5f;
	}
	mesh->dirty = true;
	mesh->setScaleMode(GL_NEAREST);

	meshTransform->scale(glm::vec3(DEMON_SCALE)*1.5f);
	
	animationTimeout = new Timeout(0.5f, [this](sweet::Event * _event){
		setCurrentAnimation("idle");
	});
	childTransform->addChild(animationTimeout, false);
	spewerTimeout = new Timeout(1.f, [this](sweet::Event * _event){
		if(!isDead){
			enableSpewers();
			setCurrentAnimation("attack");
			animationTimeout->restart();
			int x =  sweet::NumberUtils::randomInt(1, 3);
			MY_ResourceManager::globalAssets->getAudio("DEMON_HISS_" + std::to_string(x))->sound->play();
		}
	});

	spewerTimeout->start();
	childTransform->addChild(spewerTimeout, false);

	/*eventManager.addEventListener("spiritCollision", [this](sweet::Event * _event){
		// Take damage and stuff here
		ST_LOG_INFO("COLLIDE");
	});*/
}
Exemplo n.º 2
0
void AnimationComponent::read(std::fstream& stream, int levelVersion)
{
	//std::string spriteFilename;
	int size;
	//char buffer[64];
	sf::Vector2i _spriteSize;
	
	stream.read((char*)&size, sizeof(size));
	std::string filepath(size,'\0');
	stream.read(&filepath[0], sizeof(char) * size);

	
	//stream.read(buffer, size);
	stream.read((char*)&_spriteSize, sizeof(_spriteSize));


	setSpriteSheet(imageManager->getTexture(filepath), _spriteSize);

}