Esempio n. 1
0
 bool MenuState::handleEvent(const sf::Event& event){
 #if defined ANDROID
     auto& window = *getContext().window;
     if(event.type == sf::Event::TouchEnded){
         sf::Vector2f pos = static_cast<sf::Vector2f>(window.mapPixelToCoords(sf::Vector2i(event.touch.x, event.touch.y), window.getView()));
         for(const auto& text:mOptions){
             if(text.getGlobalBounds().contains(pos)){
                 if(text.getString() == "Play"){
                     requestStackPop();
                     requestStackPush(AppStates::Game);
                 }else if(text.getString() == "Help"){
                     requestStackPush(AppStates::Help);
                 }else if(text.getString() == "Exit"){
                     requestStackPop();
                 }
             }
         }
     }else if(event.type == sf::Event::KeyReleased){
         if(event.key.code == sf::Keyboard::Escape){
             requestStackPop();
         }
     }else if(event.type == sf::Event::LostFocus){
         requestStackPop();
     }
 #else
     if(event.type != sf::Event::KeyReleased){
         return false;
     }
     if(event.key.code == sf::Keyboard::Return){
         if(mOptionIndex == Play){
             requestStackPop();
             requestStackPush(AppStates::Game);
         }else if(mOptionIndex == Help){
             requestStackPush(AppStates::Help);
         }else if(mOptionIndex == Exit){
             requestStackPop();
         }
     }else if(event.key.code == sf::Keyboard::Up){
         if(mOptionIndex > 0){
             mOptionIndex--;
         }
         else{
             mOptionIndex = mOptions.size() - 2;
         }
         updateOptionText();
     }else if(event.key.code == sf::Keyboard::Down){
         if(mOptionIndex < mOptions.size() - 2){
             mOptionIndex++;
         }else{
             mOptionIndex = 0;
         }
         updateOptionText();
     }
 #endif
     return true;
 }
Esempio n. 2
0
MenuState::MenuState(StateStack& stack, Context context)
	: State(stack, context)
	, mOptions()
	, mOptionIndex(0)
{
	sf::Texture& texture = context.textures->get(Textures::TitleScreen);
	sf::Font& font = context.fonts->get(Fonts::Main);

	mBackgroundSprite.setTexture(texture);

	// A simple menu demonstration
	sf::Text playOption;
	playOption.setFont(font);
	playOption.setString("Play");
	centerOrigin(playOption);
	playOption.setPosition(context.window->getView().getSize() / 2.f);
	mOptions.push_back(playOption);

	sf::Text exitOption;
	exitOption.setFont(font);
	exitOption.setString("Exit");
	centerOrigin(exitOption);
	exitOption.setPosition(playOption.getPosition() + sf::Vector2f(0.f, 30.f));
	mOptions.push_back(exitOption);

	updateOptionText();
}
Esempio n. 3
0
 MenuState::MenuState(StateStack& stack, Context context)
 : AppState(stack, context)
 , mOptions()
 , mOptionIndex(0){
     loadConfig(Config::CONFIG_FILE);
     mBackground.setTexture(context.assets->getTexture(strBackground));
     sf::Text playOption;
     playOption.setFont(context.assets->getFont(font));
     playOption.setString("Play");
     Utils::centerOrigin(playOption);
     playOption.setPosition(context.window->getView().getSize() / 2.f);
     mOptions.emplace_back(playOption);
     sf::Text helpOption;
     helpOption.setFont(context.assets->getFont(font));
     helpOption.setString("Help");
     Utils::centerOrigin(helpOption);
     helpOption.setPosition(playOption.getPosition() + sf::Vector2f(0.f, 40.f));
     mOptions.emplace_back(helpOption);
     sf::Text exitOption;
     exitOption.setFont(context.assets->getFont(font));
     exitOption.setString("Exit");
     Utils::centerOrigin(exitOption);
     exitOption.setPosition(helpOption.getPosition() + sf::Vector2f(0.f, 40.f));
     mOptions.emplace_back(exitOption);
     sf::Text gameTitle;
     gameTitle.setFont(context.assets->getFont(font));
     gameTitle.setString("AntFarm");
     gameTitle.setCharacterSize(50);
     Utils::centerOrigin(gameTitle);
     gameTitle.setPosition(playOption.getPosition() - sf::Vector2f(0.f, 100.f));
     mOptions.emplace_back(gameTitle);
     updateOptionText();
 }
Esempio n. 4
0
bool MenuState::handleEvent(const sf::Event& event)
{
	// The demonstration menu logic
	if (event.type != sf::Event::KeyPressed)
		return false;

	if (event.key.code == sf::Keyboard::Return)
	{
		if (mOptionIndex == Play)
		{
			requestStackPop();
			requestStackPush(States::Game);
		}
		else if (mOptionIndex == Exit)
		{
			// The exit option was chosen, by removing itself, the stack will be empty, and the game will know it is time to close.
			requestStackPop();
		}
	}

	else if (event.key.code == sf::Keyboard::Up)
	{
		// Decrement and wrap-around
		if (mOptionIndex > 0)
			mOptionIndex--;
		else
			mOptionIndex = mOptions.size() - 1;

		updateOptionText();
	}

	else if (event.key.code == sf::Keyboard::Down)
	{
		// Increment and wrap-around
		if (mOptionIndex < mOptions.size() - 1)
			mOptionIndex++;
		else
			mOptionIndex = 0;

		updateOptionText();
	}

	return true;
}
Esempio n. 5
0
MenuState::MenuState(StateStack& stack, Context context)
	: mBackgroundSprite0()
	, mBackgroundSprite1()
	, mBackgroundSprite2()
	, mStartButtonTexture(getContext().textures->get(Textures::StartButton))
	, mExitButtonTexture(getContext().textures->get(Textures::ExitButton))
	, State(stack, context)
	, mOptions()
	, mOptionIndex(0)
{
	sf::Texture& texture0 = getContext().textures->get(Textures::TitleScreen0);
	sf::Texture& texture1 = getContext().textures->get(Textures::TitleScreen1);
	sf::Texture& texture2 = getContext().textures->get(Textures::TitleScreen2);

	// Setup the start and exit buttons
	mStartButtonTexture = getContext().textures->get(Textures::StartButton);
	mExitButtonTexture = getContext().textures->get(Textures::ExitButton);
	mStartButton.setTexture(mStartButtonTexture);
	mExitButton.setTexture(mExitButtonTexture);
	mStartButton.setPosition(sf::Vector2f(context.window->getView().getSize().x / 2.f - 115.f, 380.f));
	mExitButton.setPosition(sf::Vector2f(context.window->getView().getSize().x / 2.f - 115.f, 460.f));

	sf::Font& font = context.fonts->get(Fonts::Default);

	// Construct build ID
	mBuildInfo.setFont(font);
	mBuildInfo.setCharacterSize(12);
	mBuildInfo.setPosition(sf::Vector2f(1160.f, 750.f));
	mBuildInfo.setString(Config::RELEASE_STRING);

	// Simple menu
	sf::Image playButton;
	playButton.loadFromFile("res/btn_start.png");
	
	sf::Text playOption;
	playOption.setFont(font);
	playOption.setString("Play");
	playOption.setCharacterSize(36);
	centerOrigin(playOption);
	playOption.setPosition(context.window->getView().getSize() / 2.f);
	mOptions.push_back(playOption);

	sf::Text exitOption;
	exitOption.setFont(font);
	exitOption.setCharacterSize(36);
	exitOption.setString("Exit");
	centerOrigin(exitOption);
	exitOption.setPosition(playOption.getPosition() + sf::Vector2f(0.f, 40.f));
	mOptions.push_back(exitOption);

	updateOptionText();

}
Esempio n. 6
0
bool MenuState::handleEvent(const sf::Event& event)
{
	if (event.type != sf::Event::KeyPressed)
		return false;

	if (event.key.code == sf::Keyboard::Up)
	{
		if (index > 0)
			index--;
		else
			index = options.size() - 1;

		updateOptionText();
	}
	else if (event.key.code == sf::Keyboard::Down)
	{
		if (index < options.size() - 1)
			index++;
		else
			index = 0;

		updateOptionText();
	}
	else if (event.key.code == sf::Keyboard::Return)
	{
		if (index == Play)
		{
			requestStackPop();
			requestStackPush(States::game);
		}
		else if (index == Exit)
		{
			requestStackPop();
		}
	}
	return true;
}
Esempio n. 7
0
MenuState::MenuState(StateStack& stack, Context context)
	:State(stack, context)
	,index(0)
	,options()
{
	background_sprite.setTexture(context.textures->get(Textures::TitleScreen));

	sf::Text play;
	play.setFont(context.fonts->get(Fonts::Main));
	play.setString("Play");
	play.setOrigin(play.getLocalBounds().width / 2.f, play.getLocalBounds().height / 2.f);
	play.setPosition(context.window->getView().getSize() / 2.f);
	options.push_back(play);

	sf::Text exit;
	exit.setFont(context.fonts->get(Fonts::Main));
	exit.setString("Exit");
	play.setOrigin(exit.getLocalBounds().width / 2.f, exit.getLocalBounds().height / 2.f);
	exit.setPosition(play.getPosition() + sf::Vector2f(0.f, 30.f));
	options.push_back(exit);

	updateOptionText();

}
Esempio n. 8
0
bool MenuState::handleEvent(const sf::Event& event)
{
	// Check and activate based on the mouse button click location
	MousePosition mPos = sf::Mouse::getPosition(*getContext().window);
	sf::Rect<float> startrect = sf::Rect<float>(mStartButton.getPosition().x, mStartButton.getPosition().y, 230.f, 50.f);
	sf::Rect<float> endrect = sf::Rect<float>(mExitButton.getPosition().x, mExitButton.getPosition().y, 230.f, 50.f);

	if (event.type == sf::Event::MouseButtonReleased)
	{
		if (isInRect(mPos, startrect))
		{
			requestStackPop();
			requestStackPush(States::Loading);
		} 

		if (isInRect(mPos, endrect))
		{
			requestStackPop();
		}

	}

	if (event.type == sf::Event::MouseMoved)
	{
		if (isInRect(mPos, startrect))
		{
			mStartButton.setColor(sf::Color(255, 255, 255, 255));
		}
		else
		{
			mStartButton.setColor(sf::Color(200, 200, 200, 255));
		}
		
		if (isInRect(mPos, endrect))
		{
			mExitButton.setColor(sf::Color(255, 255, 255, 255));

		}
		else
		{
			mExitButton.setColor(sf::Color(200, 200, 200, 255));

		}
	}

	// Only handle an event if the keyboard is used
	if (event.type != sf::Event::KeyPressed)
	{
		return false;
	}

	if (event.key.code == sf::Keyboard::Return)
	{
		if (mOptionIndex == Play)
		{
			requestStackPop();
			requestStackPush(States::Loading);
		}
		else if (mOptionIndex == Exit)
		{
			// Pop the last element off the stack (itself)
			requestStackPop();
		}
	}
	else if (event.key.code == sf::Keyboard::Down)
	{
		// Increment and wrap around
		if (mOptionIndex < mOptions.size() - 1)
		{
			mOptionIndex++;
		}
		else
		{
			mOptionIndex = 0;
		}
		updateOptionText();
	}
	else if (event.key.code == sf::Keyboard::Up)
	{
		// Decrement
		if (mOptionIndex > 0)
		{
			mOptionIndex--;
		}
		else
		{
			mOptionIndex = mOptions.size() - 1;
		}
		updateOptionText();
	}

	return true;
	
}