From ab716e96e2a9c373f30874af1b33d88e3b618b1d Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 24 Jun 2019 16:54:50 -0400 Subject: [PATCH] Bugfixes --- .../sprites/blocks/turrets/bases/block-1.png | Bin 196 -> 1894 bytes .../sprites/blocks/turrets/bases/block-2.png | Bin 339 -> 2888 bytes .../sprites/blocks/turrets/bases/block-3.png | Bin 567 -> 4673 bytes .../sprites/blocks/turrets/bases/block-4.png | Bin 889 -> 5387 bytes .../io/anuke/mindustry/content/Bullets.java | 2 +- .../src/io/anuke/mindustry/core/NetServer.java | 5 +++-- core/src/io/anuke/mindustry/core/Renderer.java | 5 +++-- .../mindustry/entities/effect/RubbleDecal.java | 10 +--------- .../src/io/anuke/mindustry/game/EventType.java | 4 ++++ core/src/io/anuke/mindustry/io/TypeIO.java | 4 ++++ .../world/blocks/power/PowerGraph.java | 1 + .../mindustry/desktop/DesktopPlatform.java | 2 +- 12 files changed, 18 insertions(+), 15 deletions(-) diff --git a/core/assets-raw/sprites/blocks/turrets/bases/block-1.png b/core/assets-raw/sprites/blocks/turrets/bases/block-1.png index 43a8576c0f51b69456eaf317238c513941531f9c..36ec5be9a8c08cd183916948ca396578cdcb6f35 100644 GIT binary patch delta 1880 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 NgQu&X%Q~loCICvnXioqD delta 313 zcmX>hcA05{ay_Gzr;B4q#jUru4fzfk@U%XhCsD}K*EqwH!C2T_J9sJAQccGFH&*^X zs2upq(^KZS&-L52amOG3^b)ocr?fC6@JZQzWysq*9xC81&rMz@~+JbXk9=95(n?wwLjTn$nz3^N(LIPzDY$ywewmtB^D Pfq}u()z4*}Q$iB}-S2!3 diff --git a/core/assets-raw/sprites/blocks/turrets/bases/block-3.png b/core/assets-raw/sprites/blocks/turrets/bases/block-3.png index 4997c7fc3ec44aa5da0c69f448bba84dfa3c0cfa..1b01ddd33fbb5fd35a50b33a45119be32e8afcf8 100644 GIT binary patch literal 4673 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^ShZdHXulmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNPuSD}9@aHebvC&0UdBj}k3!6yM`Z`}vu3Q%&6Ezspwb_K_0c z(iB;=PU`>P^i}^q6d1BTwOMc3(%gPpZ}y?~k~hceuD3_8e=T?}xTfB6-8*%jcAfX% z_9V`^F5dV1IPb-|$6voL6uoWfXT^T$d*k)Pr_OxZIp1v_bL8g!*PnNvdd{nAqx<|% z{w>QlmOp-%ix;|m?@8}9I-FI#CVX@HrijGNx_j8;dY`hm%gmR(|D@vAm-)MPzdO|U z-9P`Ib>6g_?bcVgMIN5@e_r_Ze&6liCeMy4<-RkXo!(t^jsNz&Kj!KF#eI8sJ?dEe z=FrX+w}Y;!>#f;wdEITM^C#-hKi@HLX1dj>iwORqfo%PjNLH9pg3?95(gGV9=h zA75AAX?R4Buu=P!fz|5<&t&ibA_(;8OC{deX> zBv`(ZTU7P8Lw9$>NawX9xw;U6M8=GSI& zG2PP6w+fR=&t;gCl9KnXvnn=w&&~FQ;td~Ed|9M~I5y1rtT!RQQ$Xuf^!q*E54z8< z`KEf~K@-2?5e1vjMZJ2zB$9eGpG8da)%z(Dlu zOuR*a@7AlK@y@-bS7W@DYi4EdYZZ&m+Br3E*V}-GR|}8Nt9qCE!cl|Q{11n6pUEeU z$q}>5cD+oWQMhbo`p(5=i+*+8vM##6c$xo|GfZCVy7{kI$UM&F&@FkyYAj&v*IXgO z!jYjoL)OzeoyGFtn-j;hviBbJ(tl8*+tIi{`qqz??{C;n_$_4KTK-?eyts9a(2IZa zCo~)1aqjfLqZjZx_2SxC22Zg^!4j7y)$uG@eZKbELSsR*np8&Ro3l=PEZmlu#Tg%e zd9#+=W+|Cj5z~rqRsQqb`Rj1`*XicR?mS`6sJ@%)5j)i^ZNB^A%*$VRau01^+kSD^ zQU#{^MP^ULw&ve@Tyoobf}n;~G3(;_%r7$6 zp1;~-xk~Tf%PAGJCi}e$*Joz=Htp08V9UdfT-(Q$5zQdZIppI_mu<`ch)Nbxx*HXfF3<50O8xOA1mYB!IN z%B-X5A(LZtRvumV;Jlo!n3=rQ7c--!A(LN67}aKf%2QopTNqcnV&RO6A9LEu0=K_7 z+0>)GBKt*elWbJZf?J)ul@ksu-5Qm3kz;Suy~nczxsS#I0?*v^>5jPqSinQ<$z&_6D`zTsLpL*qJYN z&dYU0W@Le~_?aj*neF9;HJ^MEyR`J=^Nu{N%sx>ic!||9B*Ih5DQcUH<%yV!j}?>@ z4lm4mWtPupRT8x3`g9Gw+>O^PvgiM8__b5%$xfy89y@lI*DlXemqooRSpQ(9@LntN zhx-nzi<+)^DArK^qiVX*M;X zl{#U&PIJ=+EsF~03&+FK<@36HcbIKf@SVEl$3edHt9V^jM%>_9{EppXqn<-r!LrYj z3VJsy^v0?-iUp+Sv%bs~?|!5*v0#PD)2P!oSLTOx2Q1iT_2$}@6sH?{EoBN`Kc?2! zd+vNGpwq3^_oPlieba`lr;DCzhm}rGKOb^Ja`W5=1||Z+{_D20O~{?}cI(rbjp0!p zO}h;ldlMU<>PRm2Ugw_lVawmMCEvG2eT~R-)!m?HbY^m*&VmR3gg$RbiI^$>l(V0G zHTR(dXHx@b6+W$6vsuQeX%Xj(aE*kfYce}R!Y}{!64Be9dHt!{uPdrM&3!||LyXhs zsATFd{h3$Lt~y6ua?*2-wuXgla@rGQKb;i_R&@*RvR>lDwCmIj1vZYWyuF+i8y(mt zJ=8Y$7GqG~E5b3Wrb3}5|A^BUk(=8;2k%wWVB+7&R_!5iXm7JYcES4NxjF&W+KwEF zi%Z=U=KBbJc~BZE&i-s`5L+*|_GimU(>w&k&d)Yh6;r9tY)@>uIHl*C|v@%aVk=^3k@!tBG+Q(Hp>;q~F_p6_}ePpLq)z?aqW?TN)i(D zR3#I)*NAO9|Kow+)#I0VqAI#n_FlbV{p{8K#(xK5{>r}iHE)f%$CYDCI=)#RQV8h0 zzSPCcH+PZ}@0OqYu4&Ck6)&s5boS%Fb*Z1;-LY_qpP}+A>3H)Rlld`=y(XFF6>k62 zqFuX(Y5kgl>UjmbgxhnpN?9ajn z7tTjH|E^l4^;KuJR_Zlx)=B;0b)srq=ec*SSJ$ZcYMj^dyT@RYc)I8Ej?F&ZkJcny zy6PCZ^tWDo)~4NN!kHF9(teMQ$xS+y&1*E5!)0sdrI*8{c>dWCYIEnYXB~@mh-EgtAzjDM_hkBWvoztNXXF2w0z3 zI5YWt;72K8|9Qdl*Dan96shP^l7I8nT$_wC9;E(sWyLAhcZ&&(P zG-E^c^q2fo*R7M;{#VSXUw#qOArZH4)82^hQdx6p(UUFx`{Z;srOIk3s?Jd@`kE!Q zE37A?{c4RBmta=W_qm(rX`Fst%vup4)voeWG?kU>Y2%-58HW2qPG_mRLBoA>iS04;cN2y7fV^Ho>OtwT3) zs=cd_d|CPaW956V(v~Z)_Wn8UFzI|on|{<+E#I?>cjvq0g;skX5BR(H#T4ESu?u1R z#qSe3#2(#R-`D zRxK{sm+5u;_mwZt3RSs}58O>g3J?QKgY`gYc7+?>jAU-W3U_o5?PGt1Zfowc*fEct)d`{&yd-FMd= zwer4Mzg(IB^TxQZd)znQGA)u{JxSxplkLja^@55f`Sg8YW?*skFHk+<#%XUanxx8i z@|MDG4-0jxh5QrKO^&*(o)`a?VegwiD~?xrym>q+PI>FacGJemXK!lkKkM;5pm^8Y zuZ_3#C06{ulI-a4>N?Mt+WoIZqW*X9(V2L(Hb-irXv@j9`n4zYZmzcVSrfNsLhJ38 zGoAAKyDvs}$9omddN3_}BJVYyH)*Q-4{;v47_&nC)`PF=g6Zb}Z)o3pfBsX<-W+f1 ztk~7tUhI9o+x(42`&;&-OeL@GzrP%HA!Dl8B2}T2DG#e|9kI(=aWgbBVWPd`ftW}B zRh2&_&n*z@nKq*+a`{YewS`aebwpP9`+Z|mb>3pl_+)#tWMyu^?{lR$+65dVubnSe z5fHQObr8Q)x*&_&vf_l|HJ0;-KBiYIvL5O`n0+lhX=zu+;{9QX8_%rv%sz0wv(`$% zgSohl&;8Oqzt!D86M6IfcIZ0Pu6bbnd;iDfzqY;=m#a35`FgZf>Ff;av7mY z=4gEIR;8(YWded{0_N&;bXjDHb_FP2;aY1oBj%T)Nv20oj124bre^u>P z#}CX$j$ZY==<4++J}5)*@xem-dv~kv>}77Lnwc4PTw=k?Z8QDUj^yOI^6Xv2Ey&=^ zaq^5&nyM!2{g0*n4Ds(D*_{4=Xa3^wv(Y>p9Y>7M800=GeYDc|_JckCGO4POs&?vf zrZ1b0^v8tT)IE+ViF`0K(0KAZ8{s zKN&A^?)7Q!nB|roDq~HZ~gN9Lc=uxpBg>zb*as2flhg2|BTr(XFpCWPxMZ z-v{*{c1N!^Fnp)lD(vvQ`*95q^TOB#fyHy)Cm+w8!*DSDfmi-d?b3u_lfOiHcgr$P z%zf}^*HX>u15f!b{7*Tt?2VV>ET@GGd*)v>f7-AwdO`Zt*K2q7UuIWuj$NA9(CnPB z#N%eR-TQZW@88}xKKrkZ;kQCj`4)q{(-{~T*pj^6T^N2cEM_>K6lq(@z`(#+;1OBO zz@VoL!i*J5?aLS#7}!fZeO=ifvxy67aU{&h;$vW7j_`DG45_&FcCK|^j3JM!s8e^r z!$YoG>u-3>HQk%VC9b!pdx?>N#6juWic0{K0nc=bCHSty}G~uK7aXiXI0@W z+2d<#_tj5Pk6?((UaK&HQG|t&fz^@0!BK!AK!Aloq-Dpo^L93U(b;RauCH}sl*~5% zy{hg#|2~Bf>HPWc@Yub!BAPtO!2MBl%UNAGu-Q@ z$h6FD3)0%)zop?)y1CfRto81e@{EjY&)e3wup};hTe~dnsmZ$BErK6vPq;NFpKf2K6!wU{ z+W6?HSWj8cO_w=&ILb`f(=Qu-UHIqRr}vvyE4cZe62oZ%Y(wD)*sz>8rR@b>=NL+hW9LIe(RveB%F4B2Ow+R?Opd zy>)-@ln(_SApv2xc6+cUZq0ddc&SpBXvkUy5r#)|R!`&Y?GXRwaW1?iq5oNpDaYK0 zf3EJ5egA*<&LxevmPd#^@BemWZpg;)(D`q)PApF1{U}*%H6^-Dse0!l)^-U zePQkPBX7CFlh(={yLxd7&zc+!L8jeSw>BTsbmckm>&%ir96LU7zs_8zu~Kr4%%ADn zk1yzZR(>M6d-5n`_H`=Z}o43}c~dbWR(?z->HN+SJr zpLt{NCf@T)SgIjX+T`c>Mts$xc{#<-u?r=q>VOH1dMvVyqyg5ndYmTok z*dCQ+Z?;YS@yWZFKc7B+{@br_>qNKhzRw`Qz|auDQSko*#{%gGyB#yw7zCLfY!l&H z@OM2gV?zKlqk<&Ep_-OphWgsd(C53@H_AMi=DDoMVV8OcgEd3_623YurUqHYU1~>L zQd6}ZzF*Qy%)H5VVdpWwsQd2BDi1@yE@er$qB2cP$NH0PAcMQ}7S6y^i~nlh?Ku15 z4Nu3->p}a3*S#tU>gGB2c3L1K!-0Lx^&*L!4Ox2xuUBz4^u-61R>(3mZ0!G_b?q~Q z+P%~I`~_wywpJzvpWeqO)yoGMGTdgK^YX+S1Ba&%^d-5yPTh`?T9CDPa-Axg7b~5X<=J9D4}s4y$5Y_wVutvKSU`ZoYiJ;Osw} zhN}#Bn$9pX=s3@wzR)bmNzh4q`l{ ziA-RT3ui;}s=k$0E7pcIMhP-ZS-mrF=d5*K_cZyss-C{2m986YocHxs;c1b#*3qvD zk1}oG+OBnHRmsLjce~29d*X8lK%2YH({<&$d94k)c6iub>^{jtEoTO+Fdr3=9kmp00i_>zopr0E9#2 AY5)KL diff --git a/core/assets-raw/sprites/blocks/turrets/bases/block-4.png b/core/assets-raw/sprites/blocks/turrets/bases/block-4.png index 7206b69d95241e112d0d7b3ffedb8e888885f387..e1fcabc4962bd4fa672b5f1dd51ef609f86ad5e9 100644 GIT binary patch literal 5387 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 UcA~M13@CIxUHx3vIVCg!0J6|i-~a#s diff --git a/core/src/io/anuke/mindustry/content/Bullets.java b/core/src/io/anuke/mindustry/content/Bullets.java index 37c84c7898..504d0fed6b 100644 --- a/core/src/io/anuke/mindustry/content/Bullets.java +++ b/core/src/io/anuke/mindustry/content/Bullets.java @@ -399,7 +399,7 @@ public class Bullets implements ContentList{ super.hit(b); tile = tile.link(); - if(tile.getTeam() == b.getTeam() && !(tile.block() instanceof BuildBlock)){ + if(tile.entity != null && tile.getTeam() == b.getTeam() && !(tile.block() instanceof BuildBlock)){ Effects.effect(Fx.healBlockFull, Pal.heal, tile.drawx(), tile.drawy(), tile.block().size); tile.entity.healBy(healPercent / 100f * tile.entity.maxHealth()); } diff --git a/core/src/io/anuke/mindustry/core/NetServer.java b/core/src/io/anuke/mindustry/core/NetServer.java index ab4eca7e0d..e079ab7511 100644 --- a/core/src/io/anuke/mindustry/core/NetServer.java +++ b/core/src/io/anuke/mindustry/core/NetServer.java @@ -274,7 +274,7 @@ public class NetServer implements ApplicationListener{ long elapsed = Time.timeSinceMillis(connection.lastRecievedClientTime); float maxSpeed = boosting && !player.mech.flying ? player.mech.boostSpeed : player.mech.speed; - float maxMove = elapsed / 1000f * 60f * Math.min(compound(maxSpeed, player.mech.drag) * 1.25f, player.mech.maxSpeed * 1.1f); + float maxMove = elapsed / 1000f * 60f * Math.min(compound(maxSpeed, player.mech.drag) * 1.25f, player.mech.maxSpeed * 1.2f); player.pointerX = pointerX; player.pointerY = pointerY; @@ -284,6 +284,7 @@ public class NetServer implements ApplicationListener{ player.isShooting = shooting; player.buildQueue().clear(); for(BuildRequest req : requests){ + if(req == null) continue; Tile tile = world.tile(req.x, req.y); if(tile == null) continue; //auto-skip done requests @@ -296,7 +297,7 @@ public class NetServer implements ApplicationListener{ } vector.set(x - player.getInterpolator().target.x, y - player.getInterpolator().target.y); - //vector.limit(maxMove); + vector.limit(maxMove); float prevx = player.x, prevy = player.y; player.set(player.getInterpolator().target.x, player.getInterpolator().target.y); diff --git a/core/src/io/anuke/mindustry/core/Renderer.java b/core/src/io/anuke/mindustry/core/Renderer.java index b57bd2fa48..fef6d6bcaa 100644 --- a/core/src/io/anuke/mindustry/core/Renderer.java +++ b/core/src/io/anuke/mindustry/core/Renderer.java @@ -1,7 +1,6 @@ package io.anuke.mindustry.core; -import io.anuke.arc.ApplicationListener; -import io.anuke.arc.Core; +import io.anuke.arc.*; import io.anuke.arc.files.FileHandle; import io.anuke.arc.function.Consumer; import io.anuke.arc.function.Predicate; @@ -21,6 +20,7 @@ import io.anuke.mindustry.entities.effect.GroundEffectEntity.GroundEffect; import io.anuke.mindustry.entities.impl.EffectEntity; import io.anuke.mindustry.entities.traits.*; import io.anuke.mindustry.entities.type.*; +import io.anuke.mindustry.game.EventType.DisposeEvent; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.world.blocks.defense.ForceProjector.ShieldEntity; @@ -130,6 +130,7 @@ public class Renderer implements ApplicationListener{ minimap.dispose(); shieldBuffer.dispose(); blocks.dispose(); + Events.fire(new DisposeEvent()); } void updateShake(float scale){ diff --git a/core/src/io/anuke/mindustry/entities/effect/RubbleDecal.java b/core/src/io/anuke/mindustry/entities/effect/RubbleDecal.java index 7944714f6b..8f2fb733ef 100644 --- a/core/src/io/anuke/mindustry/entities/effect/RubbleDecal.java +++ b/core/src/io/anuke/mindustry/entities/effect/RubbleDecal.java @@ -8,22 +8,14 @@ import io.anuke.arc.math.Mathf; import static io.anuke.mindustry.Vars.headless; public class RubbleDecal extends Decal{ - private static final TextureRegion[][] regions = new TextureRegion[16][0]; private TextureRegion region; /** Creates a rubble effect at a position. Provide a block size to use. */ public static void create(float x, float y, int size){ if(headless) return; - if(regions[size].length == 0 || regions[size][0].getTexture().isDisposed()){ - regions[size] = new TextureRegion[2]; - for(int j = 0; j < 2; j++){ - regions[size][j] = Core.atlas.find("rubble-" + size + "-" + j); - } - } - RubbleDecal decal = new RubbleDecal(); - decal.region = regions[size][Mathf.clamp(Mathf.randomSeed(decal.id, 0, 1), 0, regions[size].length - 1)]; + decal.region = Core.atlas.find("rubble-" + size + "-" + Mathf.randomSeed(decal.id, 0, 1)); if(!Core.atlas.isFound(decal.region)){ return; diff --git a/core/src/io/anuke/mindustry/game/EventType.java b/core/src/io/anuke/mindustry/game/EventType.java index de0a286c66..8bc340ce2e 100644 --- a/core/src/io/anuke/mindustry/game/EventType.java +++ b/core/src/io/anuke/mindustry/game/EventType.java @@ -32,6 +32,10 @@ public class EventType{ } + public static class DisposeEvent{ + + } + public static class PlayEvent{ } diff --git a/core/src/io/anuke/mindustry/io/TypeIO.java b/core/src/io/anuke/mindustry/io/TypeIO.java index d8bdbf9b4c..97f92584f2 100644 --- a/core/src/io/anuke/mindustry/io/TypeIO.java +++ b/core/src/io/anuke/mindustry/io/TypeIO.java @@ -139,6 +139,10 @@ public class TypeIO{ int position = buffer.getInt(); BuildRequest currentRequest; + if(world.tile(position) == null){ + continue; + } + if(type == 1){ //remove currentRequest = new BuildRequest(Pos.x(position), Pos.y(position)); }else{ //place diff --git a/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java b/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java index 9016bfac92..a2c1410a50 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/PowerGraph.java @@ -40,6 +40,7 @@ public class PowerGraph{ public float getPowerProduced(){ float powerProduced = 0f; for(Tile producer : producers){ + if(producer.entity == null) continue; powerProduced += producer.block().getPowerProduction(producer) * producer.entity.delta(); } return powerProduced; diff --git a/desktop/src/io/anuke/mindustry/desktop/DesktopPlatform.java b/desktop/src/io/anuke/mindustry/desktop/DesktopPlatform.java index fa935f50a9..8bd64f4689 100644 --- a/desktop/src/io/anuke/mindustry/desktop/DesktopPlatform.java +++ b/desktop/src/io/anuke/mindustry/desktop/DesktopPlatform.java @@ -49,7 +49,7 @@ public class DesktopPlatform extends Platform{ if(e.getMessage() != null && (e.getMessage().contains("Couldn't create window") || e.getMessage().contains("OpenGL 2.0 or higher"))){ dialog.accept(() -> TinyFileDialogs.tinyfd_messageBox("oh no", - e.getMessage().contains("Couldn't create window") ? "A graphics initialization error has occured! Try to update your graphics drivers.\nReport this to the developer." : + e.getMessage().contains("Couldn't create window") ? "A graphics initialization error has occured! Try to update your graphics drivers:\n" + e.getMessage() : "Your graphics card does not support OpenGL 2.0!\n" + "Try to update your graphics drivers.\n\n" + "(If that doesn't work, your computer just doesn't support Mindustry.)", "ok", "error", true));