From 8e80af26d755d34f9496c791fd9f8f73a7ce6d05 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 6 Dec 2017 09:26:39 -0500 Subject: [PATCH] More bugfixes --- android/AndroidManifest.xml | 4 +- build.gradle | 2 +- .../anuke/mindustry/input/AndroidInput.java | 95 +++++++++--------- .../mindustry/ui/fragments/HudFragment.java | 8 +- .../blocks/types/defense/ShieldBlock.java | 7 +- desktop/mindustry-saves/7.mins | Bin 3906 -> 3824 bytes 6 files changed, 61 insertions(+), 55 deletions(-) diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml index 97ccaace35..ae5c163889 100644 --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="18" + android:versionName="3.02b" > diff --git a/build.gradle b/build.gradle index 6e977b8ab4..5371ac6f3b 100644 --- a/build.gradle +++ b/build.gradle @@ -79,7 +79,7 @@ project(":core") { apply plugin: "java" dependencies { - compile 'com.github.Anuken:ucore:92dc170f0e' + compile 'com.github.Anuken:ucore:a64bf7e' compile "com.badlogicgames.gdx:gdx:$gdxVersion" compile "com.badlogicgames.gdx:gdx-ai:1.8.1" } diff --git a/core/src/io/anuke/mindustry/input/AndroidInput.java b/core/src/io/anuke/mindustry/input/AndroidInput.java index d11401a025..0bca99eca2 100644 --- a/core/src/io/anuke/mindustry/input/AndroidInput.java +++ b/core/src/io/anuke/mindustry/input/AndroidInput.java @@ -3,17 +3,17 @@ package io.anuke.mindustry.input; import static io.anuke.mindustry.Vars.*; import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.Input.Buttons; import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.InputAdapter; import com.badlogic.gdx.math.Vector2; import io.anuke.mindustry.Vars; +import io.anuke.mindustry.core.GameState; +import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.resource.ItemStack; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.types.Configurable; import io.anuke.ucore.core.Graphics; -import io.anuke.ucore.core.Inputs; import io.anuke.ucore.core.Timers; import io.anuke.ucore.scene.ui.layout.Unit; import io.anuke.ucore.util.Mathf; @@ -25,101 +25,104 @@ public class AndroidInput extends InputAdapter{ private static float lmousex, lmousey; private static float warmup; private static float warmupDelay = 20; - + @Override - public boolean keyDown (int keycode) { + public boolean keyDown(int keycode){ if(keycode == Keys.E){ place(); } return false; } - + @Override - public boolean touchUp (int screenX, int screenY, int pointer, int button) { + public boolean touchUp(int screenX, int screenY, int pointer, int button){ brokeBlock = false; return false; } - + @Override - public boolean touchDown (int screenX, int screenY, int pointer, int button) { + public boolean touchDown(int screenX, int screenY, int pointer, int button){ ui.hideTooltip(); if(pointer == 0){ lmousex = screenX; lmousey = screenY; } warmup = 0; + + if(!GameState.is(State.menu)){ + Tile cursor = Vars.world.tile(Mathf.scl2(Graphics.mouseWorld().x, tilesize), Mathf.scl2(Graphics.mouseWorld().y, tilesize)); + if(cursor != null && !Vars.ui.hasMouse()){ + Tile linked = cursor.isLinked() ? cursor.getLinked() : cursor; + if(linked != null && linked.block() instanceof Configurable){ + Vars.ui.showConfig(linked); + }else if(!Vars.ui.hasConfigMouse()){ + Vars.ui.hideConfig(); + } + } + } return false; } - + public static Tile selected(){ Vector2 vec = Graphics.world(mousex, mousey); return Vars.world.tile(Mathf.scl2(vec.x, tilesize), Mathf.scl2(vec.y, tilesize)); } - + public static void breakBlock(){ Tile tile = selected(); player.breaktime += Timers.delta(); - + if(player.breaktime >= tile.block().breaktime){ brokeBlock = true; Vars.world.breakBlock(tile.x, tile.y); player.breaktime = 0f; } } - + public static void place(){ Vector2 vec = Graphics.world(mousex, mousey); - + int tilex = Mathf.scl2(vec.x, tilesize); int tiley = Mathf.scl2(vec.y, tilesize); - - if(player.recipe != null && - Vars.world.validPlace(tilex, tiley, player.recipe.result)){ - + + if(player.recipe != null && Vars.world.validPlace(tilex, tiley, player.recipe.result)){ + Vars.world.placeBlock(tilex, tiley, player.recipe.result, player.rotation); - + for(ItemStack stack : player.recipe.requirements){ Vars.control.removeItem(stack); } } } - + public static void doInput(){ - Tile cursor = selected(); - - //TODO test - if(Inputs.buttonUp(Buttons.LEFT) && cursor != null){ - Tile linked = cursor.isLinked() ? cursor.getLinked() : cursor; - if(linked != null && linked.block() instanceof Configurable){ - Vars.ui.showConfig(linked); - }else if(!Vars.ui.hasConfigMouse()){ - Vars.ui.hideConfig(); - } - } - - if(Gdx.input.isTouched(0) - && Mathf.near2d(lmousex, lmousey, Gdx.input.getX(0), Gdx.input.getY(0), Unit.dp.inPixels(50)) - && !ui.hasMouse() /*&& (player.recipe == null || mode == PlaceMode.touch)*/){ + + if(Gdx.input.isTouched(0) && Mathf.near2d(lmousex, lmousey, Gdx.input.getX(0), Gdx.input.getY(0), Unit.dp.inPixels(50)) + && !ui.hasMouse() /* + * && (player.recipe == null || mode == + * PlaceMode.touch) + */){ warmup += Timers.delta(); - + float lx = mousex, ly = mousey; - + mousex = Gdx.input.getX(0); mousey = Gdx.input.getY(0); - + Tile sel = selected(); - - if(sel == null) return; - + + if(sel == null) + return; + if(warmup > warmupDelay && Vars.world.validBreak(sel.x, sel.y)){ player.breaktime += Timers.delta(); - + if(player.breaktime > selected().block().breaktime){ breakBlock(); player.breaktime = 0; } } - + mousex = lx; mousey = ly; }else{ @@ -127,17 +130,17 @@ public class AndroidInput extends InputAdapter{ //lmousex = Gdx.input.getX(0); //lmousey = Gdx.input.getY(0); player.breaktime = 0; - + mousex = Mathf.clamp(mousex, 0, Gdx.graphics.getWidth()); mousey = Mathf.clamp(mousey, 0, Gdx.graphics.getHeight()); } } - + public static int touches(){ int sum = 0; - for(int i = 0; i < 10; i ++){ + for(int i = 0; i < 10; i++){ if(Gdx.input.isTouched(i)) - sum ++; + sum++; } return sum; } diff --git a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java index 9b93767d85..d80c08810c 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java @@ -175,10 +175,11 @@ public class HudFragment implements Fragment{ new label(()-> control.getEnemiesRemaining() > 0 ? control.getEnemiesRemaining() + " enemies" : (control.getTutorial().active() || Vars.control.getMode() == GameMode.sandbox) ? "waiting..." : "Wave in " + (int) (control.getWaveCountdown() / 60f)) - .minWidth(140).left(); + .minWidth(140).units(Unit.dp).left(); get().pad(Unit.dp.inPixels(12)); - }}.left().padLeft(-6).end(); + get().padLeft(6); + }}.left().end(); playButton(uheight); //get().padTop(Unit.dp.inPixels(1)); @@ -190,7 +191,8 @@ public class HudFragment implements Fragment{ private void playButton(float uheight){ new imagebutton("icon-play", Unit.dp.inPixels(30f), ()->{ Vars.control.runWave(); - }).height(uheight).fillX().padTop(-8f).padBottom(-12f).padRight(-18f).padLeft(-10f).width(40f).units(Unit.dp).update(l->{ + }).height(uheight).fillX().right().padTop(-8f).padBottom(-12f).padRight(-36) + .padLeft(-10f).width(40f).units(Unit.dp).update(l->{ boolean vis = Vars.control.getMode() == GameMode.sandbox && Vars.control.getEnemiesRemaining() <= 0; boolean paused = GameState.is(State.paused) || !vis; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java index 75033ab71e..b700e15750 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java @@ -17,13 +17,14 @@ import io.anuke.ucore.util.Strings; public class ShieldBlock extends PowerBlock{ public float shieldRadius = 40f; public float powerDrain = 0.005f; - public float powerPerDamage = 0.1f; + public float powerPerDamage = 0.2f; public float maxRadius = 40f; - public float radiusPowerScale = 7.5f; + public float radiusScale = 80f; public ShieldBlock(String name) { super(name); voltage = powerDrain; + powerCapacity = 30f; health = 100; } @@ -57,7 +58,7 @@ public class ShieldBlock extends PowerBlock{ } } - entity.shield.radius = Mathf.lerp(entity.shield.radius, Math.min(entity.power * radiusPowerScale, maxRadius), Timers.delta() * 0.05f); + entity.shield.radius = Mathf.lerp(entity.shield.radius, Math.min(entity.power / powerCapacity * radiusScale, maxRadius), Timers.delta() * 0.05f); } diff --git a/desktop/mindustry-saves/7.mins b/desktop/mindustry-saves/7.mins index e9bd698ec7002006a7e9d7b78bcaf4b4c943043c..d4afecb81ddbc83d43490d96e5b16f5c055a5f73 100644 GIT binary patch literal 3824 zcmZQzVBle3U`$ZIYW$voje&uI$z>V?gUizVROd_oofsGxQW)6T801V^M;$(VVHWv3oxJ)iFhAb|dTOL5T3|wUl42<3k4B0XaARxuSPz+}! z%YuX$q!<{g;H(09m{=j4m8S?3%U6c6YE)pXS~VD}K?BBW)P%80wP37R9T=-#7se{n zgRyGhtO5g=SgjF^b;<_S(T%C*Z8h_As%_jxg3rXBcar3ygIH&N}T1 z6I1nsu@1pms$MX$Q{FI^kq?a30!Nj!vVXRs>s~*mp3TIt`v+@IAIu5{D zm*A{|Aed|;oYf3x-G{RpgJJ4s!&!IWtOszGP6$k01Dw?gXT^oWWIN!jePJ*$y>J*S z1oK=tj6O&AYv0UM-L^$gvoF$$DQ`eLVV~MB1ScP!bDLAVx9VUAm&XUc5 ziP>ktSV!QjbJ;L4pBxx#37mBW&f1*^lRXY+9m0tPe#nb=D;?)>Sy` zA)K|k6eb&024k62z*q*=FqT{`j5QC=nh$54g|p_?!_*ytvo69}*Wj#UjWBicO)%CX zIO{lq)dH7ogRy3|!&uAUtV3{?atBOy1DtgR&f3rklU476v4Y?%jc%CO)*cv3sTaoD z1ZN$Gvpo7>vLSHR4miubA13PuX9d7nyWyA8|OKAq!3_XxRATvNJl+nc) z85rX4F)*k=#X)LdYE>a(Zp;h}3?MNz2p`2fb#yUC28NF;3=A3&ad6pf1abh#U`7cB z2HzPV7RaHy;VhY%Ffo;x5GRB9AS)S|7#P0aWMDYHnt?%WW;sZhk%2*dCODrmGB9Y& ztb~d=BFvZtF#}{P*bD{+230I#YO}yO2V@>Z)&|tf0hQ(&v%qu?Qm8HoFzR6 zCaW|DVgs^Yl+ndNQJBTRpaK<#y9VTMh?pBpzZ!&(8inX$j0_B~H#0D3K*Uj_kfDcx z!4&Si7&vPOoV5?m+7D+b%>{b{k($x?DrkJgd9VP`hO^w}!^F12Sy~HVV&)6MHh|kp z8VpQq3=G~2VRCoiEbT=wG1Eop>djC^m>3w$AtK-wkOqTM0|NsSHv@w`!i>dWGmzy4 z85qnkML8K5b}fe4d=<_zT>{o`4vQR+3Nxq}hz(1;=1?(MJ_N}vTmm9N3G*tPCBFSx5eGN=DXf2GTxDLjOgtNld z!^Au{!dQK9)`iV5vAC@;miIOoD|S1Kl>%qA?0|`x?uM}(_rO?Ldtt0KaF+T$m{<{< zm9ifumUaNf>N*Hxt$?$%55dGt;Vd&as|e280B2PmhUw5g0%P^USw2T$Vw%TbEH5~# zAI@3{XQds7saphRErYYx!dctkEYA}#9Vu{D51eIp5+>UZXHA8(mcUu7;H))p){Ijy zy{k^cSZ-%vtf;dvRxX@Xd=4hoeICYgy#Ql*!dcyL)=W6d^CC>$TsX_|5=?B)6&P#% lRTwMy8jKZr9mbjmXQkYRi51_0u~P2ASm{q-tlrlU768murSt#* literal 3906 zcmZQzVBle3U`$XiU$&2dje&uI$z>V?gUkGta?VHD(ij*RQW)4-8RS|#Ss3J6l9(9e zS{j%c)@Oz`$U`!0b|?f8FKejhhfI zlS{)Fb(eEGtq?AQOYNg$E~l0`L%57CWm6Wo9Dmdg<>p&3Ffax%Fl5LufPfSOLjjzX zEejH2kYZp+k%O^vQBA&2ZK+IO`#t6%_>2 zks1tR-G#G~LttXF;4H0Bn3#MRjCBXj>JEpAxkbQOH{q;%kub6Qa8^weOsp5q>VvbS zqG7U{aF#oqB_0Elm4ve_;j9ceD-X^(31{WS!t~CBvrfTTj&U&A3^*$j&PtDm$rdHR zSS4`QaX2d~5iSd7mBU%mNibP&I4cy+%1MUF=EGTKDKN1eaMtNmm{=yLL|_2ryd7}X zc{s~89j2}g&bkU`d1t_6FTz&bkX{9m|2qUV^jib75k;;H(31 z*7`h{Y(qYbRb2pMErqi#!C7L3Fxh=YFjh-3jCBgmx>EuZy9;MMg0r5&Sv93Fbx+_d zlQNiCT{(<(8qTV(fQhwK!dQK9*0E}sm{bjnbsWw*1!u+A!DN@fSr_0eqk5RE8Jrd0 z02AwlvnIh=C*UmkCYZWdI7_Y>CUy?al4*g7Erzo;!dYsqFxho*R$x0!Ou7Tc(txvO zz*$@1texF3b*p<|ESp{!OQjFSl9>Qw*}z%3aF)hIn5;IORS9RUhO;)qS+C%%H*l8B zB$z2GaF#cm6#!?gfwQb9!*n#mS#ncgVw!MPz*Lyn9yqIc8ca-SIs>TQbOZ50m6bCG##W8l#l)3tnF}?)C`!c(hRVIj&H~ARj0VwaGr_rsk%2*dCOG#nGB9Y& z1m_t>1_rH}AT=NlZ-ujV!dWNaER|UhlR@@^O=e;^sNuz+!m)yZK^0w&g@M7=k%2)V zmVx0hD+9xJZUzRmS>W^was@=S4X8;4s+}}ub%LD0$iT387Kj0I%Pu%eZZ=FzWj4eG zOweEhiL1>9#|_BT+2B9``E54X(TofXmT>oefS3Z&0TyL2#v*2dMQkhFl-+Qa%tEjkAoncl&P;xdNs`AI?gF zvo^t5Ti`6E)i51u>tL+d4KUWZO)%DZILmP}Oe_%2>V>mfx4>jmw!>K2aF*H*n3&ye z7%P1rjFkarHNsi*;jA_LVd~-z!dU%>V5|jjmgixZSU#N93}?9?fyu6hvviKa#0=rA z7C37+oYj2{rfv$HwFu7gJPwmx3}-Eavz8-RCt&J!!CCevVPeszV5~kk%i%OkEE>*Q zeg-DC0?w*93lm!kXBnM?iEX(6W6in