diff --git a/assets/opensb/interface/title/starbound.png b/assets/opensb/interface/title/starbound.png new file mode 100644 index 0000000..0473f1f Binary files /dev/null and b/assets/opensb/interface/title/starbound.png differ diff --git a/assets/opensb/interface/windowconfig/title.config.patch b/assets/opensb/interface/windowconfig/title.config.patch new file mode 100644 index 0000000..a120e11 --- /dev/null +++ b/assets/opensb/interface/windowconfig/title.config.patch @@ -0,0 +1,4 @@ +{ + "skyBackdropDarken" : [0, 0, 0, 64], + "backdropImages" : [ [ [0, 0], "/interface/title/starbound.png", 0.5, [0.5, 0.5] ] ] +} \ No newline at end of file diff --git a/source/frontend/StarTitleScreen.cpp b/source/frontend/StarTitleScreen.cpp index 025f079..e7fa573 100644 --- a/source/frontend/StarTitleScreen.cpp +++ b/source/frontend/StarTitleScreen.cpp @@ -79,17 +79,16 @@ void TitleScreen::render() { m_renderer->flush(); - for (auto backdropImage : assets->json("/interface/windowconfig/title.config:backdropImages").toArray()) { + for (auto& backdropImage : assets->json("/interface/windowconfig/title.config:backdropImages").toArray()) { Vec2F offset = jsonToVec2F(backdropImage.get(0)) * interfaceScale(); String image = backdropImage.getString(1); float scale = backdropImage.getFloat(2); + Vec2F origin = jsonToVec2F(backdropImage.getArray(3, { 0.5f, 1.0f })); Vec2F imageSize = Vec2F(m_guiContext->textureSize(image)) * interfaceScale() * scale; - Vec2F lowerLeft = Vec2F(windowWidth() / 2.0f, windowHeight()); - lowerLeft[0] -= imageSize[0] / 2; - lowerLeft[1] -= imageSize[1]; - lowerLeft += offset; - RectF screenCoords(lowerLeft, lowerLeft + imageSize); + Vec2F position = Vec2F(m_guiContext->windowSize()).piecewiseMultiply(origin); + position += offset - imageSize.piecewiseMultiply(origin); + RectF screenCoords(position, position + imageSize); m_guiContext->drawQuad(image, screenCoords); }