From ff993a353d5e5e9c2b3cafb255495e4e2bdca74c Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 29 Nov 2017 23:20:15 -0500 Subject: [PATCH] Added new map --- core/assets/maps/blankmap.png | Bin 0 -> 757 bytes core/assets/maps/fortress.png | Bin 0 -> 4505 bytes core/src/io/anuke/mindustry/core/Control.java | 3 +- .../mindustry/entities/effect/DamageArea.java | 5 ++-- .../entities/enemies/BlastEnemy.java | 1 + .../mindustry/entities/enemies/Enemy.java | 3 +- core/src/io/anuke/mindustry/world/Map.java | 9 +++--- core/src/io/anuke/mindustry/world/World.java | 28 ++++++++++-------- .../types/production/NuclearReactor.java | 6 ++++ 9 files changed, 34 insertions(+), 21 deletions(-) create mode 100644 core/assets/maps/blankmap.png create mode 100644 core/assets/maps/fortress.png diff --git a/core/assets/maps/blankmap.png b/core/assets/maps/blankmap.png new file mode 100644 index 0000000000000000000000000000000000000000..52073f2a27431b06c7b93f1876839d524c31530f GIT binary patch literal 757 zcmeAS@N?(olHy`uVBq!ia0y~yU}OMc4mJh`hM1xiX$%YuY)RhkE)4%caKYZ?lNlHo zI14-?iy0WWg+Z8+Vb&Z81_lQ95>H=O_J`cE;+k4czwKoh7#Ji=Tq8=H^K)}k^GX<; zi&7IyQd1PlGfOfQ+&z5*!W;R-85o#iJzX3_DsH{K;>gHgz;R@Q;o9f-nIsM{cDC3> zdH!NlujM?zz`)GF!(hNbEe7>Wg1czcNa}?E^-M}Iexk{uZM!fboPmLX!PC{xWt~$( F697ToaXJ71 literal 0 HcmV?d00001 diff --git a/core/assets/maps/fortress.png b/core/assets/maps/fortress.png new file mode 100644 index 0000000000000000000000000000000000000000..d0d9eabca9140ddd63c663f6df87316bec4562bf GIT binary patch literal 4505 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 BlastEnemy(0).set(px, py).add()); } } } diff --git a/core/src/io/anuke/mindustry/entities/effect/DamageArea.java b/core/src/io/anuke/mindustry/entities/effect/DamageArea.java index e49c0e988b..9ba2140c3f 100644 --- a/core/src/io/anuke/mindustry/entities/effect/DamageArea.java +++ b/core/src/io/anuke/mindustry/entities/effect/DamageArea.java @@ -14,7 +14,8 @@ public class DamageArea{ public static void damageEntities(float x, float y, float radius, int damage){ damage(true, x, y, radius, damage); - if(!Vars.android){ + + if(!Vars.android && Vars.player.distanceTo(x, y) < radius){ Player player = Vars.player; int amount = calculateDamage(x, y, player.x, player.y, radius, damage); player.damage(amount); @@ -46,7 +47,7 @@ public class DamageArea{ } } - if(!Vars.android){ + if(!Vars.android && Vars.player.distanceTo(x, y) < radius){ Player player = Vars.player; int amount = calculateDamage(x, y, player.x, player.y, radius, damage); player.damage(amount); diff --git a/core/src/io/anuke/mindustry/entities/enemies/BlastEnemy.java b/core/src/io/anuke/mindustry/entities/enemies/BlastEnemy.java index 9bf13cc50d..9a40debd03 100644 --- a/core/src/io/anuke/mindustry/entities/enemies/BlastEnemy.java +++ b/core/src/io/anuke/mindustry/entities/enemies/BlastEnemy.java @@ -14,6 +14,7 @@ public class BlastEnemy extends Enemy{ bullet = null; turretrotatespeed = 0f; mass = 0.8f; + stopNearCore = false; heal(); } diff --git a/core/src/io/anuke/mindustry/entities/enemies/Enemy.java b/core/src/io/anuke/mindustry/entities/enemies/Enemy.java index 539648be3c..e87552cb22 100644 --- a/core/src/io/anuke/mindustry/entities/enemies/Enemy.java +++ b/core/src/io/anuke/mindustry/entities/enemies/Enemy.java @@ -36,6 +36,7 @@ public class Enemy extends DestructibleEntity{ protected int spawned = 0; protected float angle; protected boolean targetCore = false; + protected boolean stopNearCore = true; protected float mass = 1f; public int spawn; @@ -63,7 +64,7 @@ public class Enemy extends DestructibleEntity{ void move(){ Tile core = Vars.control.getCore(); - boolean nearCore = distanceTo(core.worldx(), core.worldy()) <= range - 18f; + boolean nearCore = distanceTo(core.worldx(), core.worldy()) <= range - 18f && stopNearCore; Vector2 vec; diff --git a/core/src/io/anuke/mindustry/world/Map.java b/core/src/io/anuke/mindustry/world/Map.java index 95bbdf52f7..6ab0013d87 100644 --- a/core/src/io/anuke/mindustry/world/Map.java +++ b/core/src/io/anuke/mindustry/world/Map.java @@ -6,18 +6,19 @@ public enum Map{ canyon("the canyon"), maze("it's okay."), volcano("desc"), + fortress("desc", true), tutorial(false), test1(false), test2(false); public final boolean visible; - public final boolean sandbox; public final String description; + public final boolean flipBase; public int width, height; private Map(boolean visible){ this.visible = visible; - this.sandbox = false; + this.flipBase = false; this.description = "Test map!"; } @@ -25,9 +26,9 @@ public enum Map{ this(description, false); } - private Map(String description, boolean sandbox){ + private Map(String description, boolean flipBase){ this.visible = true; - this.sandbox = sandbox; + this.flipBase = flipBase; this.description = description; } } diff --git a/core/src/io/anuke/mindustry/world/World.java b/core/src/io/anuke/mindustry/world/World.java index fff4ef6546..e2891fd724 100644 --- a/core/src/io/anuke/mindustry/world/World.java +++ b/core/src/io/anuke/mindustry/world/World.java @@ -184,26 +184,28 @@ public class World extends Module{ void setDefaultBlocks(){ int x = control.getCore().x, y = control.getCore().y; + int flip = Mathf.sign(!currentMap.flipBase); + int fr = currentMap.flipBase ? 2 : 0; - set(x, y-2, DistributionBlocks.conveyor, 1); - set(x, y-3, DistributionBlocks.conveyor, 1); + set(x, y-2*flip, DistributionBlocks.conveyor, 1 + fr); + set(x, y-3*flip, DistributionBlocks.conveyor, 1 + fr); for(int i = 0; i < 2; i ++){ int d = Mathf.sign(i-0.5f); - set(x+2*d, y-2, ProductionBlocks.stonedrill, d); - set(x+2*d, y-1, DistributionBlocks.conveyor, 1); - set(x+2*d, y, DistributionBlocks.conveyor, 1); - set(x+2*d, y+1, WeaponBlocks.doubleturret, 0); + set(x+2*d, y-2*flip, ProductionBlocks.stonedrill, d); + set(x+2*d, y-1*flip, DistributionBlocks.conveyor, 1 + fr); + set(x+2*d, y, DistributionBlocks.conveyor, 1 + fr); + set(x+2*d, y+1*flip, WeaponBlocks.doubleturret, 0 + fr); - set(x+1*d, y-3, DistributionBlocks.conveyor, 2*d); - set(x+2*d, y-3, DistributionBlocks.conveyor, 2*d); - set(x+2*d, y-4, DistributionBlocks.conveyor, 1); - set(x+2*d, y-5, DistributionBlocks.conveyor, 1); + set(x+1*d, y-3*flip, DistributionBlocks.conveyor, 2*d); + set(x+2*d, y-3*flip, DistributionBlocks.conveyor, 2*d); + set(x+2*d, y-4*flip, DistributionBlocks.conveyor, 1 + fr); + set(x+2*d, y-5*flip, DistributionBlocks.conveyor, 1 + fr); - set(x+3*d, y-5, ProductionBlocks.stonedrill, 0); - set(x+3*d, y-4, ProductionBlocks.stonedrill, 0); - set(x+3*d, y-3, ProductionBlocks.stonedrill, 0); + set(x+3*d, y-5*flip, ProductionBlocks.stonedrill, 0 + fr); + set(x+3*d, y-4*flip, ProductionBlocks.stonedrill, 0 + fr); + set(x+3*d, y-3*flip, ProductionBlocks.stonedrill, 0 + fr); } } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/NuclearReactor.java b/core/src/io/anuke/mindustry/world/blocks/types/production/NuclearReactor.java index e0bcacbf29..bd1879e331 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/NuclearReactor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/NuclearReactor.java @@ -87,6 +87,12 @@ public class NuclearReactor extends LiquidItemPowerGenerator{ public void onDestroyed(Tile tile){ super.onDestroyed(tile); + NuclearReactorEntity entity = tile.entity(); + + int fuel = entity.getItem(generateItem); + + if(fuel < 5) return; + int waves = 6; float delay = 8f;