From 515d781390dbd2035d49ab6d65b1ed9aa718e95c Mon Sep 17 00:00:00 2001 From: Solargale Date: Sun, 12 Apr 2020 13:03:32 -0600 Subject: [PATCH] Switched to a scene2d stage. Removed all mentions of SpriteBatch --- assets/tree.png | Bin 0 -> 2440 bytes build.gradle | 1 - core/build.gradle | 29 +------------ .../Collector/Dimension/WorldRenderer.java | 21 +++++----- core/src/main/java/Collector/Main.java | 38 ++++++++++++------ .../src/main/java/Collector/Restrictions.java | 8 ++-- core/src/main/java/Collector/UI/GUI.java | 1 - 7 files changed, 41 insertions(+), 57 deletions(-) create mode 100644 assets/tree.png diff --git a/assets/tree.png b/assets/tree.png new file mode 100644 index 0000000000000000000000000000000000000000..0ac38edd01ba9b0bfb836949ae13856f0f2b7379 GIT binary patch literal 2440 zcmV;333v91P)EX>4Tx04R}tkv&MmKpe$i)0T=<94si}kfAzR5S8MnRVYG*P%E_RU~=gfG-*gu zTpR`0f`cE6RR6NzV;VcNtS#PLnr z;Ji;9VI^55J|`YG>4LzBx-kgE(v zjs;YqL3aJ%fAG6ot1va$N(v`{;EUsYi~^xupjmgE?_eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00&@6L_t(|+U=U(j~iDN$3J)Gdd5F?on2?MiStY8Mhyr> z5y~PY3WB^;s1iJoNK_~hQbB#-g*@zE&_5s#@PdR?AyA?!Qh^5^qP`Ubii8@}LJ@+t zn<$&E(~b9+y))yPxigoC8GFa;Y`U~w+X+6BWqan%ne#pO+;hJ7%)nU2GM2H7Wh`SE z%Wy=epP`8uGWem}VhrJ)v%ook^1>YDg}L_ebLqKfJ^~H`^$c(T8rK#9W`NaaIReC| z09+mPq!>e3_j;6)qA`T6mBM0rkg$-{FM%Gv$B`;LGWE^$EkP*|AS@ zR=>pDZ}4e$|32`>UI5uIOyl2PzX<%xzrFs?^1>Yc?e(WG0@~oq3v(85^M9GmbnMOY z!km@rc)A>rHMntY(a-*m{dm{wvgc9<`j68&@(xJDz8jpYXk1$)s<+Upx6)~)iRvvH z*A|IgwI`h;>43~koduS6&YUQisCujCI#q8W3g+WF&Jk8s&bey8BuV*s4j9}qjKuIq#&$$2-`qb>`yC!Vw57F%NhMHSs5qv)n;SR;2%eV_Hr(x zQ;(tp^j^S+HIHD)+4X#|rYy|K9M-YoUg@?NS_G6{Jwg7`EdGa$o)8WmIHekOFa*(->f-yc ztBAG~!br!Mf~XOq>OR2(r)Qb?A2!Henx*vWiP4Dw>!k`JpK|$FgJ~dg0v&4n->r0A zlz;g!ItKe>2>}1TgD{|V^ONr0z{S~)4x$*0lsdN}f?I2S!LhGpuq)Kg=FwXUeNQ1T z8~_z#oi3+LumRFQy}gMzB@q*n`2E&E?BAC%Sh!L}t@;orv!#Ow-Bjoe1v!Df8)Ch5 zkhqbsS)*(b+*(CEmxE9viiR%^TDGvvB&rOM2krJ=p|3W}{V0RlkFkyyiJA&IZKWCB zC3@5%UQT8+C=Af!k9G1u{`FXyltIG5};ZSFefF^Mwq=v-<;5QDr|jshWwfG zu5~_KcJc45p%=q$L*{bW^Ode`GRcFIPMf^-p9aAn>V37{=o4@akb7|&Ib-kcZ7DD& zB=&p-^Za&+GtU>X=PMW!G7BDdJR^`ZHn|t4`^p9S;YB_9(^ItG-#|=A^3U%+`)zQs zs|fBpL@UX1FlX~vCrce}kR1!SK*w9H4;tt#MgHs*&7a@<+!#c^Lf^hPi&@TL9oi~YSr#EwGF*a*uc zb`-(i*NOifjBFX)bxjtoR0)?{)E_rH`}?f4`v>w{2gsc$cG_e6ZFj#ERe=>C0(9YW z6&-2Jl0?Uv*o%lBwJ>LF;zrnEarUL;eF*=zD;+jzlygLNAM;QiqhKb~*-;2n;N9r( z0F&fpirOgffO+6fHUe@-3ba0GAaX{M`3olUOc|pn(Mn@hY`hz_4sd|NMZ!VF?!SCN0d+-?cCc|dK)y$2ovr$~DC!EU{P9oc+)Tl~;NN4i6j)Ovt0MOQ0) zHyw{@j99=?;NGAeV5Q(SK;ef+F-x*%o7?UV$Bya(7_PMN|CTO=^A&Ql`7Q?;CE4i) z@7y*=j>7xRau$R2S-Zra=jm{iG2nuFuSxLECh|)q;;oR_Rh^Fz0{7R;__x=wUzlFh zvEC4dn8r3R586rZ&lGos5bKR=i__{KTUcK%_vq0>Tm^tPr)=JQ*BN-39;DOtDB3pYsM8~A*I33fma+VQ%6|c4#7r(CyK!#-0000> iterator = Chunks.loadedChunks.keySet().iterator(); iterator.hasNext(); ) { Triple chunkpair = iterator.next(); if (chunkpair.getThird() == layer) { - batch.draw( + stage.getBatch().draw( BlockMaterials.textures.get(Chunks.loadedChunks.get(chunkpair).getName()), chunkpair.getFirst() << TILE_SHIFT, chunkpair.getSecond() << TILE_SHIFT @@ -35,21 +36,21 @@ public class WorldRenderer implements Restrictions { } } - private void mouseCrosshair(SpriteBatch batch) { + private void mouseCrosshair(Stage stage) { Vector3 mousePos = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0); Main.cam.unproject(mousePos); int x = mouse.getSelectedX(mousePos); int y = mouse.getSelectedY(mousePos); - batch.draw(mouse.getCrosshair(), x, y); + stage.getBatch().draw(mouse.getCrosshair(), x, y); } - public void render(SpriteBatch batch, float timeSinceLastUpdate) { + public void render(Stage stage, float timeSinceLastUpdate) { //Higher means draws in a lower layer - drawWorld(batch,0); - batch.draw(Player.getAnimation().getKeyFrame(timeSinceLastUpdate, true), Player.x, Player.y,TILE_SIZE,TILE_SIZE); - drawWorld(batch,1); - mouseCrosshair(batch); + drawWorld(stage,0); + stage.getBatch().draw(Player.getAnimation().getKeyFrame(timeSinceLastUpdate, true), Player.x, Player.y,TILE_SIZE,TILE_SIZE); + drawWorld(stage,1); + mouseCrosshair(stage); inputController.handleInput(); - batch.setProjectionMatrix(Main.cam.combined); + stage.getBatch().setProjectionMatrix(stage.getCamera().combined); } } diff --git a/core/src/main/java/Collector/Main.java b/core/src/main/java/Collector/Main.java index 468643b..836ff42 100644 --- a/core/src/main/java/Collector/Main.java +++ b/core/src/main/java/Collector/Main.java @@ -6,23 +6,23 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL30; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.utils.viewport.FitViewport; import Collector.Character.InputController; import Collector.Character.Mouse; import Collector.Character.Player; import Collector.UI.GUI; -import imgui.ImGui; - import static Collector.Restrictions.*; public class Main extends ApplicationAdapter { + private Stage stage; private SpriteBatch batch; private WorldRenderer worldRenderer; private GUI gui; private FitViewport fitViewport; - public static float delta = 0; - float timeSinceLastUpdate = 0f; //accumulator + public static float chunkLoadingTime = 0; + float playerAnimationTime = 0f; //accumulator public static OrthographicCamera cam; private InputController inputController; private Mouse mouse; @@ -40,6 +40,7 @@ public class Main extends ApplicationAdapter { inputController = new InputController(player,mouse); worldRenderer = new WorldRenderer(inputController,mouse); batch = new SpriteBatch(); + stage = new Stage(fitViewport,batch); BlockMaterials.create(); Chunks.create(); @@ -48,30 +49,41 @@ public class Main extends ApplicationAdapter { cam.zoom = 25f; } + @Override + public void resize(int width, int height) { + stage.getViewport().update(width, height, true); + } + @Override public void render () { + float deltaTime = Gdx.graphics.getDeltaTime(); Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT); - timeSinceLastUpdate += Gdx.graphics.getDeltaTime(); //Accumulate delta time - batch.begin(); - worldRenderer.render(batch,timeSinceLastUpdate); + playerAnimationTime += deltaTime; + chunkLoadingTime += deltaTime; - delta += Gdx.graphics.getDeltaTime(); - if (delta > RENDER_TIME) { - delta -= RENDER_TIME; + stage.act(deltaTime); + stage.getBatch().begin(); + worldRenderer.render(stage,playerAnimationTime); + + if (chunkLoadingTime > RENDER_TIME) { + chunkLoadingTime -= RENDER_TIME; World.loadChunks(); World.unloadChunks(); } - cam.update(); + + stage.getCamera().update(); gui.render(); - batch.end(); + stage.getBatch().end(); + + stage.draw(); } @Override public void dispose () { gui.dispose(); - batch.dispose(); player.textureAtlas.dispose(); + stage.dispose(); } } diff --git a/core/src/main/java/Collector/Restrictions.java b/core/src/main/java/Collector/Restrictions.java index 48e206a..5d4a187 100644 --- a/core/src/main/java/Collector/Restrictions.java +++ b/core/src/main/java/Collector/Restrictions.java @@ -7,16 +7,16 @@ public interface Restrictions { float VIEWPORT_WIDTH = 16/2f; int MOVEMENT_SPEED = 16; + int FREE_SPEED = 2; int KEY_DELAY = 0; int TILE_SIZE = 16; int CHUNK_SIZE = 8; int SUPER_CHUNK_SIZE = 1; - int TILE_SHIFT = 4; - int CHUNK_SHIFT = 3; - //int CHUNK_HEIGHT_SHIFT = 2; - //int SUPER_CHUNK_SHIFT = 0; + int TILE_SHIFT = (int)(Math.log(TILE_SIZE)/Math.log(2)); + int CHUNK_SHIFT = (int)(Math.log(CHUNK_SIZE)/Math.log(2)); + //int SUPER_CHUNK_SHIFT = (int)(Math.log(SUPER_CHUNK_SIZE)/Math.log(2)); int RENDER_DISTANCE = 3; float RENDER_TIME = 1/60f; diff --git a/core/src/main/java/Collector/UI/GUI.java b/core/src/main/java/Collector/UI/GUI.java index 1c74b32..e7a09e9 100644 --- a/core/src/main/java/Collector/UI/GUI.java +++ b/core/src/main/java/Collector/UI/GUI.java @@ -24,7 +24,6 @@ public class GUI implements Restrictions { Gdx.input.setInputProcessor(stage); stage.addActor(label); - } public void render() {