From 704ee097f3b18bd01da201ea6c3d3cc8b0b80667 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 2 Dec 2017 12:52:14 -0500 Subject: [PATCH] Made doors save state properly --- core/src/io/anuke/mindustry/core/Control.java | 4 ++ core/src/io/anuke/mindustry/io/SaveIO.java | 2 +- core/src/io/anuke/mindustry/world/Block.java | 4 ++ .../world/blocks/types/defense/Door.java | 50 ++++++++++++++---- desktop/mindustry-saves/0.mins | Bin 3678 -> 3828 bytes desktop/mindustry-saves/2.mins | Bin 3112 -> 3663 bytes 6 files changed, 49 insertions(+), 11 deletions(-) diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index d2a6f20cfc..2b96963d48 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -192,6 +192,10 @@ public class Control extends Module{ respawntime = -1; hiscore = false; + for(Block block : Block.getAllBlocks()){ + block.onReset(); + } + ui.updateItems(); ui.updateWeapons(); } diff --git a/core/src/io/anuke/mindustry/io/SaveIO.java b/core/src/io/anuke/mindustry/io/SaveIO.java index 5d087d919e..d812253195 100644 --- a/core/src/io/anuke/mindustry/io/SaveIO.java +++ b/core/src/io/anuke/mindustry/io/SaveIO.java @@ -82,7 +82,7 @@ import io.anuke.ucore.entities.Entities; */ public class SaveIO{ /**Save file version ID. Should be incremented every breaking release.*/ - private static final int fileVersionID = 11; + private static final int fileVersionID = 12; //TODO automatic registration of types? private static final Array> enemyIDs = Array.with( diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index 8c78332778..abf6d2fa63 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -91,6 +91,10 @@ public class Block{ return name; } + public void onReset(){ + + } + public boolean isSolidFor(Tile tile){ return false; } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/Door.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/Door.java index 6bfcd2ce38..b3237a52d8 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/Door.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/Door.java @@ -2,11 +2,15 @@ package io.anuke.mindustry.world.blocks.types.defense; import static io.anuke.mindustry.Vars.*; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; -import com.badlogic.gdx.utils.ObjectMap; import io.anuke.mindustry.Vars; +import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.effect.Fx; import io.anuke.mindustry.entities.enemies.Enemy; import io.anuke.mindustry.world.Block; @@ -22,8 +26,6 @@ import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.util.Tmp; public class Door extends Wall implements Configurable{ - private ObjectMap open = new ObjectMap<>(); - protected Effect openfx = Fx.dooropen; protected Effect closefx = Fx.doorclose; @@ -34,7 +36,9 @@ public class Door extends Wall implements Configurable{ @Override public void draw(Tile tile){ - if(open.get(tile, true)){ + DoorEntity entity = tile.entity(); + + if(!entity.open){ Draw.rect(name, tile.worldx(), tile.worldy()); }else{ Draw.rect(name + "-open", tile.worldx(), tile.worldy()); @@ -43,20 +47,25 @@ public class Door extends Wall implements Configurable{ @Override public boolean isSolidFor(Tile tile){ - return open.get(tile, true); + DoorEntity entity = tile.entity(); + return !entity.open; } @Override public void buildTable(Tile tile, Table table){ - if(anyEntities(tile) && !open.get(tile, true)){ + DoorEntity entity = tile.entity(); + + if(anyEntities(tile) && !entity.open){ return; } - open.put(tile, !open.get(tile, true)); - if(open.get(tile)){ - Effects.effect(closefx, tile.worldx(), tile.worldy()); + Vector2 offset = getPlaceOffset(); + + entity.open = !entity.open; + if(!entity.open){ + Effects.effect(closefx, tile.worldx() + offset.x, tile.worldy() + offset.y); }else{ - Effects.effect(openfx, tile.worldx(), tile.worldy()); + Effects.effect(openfx, tile.worldx() + offset.x, tile.worldy() + offset.y); } } @@ -81,5 +90,26 @@ public class Door extends Wall implements Configurable{ return false; } + + @Override + public TileEntity getEntity(){ + return new DoorEntity(); + } + + public class DoorEntity extends TileEntity{ + public boolean open = false; + + @Override + public void write(DataOutputStream stream) throws IOException{ + super.write(stream); + stream.writeBoolean(open); + } + + @Override + public void read(DataInputStream stream) throws IOException{ + super.read(stream); + open = stream.readBoolean(); + } + } } diff --git a/desktop/mindustry-saves/0.mins b/desktop/mindustry-saves/0.mins index 0345804f151af289e6a2636ca8a932a672dfda67..2badafeb22c63fda688f9b25b507b3b3efeffda2 100644 GIT binary patch literal 3828 zcmZQzVBlt8U`&vR>iy2Z#=yY9=(23?JC|i9G0sy0<})xbq%g2EGRU>0GJ^;f2Dz37 zRuI7iA{ZFtTBfo=SRk#Aq6`d-;S3C^(hMLV#lVm)17a{pF)-xH!dPW+Rt21uDF>4+ zg0u1!VPfTQR)!KxtV9{c%2$E0s?=bta%~tZQ5VLlg0t%2tQtL-Y^gqs)nEW)oic&3 z&YHqlN6cZYvvAfi3z*m`IP0txOzeOSjCIxy#yaBwV_kEEu}(O_SQp?dXLp#`5f2#a znkS59=L2Ke`@&cWaMo-;nAie1YoW8y*qF`cna8?(bbr{YPkA|s}fU`W{ta3Q(3Y;Y! z1JmIKXI+J}9Ae?Ja8@gvbs5eQi-V~vfU_FmtmAN&R6I=GX*la5oaL4Pll6eJCcs&- zi7?sFBp53R&UyuB1t!B}gW#;gaMoowOCklPP72P-gR>66S^H99>h{A~r{JvmG??r` zIO|3_Ow2t4#@d|;V;zOF!n0svWpLI$IO{N+bpg)01!p~gv&6Guri8&+hvBT#aF%5b zOx->>>oJ^lAQvY4Bp=3lS^#66EP}D(ieaoZaMmU`Yd@TI56-$@0@IOJ3S%vSvzEbG zr{JtxaMoiuYgHLcZ%jFiRRd=&g|iM;z+{(K!dQt_FxDM7>rgdJ>`)DibrR0%s)dOy zfU{)lU}6z))`EJtSObhT2hO_Q2osys1Y=EwvyQ@9GR-hqBRFdQ;4GbfnAl4=OJM>`Oc~B{fU|PoEQN_Mbt-U{_9U2C3Y_%<&QhEVlU0JV z^x-UjILl}XOkMm`7|VDXj8z9`wZmCT(-{~U7#N&EYBU%a7?jcYDrkJA8DRCgAWb0k zAbrYM#8jYSAbFTNRfw1~GXnzyNK6gFM=?tsiolE zsmz2p5F`V#1VpRN1m`kF1_t$+;9SPYz@RY`oXZ#)7#wDT)PR~a&T!URI7?*~#5|C_ zVDp$5=5QG@WHKZ(FsP!-u`)2kCo?ce|72kJn8CoXhk=1%k}U&++AMH-1=$bLVadS2 zzyzu{HD-a+DkB5Ko>?$gsLY1g$OH{0kht3H=^zSZ!fdctK|Yubb|fPML*Q(XB*+Jg z;H(vJmdqTOtkN8a$#B1bA{>jD3RDc)1*#A+XP90!2p=`_u!w0u#4sao0o++j;Vh-O zUnBN|@?jlW|q%xiKBV5}}UYd4%FxdLYWLw~@1#s5&B`{f)rC`@- zg81Nuiz>Q+8oEH#QjlU$%v^`FZo*j#%V4r9%g~KR5nyCsP(u-5U|>jsYu*WGsVqk~ z2329F>@+xQC!E!H5+*wt&RPm*IiG^b zmcv=g;VhfeFj)sUYswjz*mO8+`B|8l%Q+Zp5}Y*`&RPLyIi829TMB0_x&RZ~3}?-{ x2oqZmXL($PiTT1=esGrWRhVquH5hBz4Hzr<9*h+NXRW*s6H9pnW2HZZumGJKoh$$V literal 3678 zcmZQzVBlt8U`&t*-ujqJ|+3|JWC zTC7+ZIO_qN)fEnty#Z%+N5aI8!C4YfFfk=K%N5QlfU~TkVd^~LtR6VaIR+-% z182>Iv!r5SvYv33R~$^N5YD;_XQjl$WP9PPD{z)i0!%g*&Ps!`%HXWDM3}k*aMn#Y z>pq;7mjqMS4`*G5vqY0&vLSF*1e|pi&bkL@iKoDH+=a6w(_mtaaMn&Z>oA;k3C1~^MP1E$Ur&a#HHZf3${@4#8L*)Xw-aMm3-ODYE@8wF=Q&V`9(=D}FU z;H-=JFtJN;)`0?;*mF2*eIZP2UlEM8ycou+DTT34!vER!;rY-Bl%m0SU1ov4Jd z?!Z}RYGGogbugA;J&ZL6&RPs-&2NOs9)Yu_HNnJ=!dcQSFtPJ+*2Y$t*!(saOQ{{k zng(ZWgtJ0AV6xlcEU9jom-+ zB_jiaPd_*)85tOS`@sRo$iUz|0qj(e>;wiz1_lODS;`av*8Cq#GBEf~=mfDC85lN9 z05L!{kjg|D%X{K<5EEp=#2HYQ@5GrBVu=7Q@U4MtF%%)r3lgH6yEA_%T?AS#&{ z7?R)yHNjcQQ()Glz*%xrVPc!%EaPb~F-JISE1Y!<&Qh8VcA_&#HOTAAXnYkkz79CN zLEiL*v(~~{N;ANw>4M@CWE#j+Wh`PUP%)4^Or0u3%$XS)32G2NidpJd#55pc;40S$ zWHHE41{(&3WN?B2IaLarAV4gYnGgqp)W9rOn+Z#!>N8W)dOcK&4Ji~?0RJ^Vk%HE6t_UcoMC#^ zAbiwF!Xl;t5kre44F-nfIWW&{fwPq6f*puRlW2SuG`{Lwm>K49))qKx(L9*!PB=?_ zK1|FF&RPU#?S->67r@lrUIb$;SO#M)gR?Z3!^9%ttod-(Za8b<3YfaBaF*6em{>TR zrM3ztCchfSQiHR$z*#EmV6y6PmL{B)upTCR2F|((XQ^$3$+~TVu};HT=QhK{F2Pxs z;jAlgR^nEey4dY7R?-d_t7#XEWxNN*YJ#)c;H+c&VX~=*U@XtWFxCVF>nKcY1)Q}8 z&hk74lkI}DX2Mzf;H+)O;p$GnSPS5+WpLKyQ!v>naF*q1nAk)(%ls@%%nr^nJ_i%? zI1gjZfwNX#fQhZT2xIwOhOvCF!dOjk)_gc?9h?<-4W@1poV66rntmN7>wg2rs=f(h Y#oUImlJCM;OCP{kOCG{lMXw+%0B8e;RR910 diff --git a/desktop/mindustry-saves/2.mins b/desktop/mindustry-saves/2.mins index 32124eec4bb84f635a05d045d3a2101cdf87734d..e8eda1212daabccc621c10cd78f325872c9d2ed5 100644 GIT binary patch literal 3663 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