Skip to content

Commit a434727

Browse files
committed
[WorldSelectionState] Background and title added (see #128)
1 parent 4dc89eb commit a434727

File tree

6 files changed

+49
-12
lines changed

6 files changed

+49
-12
lines changed

Diff for: resources/config/textures.xml

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
<textures>
22
<texture name="block_destroy" path="resources/textures/block_destroy.png" />
33
<texture name="font" path="resources/textures/font.png" />
4-
<texture name="toasts" path="resources/textures/toasts.png" />
4+
<texture name="menu_background" path="resources/textures/menu_background.png" repeat="true" />
5+
<texture name="player" path="resources/textures/player.png" />
56
<texture name="title_screen" path="resources/textures/title_screen.png" />
7+
<texture name="toasts" path="resources/textures/toasts.png" />
68
<texture name="widgets" path="resources/textures/widgets.png" />
7-
<texture name="player" path="resources/textures/player.png" />
9+
<texture name="world_icon" path="resources/textures/world_icon.png" />
810
</textures>

Diff for: resources/textures/menu_background.png

949 Bytes
Loading

Diff for: resources/textures/world_icon.png

27.8 KB
Loading

Diff for: source/client/states/WorldSelectionState.cpp

+32-4
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,19 @@ namespace fs = ghc::filesystem;
4040
WorldSelectionState::WorldSelectionState(TitleScreenState *titleScreen)
4141
: InterfaceState(titleScreen), m_titleScreen(titleScreen)
4242
{
43+
m_title.setScale(Config::guiScale, Config::guiScale);
44+
m_title.setString("Select or create a world");
45+
m_title.updateVertexBuffer();
46+
47+
m_background.setScale(Config::guiScale * 2, Config::guiScale * 2);
48+
m_background.setPosRect(0, 0, Config::screenWidth / m_background.getScale().x, Config::screenHeight / m_background.getScale().y);
49+
m_background.setClipRect(0, 0, Config::screenWidth / m_background.getScale().x, Config::screenHeight / m_background.getScale().y);
50+
51+
m_filter1.setSize(Config::screenWidth, Config::screenHeight);
52+
m_filter1.setFillColor(gk::Color(0, 0, 0, 128));
53+
54+
m_filter2.setFillColor(gk::Color(0, 0, 0, 192));
55+
4356
m_menuWidget.setScale(Config::guiScale, Config::guiScale);
4457
m_menuWidget.addButton("New world", [this](TextButton &) {
4558
m_stateStack->push<WorldCreationState>(m_titleScreen);
@@ -74,7 +87,19 @@ void WorldSelectionState::update() {
7487
}
7588

7689
void WorldSelectionState::updateWidgetPosition() {
77-
m_cancelButton.setPosition(Config::screenWidth / 2.0f - m_cancelButton.getGlobalBounds().sizeX / 2.0f, Config::screenHeight * 0.85);
90+
const int borderSize = 25 * Config::guiScale;
91+
m_filter2.setSize(Config::screenWidth, Config::screenHeight - borderSize * 2);
92+
m_filter2.setPosition(0, borderSize);
93+
94+
m_cancelButton.setPosition(
95+
Config::screenWidth / 2.0f - m_cancelButton.getGlobalBounds().sizeX / 2.0f,
96+
Config::screenHeight - borderSize / 2 - m_cancelButton.getGlobalBounds().sizeY / 2.0f
97+
);
98+
99+
m_title.setPosition(
100+
Config::screenWidth / 2.0f - m_title.getSize().x * Config::guiScale / 2.0f,
101+
borderSize / 2 - m_title.getSize().y * Config::guiScale / 2.0f
102+
);
78103
}
79104

80105
void WorldSelectionState::loadSaveList() {
@@ -105,12 +130,15 @@ void WorldSelectionState::loadSaveList() {
105130
}
106131

107132
void WorldSelectionState::draw(gk::RenderTarget &target, gk::RenderStates states) const {
108-
if (m_parent)
109-
target.draw(*m_parent, states);
110-
111133
if (&m_stateStack->top() == this) {
112134
prepareDraw(target, states);
113135

136+
target.draw(m_background, states);
137+
target.draw(m_filter1, states);
138+
target.draw(m_filter2, states);
139+
140+
target.draw(m_title, states);
141+
114142
target.draw(m_menuWidget, states);
115143
target.draw(m_cancelButton, states);
116144
}

Diff for: source/client/states/WorldSelectionState.hpp

+7-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,13 @@ class WorldSelectionState : public InterfaceState {
4848

4949
TitleScreenState *m_titleScreen = nullptr;
5050

51-
MenuWidget m_menuWidget{1, 8};
51+
gk::Image m_background{"texture-menu_background"};
52+
gk::RectangleShape m_filter1;
53+
gk::RectangleShape m_filter2;
54+
55+
Text m_title;
56+
57+
MenuWidget m_menuWidget{1, 11};
5258

5359
TextButton m_cancelButton;
5460
};

Diff for: source/common/resource/TextureLoader.cpp

+6-5
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,12 @@ void TextureLoader::load(const char *xmlFilename, gk::ResourceHandler &handler)
4343
auto &texture = handler.add<sf::Texture>("texture-" + name);
4444
texture.loadFromFile(path);
4545

46-
// sf::Texture::bind(&texture);
47-
// glGenerateMipmap(GL_TEXTURE_2D);
48-
// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR);
49-
// glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 4);
50-
// sf::Texture::bind(nullptr);
46+
if (textureElement->Attribute("repeat", "true")) {
47+
sf::Texture::bind(&texture);
48+
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
49+
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
50+
sf::Texture::bind(nullptr);
51+
}
5152

5253
textureElement = textureElement->NextSiblingElement("texture");
5354
}

0 commit comments

Comments
 (0)