Fixed ridiculous screenshake, preparing for entity serialization

This commit is contained in:
Anuken
2017-08-23 17:38:25 -04:00
parent 3fa3456c2b
commit d6050c59db
6 changed files with 43 additions and 7 deletions

View File

@@ -294,6 +294,10 @@ public class Control extends RendererModule{
log("Load time taken: " + Timers.elapsed()); log("Load time taken: " + Timers.elapsed());
Renderer.clearTiles(); Renderer.clearTiles();
} }
if(Inputs.keyDown(Keys.SPACE)){
Effects.shake(6, 4);
}
} }
if(GameState.is(State.menu)){ if(GameState.is(State.menu)){
@@ -347,10 +351,14 @@ public class Control extends RendererModule{
smoothCamera(World.core.worldx(), World.core.worldy(), 0.4f); smoothCamera(World.core.worldx(), World.core.worldy(), 0.4f);
} }
updateShake(0.5f); float prex = camera.position.x, prey = camera.position.y;
updateShake(1f);
float prevx = camera.position.x, prevy = camera.position.y; float prevx = camera.position.x, prevy = camera.position.y;
clampCamera(-tilesize / 2f, -tilesize / 2f, World.pixsize - tilesize / 2f, World.pixsize - tilesize / 2f); clampCamera(-tilesize / 2f, -tilesize / 2f, World.pixsize - tilesize / 2f, World.pixsize - tilesize / 2f);
float deltax = camera.position.x - prex, deltay = camera.position.y - prey;
if(android){ if(android){
player.x += camera.position.x-prevx; player.x += camera.position.x-prevx;
player.y += camera.position.y-prevy; player.y += camera.position.y-prevy;
@@ -373,7 +381,7 @@ public class Control extends RendererModule{
Renderer.renderOverlay(); Renderer.renderOverlay();
batch.end(); batch.end();
camera.position.set(lastx, lasty, 0); camera.position.set(lastx - deltax, lasty - deltay, 0);
//recorder.update(); //recorder.update();
} }

View File

@@ -24,7 +24,7 @@ public class Vars{
//how much the zoom changes every zoom button press //how much the zoom changes every zoom button press
public static final int zoomScale = Math.round(Unit.dp.inPixels(1)); public static final int zoomScale = Math.round(Unit.dp.inPixels(1));
//if true, player speed will be increased, massive amounts of resources will be given on start, and other debug options will be available //if true, player speed will be increased, massive amounts of resources will be given on start, and other debug options will be available
public static boolean debug = false; public static boolean debug = true;
//number of save slots-- increasing may lead to layout issues //number of save slots-- increasing may lead to layout issues
public static final int saveSlots = 4; public static final int saveSlots = 4;

View File

@@ -1,5 +1,8 @@
package io.anuke.mindustry.entities; package io.anuke.mindustry.entities;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import com.badlogic.gdx.utils.ObjectMap; import com.badlogic.gdx.utils.ObjectMap;
import io.anuke.mindustry.Vars; import io.anuke.mindustry.Vars;
@@ -29,6 +32,14 @@ public class TileEntity extends Entity{
return this; return this;
} }
public void write(DataOutputStream stream){
}
public void read(TileEntity entity, DataInputStream stream){
}
public void onDeath(){ public void onDeath(){
dead = true; dead = true;
@@ -52,7 +63,6 @@ public class TileEntity extends Entity{
return other.owner instanceof Enemy; return other.owner instanceof Enemy;
} }
@Override @Override
public void update(){ public void update(){
if(health != 0 && !tile.block().name().contains("block") && if(health != 0 && !tile.block().name().contains("block") &&

View File

@@ -14,12 +14,15 @@ import com.badlogic.gdx.utils.TimeUtils;
import com.badlogic.gdx.utils.reflect.ClassReflection; import com.badlogic.gdx.utils.reflect.ClassReflection;
import io.anuke.mindustry.*; import io.anuke.mindustry.*;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.entities.Weapon; import io.anuke.mindustry.entities.Weapon;
import io.anuke.mindustry.entities.enemies.*; import io.anuke.mindustry.entities.enemies.*;
import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.resource.Item;
import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.Blocks; import io.anuke.mindustry.world.blocks.Blocks;
import io.anuke.mindustry.world.blocks.Conveyor.ConveyorEntity;
import io.anuke.mindustry.world.blocks.Turret.TurretEntity;
import io.anuke.ucore.entities.Entities; import io.anuke.ucore.entities.Entities;
import io.anuke.ucore.entities.Entity; import io.anuke.ucore.entities.Entity;
@@ -77,7 +80,7 @@ import io.anuke.ucore.entities.Entity;
*/ */
public class SaveIO{ public class SaveIO{
/**Save file version ID. Should be incremented every breaking release.*/ /**Save file version ID. Should be incremented every breaking release.*/
private static final int fileVersionID = 2; private static final int fileVersionID = 3;
private static FormatProvider provider = null; private static FormatProvider provider = null;
@@ -94,6 +97,17 @@ public class SaveIO{
put(enemyIDs.get(value), value); put(enemyIDs.get(value), value);
}}; }};
private static final ObjectMap<Class<? extends TileEntity>, Byte> tileIDs = new ObjectMap<Class<? extends TileEntity>, Byte>(){{
put(TileEntity.class, (byte)0);
put(TurretEntity.class, (byte)1);
put(ConveyorEntity.class, (byte)2);
}};
private static final ObjectMap<Byte, Class<? extends TileEntity>> idTiles = new ObjectMap<Byte, Class<? extends TileEntity>>(){{
for(Class<? extends TileEntity> value : tileIDs.keys())
put(tileIDs.get(value), value);
}};
public static void saveToSlot(int slot){ public static void saveToSlot(int slot){
write(fileFor(slot)); write(fileFor(slot));
} }
@@ -222,6 +236,10 @@ public class SaveIO{
stream.writeInt(tile.entity.health); //health stream.writeInt(tile.entity.health); //health
stream.writeByte(tile.entity.items.size); //amount of items stream.writeByte(tile.entity.items.size); //amount of items
//if(strea){
// stream.writeInt(tile.entity.);
//}
for(Item item : tile.entity.items.keys()){ for(Item item : tile.entity.items.keys()){
stream.writeByte(item.ordinal()); //item ID stream.writeByte(item.ordinal()); //item ID
stream.writeInt(tile.entity.items.get(item)); //item amount stream.writeInt(tile.entity.items.get(item)); //item amount

View File

@@ -86,7 +86,7 @@ public class Conveyor extends Block{
entity.convey.add(new ItemPos(item, pos, y*0.9f)); entity.convey.add(new ItemPos(item, pos, y*0.9f));
} }
static class ConveyorEntity extends TileEntity{ public static class ConveyorEntity extends TileEntity{
DelayedRemovalArray<ItemPos> convey = new DelayedRemovalArray<>(); DelayedRemovalArray<ItemPos> convey = new DelayedRemovalArray<>();
} }

View File

@@ -121,7 +121,7 @@ public class Turret extends Block{
out.damage = bullet.damage*Vars.multiplier; out.damage = bullet.damage*Vars.multiplier;
} }
static class TurretEntity extends TileEntity{ public static class TurretEntity extends TileEntity{
public TileEntity target; public TileEntity target;
public int ammo; public int ammo;
public float rotation; public float rotation;