示例#1
0
Tile::Tile(Type type, const TextureHolder& textures)
: Entity(1)
, mType(type)
, mSprite(textures.get(Table[type].texture), Table[type].textureRect)
, mExplosion(textures.get(Textures::Explosion))
, mDropPickupCommand()
, mShowExplosion(false)
, mSpawnedPickup(false)
, mPickupsEnabled(true)
{
	mExplosion.setFrameSize(sf::Vector2i(256, 256));
	mExplosion.setNumFrames(16);
	mExplosion.setDuration(sf::seconds(1));

	centerOrigin(mSprite);
	centerOrigin(mExplosion);

	mDropPickupCommand.category = Category::SceneFieldLayer;
	mDropPickupCommand.action   = [this, &textures] (SceneNode& node, sf::Time)
	{
		createPickup(node, textures);
	};


}
示例#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();
}
Aircraft::Aircraft(Type type, const TextureHolder& textures, const FontHolder& fonts)
: Entity(Table[type].hitpoints)
, mType(type)
, mFireCommand()
, mMissileCommand()
, mFireCountdown(sf::Time::Zero)
, mIsFiring(false)
, mIsLaunchingMissile(false)
, mShowExplosion(true)
, mSpawnedPickup(false)
, mSprite(textures.get(Table[type].texture), Table[type].textureRect)
, mExplosion(textures.get(Textures::Explosion))
, mFireRateLevel(1)
, mSpreadLevel(1)
, mMissileAmmo(2)
, mDropPickupCommand()
, mTravelledDistance(0.f)
, mDirectionIndex(0)
, mMissileDisplay(nullptr)
{
	mExplosion.setFrameSize(sf::Vector2i(256, 256));
	mExplosion.setNumFrames(16);
	mExplosion.setDuration(sf::seconds(1));

	centerOrigin(mSprite);
	centerOrigin(mExplosion);

	mFireCommand.category = Category::SceneAirLayer;
	mFireCommand.action   = [this, &textures] (SceneNode& node, sf::Time)
	{
		createBullets(node, textures);
	};

	mMissileCommand.category = Category::SceneAirLayer;
	mMissileCommand.action   = [this, &textures] (SceneNode& node, sf::Time)
	{
		createProjectile(node, Projectile::Missile, 0.f, 0.5f, textures);
	};

	mDropPickupCommand.category = Category::SceneAirLayer;
	mDropPickupCommand.action   = [this, &textures] (SceneNode& node, sf::Time)
	{
		createPickup(node, textures);
	};

	std::unique_ptr<TextNode> healthDisplay(new TextNode(fonts, ""));
	mHealthDisplay = healthDisplay.get();
	attachChild(std::move(healthDisplay));

	if (getCategory() == Category::PlayerAircraft)
	{
		std::unique_ptr<TextNode> missileDisplay(new TextNode(fonts, ""));
		missileDisplay->setPosition(0, 70);
		mMissileDisplay = missileDisplay.get();
		attachChild(std::move(missileDisplay));
	}

	updateTexts();
}
示例#4
0
文件: MenuState.cpp 项目: vsrz/CS699
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();

}
示例#5
0
PauseState::PauseState(StateStack &stack, Context context) :
    State(stack, context),
    mSprite(context.textures->get(Textures::Pausemenu))
{
    centerOrigin(mSprite);
    mSprite.setPosition(context.window->getSize().x / 2.f, context.window->getSize().y / 2.f);
}
示例#6
0
文件: textnode.cpp 项目: Lo-X/hammer
TextNode::TextNode(const std::string& text, const FontHolder& fonts) :
    mText(text, fonts.get(Fonts::Main), 20),
    mShow(true)
{
    centerOrigin(mText);
    mText.setColor(sf::Color::White);
}
示例#7
0
LoadingState::LoadingState(StateStack& stack, Context* context)
: State(stack, context) {

    sf::RenderWindow& window = *getContext()->window;
    sf::Font& font = context->fonts->get(IDFonts::Main);
    sf::Vector2f viewSize = window.getView().getSize();

    loadingText.setFont(font);
    loadingText.setString("Cargando...");
    centerOrigin(loadingText);
    loadingText.setPosition(viewSize.x / 2.f, viewSize.y / 2.f + 50.f);

    progressBarBackground.setFillColor(sf::Color::White);
    progressBarBackground.setSize(sf::Vector2f(viewSize.x - 20, 10));
    progressBarBackground.setPosition(10, loadingText.getPosition().y + 40);

    progressBar.setFillColor(sf::Color(100, 100, 100));
    progressBar.setSize(sf::Vector2f(200, 10));
    progressBar.setPosition(10, loadingText.getPosition().y + 40);


    setCompletion(0.f);
    taskCreated = false;
    loadingTask = nullptr;
}
Projectile::Projectile(Type type, const TextureHolder& textures) 
	: Entity(1) //1 HP - so it's not detected as destroyed and not drawn
	, type(type)
	, sprite(textures.get(Table[type].texture))
{
	centerOrigin(sprite);
}
示例#9
0
Aircraft::Aircraft(Type type, const TextureHolder& textures, const FontHolder& fonts)
: Entity(Table[type].hitpoints)
, mType(type), mSprite(textures.get(Table[mType].texture), Table[mType].textRect),mHealthDisplay(nullptr)
, mTravelledDistance(0.f), mDirectionIndex(0), mIsFiring(false), mFireCountdown(sf::Time::Zero)
, mFireRateLevel(1), mFireCommand(), mSpreadLevel(1), mIsMarkedForRemoval(false)
, mMissileCommand(), mIsLaunchMissile(false), mMissileAmmo(2), mDropPickupCommand()
{
    if (!isAllied())
        mFireRateLevel = 0;
    centerOrigin(mSprite);
    
    std::unique_ptr<TextNode>   healthDisplay(new TextNode(fonts, ""));
    mHealthDisplay = healthDisplay.get();
    
    attachChild(std::move(healthDisplay));
    
    mFireCommand.category = Category::Scene;
    mFireCommand.action = [this, &textures](SceneNode& node, sf::Time)
    {
        createBullet(node, textures);
    };
    mMissileCommand.category = Category::Scene;
    mMissileCommand.action   = [this, &textures] (SceneNode& node, sf::Time)
    {
        createProjectile(node, Projectile::Missile, 0.f, 0.5f, textures);
    };
    
    mDropPickupCommand.category = Category::Scene;
    mDropPickupCommand.action   = [this, &textures] (SceneNode& node, sf::Time)
    {
        createPickup(node, textures);
    };
}
示例#10
0
Projectile::Impl::Impl( Type type, const TextureManager & textures ) :
	mType( type ),
	mSprite( textures.Get( Table.at( type ).texture ), Table.at( type ).textureRect ),
	mTargetDirection()
{
	centerOrigin( mSprite );
}
示例#11
0
Pickup::Pickup(Type type, const TextureHolder& textures)
: Entity(1)
, mType(type)
, mSprite(textures.get(Table[type].texture), Table[type].textureRect)
{
	centerOrigin(mSprite);
}
PauseState::PauseState(StateStack& stack, Context context)
: State(stack, context)
, mBackgroundSprite()
, mPausedText()
, mGUIContainer()
{
	sf::Font& font = context.fonts->get(Fonts::Main);
	sf::Vector2f windowSize(context.window->getSize());

	mPausedText.setFont(font);
	mPausedText.setString("Game Paused");	
	mPausedText.setCharacterSize(70);
	centerOrigin(mPausedText);
	mPausedText.setPosition(0.5f * windowSize.x, 0.4f * windowSize.y);

	auto returnButton = std::make_shared<GUI::Button>(*context.fonts, *context.textures);
	returnButton->setPosition(0.5f * windowSize.x - 100, 0.4f * windowSize.y + 75);
	returnButton->setText("Return");
	returnButton->setCallback([this] ()
	{
		requestStackPop();
	});

	auto backToMenuButton = std::make_shared<GUI::Button>(*context.fonts, *context.textures);
	backToMenuButton->setPosition(0.5f * windowSize.x - 100, 0.4f * windowSize.y + 125);
	backToMenuButton->setText("Back to menu");
	backToMenuButton->setCallback([this] ()
	{
		requestStateClear();
		requestStackPush(States::Menu);
	});

	mGUIContainer.pack(returnButton);
	mGUIContainer.pack(backToMenuButton);
}
示例#13
0
Projectile::Projectile(Type type, const TextureHolder& textures)
: Entity(1)
, mType(type)
, mSprite(textures.get(Table[type].texture), Table[type].textureRect)
, mTargetDirection()
{
	centerOrigin(mSprite);
}
示例#14
0
Projectile::Projectile(const TextureHolder& textures)
: mType(AlliedBullet)
{
    sf::Sprite spr(textures.get(Textures::Projectile));
    centerOrigin(spr);
    setSprite(spr);
    setID(1);
}
示例#15
0
void GUITextInputPool::addTextInput(std::string name, sf::Vector2f centerPosition, sf::Vector2f size, std::string placeholderTextString, unsigned int fontId, unsigned int charSize, sf::Color backgroundColor, sf::Color textColor, sf::Color borderLineColor, sf::Color focusedBorderLineColor)
{
    if(mode == 1 && m_texts.size() >= 1)
        return;

    sf::Text text, placeholderText;
    //text.setFont(fonts.get(fontId));
    text.setFont(fonts->get(fontId));
    //placeholderText.setFont(fonts.get(fontId));
    placeholderText.setFont(fonts->get(fontId));

    text.setCharacterSize(charSize);
    placeholderText.setCharacterSize(charSize);

    text.setString("");
    placeholderText.setString(placeholderTextString);

    text.setColor(textColor);

    sf::Color placeholderColor = textColor;
    placeholderColor.a -= 80;
    placeholderText.setColor(placeholderColor);

    centerOrigin(text);
    centerOrigin(placeholderText);

    text.setPosition(centerPosition);
    placeholderText.setPosition(centerPosition);

    sf::RectangleShape shape;

    if(size != sf::Vector2f(0.f, 0.f))
        shape.setSize(size);
    else
        shape.setSize(sf::Vector2f(placeholderText.getGlobalBounds().width + 20.f, placeholderText.getGlobalBounds().height + 15.f));

    shape.setFillColor(backgroundColor);
    centerOrigin(shape);
    shape.setPosition(centerPosition);
    shape.setOutlineThickness(2.f);
    shape.setOutlineColor(borderLineColor);

    m_texts[name] = {shape, text, placeholderText, textColor, borderLineColor, focusedBorderLineColor, shape.getSize()};

}
示例#16
0
Paddle::Paddle(const TextureHolder& textures, const bool isPlayer) 
        :   mPlayer(isPlayer)
         , mSprite(textures.get(Textures::Paddle))
      
        
{
        centerOrigin(mSprite);
        
}
示例#17
0
Bubble::Bubble(void)
    : Shape()
    , m_entity()
    , m_circleShape(nullptr) {
    std::unique_ptr<sf::CircleShape> shape(new sf::CircleShape());
    m_circleShape = shape.get();
    Shape::setShape(std::move(shape));
    centerOrigin(*m_circleShape);
}
示例#18
0
// Set Text Properties
void ButtonNode::setTextProperties(const std::string& str, const sf::Font& font,
                                   unsigned charSize)
{
    std::unique_ptr<TextNode> text(new TextNode(str, font, charSize));
    mText = text.get();
    attachChild(std::move(text));

    centerOrigin();
}
示例#19
0
	CircleGauge::CircleGauge(float radius, float maxValue, float startValue)
		: Gauge(maxValue, startValue)
		, fillingView_(sf::TrianglesFan, FILLING_N_POINT)
		, backgroundView_(radius)
	{
		centerOrigin(backgroundView_);
		backgroundView_.setFillColor(BACK_VIEW_COLOR);
		
		updateFillingView();
	}
示例#20
0
Bubble::Bubble(float radius, const sf::Color& color)
    : Shape()
    , m_entity()
    , m_circleShape(nullptr) {
    std::unique_ptr<sf::CircleShape> shape(new sf::CircleShape(radius));
    m_circleShape = shape.get();
    centerOrigin(*m_circleShape);
    Shape::setFillColor(color);
    m_entity.setRadius(radius);
}
示例#21
0
文件: Button.cpp 项目: vsamy/labyfou
	Button::Button(State::Context context) :
		callback_(),
		sprite_(context.textures->resource(TextureId::Buttons)),
		text_("", context.fonts->resource(FontId::Regular)),
		isToggle_(false)
	{
		changeTexture(Normal);

		centerOrigin(sprite_);
	}
示例#22
0
PauseState::PauseState(StateStack& stack, Context context)
    : State(stack, context)
    , mBackgroundSprite()
    , mPausedText()
    , mInstructionText()
{
    sf::Font& font = context.fonts->get(Fonts::Main);
    sf::Vector2f viewSize = context.window->getView().getSize();

    mPausedText.setFont(font);
    mPausedText.setString("Game Paused");
    mPausedText.setCharacterSize(70);
    centerOrigin(mPausedText);
    mPausedText.setPosition(0.5f * viewSize.x, 0.4f * viewSize.y);

    mInstructionText.setFont(font);
    mInstructionText.setString("(Press Backspace to return to the main menu)");
    centerOrigin(mInstructionText);
    mInstructionText.setPosition(0.5f * viewSize.x, 0.6f * viewSize.y);
}
示例#23
0
// Set Container Properties
void ButtonNode::setContainerProperties(const sf::Texture& texture,
                                        const sf::IntRect& rect)
{
    std::unique_ptr<SpriteNode> container(rect == sf::IntRect(0, 0, 0, 0)
                                          ? new SpriteNode(texture)
                                          : new SpriteNode(texture, rect));
    mContainer = container.get();
    attachChild(std::move(container));

    centerOrigin();
}
Samsquamptch::Samsquamptch()
    : m_velocity(sf::Vector2f(0.f,0.f))
    , m_target(sf::Vector2f(0.f,0.f))
    , m_bounds(sf::Vector2f(0.f,0.f))
    , m_angle(0.f)
    , m_health(10)
    , m_alive(false)
    , m_aggressionLevel(2.f)
{
    centerOrigin(m_rect);
    setOrigin(m_rect.getOrigin());
}
示例#25
0
TitleState::TitleState(StateStack& stack, Context context)
: State(stack, context)
, mText()
, mShowText(true)
, mTextEffectTime(sf::Time::Zero) {
    mBackgroundSprite.setTexture(context.textures->get(Textures::TitleScreen));

    mText.setFont(context.fonts->get(Fonts::Main));
    mText.setString("Press any key to start");
    centerOrigin(mText);
    mText.setPosition(sf::Vector2f(context.window->getSize() / 2u));
}
示例#26
0
void MenuScreen::initialize(void) {
    m_title.setFont(m_fontManager.get(Fonts::ID::Main));
    m_title.setStyle(sf::Text::Style::Bold);
    m_title.setCharacterSize(50);
    m_title.setString("PLAY");
    centerOrigin(m_title);
    m_title.setPosition(m_window.getSize().x / 2, m_window.getSize().y / 2);
    sf::Texture& background_texture = m_textureManager.get(Textures::ID::Background);
    std::shared_ptr<DisplayObject> background_sprite = std::make_shared<Sprite>(background_texture);
    m_displayList->addChild(background_sprite);

}
示例#27
0
void GUIButtonPool::addButton(std::string name, sf::Vector2f centerPosition, sf::Vector2f size, std::string textString, unsigned int fontId, unsigned int charSize, sf::Color backgroundColor, sf::Color hoverBackgroundColor, std::function<void()> fn)
{
    sf::Text text;
    text.setFont(fonts->get(fontId));
    text.setCharacterSize(charSize);
    text.setString(textString);
    centerOrigin(text);
    text.setPosition(centerPosition.x, centerPosition.y);

    sf::RectangleShape shape;

    if(size != sf::Vector2f(0.f, 0.f))
        shape.setSize(size);
    else
        shape.setSize(sf::Vector2f(text.getGlobalBounds().width + 20.f, text.getGlobalBounds().height + 15.f));

    shape.setFillColor(backgroundColor);
    centerOrigin(shape);
    shape.setPosition(centerPosition);

    m_buttons[name] = {shape, text, backgroundColor, hoverBackgroundColor, fn};
}
示例#28
0
ScreenSplash::ScreenSplash(Context* context)
: Screen(context)
{
	splashScreen = sf::Sprite(context->resManager->getTexture(Textures::Texture::SplashScreen));
	centerOrigin(splashScreen);
	centerScreen(splashScreen, context->application->getWindowSize());

	delayTime = sf::seconds(3.f);
	elapsedTime = sf::Time::Zero;

	this->alwaysDraw = true;
	this->blockUpdate = true;
}
示例#29
0
void MenuState::draw() {
    sf::RenderWindow *window = engine->getWindow();
    window->setView(view);
    window->draw(wall);

    window->setView(window->getDefaultView());
    window->draw(title);

    menuItem.setString(menuItems[currentMenuItem]);
    centerOrigin(menuItem);
    window->draw(menuItem);

}
void AnimatedSpriteNode::nextTick(sf::Time dt)
{
    mElapsedTime += dt;

    short numberOfTextures = mAnimationTable.textureRect[mState].size();

    int interval = mAnimationTable.interval;

    int x = mElapsedTime.asMilliseconds() / interval % numberOfTextures;

    mSprite.setTextureRect(mAnimationTable.textureRect[mState][x]);

    centerOrigin(mSprite);
}