diff --git a/core/src/io/anuke/mindustry/content/Mechs.java b/core/src/io/anuke/mindustry/content/Mechs.java index 8e45d54cb9..cc295b9ed7 100644 --- a/core/src/io/anuke/mindustry/content/Mechs.java +++ b/core/src/io/anuke/mindustry/content/Mechs.java @@ -21,6 +21,7 @@ public class Mechs implements ContentList{ alpha = new Mech("alpha-mech", false){{ drillPower = 1; + mineSpeed = 1.5f; speed = 0.5f; boostSpeed = 0.85f; weapon = Weapons.blaster; @@ -56,6 +57,7 @@ public class Mechs implements ContentList{ dart = new Mech("dart-ship", true){{ drillPower = 1; + mineSpeed = 0.9f; speed = 0.4f; maxSpeed = 3f; drag = 0.1f; diff --git a/core/src/io/anuke/mindustry/content/Weapons.java b/core/src/io/anuke/mindustry/content/Weapons.java index f9b5d29477..e07f8576a8 100644 --- a/core/src/io/anuke/mindustry/content/Weapons.java +++ b/core/src/io/anuke/mindustry/content/Weapons.java @@ -47,8 +47,8 @@ public class Weapons implements ContentList{ roundrobin = true; shots = 6; inaccuracy = 10f; - recoil = 2f; velocityRnd = 0.7f; + shake = 2f; ejectEffect = ShootFx.shellEjectSmall; ammo = AmmoTypes.shotgunTungsten; }}; diff --git a/core/src/io/anuke/mindustry/core/Renderer.java b/core/src/io/anuke/mindustry/core/Renderer.java index 5f4e1022f7..f8b142f8a2 100644 --- a/core/src/io/anuke/mindustry/core/Renderer.java +++ b/core/src/io/anuke/mindustry/core/Renderer.java @@ -292,23 +292,23 @@ public class Renderer extends RendererModule{ float trnsX = -12, trnsY = -13; - Graphics.end(); - Core.batch.getTransformMatrix().translate(trnsX, trnsY, 0); - Graphics.begin(); + //Graphics.end(); + //Core.batch.getTransformMatrix().translate(trnsX, trnsY, 0); + //Graphics.begin(); for(EntityGroup group : unitGroups){ if(!group.isEmpty()){ - drawAndInterpolate(group, unit -> unit.isFlying() && !unit.isDead(), Unit::drawShadow); + drawAndInterpolate(group, unit -> unit.isFlying() && !unit.isDead(), baseUnit -> baseUnit.drawShadow(trnsX, trnsY)); } } if(!playerGroup.isEmpty()){ - drawAndInterpolate(playerGroup, unit -> unit.isFlying() && !unit.isDead(), Unit::drawShadow); + drawAndInterpolate(playerGroup, unit -> unit.isFlying() && !unit.isDead(), player -> player.drawShadow(trnsX, trnsY)); } - Graphics.end(); - Core.batch.getTransformMatrix().translate(-trnsX, -trnsY, 0); - Graphics.begin(); + //Graphics.end(); + //Core.batch.getTransformMatrix().translate(-trnsX, -trnsY, 0); + //Graphics.begin(); //TODO this actually isn't necessary Draw.color(0, 0, 0, 0.15f); diff --git a/core/src/io/anuke/mindustry/entities/Player.java b/core/src/io/anuke/mindustry/entities/Player.java index 7a276a74dc..f00ac8e6bd 100644 --- a/core/src/io/anuke/mindustry/entities/Player.java +++ b/core/src/io/anuke/mindustry/entities/Player.java @@ -32,6 +32,7 @@ import io.anuke.ucore.core.Timers; import io.anuke.ucore.entities.EntityGroup; import io.anuke.ucore.entities.trait.SolidTrait; import io.anuke.ucore.graphics.Draw; +import io.anuke.ucore.graphics.Hue; import io.anuke.ucore.graphics.Lines; import io.anuke.ucore.util.*; @@ -194,7 +195,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra @Override public boolean isFlying(){ - return mech.flying || noclip || isCarried(); + return mech.flying || boostHeat > 0.2f || isCarried(); } @Override @@ -258,31 +259,19 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra } @Override - public void drawShadow(){ - Draw.rect(mech.iconRegion, x , y, rotation - 90); - } + public void drawShadow(float offsetX, float offsetY){ + float x = snappedX(), y = snappedY(); + float scl = mech.flying ? 1f : boostHeat/2f; - @Override - public void drawAll(){ - boolean snap = snapCamera && isLocal; - - float px = x, py = y; - - if(snap){ - x = (int) (x + 0.0001f); - y = (int) (y + 0.0001f); - } - - super.drawAll(); - - x = px; - y = py; + Draw.rect(mech.iconRegion, x + offsetX*scl, y + offsetY*scl, rotation - 90); } @Override public void draw(){ if((debug && (!showPlayer || !showUI)) || dead) return; + float x = snappedX(), y = snappedY(); + if(!movement.isZero() && moved && !state.isPaused()){ walktime += Timers.delta() * movement.len() / 0.7f * getFloorOn().speedMultiplier; baseRotation = Mathf.slerpDelta(baseRotation, movement.angle(), 0.13f); @@ -350,6 +339,16 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra Draw.alpha(1f); } + @Override + public void drawStats(){ + float x = snappedX(), y = snappedY(); + + Draw.color(Color.BLACK, team.color, healthf() + Mathf.absin(Timers.time(), healthf()*5f, 1f - healthf())); + Draw.alpha(hitTime); + Draw.rect(getPowerCellRegion(), x, y, rotation - 90); + Draw.color(); + } + @Override public void drawOver(){ if(dead) return; @@ -360,12 +359,20 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra float wobblyness = 0.6f; trail.update(x + Angles.trnsx(rotation + 180f, 5f) + Mathf.range(wobblyness), y + Angles.trnsy(rotation + 180f, 5f) + Mathf.range(wobblyness)); - trail.draw(mech.trailColor, 5f * (isFlying() ? 1f : boostHeat)); + trail.draw(Hue.mix(mech.trailColor, mech.trailColorTo, boostHeat, Tmp.c1), 5f * (isFlying() ? 1f : boostHeat)); }else{ trail.clear(); } } + float snappedX(){ + return snapCamera && isLocal ? (int) (x + 0.0001f) : x; + } + + float snappedY(){ + return snapCamera && isLocal ? (int) (y + 0.0001f) : y; + } + public void drawName(){ GlyphLayout layout = Pools.obtain(GlyphLayout.class); @@ -482,11 +489,11 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra Tile tile = world.tileWorld(x, y); //if player is in solid block - if(!mech.flying && tile != null && tile.solid() && !noclip){ + if(tile != null && tile.solid() && !isFlying()){ damage(health + 1); //die instantly } - float speed = isBoosting && !mech.flying ? debug ? 5f : mech.boostSpeed : mech.speed; + float speed = isBoosting && !mech.flying ? mech.boostSpeed : mech.speed; //fraction of speed when at max load float carrySlowdown = 0.7f; diff --git a/core/src/io/anuke/mindustry/entities/Unit.java b/core/src/io/anuke/mindustry/entities/Unit.java index f9734e2450..df9aac5dfc 100644 --- a/core/src/io/anuke/mindustry/entities/Unit.java +++ b/core/src/io/anuke/mindustry/entities/Unit.java @@ -315,8 +315,8 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ } } - public void drawShadow(){ - Draw.rect(getIconRegion(), x , y, rotation - 90); + public void drawShadow(float offsetX, float offsetY){ + Draw.rect(getIconRegion(), x + offsetX, y + offsetY, rotation - 90); } public void drawView(){ diff --git a/core/src/io/anuke/mindustry/graphics/Palette.java b/core/src/io/anuke/mindustry/graphics/Palette.java index 29e42f3289..bc2d710306 100644 --- a/core/src/io/anuke/mindustry/graphics/Palette.java +++ b/core/src/io/anuke/mindustry/graphics/Palette.java @@ -28,6 +28,9 @@ public class Palette{ lightishGray = Color.valueOf("a2a2a2"), darkishGray = new Color(0.3f, 0.3f, 0.3f, 1f), + boostTo = Color.valueOf("ffad4d"), + boostFrom = Color.valueOf("ff7f57"), + lancerLaser = Color.valueOf("a9d8ff"), stoneGray = Color.valueOf("8f8f8f"), diff --git a/core/src/io/anuke/mindustry/type/Mech.java b/core/src/io/anuke/mindustry/type/Mech.java index 98640fe292..03dff012a9 100644 --- a/core/src/io/anuke/mindustry/type/Mech.java +++ b/core/src/io/anuke/mindustry/type/Mech.java @@ -4,6 +4,7 @@ import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.g2d.TextureRegion; import io.anuke.mindustry.content.Weapons; import io.anuke.mindustry.game.UnlockableContent; +import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.ui.ContentDisplay; import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.scene.ui.layout.Table; @@ -24,7 +25,8 @@ public class Mech extends Upgrade implements UnlockableContent{ public float carryWeight = 10f; public float buildPower = 1f; public boolean canRepair = false; - public Color trailColor = Color.valueOf("ffd37f"); + public Color trailColor = Palette.boostFrom; + public Color trailColorTo = Palette.boostTo; public float weaponOffsetX, weaponOffsetY;