From d268d94f76f418b46e75d99eb4c461e20dd64376 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 29 Jan 2019 11:51:41 -0500 Subject: [PATCH] Edge cleanup / Spawn warn / Bugfixes --- core/assets/bundles/bundle.properties | 1 + core/assets/maps/frozenForest.mmap | Bin 202582 -> 202582 bytes .../io/anuke/mindustry/ai/WaveSpawner.java | 8 +++++++- .../src/io/anuke/mindustry/content/Zones.java | 9 +++++++-- .../mindustry/ui/dialogs/DeployDialog.java | 2 +- .../mindustry/ui/fragments/HudFragment.java | 12 +++++++++++- .../anuke/mindustry/world/blocks/Floor.java | 12 +++++++++--- .../mindustry/world/blocks/OreBlock.java | 12 ++++++++++++ 8 files changed, 48 insertions(+), 8 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 611a5e763c..c21e6fc0ab 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -33,6 +33,7 @@ deconstruction.title = Block Deconstruction Guide deconstruction = You've just selected [accent]block deconstruction mode[].\n\nTo begin breaking, simply tap a block near your ship.\nOnce you have selected some blocks, press the checkbox to confirm, and your ship will begin de-constructing them.\n\n- [accent]Remove blocks[] from your selection by tapping them.\n- [accent]Remove blocks in an area[] by tapping and holding an empty spot, then dragging in a direction.\n- [accent]Cancel deconstruction or selection[] by pressing the X at the bottom left. showagain = Don't show again next session coreattack = < Core is under attack! > +nearpoint = [[ [scarlet]LEAVE DROP POINT IMMEDIATELY[] ]\nannihilation imminent database = Core Database savegame = Save Game loadgame = Load Game diff --git a/core/assets/maps/frozenForest.mmap b/core/assets/maps/frozenForest.mmap index b278230aed5ad668ff6c6eae5ec86d18c49f9499..3adbfe571d35c16d578126f5b8c2fc5318330fe8 100644 GIT binary patch delta 14971 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 qlP}Zs1!tKaO|xY521`!TIDNwr zMy2f^?lQJ9PA=fuHT}RHM&0cPteIRHCkMPUoHRpavq1PY#_11EG5JsbFq=tpQp3Z^ z23#p1Z93B%A{aHX%TNArItnZ^*?`M!`i7H?N|O(4ao=pf#mNZa36!vHeqGJUxP5^y zqYLBo4NI7Gw=HFIWSsnAp6=v?1M1tBGCgISd?3_uy2DLIxoIaEK@QOYOK;xYEXz3A zfGc#eK#R>}f$-U26X8mxSu!S1pRk|Fe6m2tR*1tF9A@&_oX{E0Jo&&k*Xaj#Fe*>K zV8G}zSs*+ftatK-+wve!TQg3xWXzb{&|NXzA(d(Mg2B%3>3Ux$%(a_{tAlRrF(+`M3h z9OL!_vl)XKr`0i;SI9FeR_ifWAb!?6hU|Zl&AO0FmX=zS7DNx{y>b$5EKX^U_H|XiWx&E8yt6=?(m0EdD=-v-OUF6@r=_q zykRt&ED$a+-Cv4Ha(Y7xQys|rau9R!Co+mmPx#6xKiPhP|MUU}#^Pz3jLq8xmNF$X zPJdv^s4>}~LIV`EAVvjVTQOm675nfzdT?_>k64v-KV`} zoG@9SM09e(f#S^uT-IQBfb);i}<}Y&QsIYGj;TaQ84cV}6iljGlfVk5OX!f>0)l$pYci zAnt({N;QnrFIX|io@W|IZxh)%z+!>GP3l`#rz z_~e4SnUfzJ;+tOJ#}qbMpoM?B!xP5j$p?D)CpWwboNT}acBbrPfjLs3nAF{z@V%dL zdV?urG}zS&xlEgOj zKiI}NfpOAzk;w=00w;es?J(Uzi*XKEiGmR$$TokFJ0L-_VUhauf*p+RlNZD)fs4Y1 z7N$8MKY*Mc0y644hu77R^mpJ6V?3xf0(-hZ zmvP!=11@bwPzL3Pshxg6gwb)b0apdc_C4og)fYmAdgJ`u*qoq15;2G8jWaW`T33+x7_!jB1RafPm`+mFr+Xe3&N!DO~H#92AxkU|SP( z866=7$cF_?nxKTx15&0l`9Xj5WPwlC(-*iiMo(^d21&c1v>*)A7d2^y2&g`@oov8W zJYAuP$$YZH!eX$|(+m6=<+mTuWt_$$Xj#qub;ICCSqt++?(voKT<(s)DBn^e|Dx>;zf%S||pq$YTG9(1v zqL?gDVhh$Yz2O3*3P=;AEhIbnK%OQjNMt8J*scfCs0>yHw(!CBEO2=`Y0WA~rT}N^ z1AL4Ya2=p5HQm69$zi&~QO1tR4O{%DFWAah2TFY!n-ji=fL!JXQ7tgX7*s?RPi}Yy z%5WuMqbEC@R-V4WjL8_B=pCMVZ#LjEWZeG1k5Pva6kXtwLIc!70-4(ZGC%`V@A`x5 z73Jv@k{I*Af|C;p96<>$e!77WlPjoYp)z@QbLiv*%jE3>I!wik(-RIexq?a)sp%h% zGMY_q@MKH?X@I0ukRQB26|gxdZ}ftVgxUkw2g(p2M}sOnbA(nKHXZ<@4nDV<1=0o-EKJ3o702$b|xCL2_EgY1Qt5B@4lwUZ0D+@`y?Gp2%r zN})*v6xb<@;L`eoF{9-42c3*>CL3^-PZxO2$U5Dln=x$ihbI-A1;Qgi4R6=U4l@O& zpI^#Y0g5wFl?`ffxPc4T1qF;t!I=e=Mk2wz3UEoN1WG-clQ(R`&{GUjz7!PXMU0?2 zRBpQ8RK{!53tE{pVaDcxN>6kp!qfNFF$zpp2m>b{jp+;KGA2(pIIcX+oM|;EOh8Q} zQ0ZO^c7)P&fkRB-rWstN9H?@G)Mf|x80UbTp$u|$99V-aNJAi~s_dTT!#Ew3hO9x+ zKL_ekgIFfn=@(Worh=7BZYYuiCjd}LgY9YtxdGhQ0ttal16RD=pmGM3$|i!u`KOny zV^jx)O+K3Xgs+SVlQ(RGv^&8?e8V%5?Pcp2`;TJu3ZDxUmdp5tVJ z@M2JE*PU$81MUF1Pk(R$T)E1EQVn&c({kinEYUS38*v(014}Wx?2|($U>?v0|!PW zP$mX-WVUZO!l=jyF6BQQWsGG4^{S@%Fd9$i-^FA-*e4Qb1$+1Y4%S$s4vol_^YM(wQC*#gq#2 zAJ{pNO4*7@8B`X7BMF+n>en&qf=Xm#kPmc0DcB2S!6Z-wD1i&~%?4b_jG#V6J1Ft# zOg1>q4UWIb3O(|Z9bTD%nu606CNLRIE~u*jRaWMpR0(R}{bOtgH^d!sz&gx9RlF-G zJ*gl{;DS0x6oayKJLB{KDJF?&tW49v=1f)y0|%_qWKfl};UuHRcph{p5>rA#`YE)yj2E+}9G=ayt>KmNjPd2nG14j7Q+7|W(>bm%f$V7q zwVZ6h4sp22s5iaAkWpiDLcuDKrtJw|866?ICO_CDKlwo<>-5@POkC67>od&;Ic))m z(3reo4Y&y33e#f)(F3X_j6sF)WCJckkToik6AHlnKy^@SNpA9iyj>va=?VLo-h=XG zG?)izO)q2A1C>|c78y7l2!yW#nPCfQBptZJs4+SJlq;m0n_$Zr2Qolqnjqs;P$L`^ zN#O1%RQUr_Mo52e@`Fv$pvG1E^n_)M4wD^n1R%8uxcjegi0Lq>VATNU(a8cGfztz0 znPyMku*hMu!0J#?+0Qop^)e<|P|EiK8w0M?C?~5x_k{&0H}B{o-7a!4rJxYA2xwgY5=&b1Nm&VK}HRbDt=I@d=8Y9btX4-w@-esed2V7Fs6y1 zz+DJ#qk05|HXZh{<)*cX0Mn0<~AoCpTosfto)W(+fPA=1e#H#Kbq zloo8jR!=sl0Cj70AU!h!t_71n%;TRPr@$mP^#G&NWPuLH$qk3Nr!P3kBn&cR6{rB4 z?C{ha+VofjG6|HbP#xeml~EbgJ1hcue$Hfp7CBI94AM8HG6R^w^4;t+QwJat#ECpq9jmZspeBcuFK;CLl8SelJ1d(axOuIm#tTTN>BvaGo zgc~BDrj`agWq=z!yFfu}K3O0f+})7^6>FgSz7~{(Hydyjfjh(yPk;;uHO4{tK^bI& zJjhl1Ak`))#3wsE)tL_Jw1Zk7phV&h3IREonZ=+4v{@j02Y3JpoOdKak+={N*dG=f zf;u$|rz?DAG@SGu+;jmCSvo-?`M?%XhbaZ@-t80Yn3gk7ZrGwT`9Pi%xX1+!LxLJ< zMIcXt+tAQ*8#Iyys%Am9D1i!aNMm8LLB#@)!H`M_)bc`fwLn_77kDzQU z=7jJ5;0A{-C_eZmH)P0zx^vc`gaxYo!DDqG_jW*>2pt3T0+&zIV3`cmUo)H@aE`GV z~Nmx0X$((2j%<854P8VhucBJaiI2$ zALC>L|H^6HOyD-3+vE*>s~|NUNHwV3p9adYpji?JMo62wpspRE+<DfNSjoDL&J zjX^rVO=?Jc_`?%ug%2A~S`T*Q%- pXB#6ZK0xJ--eiIB!;?Rp_J-@#1qmC0hY~>f&JZ+|4$2ABlK{$&!sGw| diff --git a/core/src/io/anuke/mindustry/ai/WaveSpawner.java b/core/src/io/anuke/mindustry/ai/WaveSpawner.java index f510cf2eca..e32e107e5b 100644 --- a/core/src/io/anuke/mindustry/ai/WaveSpawner.java +++ b/core/src/io/anuke/mindustry/ai/WaveSpawner.java @@ -24,6 +24,7 @@ import java.io.IOException; import static io.anuke.mindustry.Vars.*; public class WaveSpawner{ + private static final float shockwaveBase = 350f, shockwaveRand = 10f, maxShockwaveDst = shockwaveBase + shockwaveRand; private Array groups; private Array flySpawns = new Array<>(); private Array groundSpawns = new Array<>(); @@ -52,6 +53,11 @@ public class WaveSpawner{ } } + /**@return true if the player is near a ground spawn point.*/ + public boolean playerNear(){ + return groundSpawns.count(g -> Mathf.dst(g.x * tilesize, g.y * tilesize, players[0].x, players[0].y) < maxShockwaveDst) > 0; + } + public void spawnEnemies(){ for(SpawnGroup group : groups){ @@ -98,7 +104,7 @@ public class WaveSpawner{ } Time.run(20f, () -> Effects.effect(Fx.spawnShockwave, spawn.x * tilesize, spawn.y * tilesize)); //would be interesting to see player structures survive this without hacks - Time.run(40f, () -> Damage.damage(waveTeam, spawn.x * tilesize, spawn.y * tilesize, 350f + Mathf.random(80f), 99999999f)); + Time.run(40f, () -> Damage.damage(waveTeam, spawn.x * tilesize, spawn.y * tilesize, shockwaveBase + Mathf.random(shockwaveRand), 99999999f)); } } } diff --git a/core/src/io/anuke/mindustry/content/Zones.java b/core/src/io/anuke/mindustry/content/Zones.java index 43b3a28d85..3b9325a98a 100644 --- a/core/src/io/anuke/mindustry/content/Zones.java +++ b/core/src/io/anuke/mindustry/content/Zones.java @@ -107,8 +107,8 @@ public class Zones implements ContentList{ }}; }}; - frozenForest = new Zone("frozenForest", new MapGenerator("frozenForest") - .decor(new Decoration(Blocks.snow, Blocks.sporeCluster, 0.05))){{ + frozenForest = new Zone("frozenForest", new MapGenerator("frozenForest", 2) + .decor(new Decoration(Blocks.snow, Blocks.sporeCluster, 0.02))){{ alwaysUnlocked = true; deployCost = ItemStack.with(Items.copper, 300); startingItems = ItemStack.with(Items.copper, 200); @@ -119,6 +119,11 @@ public class Zones implements ContentList{ waves = true; waveTimer = true; waveSpacing = 60 * 60 * 2; + spawns = Array.with( + new SpawnGroup(UnitTypes.dagger){{ + unitScaling = 2; + }} + ); }}; }}; diff --git a/core/src/io/anuke/mindustry/ui/dialogs/DeployDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/DeployDialog.java index a4ad93472f..ff2df1d31b 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/DeployDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/DeployDialog.java @@ -152,7 +152,7 @@ public class DeployDialog extends FloatingDialog{ } void buildButton(Zone zone, TextButton button){ - button.setDisabled(() -> !canUnlock(zone)); + button.setDisabled(() -> !canUnlock(zone) || !data.hasItems(zone.itemRequirements)); button.clicked(() -> { if(!data.isUnlocked(zone)){ data.removeItems(zone.itemRequirements); diff --git a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java index 08466fbe7e..e7aae6cb0c 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java @@ -154,6 +154,16 @@ public class HudFragment extends Fragment{ t.table("button", top -> top.add("$paused").pad(6f)); }); + parent.fill(t -> { + t.visible(() -> !state.is(State.menu)); + t.table("flat", c -> c.add("$nearpoint") + .update(l -> l.setColor(Tmp.c1.set(Color.WHITE).lerp(Color.SCARLET, Mathf.absin(Time.time(), 10f, 1f)))) + .get().setAlignment(Align.center, Align.center)) + .margin(6).update(u -> { + u.color.a = Mathf.lerpDelta(u.color.a, Mathf.num(world.spawner.playerNear()), 0.1f); + }).get().color.a = 0f; + }); + parent.fill(t -> { t.visible(() -> netServer.isWaitingForPlayers() && !state.is(State.menu)); t.table("button", c -> c.add("$waiting.players")); @@ -199,7 +209,7 @@ public class HudFragment extends Fragment{ }); parent.fill(t -> { - t.top().right(); + t.top().right().visible(() -> !state.is(State.menu)); TextButton button = Elements.newButton("$launch", Call::launchZone); diff --git a/core/src/io/anuke/mindustry/world/blocks/Floor.java b/core/src/io/anuke/mindustry/world/blocks/Floor.java index d6356b01b5..361b9c4c6f 100644 --- a/core/src/io/anuke/mindustry/world/blocks/Floor.java +++ b/core/src/io/anuke/mindustry/world/blocks/Floor.java @@ -113,12 +113,10 @@ public class Floor extends Block{ protected void drawEdges(Tile tile){ eq = 0; - Floor floor = tile.floor(); - for(int i = 0; i < 8; i++){ Point2 point = Geometry.d8[i]; Tile other = tile.getNearby(point); - if(other != null && other.floor().id < floor.id && other.floor().edges != null){ + if(other != null && doEdge(other.floor()) && other.floor().edges != null){ eq |= (1 << i); } } @@ -134,6 +132,14 @@ public class Floor extends Block{ } } + protected boolean doEdge(Floor other){ + return (other.id < id || edges == null) && other.edgeOnto(this); + } + + protected boolean edgeOnto(Floor other){ + return true; + } + int type(int i){ if(!eq(i - 1) && !eq(i + 1)){ //case 0: touching diff --git a/core/src/io/anuke/mindustry/world/blocks/OreBlock.java b/core/src/io/anuke/mindustry/world/blocks/OreBlock.java index 3d64d8509a..d5a1b83cc5 100644 --- a/core/src/io/anuke/mindustry/world/blocks/OreBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/OreBlock.java @@ -32,6 +32,18 @@ public class OreBlock extends Floor{ @Override public void draw(Tile tile){ Draw.rect(variantRegions[Mathf.randomSeed(tile.pos(), 0, Math.max(0, variantRegions.length - 1))], tile.worldx(), tile.worldy()); + + drawEdges(tile); + } + + @Override + public boolean doEdge(Floor floor){ + return floor != base && super.doEdge(floor); + } + + @Override + protected boolean edgeOnto(Floor other){ + return other != base; } public static Block get(Block floor, Item item){