Massive amount of bug/crash fixes, wave saving

This commit is contained in:
Anuken
2018-06-25 18:07:11 -04:00
parent ced11c88bc
commit 5a135e108a
22 changed files with 190 additions and 96 deletions

View File

@@ -26,6 +26,8 @@ public class Minimap extends Table {
Image image = new Image(new TextureRegionDrawable(new TextureRegion())){
@Override
public void draw(Batch batch, float parentAlpha) {
if(renderer.minimap().getRegion() == null) return;
TextureRegionDrawable draw = (TextureRegionDrawable)getDrawable();
draw.getRegion().setRegion(renderer.minimap().getRegion());
super.draw(batch, parentAlpha);

View File

@@ -3,17 +3,11 @@ package io.anuke.mindustry.ui.dialogs;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.utils.ObjectMap;
import io.anuke.mindustry.game.Difficulty;
import io.anuke.mindustry.game.GameMode;
import io.anuke.mindustry.io.Map;
import io.anuke.mindustry.io.MapMeta;
import io.anuke.mindustry.io.MapTileData;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.mapgen.WorldGenerator;
import io.anuke.ucore.core.Settings;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.entities.EntityPhysics;
import io.anuke.ucore.scene.event.Touchable;
import io.anuke.ucore.scene.ui.*;
import io.anuke.ucore.scene.ui.layout.Stack;
@@ -21,7 +15,6 @@ import io.anuke.ucore.scene.ui.layout.Table;
import io.anuke.ucore.scene.utils.Cursors;
import io.anuke.ucore.scene.utils.Elements;
import io.anuke.ucore.util.Bundles;
import io.anuke.ucore.util.Log;
import io.anuke.ucore.util.Mathf;
import static io.anuke.mindustry.Vars.*;
@@ -133,29 +126,8 @@ public class LevelDialog extends FloatingDialog{
Timers.run(5f, () -> {
Cursors.restoreCursor();
threads.run(() -> {
Timers.mark();
MapTileData data = WorldGenerator.generate();
Map map = new Map("generated-map", new MapMeta(0, new ObjectMap<>(), data.width(), data.height(), null), true, () -> null);
logic.reset();
world.beginMapLoad();
world.setMap(map);
int width = map.meta.width, height = map.meta.height;
Tile[][] tiles = world.createTiles(data.width(), data.height());
EntityPhysics.resizeTree(0, 0, width * tilesize, height * tilesize);
WorldGenerator.generate(tiles, data, true, Mathf.random(9999999));
world.endMapLoad();
Log.info("Time to generate: {0}", Timers.elapsed());
world.loadProceduralMap();
logic.play();
Gdx.app.postRunnable(ui.loadfrag::hide);
});
});

View File

@@ -64,7 +64,7 @@ public class BlocksFragment implements Fragment{
aright();
//make it only be shown when needed.
visible(() -> !state.is(State.menu) && shown);
visible(() -> !state.is(State.menu));
//create the main blocks table
mainTable = new table(){{
@@ -99,7 +99,7 @@ public class BlocksFragment implements Fragment{
}}.right().bottom().end().get();
visible(() -> !state.is(State.menu) && shown);
visible(() -> !state.is(State.menu));
}}.end().get();
@@ -278,8 +278,9 @@ public class BlocksFragment implements Fragment{
}
void toggle(boolean show, float t, Interpolation ip){
if(!show){
mainTable.actions(Actions.translateBy(0, -mainTable.getHeight() - descTable.getHeight(), t, ip), Actions.call(() -> shown = false));
if(shown){
shown = false;
mainTable.actions(Actions.translateBy(0, mainTable.getTranslation().y + (-mainTable.getHeight() - descTable.getHeight()), t, ip));
}else{
shown = true;
mainTable.actions(Actions.translateBy(0, -mainTable.getTranslation().y, t, ip));

View File

@@ -38,7 +38,7 @@ public class HudFragment implements Fragment{
private Label infolabel;
private Table lastUnlockTable;
private Table lastUnlockLayout;
private boolean shown = true;
private boolean shown = true, done = true;
private float dsize = 58;
private float isize = 40;
@@ -103,7 +103,6 @@ public class HudFragment implements Fragment{
new table() {{
touchable(Touchable.enabled);
visible(() -> shown);
addWaveTable();
}}.fillX().end();
@@ -262,7 +261,8 @@ public class HudFragment implements Fragment{
}
private void toggleMenus(){
if (wavetable.getActions().size != 0) return;
wavetable.clearActions();
infolabel.clearActions();
float dur = 0.3f;
Interpolation in = Interpolation.pow3Out;
@@ -270,9 +270,10 @@ public class HudFragment implements Fragment{
flip.getStyle().imageUp = Core.skin.getDrawable(shown ? "icon-arrow-down" : "icon-arrow-up");
if (shown) {
shown = false;
blockfrag.toggle(false, dur, in);
wavetable.actions(Actions.translateBy(0, wavetable.getHeight() + dsize, dur, in), Actions.call(() -> shown = false));
infolabel.actions(Actions.translateBy(0, wavetable.getHeight(), dur, in), Actions.call(() -> shown = false));
wavetable.actions(Actions.translateBy(0, (wavetable.getHeight() + dsize) - wavetable.getTranslation().y, dur, in));
infolabel.actions(Actions.translateBy(0, (wavetable.getHeight()) - wavetable.getTranslation().y, dur, in));
} else {
shown = true;
blockfrag.toggle(true, dur, in);