コード例 #1
0
 void ImagerySection::removeTextComponent(const TextComponent& text)
 {
     for(TextList::iterator t = d_texts.begin();
             t < d_texts.end();
         ++t)
         if(t->getText() == text.getText() &&
                 t->getFont() == text.getFont())
             d_texts.erase(t);
 }
コード例 #2
0
void SystemView::populate()
{
	mEntries.clear();

	for(auto it = SystemData::sSystemVector.begin(); it != SystemData::sSystemVector.end(); it++)
	{
		const std::shared_ptr<ThemeData>& theme = (*it)->getTheme();

		Entry e;
		e.name = (*it)->getName();
		e.object = *it;

		// make logo
		if(theme->getElement("system", "logo", "image"))
		{
			ImageComponent* logo = new ImageComponent(mWindow);
			logo->setMaxSize(Eigen::Vector2f(logoSize().x(), logoSize().y()));
			logo->applyTheme((*it)->getTheme(), "system", "logo", ThemeFlags::PATH);
			logo->setPosition((logoSize().x() - logo->getSize().x()) / 2, (logoSize().y() - logo->getSize().y()) / 2); // center
			e.data.logo = std::shared_ptr<GuiComponent>(logo);

			ImageComponent* logoSelected = new ImageComponent(mWindow);
			logoSelected->setMaxSize(Eigen::Vector2f(logoSize().x() * SELECTED_SCALE, logoSize().y() * SELECTED_SCALE * 0.70f));
			logoSelected->applyTheme((*it)->getTheme(), "system", "logo", ThemeFlags::PATH);
			logoSelected->setPosition((logoSize().x() - logoSelected->getSize().x()) / 2, 
				(logoSize().y() - logoSelected->getSize().y()) / 2); // center
			e.data.logoSelected = std::shared_ptr<GuiComponent>(logoSelected);
		}else{
			// no logo in theme; use text
			TextComponent* text = new TextComponent(mWindow, 
				(*it)->getName(), 
				Font::get(FONT_SIZE_LARGE), 
				0x000000FF, 
				ALIGN_CENTER);
			text->setSize(logoSize());
			e.data.logo = std::shared_ptr<GuiComponent>(text);

			TextComponent* textSelected = new TextComponent(mWindow, 
				(*it)->getName(), 
				Font::get((int)(FONT_SIZE_LARGE * SELECTED_SCALE)), 
				0x000000FF, 
				ALIGN_CENTER);
			textSelected->setSize(logoSize());
			e.data.logoSelected = std::shared_ptr<GuiComponent>(textSelected);
		}

		// make background extras
		e.data.backgroundExtras = std::shared_ptr<ThemeExtras>(new ThemeExtras(mWindow));
		e.data.backgroundExtras->setExtras(ThemeData::makeExtras((*it)->getTheme(), "system", mWindow));

		this->add(e);
	}
}
コード例 #3
0
GuiSettingsMenu::GuiSettingsMenu(Window* window) : GuiComponent(window), 
	mList(window, Eigen::Vector2i(2, 3)), 
	mDrawFramerateSwitch(window),
	mVolumeSlider(window, 0, 100, 1),
	mSaveLabel(window)
{
	loadStates();

	addChild(&mList);

	mList.setPosition(Renderer::getScreenWidth() / 4.0f, 0);

	using namespace Eigen;

	TextComponent* label = new TextComponent(mWindow);
	label->setText("Draw Framerate: ");
	label->setColor(0x0000FFFF);
	mList.setEntry(Vector2i(0, 0), Vector2i(1, 1), label, false, ComponentListComponent::AlignRight, Matrix<bool, 1, 2>(true, true));
	mLabels.push_back(label);

	//drawFramerate switch
	mList.setEntry(Vector2i(1, 0), Vector2i(1, 1), &mDrawFramerateSwitch, true, ComponentListComponent::AlignCenter, Matrix<bool, 1, 2>(true, true));

	label = new TextComponent(mWindow);
	label->setText("System volume: ");
	label->setColor(0x0000FFFF);
	mList.setEntry(Vector2i(0, 1), Vector2i(1, 1), label, false, ComponentListComponent::AlignRight, Matrix<bool, 1, 2>(true, true));

	//volume slider
	mList.setEntry(Vector2i(1, 1), Vector2i(1, 1), &mVolumeSlider, true, ComponentListComponent::AlignCenter, Matrix<bool, 1, 2>(true, true));

	//save label
	mSaveLabel.setText("SAVE");
	mSaveLabel.setColor(0x000000FF);
	mList.setEntry(Vector2i(0, 2), Vector2i(2, 1), &mSaveLabel, true, ComponentListComponent::AlignCenter, Matrix<bool, 1, 2>(false, true));

	mList.setPosition(Renderer::getScreenWidth() / 2 - mList.getSize().x() / 2, 0);
}
コード例 #4
0
ActorComponent::ptr ActorFactory::createTextComponent()
{
	TextComponent* comp = new TextComponent;
	comp->setId(++m_LastTextComponentId);
	return ActorComponent::ptr(comp);
}
コード例 #5
0
void renderLayerObject(GameObject* gameObject, Layer* layer)
{
#if 1
	{
		std::vector<AnimatedSpriteComponent*> animatedSpriteComponents = gameObject->getComponents<AnimatedSpriteComponent>();
		for (size_t i = 0; i < animatedSpriteComponents.size(); ++i)
		{
			Renderer_renderAnimatedSprite(animatedSpriteComponents[i], layer);
		}
	}

	{

		std::vector<SpriteSheetComponent*> spriteSheetComponents = gameObject->getComponents<SpriteSheetComponent>();
		for (size_t i = 0; i < spriteSheetComponents.size(); ++i)
		{
			Renderer_renderSpriteSheet(spriteSheetComponents[i], layer);
		}
	}

	{
		std::vector<SpriteComponent*> spriteComponents = gameObject->getComponents<SpriteComponent>();
		for (size_t i = 0; i < spriteComponents.size(); ++i)
		{
			Renderer_renderSprite(spriteComponents[i], layer);
		}
	}

	{
		std::vector<TileComponent*> tileComponents = gameObject->getComponents<TileComponent>();
		for (size_t i = 0; i < tileComponents.size(); ++i)
		{
			Renderer_renderTile(tileComponents[i], layer);
		}
	}

	{
		std::vector < Text*> texts = gameObject->getComponents<Text>();
		for (size_t i = 0; i < texts.size(); ++i)
		{
			Renderer_renderText(texts[i], layer);
		}
	}

	{
		std::vector < TextComponent*> texts = gameObject->getComponents<TextComponent>();
		for (size_t i = 0; i < texts.size(); ++i)
		{
			Renderer_renderText(texts[i]->getText(), layer);
		}
	}
#else
	{
		AnimatedSpriteComponent* go = dynamic_cast<AnimatedSpriteComponent*>(gameObject);
		if (go != 0)
		{
			Renderer_renderAnimatedSprite(go, layer);
			return;
		}
	}

	{
		SpriteSheetComponent* go = dynamic_cast<SpriteSheetComponent*>(gameObject);
		if (go != 0)
		{
			Renderer_renderSpriteSheet(go, layer);
			return;
		}
	}

	{
		SpriteComponent* go = dynamic_cast<SpriteComponent*>(gameObject);
		if (go != 0)
		{
			Renderer_renderSprite(go, layer);
			return;
		}
	}

	{
		TileComponent* go = dynamic_cast<TileComponent*>(gameObject);
		if (go != 0)
		{
			Renderer_renderTile(go, layer);
			return;
		}
	}

	{
		Text* go = dynamic_cast<Text*>(gameObject);
		if (go != 0)
		{
			Renderer_renderText(go, layer);
			return;
		}
	}

	{
		TextComponent* go = dynamic_cast<TextComponent*>(gameObject);
		if (go != 0)
		{
			Renderer_renderText(go->getText(), layer);
			return;
		}
	}

	

#endif
}
コード例 #6
0
void SystemView::populate()
{
	mEntries.clear();

	for(auto it = SystemData::sSystemVector.cbegin(); it != SystemData::sSystemVector.cend(); it++)
	{
		const std::shared_ptr<ThemeData>& theme = (*it)->getTheme();

		if(mViewNeedsReload)
			getViewElements(theme);

		if((*it)->isVisible())
		{
			Entry e;
			e.name = (*it)->getName();
			e.object = *it;

			// make logo
			const ThemeData::ThemeElement* logoElem = theme->getElement("system", "logo", "image");
			if(logoElem)
			{
				std::string path = logoElem->get<std::string>("path");
				std::string defaultPath = logoElem->has("default") ? logoElem->get<std::string>("default") : "";
				if((!path.empty() && ResourceManager::getInstance()->fileExists(path))
				   || (!defaultPath.empty() && ResourceManager::getInstance()->fileExists(defaultPath)))
				{
					ImageComponent* logo = new ImageComponent(mWindow, false, false);
					logo->setMaxSize(mCarousel.logoSize * mCarousel.logoScale);
					logo->applyTheme(theme, "system", "logo", ThemeFlags::PATH | ThemeFlags::COLOR);
					logo->setRotateByTargetSize(true);
					e.data.logo = std::shared_ptr<GuiComponent>(logo);
				}
			}
			if (!e.data.logo)
			{
				// no logo in theme; use text
				TextComponent* text = new TextComponent(mWindow,
					(*it)->getName(),
					Font::get(FONT_SIZE_LARGE),
					0x000000FF,
					ALIGN_CENTER);
				text->setSize(mCarousel.logoSize * mCarousel.logoScale);
				text->applyTheme((*it)->getTheme(), "system", "logoText", ThemeFlags::FONT_PATH | ThemeFlags::FONT_SIZE | ThemeFlags::COLOR | ThemeFlags::FORCE_UPPERCASE | ThemeFlags::LINE_SPACING | ThemeFlags::TEXT);
				e.data.logo = std::shared_ptr<GuiComponent>(text);

				if (mCarousel.type == VERTICAL || mCarousel.type == VERTICAL_WHEEL)
				{
					text->setHorizontalAlignment(mCarousel.logoAlignment);
					text->setVerticalAlignment(ALIGN_CENTER);
				} else {
					text->setHorizontalAlignment(ALIGN_CENTER);
					text->setVerticalAlignment(mCarousel.logoAlignment);
				}
			}

			if (mCarousel.type == VERTICAL || mCarousel.type == VERTICAL_WHEEL)
			{
				if (mCarousel.logoAlignment == ALIGN_LEFT)
					e.data.logo->setOrigin(0, 0.5);
				else if (mCarousel.logoAlignment == ALIGN_RIGHT)
					e.data.logo->setOrigin(1.0, 0.5);
				else
					e.data.logo->setOrigin(0.5, 0.5);
			} else {
				if (mCarousel.logoAlignment == ALIGN_TOP)
					e.data.logo->setOrigin(0.5, 0);
				else if (mCarousel.logoAlignment == ALIGN_BOTTOM)
					e.data.logo->setOrigin(0.5, 1);
				else
					e.data.logo->setOrigin(0.5, 0.5);
			}

			Vector2f denormalized = mCarousel.logoSize * e.data.logo->getOrigin();
			e.data.logo->setPosition(denormalized.x(), denormalized.y(), 0.0);
			// delete any existing extras
			for (auto extra : e.data.backgroundExtras)
				delete extra;
			e.data.backgroundExtras.clear();

			// make background extras
			e.data.backgroundExtras = ThemeData::makeExtras((*it)->getTheme(), "system", mWindow);

			// sort the extras by z-index
			std::stable_sort(e.data.backgroundExtras.begin(), e.data.backgroundExtras.end(),  [](GuiComponent* a, GuiComponent* b) {
				return b->getZIndex() > a->getZIndex();
			});

			this->add(e);
		}
	}
	if (mEntries.size() == 0)
	{
		// Something is wrong, there is not a single system to show, check if UI mode is not full
		if (!UIModeController::getInstance()->isUIModeFull())
		{
			Settings::getInstance()->setString("UIMode", "Full");
			mWindow->pushGui(new GuiMsgBox(mWindow, "The selected UI mode has nothing to show,\n returning to UI mode: FULL", "OK", nullptr));
		}
	}
}