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); }; }
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(); }
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(); }
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); }
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); }
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); }
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); }; }
Projectile::Impl::Impl( Type type, const TextureManager & textures ) : mType( type ), mSprite( textures.Get( Table.at( type ).texture ), Table.at( type ).textureRect ), mTargetDirection() { centerOrigin( mSprite ); }
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); }
Projectile::Projectile(Type type, const TextureHolder& textures) : Entity(1) , mType(type) , mSprite(textures.get(Table[type].texture), Table[type].textureRect) , mTargetDirection() { centerOrigin(mSprite); }
Projectile::Projectile(const TextureHolder& textures) : mType(AlliedBullet) { sf::Sprite spr(textures.get(Textures::Projectile)); centerOrigin(spr); setSprite(spr); setID(1); }
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()}; }
Paddle::Paddle(const TextureHolder& textures, const bool isPlayer) : mPlayer(isPlayer) , mSprite(textures.get(Textures::Paddle)) { centerOrigin(mSprite); }
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); }
// 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(); }
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(); }
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); }
Button::Button(State::Context context) : callback_(), sprite_(context.textures->resource(TextureId::Buttons)), text_("", context.fonts->resource(FontId::Regular)), isToggle_(false) { changeTexture(Normal); centerOrigin(sprite_); }
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); }
// 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()); }
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)); }
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); }
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}; }
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; }
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); }