diff --git a/build.gradle b/build.gradle index d6b78e3021..85359dbfe6 100644 --- a/build.gradle +++ b/build.gradle @@ -26,7 +26,7 @@ allprojects { appName = 'Mindustry' gdxVersion = '1.9.8' roboVMVersion = '2.3.0' - uCoreVersion = '91fb3eb182bebacdfcdbb7d979eee3c15a1f2ecc' + uCoreVersion = '9251b7a2359f40e2b4976021610a041173e78b92' getVersionString = { String buildVersion = getBuildVersion() diff --git a/core/assets-raw/sprites/blocks/distribution/junction.png b/core/assets-raw/sprites/blocks/distribution/junction.png index c9d30e4e94..2863c32e31 100644 Binary files a/core/assets-raw/sprites/blocks/distribution/junction.png and b/core/assets-raw/sprites/blocks/distribution/junction.png differ diff --git a/core/assets-raw/sprites/blocks/distribution/overflow-gate.png b/core/assets-raw/sprites/blocks/distribution/overflow-gate.png index b5c3cd7265..9def20894c 100644 Binary files a/core/assets-raw/sprites/blocks/distribution/overflow-gate.png and b/core/assets-raw/sprites/blocks/distribution/overflow-gate.png differ diff --git a/core/assets-raw/sprites/blocks/distribution/sorter.png b/core/assets-raw/sprites/blocks/distribution/sorter.png index 053c736150..2de5726c2a 100644 Binary files a/core/assets-raw/sprites/blocks/distribution/sorter.png and b/core/assets-raw/sprites/blocks/distribution/sorter.png differ diff --git a/core/assets-raw/sprites/blocks/liquid/rotary-pump.png b/core/assets-raw/sprites/blocks/liquid/rotary-pump.png index 35b4a04950..52e1dc15cc 100644 Binary files a/core/assets-raw/sprites/blocks/liquid/rotary-pump.png and b/core/assets-raw/sprites/blocks/liquid/rotary-pump.png differ diff --git a/core/assets-raw/sprites/blocks/units/dagger-pad-top-open.png b/core/assets-raw/sprites/blocks/units/dagger-pad-top-open.png index c14088ffca..c4625ff0e5 100644 Binary files a/core/assets-raw/sprites/blocks/units/dagger-pad-top-open.png and b/core/assets-raw/sprites/blocks/units/dagger-pad-top-open.png differ diff --git a/core/assets-raw/sprites/blocks/units/dagger-pad-top.png b/core/assets-raw/sprites/blocks/units/dagger-pad-top.png index 327624d16b..df47c999a8 100644 Binary files a/core/assets-raw/sprites/blocks/units/dagger-pad-top.png and b/core/assets-raw/sprites/blocks/units/dagger-pad-top.png differ diff --git a/core/assets-raw/sprites/blocks/units/dagger-pad.png b/core/assets-raw/sprites/blocks/units/dagger-pad.png index 5f4d86aa31..144156ae68 100644 Binary files a/core/assets-raw/sprites/blocks/units/dagger-pad.png and b/core/assets-raw/sprites/blocks/units/dagger-pad.png differ diff --git a/core/assets-raw/sprites/blocks/units/drone-pad.png b/core/assets-raw/sprites/blocks/units/drone-pad.png index 5f4d86aa31..144156ae68 100644 Binary files a/core/assets-raw/sprites/blocks/units/drone-pad.png and b/core/assets-raw/sprites/blocks/units/drone-pad.png differ diff --git a/core/assets-raw/sprites/blocks/units/fabricator-pad.png b/core/assets-raw/sprites/blocks/units/fabricator-pad.png index 5f4d86aa31..144156ae68 100644 Binary files a/core/assets-raw/sprites/blocks/units/fabricator-pad.png and b/core/assets-raw/sprites/blocks/units/fabricator-pad.png differ diff --git a/core/assets-raw/sprites/blocks/units/interceptor-pad-top-open.png b/core/assets-raw/sprites/blocks/units/interceptor-pad-top-open.png index e96a93a72c..26fdcb2528 100644 Binary files a/core/assets-raw/sprites/blocks/units/interceptor-pad-top-open.png and b/core/assets-raw/sprites/blocks/units/interceptor-pad-top-open.png differ diff --git a/core/assets-raw/sprites/blocks/units/interceptor-pad-top.png b/core/assets-raw/sprites/blocks/units/interceptor-pad-top.png index 91684c4970..fb03b837da 100644 Binary files a/core/assets-raw/sprites/blocks/units/interceptor-pad-top.png and b/core/assets-raw/sprites/blocks/units/interceptor-pad-top.png differ diff --git a/core/assets-raw/sprites/blocks/units/interceptor-pad.png b/core/assets-raw/sprites/blocks/units/interceptor-pad.png index 5f4d86aa31..144156ae68 100644 Binary files a/core/assets-raw/sprites/blocks/units/interceptor-pad.png and b/core/assets-raw/sprites/blocks/units/interceptor-pad.png differ diff --git a/core/assets-raw/sprites/blocks/units/monsoon-pad.png b/core/assets-raw/sprites/blocks/units/monsoon-pad.png index b94f078dbf..9fe71323cf 100644 Binary files a/core/assets-raw/sprites/blocks/units/monsoon-pad.png and b/core/assets-raw/sprites/blocks/units/monsoon-pad.png differ diff --git a/core/assets-raw/sprites/blocks/units/reconstructor-open.png b/core/assets-raw/sprites/blocks/units/reconstructor-open.png index 0a30025c32..92a6e51ac3 100644 Binary files a/core/assets-raw/sprites/blocks/units/reconstructor-open.png and b/core/assets-raw/sprites/blocks/units/reconstructor-open.png differ diff --git a/core/assets-raw/sprites/blocks/units/reconstructor.png b/core/assets-raw/sprites/blocks/units/reconstructor.png index 5f4d86aa31..144156ae68 100644 Binary files a/core/assets-raw/sprites/blocks/units/reconstructor.png and b/core/assets-raw/sprites/blocks/units/reconstructor.png differ diff --git a/core/assets-raw/sprites/blocks/units/repair-point-turret.png b/core/assets-raw/sprites/blocks/units/repair-point-turret.png index 129de7a1b4..ab1ea442f0 100644 Binary files a/core/assets-raw/sprites/blocks/units/repair-point-turret.png and b/core/assets-raw/sprites/blocks/units/repair-point-turret.png differ diff --git a/core/assets-raw/sprites/blocks/units/titan-pad.png b/core/assets-raw/sprites/blocks/units/titan-pad.png index ea6dc74d4c..f798cd6418 100644 Binary files a/core/assets-raw/sprites/blocks/units/titan-pad.png and b/core/assets-raw/sprites/blocks/units/titan-pad.png differ diff --git a/core/assets/shaders/menu.fragment b/core/assets/shaders/menu.fragment index 5e88343e46..46d34f892c 100644 --- a/core/assets/shaders/menu.fragment +++ b/core/assets/shaders/menu.fragment @@ -4,27 +4,29 @@ precision mediump int; #endif uniform sampler2D u_texture; -uniform float resolution; -uniform vec4 u_color; +uniform vec2 u_resolution; +uniform float u_time; +uniform vec2 u_uv; +uniform vec2 u_uv2; varying vec4 v_color; varying vec2 v_texCoord; -bool hex(vec2 p) { - p.x *= 0.57735*2.0; - p.y += mod(floor(p.x), 2.0)*0.5; - p = abs((mod(p, 1.0) - 0.5)); - return abs(max(p.x*1.5 + p.y, p.y*2.0) - 1.0) > 0.1; -} - -vec3 palette(float i) { - return vec3(1.0, 1.0, 1.0); -} - void main() { + vec2 coords = ((v_texCoord.xy - u_uv) / (u_uv2 - u_uv) - vec2(0.5, 0.5)) * u_resolution; - bool h = hex(v_texCoord.xy/100.0); + float roundx = 8.0; + float roundy = roundx; + float roundm = 0.2; - gl_FragColor.rgb = vec3(h,h,h); - gl_FragColor.a = 1.0; + coords.x = float(int(coords.x / roundx)) * roundx; + coords.y = float(int(coords.y / roundy)) * roundy; + + float d = abs(coords.x) - abs(coords.y); + + float m = abs(sin(-u_time/50.0 + d/120.0)); + m = float(int(m / roundm)) * roundm + roundm; + + gl_FragColor.rgb = mix(v_color.rgb, vec3(0.0), m); + gl_FragColor.a = mod(abs(coords.x) + abs(coords.y), 100.0) < 30.0 ? 1.0 : 0.0; } \ No newline at end of file diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index cbe0e483ae..28def7b3e2 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/graphics/Shaders.java b/core/src/io/anuke/mindustry/graphics/Shaders.java index 996d8e07fe..7479f0fc2e 100644 --- a/core/src/io/anuke/mindustry/graphics/Shaders.java +++ b/core/src/io/anuke/mindustry/graphics/Shaders.java @@ -6,6 +6,7 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.utils.FloatArray; import io.anuke.ucore.core.Core; import io.anuke.ucore.core.Timers; +import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Shader; import io.anuke.ucore.scene.ui.layout.Unit; @@ -25,6 +26,7 @@ public class Shaders{ public static MixShader mix; public static Shader fullMix; public static FogShader fog; + public static MenuShader menu; public static void init(){ outline = new Outline(); @@ -39,6 +41,23 @@ public class Shaders{ mix = new MixShader(); fog = new FogShader(); fullMix = new Shader("fullmix", "default"); + menu = new MenuShader(); + } + + public static class MenuShader extends Shader{ + float time = 0f; + + public MenuShader(){ + super("menu", "default"); + } + + @Override + public void apply(){ + shader.setUniformf("u_resolution", Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); + shader.setUniformf("u_time", time += Gdx.graphics.getDeltaTime() * 60f); + shader.setUniformf("u_uv", Draw.getBlankRegion().getU(), Draw.getBlankRegion().getV()); + shader.setUniformf("u_uv2", Draw.getBlankRegion().getU2(), Draw.getBlankRegion().getV2()); + } } public static class FogShader extends Shader{ diff --git a/core/src/io/anuke/mindustry/io/Changelogs.java b/core/src/io/anuke/mindustry/io/Changelogs.java index 85d482ad00..a3c32def96 100644 --- a/core/src/io/anuke/mindustry/io/Changelogs.java +++ b/core/src/io/anuke/mindustry/io/Changelogs.java @@ -13,7 +13,7 @@ public class Changelogs{ public static void getChangelog(Consumer> success, Consumer fail){ Net.http(releasesURL, "GET", result -> { Json j = new Json(); - Array list = j.fromJson(null, result); + Array list = j.fromJson(Array.class, result); Array out = new Array<>(); for(JsonValue value : list){ String name = value.getString("name"); diff --git a/core/src/io/anuke/mindustry/ui/fragments/BackgroundFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BackgroundFragment.java index 55c96f856b..ab5cfec300 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/BackgroundFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/BackgroundFragment.java @@ -3,8 +3,12 @@ package io.anuke.mindustry.ui.fragments; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.g2d.TextureRegion; import io.anuke.mindustry.core.GameState.State; +import io.anuke.mindustry.graphics.Palette; +import io.anuke.mindustry.graphics.Shaders; import io.anuke.ucore.core.Core; +import io.anuke.ucore.core.Graphics; import io.anuke.ucore.graphics.Draw; +import io.anuke.ucore.graphics.Fill; import io.anuke.ucore.scene.Group; import io.anuke.ucore.scene.ui.layout.Unit; @@ -16,15 +20,14 @@ public class BackgroundFragment extends Fragment{ public void build(Group parent){ Core.scene.table().addRect((a, b, w, h) -> { + Draw.colorl(0.1f); + Fill.crect(0, 0, w, h); + Draw.color(Palette.accent); + Graphics.shader(Shaders.menu); + Fill.crect(0, 0, w, h); + Graphics.shader(); Draw.color(); - TextureRegion back = Draw.region("background"); - float backscl = (int) Math.max(Gdx.graphics.getWidth() / (float) back.getRegionWidth() * 1.5f, Unit.dp.scl(5f)); - - Draw.alpha(0.5f); - Core.batch.draw(back, w / 2 - back.getRegionWidth() * backscl / 2, h / 2 - back.getRegionHeight() * backscl / 2, - back.getRegionWidth() * backscl, back.getRegionHeight() * backscl); - boolean portrait = Gdx.graphics.getWidth() < Gdx.graphics.getHeight(); float logoscl = (int) Unit.dp.scl(7) * (portrait ? 5f / 7f : 1f); TextureRegion logo = Core.skin.getRegion("logotext"); diff --git a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java index d61e9619d5..2be80718fd 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java @@ -256,7 +256,7 @@ public class BlocksFragment extends Fragment{ } selectTable.row(); - selectTable.add(stack).growX().left().top().colspan(Category.values().length).padBottom(-5).height((size + 12) * rowsUsed); + selectTable.add(stack).growX().left().top().colspan(Category.values().length).padBottom(-5).height((size + 12) * Math.min(rowsUsed, 3)); } void toggle(float t, Interpolation ip){ diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Pump.java b/core/src/io/anuke/mindustry/world/blocks/production/Pump.java index 448f840801..11b1a17498 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Pump.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Pump.java @@ -107,7 +107,7 @@ public class Pump extends LiquidBlock{ } protected boolean isValid(Tile tile){ - return tile.floor().liquidDrop != null && tier >= tile.floor().liquidDrop.tier; + return tile != null && tile.floor().liquidDrop != null && tier >= tile.floor().liquidDrop.tier; } }