Debugging, cleanup

This commit is contained in:
Anuken
2018-12-27 20:26:18 -05:00
parent 3fc278c7b7
commit 1e8b844eac
10 changed files with 47 additions and 70 deletions

View File

@@ -209,7 +209,7 @@ public class Mechs implements ContentList{
Shaders.build.color.set(Palette.accent).a = player.shootHeat; Shaders.build.color.set(Palette.accent).a = player.shootHeat;
Draw.shader(Shaders.build); Draw.shader(Shaders.build);
Draw.alpha(1f); Draw.alpha(1f);
Draw.rect(armorRegion, player.snappedX(), player.snappedY(), player.rotation); Draw.rect(armorRegion, player.x, player.y, player.rotation);
Draw.shader(Shaders.mix); Draw.shader(Shaders.mix);
Draw.color(1f, 1f, 1f, alpha); Draw.color(1f, 1f, 1f, alpha);
} }
@@ -273,7 +273,7 @@ public class Mechs implements ContentList{
Draw.color(Palette.lancerLaser); Draw.color(Palette.lancerLaser);
Draw.alpha(scl/2f); Draw.alpha(scl/2f);
Draw.blend(Blending.additive); Draw.blend(Blending.additive);
Draw.rect(shield, player.snappedX() + Mathf.range(scl/2f), player.snappedY() + Mathf.range(scl/2f), player.rotation - 90); Draw.rect(shield, player.x + Mathf.range(scl/2f), player.y + Mathf.range(scl/2f), player.rotation - 90);
Draw.blend(); Draw.blend();
Draw.shader(Shaders.mix); Draw.shader(Shaders.mix);
Draw.color(); Draw.color();

View File

@@ -56,7 +56,6 @@ public class Control implements ApplicationListener{
unlocks = new Unlocks(); unlocks = new Unlocks();
Core.input.setCatch(KeyCode.BACK, true); Core.input.setCatch(KeyCode.BACK, true);
Core.keybinds.setDefaults(Binding.values());
Effects.setShakeFalloff(10000f); Effects.setShakeFalloff(10000f);
@@ -279,7 +278,7 @@ public class Control implements ApplicationListener{
if(!Core.settings.getBool("4.0-warning-2", false)){ if(!Core.settings.getBool("4.0-warning-2", false)){
Time.run(5f, () -> { Time.run(5f, () -> {
FloatingDialog dialog = new FloatingDialog("[accent]WARNING![]"); FloatingDialog dialog = new FloatingDialog("WARNING!");
dialog.buttons().addButton("$text.ok", () -> { dialog.buttons().addButton("$text.ok", () -> {
dialog.hide(); dialog.hide();
Core.settings.put("4.0-warning-2", true); Core.settings.put("4.0-warning-2", true);
@@ -294,13 +293,6 @@ public class Control implements ApplicationListener{
} }
} }
/** Called from main logic thread.*/
public void runUpdateLogic(){
if(!state.is(State.menu)){
renderer.minimap.updateUnitArray();
}
}
@Override @Override
public void update(){ public void update(){

View File

@@ -4,12 +4,11 @@ import io.anuke.annotations.Annotations.Loc;
import io.anuke.annotations.Annotations.Remote; import io.anuke.annotations.Annotations.Remote;
import io.anuke.arc.ApplicationListener; import io.anuke.arc.ApplicationListener;
import io.anuke.arc.Events; import io.anuke.arc.Events;
import io.anuke.arc.collection.Array;
import io.anuke.arc.entities.Entities; import io.anuke.arc.entities.Entities;
import io.anuke.arc.entities.EntityGroup; import io.anuke.arc.entities.EntityGroup;
import io.anuke.arc.entities.EntityQuery; import io.anuke.arc.entities.EntityQuery;
import io.anuke.arc.collection.Array;
import io.anuke.arc.util.Time; import io.anuke.arc.util.Time;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.game.EventType.*; import io.anuke.mindustry.game.EventType.*;
@@ -172,10 +171,6 @@ public class Logic implements ApplicationListener{
@Override @Override
public void update(){ public void update(){
if(Vars.control != null){
control.runUpdateLogic();
}
if(!state.is(State.menu)){ if(!state.is(State.menu)){
if(!state.isPaused()){ if(!state.isPaused()){

View File

@@ -18,11 +18,10 @@ import io.anuke.arc.graphics.g2d.SpriteBatch;
import io.anuke.arc.math.Mathf; import io.anuke.arc.math.Mathf;
import io.anuke.arc.math.geom.Rectangle; import io.anuke.arc.math.geom.Rectangle;
import io.anuke.arc.math.geom.Vector2; import io.anuke.arc.math.geom.Vector2;
import io.anuke.arc.util.Time;
import io.anuke.arc.util.pooling.Pools; import io.anuke.arc.util.pooling.Pools;
import io.anuke.mindustry.content.fx.Fx; import io.anuke.mindustry.content.fx.Fx;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.entities.Player; import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.entities.Unit; import io.anuke.mindustry.entities.Unit;
import io.anuke.mindustry.entities.effect.GroundEffectEntity; import io.anuke.mindustry.entities.effect.GroundEffectEntity;
import io.anuke.mindustry.entities.effect.GroundEffectEntity.GroundEffect; import io.anuke.mindustry.entities.effect.GroundEffectEntity.GroundEffect;
@@ -32,7 +31,6 @@ import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.graphics.*;
import static io.anuke.arc.Core.*; import static io.anuke.arc.Core.*;
import static io.anuke.arc.Core.graphics;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
public class Renderer implements ApplicationListener{ public class Renderer implements ApplicationListener{
@@ -44,6 +42,7 @@ public class Renderer implements ApplicationListener{
private int targetscale = baseCameraScale; private int targetscale = baseCameraScale;
private Rectangle rect = new Rectangle(), rect2 = new Rectangle(); private Rectangle rect = new Rectangle(), rect2 = new Rectangle();
private Vector2 avgPosition = new Vector2(); private Vector2 avgPosition = new Vector2();
private float shakeIntensity, shaketime;
public Renderer(){ public Renderer(){
batch = new SpriteBatch(4096); batch = new SpriteBatch(4096);
@@ -52,6 +51,11 @@ public class Renderer implements ApplicationListener{
Shaders.init(); Shaders.init();
Effects.setScreenShakeProvider((intensity, duration) -> {
shakeIntensity = Math.max(intensity, shakeIntensity);
shaketime = Math.max(shaketime, duration);
});
Effects.setEffectProvider((effect, color, x, y, rotation, data) -> { Effects.setEffectProvider((effect, color, x, y, rotation, data) -> {
if(effect == Fx.none) return; if(effect == Fx.none) return;
if(Core.settings.getBool("effects")){ if(Core.settings.getBool("effects")){
@@ -95,6 +99,13 @@ public class Renderer implements ApplicationListener{
@Override @Override
public void update(){ public void update(){
camera.position.set(players[0].x, players[0].y);
graphics.clear(Color.PURPLE);
Draw.proj(camera.projection());
players[0].drawAll();
Draw.flush();
/*
//TODO hack, find source of this bug //TODO hack, find source of this bug
Color.WHITE.set(1f, 1f, 1f, 1f); Color.WHITE.set(1f, 1f, 1f, 1f);
@@ -119,7 +130,7 @@ public class Renderer implements ApplicationListener{
float prex = camera.position.x, prey = camera.position.y; float prex = camera.position.x, prey = camera.position.y;
//TODO update screenshake //TODO update screenshake
//updateShake(0.75f); updateShake(0.75f);
float deltax = camera.position.x - prex, deltay = camera.position.y - prey; float deltax = camera.position.x - prex, deltay = camera.position.y - prey;
float lastx = camera.position.x, lasty = camera.position.y; float lastx = camera.position.x, lasty = camera.position.y;
@@ -136,11 +147,24 @@ public class Renderer implements ApplicationListener{
if(!ui.chatfrag.chatOpen()){ if(!ui.chatfrag.chatOpen()){
//TODO does not work //TODO does not work
//ScreenRecorder.record(); //this only does something if CoreGifRecorder is on the class path, which it usually isn't //ScreenRecorder.record(); //this only does something if CoreGifRecorder is on the class path, which it usually isn't
}*/
}
void updateShake(float scale){
if(shaketime > 0){
float intensity = shakeIntensity * (settings.getInt("screenshake", 4) / 4f) * scale;
camera.position.add(Mathf.range(intensity), Mathf.range(intensity));
shakeIntensity -= 0.25f * Time.delta();
shaketime -= Time.delta();
shakeIntensity = Mathf.clamp(shakeIntensity, 0f, 100f);
}else{
shakeIntensity = 0f;
} }
} }
public void draw(){ public void draw(){
camera.update(); camera.update();
if(Float.isNaN(camera.position.x) || Float.isNaN(camera.position.y)){ if(Float.isNaN(camera.position.x) || Float.isNaN(camera.position.y)){
camera.position.x = players[0].x; camera.position.x = players[0].x;
camera.position.y = players[0].y; camera.position.y = players[0].y;
@@ -259,10 +283,10 @@ public class Renderer implements ApplicationListener{
Shaders.mix.color.set(Color.WHITE); Shaders.mix.color.set(Color.WHITE);
//Graphics.beginShaders(Shaders.outline); //Graphics.beginShaders(Shaders.outline);
//Draw.shader(Shaders.mix, true); Draw.shader(Shaders.mix, true);
drawAndInterpolate(unitGroups[team.ordinal()], u -> u.isFlying() == flying && !u.isDead(), Unit::drawAll); drawAndInterpolate(unitGroups[team.ordinal()], u -> u.isFlying() == flying && !u.isDead(), Unit::drawAll);
drawAndInterpolate(playerGroup, p -> p.isFlying() == flying && p.getTeam() == team, Unit::drawAll); drawAndInterpolate(playerGroup, p -> p.isFlying() == flying && p.getTeam() == team, Unit::drawAll);
//Draw.shader(); Draw.shader();
blocks.drawTeamBlocks(Layer.turret, team); blocks.drawTeamBlocks(Layer.turret, team);
//Graphics.endShaders(); //Graphics.endShaders();

View File

@@ -103,7 +103,10 @@ public class UI implements ApplicationListener{
TooltipManager.getInstance().animations = false; TooltipManager.getInstance().animations = false;
Core.settings.setErrorHandler(e -> Time.run(1f, () -> showError("Failed to access local storage.\nSettings will not be saved."))); Core.settings.setErrorHandler(e -> {
e.printStackTrace();
Core.app.post(() -> showError("Failed to access local storage.\nSettings will not be saved."));
});
Colors.put("accent", Palette.accent); Colors.put("accent", Palette.accent);

View File

@@ -399,7 +399,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
tools.row(); tools.row();
tools.table("underline", t -> t.add("$text.editor.teams")) tools.table("underline", t -> t.add("$text.editor.teams"))
.colspan(3).height(40).width(size * 3f).padBottom(3); .colspan(3).height(40).width(size * 3f + 3f).padBottom(3);
tools.row(); tools.row();
@@ -437,7 +437,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
mid.row(); mid.row();
mid.table("underline", t -> t.add("$text.editor.elevation")) mid.table("underline", t -> t.add("$text.editor.elevation"))
.colspan(3).height(40).width(size * 3f); .colspan(3).height(40).width(size * 3f + 3f);
mid.row(); mid.row();
@@ -450,8 +450,8 @@ public class MapEditorDialog extends Dialog implements Disposable{
.size(size).get().setAlignment(Align.center, Align.center); .size(size).get().setAlignment(Align.center, Align.center);
t.addImageButton("icon-arrow-right", "clear-partial", 16 * 2f, () -> editor.setDrawElevation(editor.getDrawElevation() + 1)) t.addImageButton("icon-arrow-right", "clear-partial", 16 * 2f, () -> editor.setDrawElevation(editor.getDrawElevation() + 1))
.disabled(b -> editor.getDrawElevation() >= 63).size(size); .disabled(b -> editor.getDrawElevation() >= 63).size(size).name("aaaaa");
}).colspan(3).height(size).width(size * 3f); }).colspan(3).height(size).width(size * 3f + 3f);
}).margin(0).left().growY(); }).margin(0).left().growY();

View File

@@ -3,7 +3,6 @@ package io.anuke.mindustry.entities;
import io.anuke.annotations.Annotations.Loc; import io.anuke.annotations.Annotations.Loc;
import io.anuke.annotations.Annotations.Remote; import io.anuke.annotations.Annotations.Remote;
import io.anuke.arc.Core; import io.anuke.arc.Core;
import io.anuke.arc.collection.Bits;
import io.anuke.arc.collection.Queue; import io.anuke.arc.collection.Queue;
import io.anuke.arc.entities.Effects; import io.anuke.arc.entities.Effects;
import io.anuke.arc.entities.EntityGroup; import io.anuke.arc.entities.EntityGroup;
@@ -285,7 +284,6 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
@Override @Override
public void drawShadow(float offsetX, float offsetY){ public void drawShadow(float offsetX, float offsetY){
float x = snappedX(), y = snappedY();
float scl = mech.flying ? 1f : boostHeat / 2f; float scl = mech.flying ? 1f : boostHeat / 2f;
Draw.rect(mech.iconRegion, x + offsetX * scl, y + offsetY * scl, rotation - 90); Draw.rect(mech.iconRegion, x + offsetX * scl, y + offsetY * scl, rotation - 90);
@@ -295,8 +293,6 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
public void draw(){ public void draw(){
if(dead) return; if(dead) return;
float x = snappedX(), y = snappedY();
if(!movement.isZero() && moved && !state.isPaused()){ if(!movement.isZero() && moved && !state.isPaused()){
walktime += movement.len() / 0.7f * getFloorOn().speedMultiplier; walktime += movement.len() / 0.7f * getFloorOn().speedMultiplier;
baseRotation = Mathf.slerpDelta(baseRotation, movement.angle(), 0.13f); baseRotation = Mathf.slerpDelta(baseRotation, movement.angle(), 0.13f);
@@ -366,8 +362,6 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
@Override @Override
public void drawStats(){ public void drawStats(){
float x = snappedX(), y = snappedY();
Draw.color(Color.BLACK, team.color, healthf() + Mathf.absin(Time.time(), healthf() * 5f, 1f - healthf())); Draw.color(Color.BLACK, team.color, healthf() + Mathf.absin(Time.time(), healthf() * 5f, 1f - healthf()));
Draw.alpha(hitTime / hitDuration); Draw.alpha(hitTime / hitDuration);
Draw.rect(getPowerCellRegion(), x + Angles.trnsx(rotation, mech.cellTrnsY, 0f), y + Angles.trnsy(rotation, mech.cellTrnsY, 0f), rotation - 90); Draw.rect(getPowerCellRegion(), x + Angles.trnsx(rotation, mech.cellTrnsY, 0f), y + Angles.trnsy(rotation, mech.cellTrnsY, 0f), rotation - 90);
@@ -390,14 +384,6 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
} }
} }
public float snappedX(){
return snapCamera && isLocal ? (int) (x + 0.0001f) : x;
}
public float snappedY(){
return snapCamera && isLocal ? (int) (y + 0.0001f) : y;
}
public void drawName(){ public void drawName(){
BitmapFont font = Core.scene.skin.getFont("default-font"); BitmapFont font = Core.scene.skin.getFont("default-font");
GlyphLayout layout = Pools.obtain(GlyphLayout.class, GlyphLayout::new); GlyphLayout layout = Pools.obtain(GlyphLayout.class, GlyphLayout::new);

View File

@@ -14,7 +14,7 @@ import io.anuke.arc.util.Disposable;
public class IndexedRenderer implements Disposable{ public class IndexedRenderer implements Disposable{
private final static int vsize = 5; private final static int vsize = 5;
private Shader program = createDefaultShader(); private Shader program = BatchShader.create();
private Mesh mesh; private Mesh mesh;
private float[] tmpVerts = new float[vsize * 6]; private float[] tmpVerts = new float[vsize * 6];
private float[] vertices; private float[] vertices;
@@ -28,33 +28,6 @@ public class IndexedRenderer implements Disposable{
resize(sprites); resize(sprites);
} }
static public Shader createDefaultShader(){
String vertexShader = "attribute vec4 " + Shader.POSITION_ATTRIBUTE + ";\n" //
+ "attribute vec2 " + Shader.TEXCOORD_ATTRIBUTE + "0;\n" //
+ "uniform mat4 u_projTrans;\n" //
+ "varying vec2 v_texCoords;\n" //
+ "\n" //
+ "void main()\n" //
+ "{\n" //
+ " v_texCoords = " + Shader.TEXCOORD_ATTRIBUTE + "0;\n" //
+ " gl_Position = u_projTrans * " + Shader.POSITION_ATTRIBUTE + ";\n" //
+ "}\n";
String fragmentShader = "#ifdef GL_ES\n" //
+ "#define LOWP lowp\n" //
+ "precision mediump float;\n" //
+ "#else\n" //
+ "#define LOWP \n" //
+ "#endif\n" //
+ "varying vec2 v_texCoords;\n" //
+ "uniform sampler2D u_texture;\n" //
+ "void main()\n"//
+ "{\n" //
+ " gl_FragColor = texture2D(u_texture, v_texCoords);\n" //
+ "}";
return new Shader(vertexShader, fragmentShader);
}
public void render(Texture texture){ public void render(Texture texture){
Core.gl.glEnable(GL20.GL_BLEND); Core.gl.glEnable(GL20.GL_BLEND);

View File

@@ -67,6 +67,8 @@ public class MinimapRenderer implements Disposable{
} }
public void drawEntities(float x, float y, float w, float h){ public void drawEntities(float x, float y, float w, float h){
updateUnitArray();
int sz = baseSize * zoom; int sz = baseSize * zoom;
float dx = (Core.camera.position.x / tilesize); float dx = (Core.camera.position.x / tilesize);
float dy = (Core.camera.position.y / tilesize); float dy = (Core.camera.position.y / tilesize);

View File

@@ -6,6 +6,7 @@ import io.anuke.arc.util.I18NBundle;
import io.anuke.mindustry.Vars; import io.anuke.mindustry.Vars;
import io.anuke.arc.util.Time; import io.anuke.arc.util.Time;
import io.anuke.arc.util.Log; import io.anuke.arc.util.Log;
import io.anuke.mindustry.input.Binding;
import java.util.Locale; import java.util.Locale;
@@ -15,6 +16,7 @@ public class BundleLoader{
public static void load(){ public static void load(){
Core.settings.defaults("locale", "default"); Core.settings.defaults("locale", "default");
Core.keybinds.setDefaults(Binding.values());
Core.settings.load(); Core.settings.load();
loadBundle(); loadBundle();
} }