Fixed bug with tile cache not updating after map change

This commit is contained in:
Anuken
2017-07-22 20:23:11 -04:00
parent ed6b49788d
commit a05f63343c
20 changed files with 90 additions and 27 deletions

View File

@@ -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;

View File

@@ -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);

View File

@@ -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)){

View File

@@ -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();

View File

@@ -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;

View File

@@ -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{

View File

@@ -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;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.entities;
package io.anuke.mindustry.entities.enemies;
import io.anuke.ucore.core.Draw;

View File

@@ -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{

View File

@@ -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;

View File

@@ -0,0 +1,5 @@
package io.anuke.ucore.function;
public interface BiConsumer<T, N>{
public void accept(T t, N n);
}

View File

@@ -0,0 +1,7 @@
package io.anuke.ucore.function;
import com.badlogic.gdx.math.Rectangle;
public interface BoundingBoxProvider<T>{
public void getBoundingBox(T type, Rectangle out);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -0,0 +1,5 @@
package io.anuke.ucore.function;
public interface Supplier<T>{
public T get();
}