diff --git a/build.gradle b/build.gradle index e99baef431..00148f35de 100644 --- a/build.gradle +++ b/build.gradle @@ -77,7 +77,7 @@ project(":core") { apply plugin: "java" dependencies { - compile fileTree(dir: '../core/lib', include: '*.jar') + //compile fileTree(dir: '../core/lib', include: '*.jar') //compile 'com.github.Anuken:ucore:b58e4bd' compile "com.badlogicgames.gdx:gdx:$gdxVersion" compile "com.badlogicgames.gdx:gdx-ai:1.8.1" diff --git a/core/lib/ucore.jar b/core/lib/ucore.jar index 00072af617..b6aa3b6ee1 100644 Binary files a/core/lib/ucore.jar and b/core/lib/ucore.jar differ diff --git a/core/src/io/anuke/mindustry/Control.java b/core/src/io/anuke/mindustry/Control.java index d74e6871f1..180833a7a9 100644 --- a/core/src/io/anuke/mindustry/Control.java +++ b/core/src/io/anuke/mindustry/Control.java @@ -10,7 +10,9 @@ import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.GameState.State; import io.anuke.mindustry.ai.Pathfind; -import io.anuke.mindustry.entities.*; +import io.anuke.mindustry.entities.Player; +import io.anuke.mindustry.entities.Weapon; +import io.anuke.mindustry.entities.enemies.*; import io.anuke.mindustry.input.AndroidInput; import io.anuke.mindustry.input.GestureHandler; import io.anuke.mindustry.input.Input; @@ -85,6 +87,7 @@ public class Control extends RendererModule{ public void reset(){ weapons.clear(); + Renderer.clearTiles(); weapons.add(Weapon.blaster); player.weapon = weapons.first(); @@ -108,6 +111,8 @@ public class Control extends RendererModule{ } public void play(){ + Renderer.clearTiles(); + player.x = World.core.worldx(); player.y = World.core.worldy()-8; diff --git a/core/src/io/anuke/mindustry/EffectLoader.java b/core/src/io/anuke/mindustry/EffectLoader.java index 3317c25dea..22878e320b 100644 --- a/core/src/io/anuke/mindustry/EffectLoader.java +++ b/core/src/io/anuke/mindustry/EffectLoader.java @@ -1,73 +1,73 @@ package io.anuke.mindustry; -import static io.anuke.mindustry.Vars.*; +import static io.anuke.mindustry.Vars.respawnduration; import com.badlogic.gdx.graphics.Color; import io.anuke.ucore.core.Draw; -import io.anuke.ucore.entities.Effect; +import io.anuke.ucore.core.Effects; import io.anuke.ucore.graphics.Hue; public class EffectLoader{ public static void create(){ - Effect.create("place", 16, e -> { + Effects.create("place", 16, e -> { Draw.thickness(3f - e.ifract() * 2f); - Draw.square(e.x, e.y, tilesize / 2f + e.ifract() * 3f); + Draw.square(e.x, e.y, Vars.tilesize / 2f + e.ifract() * 3f); Draw.reset(); }); - Effect.create("spark", 10, e -> { + Effects.create("spark", 10, e -> { Draw.thickness(1f); Draw.color(Hue.mix(Color.WHITE, Color.GRAY, e.ifract())); Draw.spikes(e.x, e.y, e.ifract() * 5f, 2, 8); Draw.reset(); }); - Effect.create("smelt", 10, e -> { + Effects.create("smelt", 10, e -> { Draw.thickness(1f); Draw.color(Hue.mix(Color.YELLOW, Color.RED, e.ifract())); Draw.spikes(e.x, e.y, e.ifract() * 5f, 2, 8); Draw.reset(); }); - Effect.create("break", 12, e -> { + Effects.create("break", 12, e -> { Draw.thickness(2f); Draw.color(Color.WHITE, Color.GRAY, e.ifract()); Draw.spikes(e.x, e.y, e.ifract() * 5f, 2, 5); Draw.reset(); }); - Effect.create("hit", 10, e -> { + Effects.create("hit", 10, e -> { Draw.thickness(1f); Draw.color(Hue.mix(Color.WHITE, Color.ORANGE, e.ifract())); Draw.spikes(e.x, e.y, e.ifract() * 3f, 2, 8); Draw.reset(); }); - Effect.create("shoot", 8, e -> { + Effects.create("shoot", 8, e -> { Draw.thickness(1f); Draw.color(Hue.mix(Color.WHITE, Color.GOLD, e.ifract())); Draw.spikes(e.x, e.y, e.ifract() * 2f, 2, 5); Draw.reset(); }); - Effect.create("shoot2", 8, e -> { + Effects.create("shoot2", 8, e -> { Draw.thickness(1f); Draw.color(Hue.mix(Color.WHITE, Color.SKY, e.ifract())); Draw.spikes(e.x, e.y, e.ifract() * 2f, 1, 5); Draw.reset(); }); - Effect.create("shoot3", 8, e -> { + Effects.create("shoot3", 8, e -> { Draw.thickness(1f); Draw.color(Hue.mix(Color.WHITE, Color.GOLD, e.ifract())); Draw.spikes(e.x, e.y, e.ifract() * 2f, 1, 5); Draw.reset(); }); - Effect.create("explosion", 15, e -> { + Effects.create("explosion", 15, e -> { Draw.thickness(2f); Draw.color(Hue.mix(Color.ORANGE, Color.GRAY, e.ifract())); Draw.spikes(e.x, e.y, 2f + e.ifract() * 3f, 4, 6); @@ -75,7 +75,7 @@ public class EffectLoader{ Draw.reset(); }); - Effect.create("coreexplosion", 13, e -> { + Effects.create("coreexplosion", 13, e -> { Draw.thickness(3f-e.ifract()*2f); Draw.color(Hue.mix(Color.ORANGE, Color.WHITE, e.ifract())); Draw.spikes(e.x, e.y, 5f + e.ifract() * 40f, 6, 6); @@ -83,28 +83,28 @@ public class EffectLoader{ Draw.reset(); }); - Effect.create("smoke", 100, e -> { + Effects.create("smoke", 100, e -> { Draw.color(Color.GRAY, new Color(0.3f, 0.3f, 0.3f, 1f), e.ifract()); float size = 7f-e.ifract()*7f; Draw.rect("circle", e.x, e.y, size, size); Draw.reset(); }); - Effect.create("spawn", 23, e -> { + Effects.create("spawn", 23, e -> { Draw.thickness(2f); Draw.color(Hue.mix(Color.DARK_GRAY, Color.SCARLET, e.ifract())); Draw.circle(e.x, e.y, 7f - e.ifract() * 6f); Draw.reset(); }); - Effect.create("ind", 100, e -> { + Effects.create("ind", 100, e -> { Draw.thickness(3f); Draw.color("royal"); Draw.circle(e.x, e.y, 3); Draw.reset(); }); - Effect.create("respawn", respawnduration, e -> { + Effects.create("respawn", respawnduration, e -> { Draw.tcolor(Color.SCARLET); Draw.tscl(0.25f); Draw.text("Respawning in " + (int)((e.lifetime-e.time)/60), e.x, e.y); diff --git a/core/src/io/anuke/mindustry/Renderer.java b/core/src/io/anuke/mindustry/Renderer.java index 1289322fe4..dc951edb8d 100644 --- a/core/src/io/anuke/mindustry/Renderer.java +++ b/core/src/io/anuke/mindustry/Renderer.java @@ -33,7 +33,6 @@ public class Renderer{ //render the entire map if(caches.size() == 0){ - for(int cx = 0; cx < chunksx; cx ++){ for(int cy = 0; cy < chunksy; cy ++){ Caches.begin(1600); @@ -102,6 +101,13 @@ public class Renderer{ } } + public static void clearTiles(){ + for(Cache cache : caches.values()) + cache.dispose(); + + caches.clear(); + } + public static void renderPixelOverlay(){ if(player.recipe != null && (!ui.hasMouse() || android)){ diff --git a/core/src/io/anuke/mindustry/ai/Pathfind.java b/core/src/io/anuke/mindustry/ai/Pathfind.java index d5cf38c504..ef66c49832 100644 --- a/core/src/io/anuke/mindustry/ai/Pathfind.java +++ b/core/src/io/anuke/mindustry/ai/Pathfind.java @@ -7,7 +7,7 @@ import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.World; -import io.anuke.mindustry.entities.Enemy; +import io.anuke.mindustry.entities.enemies.Enemy; import io.anuke.mindustry.world.Tile; public class Pathfind{ static MHueristic heuristic = new MHueristic(); diff --git a/core/src/io/anuke/mindustry/entities/TileEntity.java b/core/src/io/anuke/mindustry/entities/TileEntity.java index 1ce4ede4b3..a1bb0309e9 100644 --- a/core/src/io/anuke/mindustry/entities/TileEntity.java +++ b/core/src/io/anuke/mindustry/entities/TileEntity.java @@ -3,6 +3,7 @@ package io.anuke.mindustry.entities; import com.badlogic.gdx.utils.ObjectMap; import io.anuke.mindustry.Vars; +import io.anuke.mindustry.entities.enemies.Enemy; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.Blocks; diff --git a/core/src/io/anuke/mindustry/entities/BossEnemy.java b/core/src/io/anuke/mindustry/entities/enemies/BossEnemy.java similarity index 79% rename from core/src/io/anuke/mindustry/entities/BossEnemy.java rename to core/src/io/anuke/mindustry/entities/enemies/BossEnemy.java index 5153328c31..b11e999553 100644 --- a/core/src/io/anuke/mindustry/entities/BossEnemy.java +++ b/core/src/io/anuke/mindustry/entities/enemies/BossEnemy.java @@ -1,5 +1,6 @@ -package io.anuke.mindustry.entities; +package io.anuke.mindustry.entities.enemies; +import io.anuke.mindustry.entities.BulletType; import io.anuke.ucore.core.Draw; public class BossEnemy extends Enemy{ diff --git a/core/src/io/anuke/mindustry/entities/Enemy.java b/core/src/io/anuke/mindustry/entities/enemies/Enemy.java similarity index 93% rename from core/src/io/anuke/mindustry/entities/Enemy.java rename to core/src/io/anuke/mindustry/entities/enemies/Enemy.java index 7e2bbd903b..104d11ca83 100644 --- a/core/src/io/anuke/mindustry/entities/Enemy.java +++ b/core/src/io/anuke/mindustry/entities/enemies/Enemy.java @@ -1,10 +1,13 @@ -package io.anuke.mindustry.entities; +package io.anuke.mindustry.entities.enemies; import com.badlogic.gdx.math.Vector2; import io.anuke.mindustry.Vars; import io.anuke.mindustry.World; import io.anuke.mindustry.ai.Pathfind; +import io.anuke.mindustry.entities.Bullet; +import io.anuke.mindustry.entities.BulletType; +import io.anuke.mindustry.entities.Player; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Draw; import io.anuke.ucore.core.Effects; diff --git a/core/src/io/anuke/mindustry/entities/FastEnemy.java b/core/src/io/anuke/mindustry/entities/enemies/FastEnemy.java similarity index 86% rename from core/src/io/anuke/mindustry/entities/FastEnemy.java rename to core/src/io/anuke/mindustry/entities/enemies/FastEnemy.java index 613ba00846..3918a3b1d5 100644 --- a/core/src/io/anuke/mindustry/entities/FastEnemy.java +++ b/core/src/io/anuke/mindustry/entities/enemies/FastEnemy.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.entities; +package io.anuke.mindustry.entities.enemies; import io.anuke.ucore.core.Draw; diff --git a/core/src/io/anuke/mindustry/entities/FlameEnemy.java b/core/src/io/anuke/mindustry/entities/enemies/FlameEnemy.java similarity index 79% rename from core/src/io/anuke/mindustry/entities/FlameEnemy.java rename to core/src/io/anuke/mindustry/entities/enemies/FlameEnemy.java index f911d43abe..6d4f4824af 100644 --- a/core/src/io/anuke/mindustry/entities/FlameEnemy.java +++ b/core/src/io/anuke/mindustry/entities/enemies/FlameEnemy.java @@ -1,5 +1,6 @@ -package io.anuke.mindustry.entities; +package io.anuke.mindustry.entities.enemies; +import io.anuke.mindustry.entities.BulletType; import io.anuke.ucore.core.Draw; public class FlameEnemy extends Enemy{ diff --git a/core/src/io/anuke/mindustry/world/blocks/Turret.java b/core/src/io/anuke/mindustry/world/blocks/Turret.java index 15050e6072..4cfd5dd403 100644 --- a/core/src/io/anuke/mindustry/world/blocks/Turret.java +++ b/core/src/io/anuke/mindustry/world/blocks/Turret.java @@ -6,6 +6,7 @@ import com.badlogic.gdx.math.MathUtils; import io.anuke.mindustry.Vars; import io.anuke.mindustry.entities.*; +import io.anuke.mindustry.entities.enemies.Enemy; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/ucore/function/BiConsumer.java b/core/src/io/anuke/ucore/function/BiConsumer.java new file mode 100644 index 0000000000..394c4ec78e --- /dev/null +++ b/core/src/io/anuke/ucore/function/BiConsumer.java @@ -0,0 +1,5 @@ +package io.anuke.ucore.function; + +public interface BiConsumer{ + public void accept(T t, N n); +} diff --git a/core/src/io/anuke/ucore/function/BoundingBoxProvider.java b/core/src/io/anuke/ucore/function/BoundingBoxProvider.java new file mode 100644 index 0000000000..eef5bfd4e0 --- /dev/null +++ b/core/src/io/anuke/ucore/function/BoundingBoxProvider.java @@ -0,0 +1,7 @@ +package io.anuke.ucore.function; + +import com.badlogic.gdx.math.Rectangle; + +public interface BoundingBoxProvider{ + public void getBoundingBox(T type, Rectangle out); +} diff --git a/core/src/io/anuke/ucore/function/CollisionMap.java b/core/src/io/anuke/ucore/function/CollisionMap.java new file mode 100644 index 0000000000..4165664ca2 --- /dev/null +++ b/core/src/io/anuke/ucore/function/CollisionMap.java @@ -0,0 +1,7 @@ +package io.anuke.ucore.function; + +import io.anuke.ucore.aabb.Collider; + +public interface CollisionMap{ + public boolean valid(Collider c, float x, float y); +} diff --git a/core/src/io/anuke/ucore/function/ContactFilter.java b/core/src/io/anuke/ucore/function/ContactFilter.java new file mode 100644 index 0000000000..0502c9af26 --- /dev/null +++ b/core/src/io/anuke/ucore/function/ContactFilter.java @@ -0,0 +1,7 @@ +package io.anuke.ucore.function; + +import io.anuke.ucore.aabb.Collider; + +public interface ContactFilter{ + public boolean collide(Collider a, Collider b); +} diff --git a/core/src/io/anuke/ucore/function/ContactListener.java b/core/src/io/anuke/ucore/function/ContactListener.java new file mode 100644 index 0000000000..5f3ce4a2e5 --- /dev/null +++ b/core/src/io/anuke/ucore/function/ContactListener.java @@ -0,0 +1,7 @@ +package io.anuke.ucore.function; + +import io.anuke.ucore.aabb.Collider; + +public interface ContactListener{ + public void onContact(Collider a, Collider b); +} diff --git a/core/src/io/anuke/ucore/function/EffectProvider.java b/core/src/io/anuke/ucore/function/EffectProvider.java new file mode 100644 index 0000000000..780badc1e0 --- /dev/null +++ b/core/src/io/anuke/ucore/function/EffectProvider.java @@ -0,0 +1,7 @@ +package io.anuke.ucore.function; + +import com.badlogic.gdx.graphics.Color; + +public interface EffectProvider{ + public void createEffect(String name, Color color, float x, float y); +} diff --git a/core/src/io/anuke/ucore/function/EffectRenderer.java b/core/src/io/anuke/ucore/function/EffectRenderer.java index 826b390d16..7b3b988398 100644 --- a/core/src/io/anuke/ucore/function/EffectRenderer.java +++ b/core/src/io/anuke/ucore/function/EffectRenderer.java @@ -1,7 +1,7 @@ package io.anuke.ucore.function; -import io.anuke.ucore.entities.Effect; +import io.anuke.ucore.core.Effects.EffectContainer; public interface EffectRenderer{ - public void render(Effect effect); + public void render(EffectContainer effect); } diff --git a/core/src/io/anuke/ucore/function/Supplier.java b/core/src/io/anuke/ucore/function/Supplier.java new file mode 100644 index 0000000000..47c8e44f34 --- /dev/null +++ b/core/src/io/anuke/ucore/function/Supplier.java @@ -0,0 +1,5 @@ +package io.anuke.ucore.function; + +public interface Supplier{ + public T get(); +}