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 literal 202582 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 TdkNc1*j~c+61JDH;3fS3;=Xys delta 6893 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 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){