From 51bcca14992f0915dc0f0ae1b3e1286c130b84e4 Mon Sep 17 00:00:00 2001 From: opfromthestart Date: Mon, 13 Sep 2021 13:05:59 -0400 Subject: [PATCH] Betterish title screen -Black background used -New Background class for displaying a single texture to the back of the screen(probably not the best way) -Title now uses an image -Made TextureComponent, I think this probably exists elsewhere but I couldnt find it -Cube faces now change color based on where they are facing, looks a lot like the source material except for rearranging --- .../client/graphics/gui/Background.java | 28 ++++++++++ .../client/graphics/gui/TextureComponent.java | 23 ++++++++ .../progressia/test/CubeComponent.java | 51 +++++++++--------- .../windcorp/progressia/test/LayerTitle.java | 13 ++--- .../assets/textures/title/background.png | Bin 0 -> 133 bytes .../assets/textures/title/progressia.png | Bin 0 -> 2248 bytes 6 files changed, 83 insertions(+), 32 deletions(-) create mode 100644 src/main/java/ru/windcorp/progressia/client/graphics/gui/Background.java create mode 100644 src/main/java/ru/windcorp/progressia/client/graphics/gui/TextureComponent.java create mode 100644 src/main/resources/assets/textures/title/background.png create mode 100644 src/main/resources/assets/textures/title/progressia.png diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/gui/Background.java b/src/main/java/ru/windcorp/progressia/client/graphics/gui/Background.java new file mode 100644 index 0000000..a3312dd --- /dev/null +++ b/src/main/java/ru/windcorp/progressia/client/graphics/gui/Background.java @@ -0,0 +1,28 @@ +package ru.windcorp.progressia.client.graphics.gui; + +import glm.mat._4.Mat4; +import glm.vec._3.Vec3; +import ru.windcorp.progressia.client.graphics.flat.RenderTarget; +import ru.windcorp.progressia.client.graphics.texture.Texture; + +public class Background extends GUILayer { + + protected Texture backgroundTexture; + + public Background(String name, Layout layout, Texture inTexture) { + super(name, layout); + + backgroundTexture = inTexture; + } + + @Override + protected void assemble(RenderTarget target) { + getRoot().setBounds(0, 0, getWidth(), getHeight()); + getRoot().invalidate(); + target.pushTransform(new Mat4(1).translate(new Vec3(0,0,500))); + target.drawTexture(0, 0, getWidth(), getHeight(), backgroundTexture); + target.popTransform(); + getRoot().assemble(target); + } + +} diff --git a/src/main/java/ru/windcorp/progressia/client/graphics/gui/TextureComponent.java b/src/main/java/ru/windcorp/progressia/client/graphics/gui/TextureComponent.java new file mode 100644 index 0000000..98c238b --- /dev/null +++ b/src/main/java/ru/windcorp/progressia/client/graphics/gui/TextureComponent.java @@ -0,0 +1,23 @@ +package ru.windcorp.progressia.client.graphics.gui; + +import ru.windcorp.progressia.client.graphics.flat.RenderTarget; +import ru.windcorp.progressia.client.graphics.texture.Texture; + +public class TextureComponent extends Component { + + private Texture texture; + + public TextureComponent(String name, Texture texture2) { + super(name); + + texture = texture2; + setPreferredSize(texture.getSprite().getWidth(),texture.getSprite().getHeight()); + } + + @Override + protected void assembleSelf(RenderTarget target) + { + target.drawTexture(getX(), getY(), getWidth(), getHeight(), texture); + } + +} diff --git a/src/main/java/ru/windcorp/progressia/test/CubeComponent.java b/src/main/java/ru/windcorp/progressia/test/CubeComponent.java index 8cc9331..cce31a2 100644 --- a/src/main/java/ru/windcorp/progressia/test/CubeComponent.java +++ b/src/main/java/ru/windcorp/progressia/test/CubeComponent.java @@ -13,17 +13,19 @@ import ru.windcorp.progressia.client.graphics.gui.Component; public class CubeComponent extends Component { private Mat4 transforms[]; + private Vec4[] normals; private final double pi2 = Math.PI/2; private final double r3 = Math.sqrt(3); private ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); - private int size = 100; + private int size = 250; public CubeComponent(String name) { super(name); transforms = new Mat4[6]; + normals = new Vec4[6]; setPreferredSize((int) Math.ceil(r3*size),(int) Math.ceil(r3*size)); executor.scheduleAtFixedRate(() -> requestReassembly(), 1, 60, TimeUnit.MILLISECONDS); } @@ -45,17 +47,24 @@ public class CubeComponent extends Component { long time = System.currentTimeMillis(); + normals[0] = new Vec4(0,0,-1,0); + normals[1] = new Vec4(0,1,0,0); + normals[2] = new Vec4(1,0,0,0); + normals[3] = new Vec4(0,0,1,0); + normals[4] = new Vec4(0,-1,0,0); + normals[5] = new Vec4(-1,0,0,0); + for (int i=0;i<6;i++) { - transforms[i].rotate((float) (time%(1000*6.28) )/ 1000, new Vec3(0,1,0)).rotate((float) (time%(6777*6.28) )/ 6777, new Vec3(1,0,0)); + normals[i] = transforms[i].rotate((float) (time%(6000*6.28) )/ 6000, new Vec3(0,1,0)).rotate((float) 24, new Vec3(1,.5,0)).mul_(normals[i]); } - transforms[0] = transforms[0].translate(new Vec3(-50,-50,60)); - transforms[1] = transforms[1].translate(new Vec3(-50,-60,-50)).rotate((float) pi2, new Vec3(1,0,0)); - transforms[2] = transforms[2].translate(new Vec3(-40,-50,50)).rotate((float) pi2, new Vec3(0,1,0)); - transforms[3] = transforms[3].translate(new Vec3(-50,-50,-40)); - transforms[4] = transforms[4].translate(new Vec3(-50,40,-50)).rotate((float) pi2, new Vec3(1,0,0)); - transforms[5] = transforms[5].translate(new Vec3(60,-50,50)).rotate((float) pi2, new Vec3(0,1,0)); + transforms[0].translate(new Vec3(-size/2,-size/2,size/2+13)); + transforms[1].translate(new Vec3(-size/2,-size/2-13,-size/2)).rotate((float) pi2, new Vec3(1,0,0)); + transforms[2].translate(new Vec3(-size/2+13,-size/2,size/2)).rotate((float) pi2, new Vec3(0,1,0)); + transforms[3].translate(new Vec3(-size/2,-size/2,-size/2+13)); + transforms[4].translate(new Vec3(-size/2,size/2-13,-size/2)).rotate((float) pi2, new Vec3(1,0,0)); + transforms[5].translate(new Vec3(size/2+13,-size/2,size/2)).rotate((float) pi2, new Vec3(0,1,0)); } @Override @@ -63,27 +72,17 @@ public class CubeComponent extends Component { { computeTransforms(); - int b=0; + target.pushTransform(new Mat4(1).translate(new Vec3(getX()+size*r3/2,getY()+size*r3/2,0))); - target.pushTransform(new Mat4(1).translate(new Vec3(size,size,0))); - - for (Mat4 tr : transforms) + for (int b=0; b<6;b++) { - target.pushTransform(tr); - switch (b%3) - { - case 0: - target.fill(0, 0, size, size, new Vec4(255,0,0,255)); - break; - case 1: - target.fill(0, 0, size, size, new Vec4(0,255,0,255)); - break; - case 2: - target.fill(0, 0, size, size, new Vec4(0,0,255,255)); - break; - } + target.pushTransform(transforms[b]); + + float dot = normals[b].dot(new Vec4(-1,0,0,0)); + Vec4 color = new Vec4(.4+.3*dot, .4+.3*dot, .6+.4*dot,1.0); + + target.fill(0,0, size, size, color); - b++; target.popTransform(); } diff --git a/src/main/java/ru/windcorp/progressia/test/LayerTitle.java b/src/main/java/ru/windcorp/progressia/test/LayerTitle.java index fd40e3a..850fb61 100644 --- a/src/main/java/ru/windcorp/progressia/test/LayerTitle.java +++ b/src/main/java/ru/windcorp/progressia/test/LayerTitle.java @@ -4,13 +4,15 @@ import ru.windcorp.progressia.client.ClientState; import ru.windcorp.progressia.client.graphics.Colors; import ru.windcorp.progressia.client.graphics.GUI; import ru.windcorp.progressia.client.graphics.font.Font; +import ru.windcorp.progressia.client.graphics.gui.Background; import ru.windcorp.progressia.client.graphics.gui.BasicButton; import ru.windcorp.progressia.client.graphics.gui.Button; -import ru.windcorp.progressia.client.graphics.gui.GUILayer; import ru.windcorp.progressia.client.graphics.gui.Group; import ru.windcorp.progressia.client.graphics.gui.Label; +import ru.windcorp.progressia.client.graphics.gui.TextureComponent; import ru.windcorp.progressia.client.graphics.gui.layout.LayoutAlign; import ru.windcorp.progressia.client.graphics.gui.layout.LayoutVertical; +import ru.windcorp.progressia.client.graphics.texture.SimpleTextures; import ru.windcorp.progressia.client.localization.MutableString; import ru.windcorp.progressia.client.localization.MutableStringLocalized; import ru.windcorp.progressia.common.util.crash.CrashReports; @@ -24,17 +26,16 @@ import java.nio.file.Paths; import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFileAttributes; -public class LayerTitle extends GUILayer { +public class LayerTitle extends Background { private final BasicButton resetButton; public LayerTitle(String name) { - super(name, new LayoutAlign(0.5f, 0.7f, 15)); + super(name, new LayoutAlign(0.5f, 0.7f, 15), SimpleTextures.get("title/background")); Group content = new Group("Layer" + name + ".Group", new LayoutVertical(15)); - MutableString title = new MutableStringLocalized("Layer" + name + ".Title"); - Font titleFont = new Font().deriveBold().withColor(Colors.BLACK).withAlign(0.5f); - content.addChild(new Label(name + ".Title", titleFont, title)); + Font titleFont = new Font().deriveBold().withColor(Colors.BLUE).withAlign(0.5f); + content.addChild(new TextureComponent(name + ".Title", SimpleTextures.get("title/progressia"))); Font buttonFont = titleFont.deriveNotBold(); MutableString playText = new MutableStringLocalized("Layer" + name + ".Play"); diff --git a/src/main/resources/assets/textures/title/background.png b/src/main/resources/assets/textures/title/background.png new file mode 100644 index 0000000000000000000000000000000000000000..21b7d763b03983a8ee441df6eb2344a29f4a3c74 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={W7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@f>NF?jv*f2Zx1r^0(plPeD{Bw#;3r*(6E}3 XM}dLSOo?kPP@KWj)z4*}Q$iB}sS+Rq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/textures/title/progressia.png b/src/main/resources/assets/textures/title/progressia.png new file mode 100644 index 0000000000000000000000000000000000000000..7d8ff7c986e924b94554e1efe928561b40a41c20 GIT binary patch literal 2248 zcmW-ic~}$Y7RCc%lf}?5?37p&Gy01bkq z3Zg*}H%iLVLQzpOh*yONu1Z8KZKxKlwhvy{Td4ON|M(@DyyyGQH|M-_Mv;^lYh&qR zNg|PK;`lKl5{Zm~-#iO4_`ISzp$1<@rJ~qqQs=1Kb8um@m6O0Bk+esw7PgoIO^_6y z%yko$!8_0Ul$-$pUh*1R_Az5~OP``szNH$Mggg@)DioPw>EUM|xq-rpvUF$IM@c-T z`;Cmru1JYX{5H=`U)u(7DE^Vl(hr&1I{Fl~tZIF>;^gCi!`J-2(vmH#Lt1|IE;wms z=ii2Zda#l7!F(R9Kr0sP}-tNHJXl!EU#6yGClTf%Q=-8N7))5<@5O&=dv|79z zRg#R1X<0{I5(^j=mz{;V^qhvqNV^$O#3e<1Nhyi6^d^DPt-=mDiDYgb7sE;3x%t)f z?>mw+ZEwwIF!kJ+6$o_Q!3yCZF-+SE#|jSK`RS9C5tXsybv@&KE$zRRGr!?4gDd_z zwMh5fI`*ic!QHOxUT*(3_V49S-i8kUaj4m@jCNdAa6|v_o}M>g`u@(#6t~%O*He!l zz5>_eMtSaJvz|9q(|`V_uIfJXRlEUL*~I4Rxc3=%|M+?3M!WAC8hYO@8K8_M{^VJj z^|!}RSPI2Ze||BQx7$J{HSek^vz290qN++SdEgAGxwhtw)9`VRnW3O5yPf;me79Y@ z*K&i*Unh$X|C*g+CrcU2GeF(FNl>OkcT&BiI#KIaY>BN``~$U7TMNu`P8(s-^apZzbqFNOx#fcYtwGfG&`G$XxEjcBZ<2H?wW)~TUy z9gZRLG;5*OcRU85(umL`EJFDRe$C{y=^L`o=o{u@5r4KH_c&e#NgNJ{BBmR%PwN}! zcnFKlEB`!kK*2&3TE=#!Pn%xrRO_`t zg8|6gR^2bqV~1{0p0t{$Vj*i)tl~Xbiej7*!fJ2R_c&F1rE99Z(hV=6d(@laJjq?5 zHk0kZ-5(Ri-LLCsOnDEV(|4)W=uH&Hs0tJiEN)t3__Pmwf@WdmN)?RJ1q_TnDlE2C zlw+|=p$ZS#L=!Zb4m!P;Ge4)S+k7Kr0)i%wT&d2dFUMzpOrG%9^DZPs?B8Mj{KLi2 z;fvApEAwbq0_s8o@n-eO3!+N$Sai68os)>2^IBX#ePjAQeXsqDF6hKjgYJp@1TBm0kN4>~+UW)8a!UYc zgGybG#)2fH`!(Ze1{SFZW4t4_h=8Y+6v_u}2IeB<1vr<*J3CUZuJ#fW zvPv@noN%vjmy~JG?F7eb0v5%0LXW6oL@soL?(~b2CDyU3K(-zCDj^4QYw&Eylxl}S zd?1I3lT)pEh!^qj5b`Q+Kb{J4ssBlW;)vB^NP01Y-A*OqvyXnGoXxkxFho_xTY zciL<=wcKsi`|O8bWAQJCLqrD+SFhlSd#YrEeoz!1GO;xjzZ6|e`LnUdN>+E+@Zw>P z+wA(*4<8-%v42x3sfm2#-Lnhjy~u*4Od5?fw0{&B7Sm_lE?VMgGru@}XUUZWVKZP1 zSmGCS7|uaNE?AH<8t@Nvkm?WGcgMk;8@CI_n80$(0dc*6Db5ox)7&6$Zw;)4+hOfo z0>aetwKT1~IH|r~p&8ON0fM>xIx60&t0Fe_!zz`QfU96OSV7LzAEaRYQ_VW@5P}JW+q|yiA0p>%XI9V|GxdsjBEilM#fmv`;CxjkQw-ALnjy~3?(8q=asD{cJUpB8H z)^ElVlqrC2agSh-KTee`bJULoK*o2?iXH@xjv`dO;}W9_FOBHwI^