Ejemplo n.º 1
0
int main() {
    ResourceManager resourceManager = ResourceManager();
    resourceManager.addResourceDirectory("res/");
    sf::RenderWindow window(sf::VideoMode(WINDOW_X, WINDOW_Y), "ECS Test");
    EntityManager entityManager = EntityManager(&window, 100);
    for (int i = 1; i < 10000; ++i) {
        int temp = entityManager.createEntity(sf::Vector2f(WINDOW_X * float(rand()) / RAND_MAX, WINDOW_Y * float(rand()) / RAND_MAX));
        entityManager.attachComponent(temp, RenderComponent(resourceManager.getTexture("player.png")));
        entityManager.attachComponent(temp, PhysicsComponent(sf::Vector2f(100 * (float(rand()) / RAND_MAX - 0.5), 100 * (float(rand()) / RAND_MAX - 0.5))));
    }
    // Remove some entities.
    for (int i = 1; i < 3; ++i) {
        entityManager.destroyEntity(i);
    }
    // Remove some components.
    for (int i = 3; i < 10; ++i) {
        entityManager.detachComponent(i, RENDER);
    }
    sf::Clock clock;
    while (window.isOpen()) {
        // Handle events.
        sf::Event event;
        while (window.pollEvent(event)) {
          if(event.type == sf::Event::Closed) {
              window.close();
          }
        }
        float frametime = clock.restart().asSeconds();
        std::cout << (1 / frametime) << std::endl;
        window.clear(sf::Color::White);
        entityManager.update(frametime);
        window.display();
    }
}
Cursor::Cursor(ResourceManager& resourceManager, const sf::RenderWindow& screen)
    : m_screen(screen)
{
    auto sheet = resourceManager.getSpriteSheet(SHEET_NAME);
    auto iconSprite = sheet->get(SPRITE_NAME);
    m_sprite.setTexture(*resourceManager.getTexture(sheet->getTextureName()));
    m_sprite.setTextureRect(sf::IntRect(iconSprite.x, iconSprite.y, iconSprite.width, iconSprite.height));
}
Ejemplo n.º 3
0
Tutorial::Tutorial(sf::RenderWindow& window, ResourceManager& resourceManager, SoundManager& soundManager)
	: loopState(WAIT)
	, firstFadingFrame(false)
	, fadeIndexA(0)
	, fadeIndexB(1)
	, ANIMATION_SPEED(350)
	, TIME_TO_WAIT_TILL_NEXT_SWITCH(8.f) // in seconds
	, alpha1(255)
	, alpha2(0)
	, window(&window)
	, resourceManager(&resourceManager)
	, soundManager(&soundManager)
	, goToMenu(false)
	, leftMouseClicked(false)
	, rightMouseClicked(false)
{
	initBackground();
	background[0].setTexture(resourceManager.getTexture(ResourceManager::SPLASH_SCREEN));
	background[1].setTexture(resourceManager.getTexture(ResourceManager::TUT1));
	background[2].setTexture(resourceManager.getTexture(ResourceManager::TUT2));
	background[3].setTexture(resourceManager.getTexture(ResourceManager::TUT3));
	background[4].setTexture(resourceManager.getTexture(ResourceManager::TUT4));
	background[5].setTexture(resourceManager.getTexture(ResourceManager::TUT5));
	background[6].setTexture(resourceManager.getTexture(ResourceManager::TUT6));
	background[7].setTexture(resourceManager.getTexture(ResourceManager::TUT7));
	background[8].setTexture(resourceManager.getTexture(ResourceManager::TUT8));
	background[9].setTexture(resourceManager.getTexture(ResourceManager::TUT9));

	skipToMenuButton.setPosition(WINDOW_WIDTH_TO_CALCULATE - 250.f, 15.f);
	skipToMenuButton.setSize(sf::Vector2f(338.f * 0.7f , 73.f * 0.7f));
	skipToMenuButton.setTexture(resourceManager.getTexture(ResourceManager::TEXT_SPRITE));
	skipToMenuButton.setTextureRect(resourceManager.getTextureRect(ResourceManager::TEXT_SKIP_TO_MENU));
	skipToMenuButton.setFillColor(sf::Color::Black);
	
}
Ejemplo n.º 4
0
void LevelManager::preloadBackgrounds(){

	tinyxml2::XMLElement *elm = mDoc->FirstChildElement("Layers")->FirstChildElement();
	while (elm != 0){

		ResourceManager* resourceManager = &ResourceManager::getInst();
		
		std::string layerType = elm->FirstChildElement("Layer")->GetText();
		if(layerType == "static"){
			const tinyxml2::XMLElement *img = elm->FirstChildElement("Images")->FirstChildElement();
			
			while(img != 0){

				resourceManager->getTexture(img->GetText());
				img = img->NextSiblingElement();
			}

		}
		elm = elm->NextSiblingElement();
	}
}
Ejemplo n.º 5
0
void SfxMutebox::init(ResourceManager &resourceManager, SoundManager &soundManager)
{
	this->soundManager = &soundManager;

	const sf::IntRect sfxPlayRect = resourceManager.getTextureRect(resourceManager.SND_EFFECTS_PLAY);
	const sf::IntRect sfxMuteRect = resourceManager.getTextureRect(resourceManager.SND_EFFECTS_MUTE);

	this->shape->setTexture(resourceManager.getTexture(resourceManager.SOUND_SPRITE));
	this->shape->setPosition(sf::Vector2f(1307.5f, 127.5f));
	this->shape->setSize(sf::Vector2f(75.0f, 75.0f));
	this->shape->setOrigin(sf::Vector2f(37.5f, 37.5f));

	this->textureRect->left = sfxPlayRect.left;
	this->textureRect->top = sfxPlayRect.top;
	this->textureRect->width = sfxPlayRect.width;
	this->textureRect->height = sfxPlayRect.height;
	this->textureCheckedRect->left = sfxMuteRect.left;
	this->textureCheckedRect->top = sfxMuteRect.top;
	this->textureCheckedRect->width = sfxMuteRect.width;
	this->textureCheckedRect->height = sfxMuteRect.height;
	
	fitStateToVolume();
}
Ejemplo n.º 6
0
std::vector<sf::Sprite*> LevelFinished::loadAnimals(std::vector<std::string> animalvector){

	ResourceManager *resourceManager = &ResourceManager::getInst();
	std::vector<sf::Sprite*>spriteVector;

	for(std::vector<std::string>::iterator i = animalvector.begin(); i != animalvector.end(); i++){

		tinyxml2::XMLDocument doc;
		doc.LoadFile((*i).c_str());

		tinyxml2::XMLElement *elm = doc.FirstChildElement("Animal")->FirstChildElement("Images");
		tinyxml2::XMLElement *elmf = doc.FirstChildElement("Animal")->FirstChildElement("ImageAttr");


		sf::Texture* tex = resourceManager->getTexture(elm->GetText());
		sf::Sprite *sprite = new sf::Sprite();
		sprite->setTexture(*tex);
		sprite->setTextureRect(sf::IntRect(0,0, tex->getSize().x/elmf->IntAttribute("frames"), tex->getSize().y/2));
		sprite->setScale(0.75f,0.75f);
		spriteVector.push_back(sprite);
	}

	return spriteVector;
}
Ejemplo n.º 7
0
std::vector<Layer*> LevelManager::loadLayers(){
	std::vector<Layer*> layers;
	
	tinyxml2::XMLElement *elm = mDoc->FirstChildElement("Layers")->FirstChildElement();
	while (elm != 0){
		std::cout << elm->Name() << std::endl;
		Layer *layer;

		ResourceManager* resourceManager = &ResourceManager::getInst();
		
		std::string layerType = elm->FirstChildElement("Layer")->GetText();
		std::cout << layerType << std::endl;
		if(layerType == "static"){
			const tinyxml2::XMLElement *img = elm->FirstChildElement("Images")->FirstChildElement();
			std::vector<sf::Sprite*> spriteVector;
			
			while(img != 0){

				sf::Texture* tex = resourceManager->getTexture(img->GetText());
				sf::Sprite *sprite = new sf::Sprite();
				sprite->setTexture(*tex);
				spriteVector.push_back(sprite);

				img = img->NextSiblingElement();
			}

			float speed = elm->FirstChildElement("Stats")->FloatAttribute("speed");
			std::cout << speed << std::endl;
			layer = new StaticLayer(spriteVector, speed);
		}
		if(layerType == "active"){

			std::vector<Entity*> entityVector(placedAnimals);

			int minDistance = mDoc->FirstChildElement("Obstacles")->FloatAttribute("minDistance");
			int maxDistance = mDoc->FirstChildElement("Obstacles")->FloatAttribute("maxDistance");

			std::map<std::string, int> mChanceMap;

			tinyxml2::XMLElement *obst = mDoc->FirstChildElement("Obstacles")->FirstChildElement();


			int totalChanceValue = 0;

			while(obst != 0){
				const tinyxml2::XMLAttribute *atr = obst->FirstAttribute();
				totalChanceValue += atr->IntValue();
				mChanceMap[obst->Name()] = atr->IntValue();
				obst = obst->NextSiblingElement();
			}

			mLevellength = mDoc->FirstChildElement("Level")->FloatAttribute("length");

			float x = 1280 + rand()%100;

			int minDistanceFromGoal = 250;


			while(x < mLevellength - minDistanceFromGoal){
				std::string name;

				int randNumber = rand()%totalChanceValue;
				int currentNumber = 0;

				for(std::map<std::string,int>::iterator i = mChanceMap.begin(); i != mChanceMap.end(); i++){
					currentNumber += i->second;

					if (currentNumber > randNumber){
						name = i->first;
						break;
					}
				
				}

				obst = mDoc->FirstChildElement("Obstacles")->FirstChildElement(name.c_str());

				float speedMod = obst->FloatAttribute("speedMod");
				float y = obst->FloatAttribute("y");
				int xframes = obst->FloatAttribute("numberOfFrames");
				float frameTime = obst->FloatAttribute("frameTime");
			
			
				std::string id = obst->Name();
				sf::Vector2f pos = sf::Vector2f(x,y);
				sf::Texture* tex = ResourceManager::getInst().getTexture(obst->GetText());

				Animation* animation = new Animation(tex,200,xframes,1);
				Obstacle* obstacle = new Obstacle(animation, pos, speedMod, id);
				entityVector.push_back(obstacle);

				x += minDistance + rand() % (maxDistance - minDistance);
			
			}

			//skapar elden
			float fireSpeed = mDoc->FirstChildElement("Fire")->FloatAttribute("speed");
			entityVector.push_back(new Fire(sf::Vector2f(-150,0),fireSpeed));

			ActiveLayer* activeLayer = new ActiveLayer(entityVector, mLevellength);
			layer = activeLayer;
			mActiveLayer = activeLayer;
		}  

		layers.push_back(layer);
		
		elm = elm->NextSiblingElement();
	 	

	}

	return layers;
	
}
Ejemplo n.º 8
0
void Missile::init(ResourceManager& resources)
{
  sprite.setTexture(resources.getTexture("assets/tileset.png"));
  sprite.setTextureRect({0, 0, 5, 20});
}
Ejemplo n.º 9
0
Game::Game(sf::RenderWindow& window, Player* _players[2], bool noAIsim, ResourceManager& resourceManager, SoundManager& soundManager)
	: window(&window)
    , noAIsim(noAIsim)
	, resourceManager(&resourceManager)
	, soundManager(&soundManager)
	, textManager(new RTextManager(resourceManager))
	, gameMenu(new RGameMenu(resourceManager,soundManager,*textManager))
		
	, background(new RBackground(resourceManager, *_players[0], *_players[1]))
	, backgroundMusic(nullptr)

	, activePlayerIndex(1)
	, logicalBoard(new Board())
	, board(new RBoard(*resourceManager.getTexture(ResourceManager::BOARD_TEX),
                       *resourceManager.getTexture(ResourceManager::FIELD_TEX),
                       *resourceManager.getTexture(ResourceManager::FIELD_TEX)))
	, meeplesToDrawAndSort()
	, HOVERED_MEEPLE_GLOW_COLOR(sf::Color::Yellow)
	, SELECTED_MEEPLE_GLOW_COLOR(sf::Color::Red)
	, particleSystem( new ParticleSystem(*resourceManager.getTexture(ResourceManager::PARTICLE_SPRITE), sf::Vector2u(4, 2)) )
	, dustBuilder( new ParticleBuilder( { 300, 300 }, { 5, 30 }) )
	, mouseCursorParticleBuilder( new ParticleBuilder({ 300, 300 }, { 5, 30 }) )
	, endScreenParticleBuilder( new ParticleBuilder({ 0, static_cast<float>(WINDOW_HEIGHT_TO_CALCULATE) }, { 10, 30 }) )
	
	, selectedMeeple(nullptr)
	, selectedBoardPos()
	, firstFrameOfState(false)
	, hoveredMeeple(nullptr)
	, draggingMeeple(false)
	, draggedMeepleMouseOffset()
	, originalMeeplePosition()

	, MOVE_MEEPLE_ANIMATION_SPEED(800.f)
	, MOVE_MEEPLE_ANIMATION_MAX_LIFT_DISTANCE({ 5.f, 12.f })
	, initialPosition()
	, targetPosition()
	, moveMeepleAnimationDistance(0)
	, moveMeepleAnimationProgress(0)
	, moveMeepleAnimationMaxLiftDistance(0)
	
	, remainingThinkTime(0)
{    
    assert(_players[0] != _players[1]);   //hehehe, that won't crash this game

    players[0] = _players[0];
	players[0]->logicalMeepleBag = new MeepleBag(MeepleColor::WHITE);
	players[0]->rbag = new RBag();

    players[1] = _players[1];
	players[1]->logicalMeepleBag = new MeepleBag(MeepleColor::BLACK);
	players[1]->rbag = new RBag();
    	
    gameStates[0] = new GameState(players[0]->logicalMeepleBag, players[1]->logicalMeepleBag, logicalBoard);
    gameStates[1] = new GameState(players[1]->logicalMeepleBag, players[0]->logicalMeepleBag, logicalBoard);
    	
    initMeeples();
    	    
    //Init Particle systems:   
        dustBuilder->setSprites({ 2, 3 }, { 0, 1 })
            ->setPath({ 30, 110 }, { 270, 340 })
            ->setGravity(65.f, 90)
            ->setRotation()
            ->setFadeoutSpeed({ 300, 500 });   
        mouseCursorParticleBuilder->setSprites({ 0, 3 }, { 0, 1 })
            ->setPath({ 100, 300 }, { 180, 360 })
            ->setGravity(200, 800)
            ->setRotation({ 0, 600 }, { 0.1, 3.5 });   
        endScreenParticleBuilder->setSprites({ 0, 2 }, { 0, 2 })
            ->setDynamicColor()
            ->setPath({ 10, 200 }, { 275, 350 })
            ->setGravity(0)
            ->setRotation({ 100, 600 }, { -1, 3 })
            ->setFadeoutSpeed({ 35, 55 });
}
Ejemplo n.º 10
0
RTextManager::RTextManager(ResourceManager& resourceManager)
	: chooseX(145.f), arrowX(120.f), selectX(120.f), positionX(180.f), meepleX(170.f)
{
	player1.setTexture(resourceManager.getTexture(ResourceManager::TEXT_SPRITE));
	player1.setTextureRect(resourceManager.getTextureRect(ResourceManager::TEXT_PLAYER_1));
	player1.setSize(sf::Vector2f(762.f *SIZE_FAKTOR_END, 212.f *SIZE_FAKTOR_END));
	player1.setOrigin(player1.getSize().x / 2.f, player1.getSize().y / 2.f);
	player1.setPosition(440.f, 250.f);


	player2.setTexture(resourceManager.getTexture(ResourceManager::TEXT_SPRITE));
	player2.setTextureRect(resourceManager.getTextureRect(ResourceManager::TEXT_PLAYER_2));
	player2.setSize(sf::Vector2f(762.f *SIZE_FAKTOR_END, 212.f *SIZE_FAKTOR_END));
	player2.setOrigin(player2.getSize().x / 2.f, player2.getSize().y / 2.f);
	player2.setPosition(440.f, 250.f);

	wins.setTexture(resourceManager.getTexture(ResourceManager::TEXT_SPRITE));
	wins.setTextureRect(resourceManager.getTextureRect(ResourceManager::TEXT_WINS));
	wins.setSize(sf::Vector2f(581.f *SIZE_FAKTOR_END, 210.f * SIZE_FAKTOR_END));
	wins.setOrigin(wins.getSize().x / 2.f, wins.getSize().y / 2.f);
	wins.setPosition(1010.f, 235.f);

	tie.setTexture(resourceManager.getTexture(ResourceManager::TEXT_SPRITE));
	tie.setTextureRect(resourceManager.getTextureRect(ResourceManager::TEXT_TIE));
	tie.setSize(sf::Vector2f(441.f *SIZE_FAKTOR_END, 210.f * SIZE_FAKTOR_END));
	tie.setOrigin(tie.getSize().x / 2.f, 0.f);
	tie.setPosition(WINDOW_WIDTH_TO_CALCULATE / 2.f, 200.f);

	pause.setTexture(resourceManager.getTexture(ResourceManager::TEXT_SPRITE));
	pause.setTextureRect(resourceManager.getTextureRect(ResourceManager::TEXT_PAUSE));
	pause.setSize(sf::Vector2f(612.f *SIZE_FAKTOR_END, 210.f *SIZE_FAKTOR_END));
	pause.setOrigin(pause.getSize().x / 2.f, pause.getSize().y / 2.f);
	pause.setPosition(WINDOW_WIDTH_TO_CALCULATE / 2.f, 200.f);

	arrowUp.setTexture(resourceManager.getTexture(ResourceManager::TEXT_SPRITE));
	arrowUp.setTextureRect(resourceManager.getTextureRect(ResourceManager::ARROW_UP));
	arrowUp.setSize(sf::Vector2f(131.f *SIZE_FAKTOR, 243.f *SIZE_FAKTOR));
	arrowUp.setOrigin(arrowUp.getSize().x / 2.f, arrowUp.getSize().y / 2.f);

	choose.setTexture(resourceManager.getTexture(ResourceManager::TEXT_SPRITE));
	choose.setTextureRect(resourceManager.getTextureRect(ResourceManager::TEXT_CHOOSE));
	choose.setSize(sf::Vector2f(241.f *SIZE_FAKTOR, 73.f *SIZE_FAKTOR));
	choose.setOrigin(choose.getSize().x / 2.f, choose.getSize().y / 2.f);

	meeple.setTexture(resourceManager.getTexture(ResourceManager::TEXT_SPRITE));
	meeple.setTextureRect(resourceManager.getTextureRect(ResourceManager::TEXT_A_MEEPLE));
	meeple.setFillColor(sf::Color::Black);
	//meeple.setOutlineColor(sf::Color::Red);
	//meeple.setOutlineThickness(5.f);
	meeple.setSize(sf::Vector2f(291.f *SIZE_FAKTOR, 73.f *SIZE_FAKTOR));
	meeple.setOrigin(meeple.getSize().x / 2.f, meeple.getSize().y / 2.f);


	select.setTexture(resourceManager.getTexture(ResourceManager::TEXT_SPRITE));
	select.setTextureRect(resourceManager.getTextureRect(ResourceManager::TEXT_SELECT));
	select.setSize(sf::Vector2f(203.f *SIZE_FAKTOR, 73.f *SIZE_FAKTOR));
	select.setOrigin(select.getSize().x / 2.f, select.getSize().y / 2.f);

	position.setTexture(resourceManager.getTexture(ResourceManager::TEXT_SPRITE));
	position.setTextureRect(resourceManager.getTextureRect(ResourceManager::TEXT_A_POSITION));
	position.setSize(sf::Vector2f(324.f *SIZE_FAKTOR, 73.f *SIZE_FAKTOR));
	position.setOrigin(position.getSize().x / 2.f, position.getSize().y / 2.f);



	ANIMATIONSPEED = 3.f;// 3.f;

	for (uint8_t i = 0; i < 2; i++)
	{
		wobbleNR = 0.f;
		wobbleSin[i] = 0.f;
	}
}