diff --git a/core/assets-raw/sprites/ui/button-right-down.9.png b/core/assets-raw/sprites/ui/button-right-down.9.png index 7f2a96cd21..475f255934 100644 Binary files a/core/assets-raw/sprites/ui/button-right-down.9.png and b/core/assets-raw/sprites/ui/button-right-down.9.png differ diff --git a/core/assets-raw/sprites/ui/button-right-over.9.png b/core/assets-raw/sprites/ui/button-right-over.9.png index 732a0d4797..c764c18dab 100644 Binary files a/core/assets-raw/sprites/ui/button-right-over.9.png and b/core/assets-raw/sprites/ui/button-right-over.9.png differ diff --git a/core/assets-raw/sprites/ui/button-right.9.png b/core/assets-raw/sprites/ui/button-right.9.png index dfb9888a2d..2c8c4bb1e0 100644 Binary files a/core/assets-raw/sprites/ui/button-right.9.png and b/core/assets-raw/sprites/ui/button-right.9.png differ diff --git a/core/assets/shaders/blockpreview.fragment b/core/assets/shaders/blockpreview.fragment index 0f571d632b..2712b1ceb2 100644 --- a/core/assets/shaders/blockpreview.fragment +++ b/core/assets/shaders/blockpreview.fragment @@ -32,7 +32,7 @@ void main() { vec2 coord = t / v; vec4 c = texture2D(u_texture, t); - if(cont(t, v) ){ + if(cont(t, v)){ gl_FragColor = u_color; }else{ gl_FragColor = vec4(0.0); diff --git a/core/assets/shaders/build.fragment b/core/assets/shaders/build.fragment index a5bd5c05f1..35a956c35a 100644 --- a/core/assets/shaders/build.fragment +++ b/core/assets/shaders/build.fragment @@ -3,6 +3,8 @@ precision mediump float; precision mediump int; #endif +#define step 3.0 + uniform sampler2D u_texture; uniform float u_time; @@ -15,27 +17,39 @@ uniform vec2 u_texsize; varying vec4 v_color; varying vec2 v_texCoord; -float rand(vec2 co){ - return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453); -} - bool id(vec4 v){ return v.a > 0.1; } +bool id(vec2 coords, vec4 base){ + vec4 target = texture2D(u_texture, coords); + return target.a < 0.1 || (coords.x < u_uv.x || coords.y < u_uv.y || coords.x > u_uv2.x || coords.y > u_uv2.y); +} + +bool cont(vec2 T, vec2 v){ + vec4 base = texture2D(u_texture, T); + return base.a > 0.1 && + (id(T + vec2(0, step) * v, base) || id(T + vec2(0, -step) * v, base) || + id(T + vec2(step, 0) * v, base) || id(T + vec2(-step, 0) * v, base) || + id(T + vec2(step, step) * v, base) || id(T + vec2(-step, -step) * v, base) || + id(T + vec2(step, -step) * v, base) || id(T + vec2(-step, step) * v, base)); +} + void main() { vec2 coords = (v_texCoord.xy - u_uv) / (u_uv2 - u_uv); vec2 t = v_texCoord.xy; + vec2 v = vec2(1.0/u_texsize.x, 1.0/u_texsize.y); vec4 c = texture2D(u_texture, v_texCoord.xy); - - if(1.0-abs(coords.x - 0.5)*2.0 < 1.0-u_progress){ + bool outl = cont(t, v); + + if(1.0-abs(coords.x - 0.5)*2.0 < 1.0-u_progress && !outl){ c = vec4(0.0); } if(c.a > 0.01){ float f = abs(sin(coords.x*2.0 + u_time)); - if(f > 0.9 ) + if(f > 0.9 || outl) f = 1.0; else f = 0.0; diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index f34ff4d451..c5ff193236 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/src/io/anuke/mindustry/core/NetServer.java b/core/src/io/anuke/mindustry/core/NetServer.java index bb3c7f72ca..fceb8136af 100644 --- a/core/src/io/anuke/mindustry/core/NetServer.java +++ b/core/src/io/anuke/mindustry/core/NetServer.java @@ -52,7 +52,7 @@ import static io.anuke.mindustry.Vars.*; public class NetServer implements ApplicationListener{ public final static int maxSnapshotSize = 430; - private final static float serverSyncTime = 40, kickDuration = 30 * 1000; + private final static float serverSyncTime = 4, kickDuration = 30 * 1000; private final static Vector2 vector = new Vector2(); private final static Rectangle viewport = new Rectangle(); private final static Array returnArray = new Array<>(); diff --git a/core/src/io/anuke/mindustry/entities/type/Unit.java b/core/src/io/anuke/mindustry/entities/type/Unit.java index e2ab5f97db..207f6eca2f 100644 --- a/core/src/io/anuke/mindustry/entities/type/Unit.java +++ b/core/src/io/anuke/mindustry/entities/type/Unit.java @@ -264,6 +264,7 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ } if(isFlying()){ + drownTime = 0f; move(velocity.x * Time.delta(), velocity.y * Time.delta()); }else{ boolean onLiquid = floor.isLiquid; diff --git a/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java b/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java index e0b959e1ff..2b907b8625 100644 --- a/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java +++ b/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java @@ -57,7 +57,7 @@ public class MechPad extends Block{ @Remote(targets = Loc.both, called = Loc.server) public static void onMechFactoryTap(Player player, Tile tile){ - if(player == null || !checkValidTap(tile, player) || !(tile.block() instanceof MechPad)) return; + if(player == null || !(tile.block() instanceof MechPad) || !checkValidTap(tile, player)) return; MechFactoryEntity entity = tile.entity(); MechPad pad = (MechPad)tile.block(); @@ -153,11 +153,10 @@ public class MechPad extends Block{ Shaders.build.region = region; Shaders.build.progress = entity.progress; - Shaders.build.time = -entity.time / 4f; + Shaders.build.time = -entity.time / 5f; Shaders.build.color.set(Pal.accent); - Draw.shader(Shaders.build, false); - Shaders.build.apply(); + Draw.shader(Shaders.build); Draw.rect(region, tile.drawx(), tile.drawy()); Draw.shader(); diff --git a/core/src/io/anuke/mindustry/world/blocks/units/UnitFactory.java b/core/src/io/anuke/mindustry/world/blocks/units/UnitFactory.java index a6cd265179..d17170b825 100644 --- a/core/src/io/anuke/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/io/anuke/mindustry/world/blocks/units/UnitFactory.java @@ -120,8 +120,7 @@ public class UnitFactory extends Block{ Shaders.build.color.a = entity.speedScl; Shaders.build.time = -entity.time / 10f; - Draw.shader(Shaders.build, false); - Shaders.build.apply(); + Draw.shader(Shaders.build); Draw.rect(region, tile.drawx(), tile.drawy()); Draw.shader(); diff --git a/core/src/io/anuke/mindustry/world/modules/PowerModule.java b/core/src/io/anuke/mindustry/world/modules/PowerModule.java index 7e601394a1..fead3d97c7 100644 --- a/core/src/io/anuke/mindustry/world/modules/PowerModule.java +++ b/core/src/io/anuke/mindustry/world/modules/PowerModule.java @@ -24,6 +24,7 @@ public class PowerModule extends BlockModule{ for(int i = 0; i < links.size; i++){ stream.writeInt(links.get(i)); } + stream.writeFloat(satisfaction); } @Override @@ -32,5 +33,6 @@ public class PowerModule extends BlockModule{ for(int i = 0; i < amount; i++){ links.add(stream.readInt()); } + satisfaction = stream.readFloat(); } }