Added alternate health bar on all units

This commit is contained in:
Anuken 2018-08-16 17:07:20 -04:00
parent 29bcb8e07c
commit 1699ab48e8
18 changed files with 603 additions and 628 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 279 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 B

After

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 390 B

After

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 B

After

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 423 B

After

Width:  |  Height:  |  Size: 423 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 323 B

After

Width:  |  Height:  |  Size: 327 B

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 140 KiB

View File

@ -325,8 +325,8 @@ public class Renderer extends RendererModule{
Graphics.beginShaders(Shaders.outline); Graphics.beginShaders(Shaders.outline);
Graphics.shader(Shaders.mix, true); Graphics.shader(Shaders.mix, true);
drawAndInterpolate(unitGroups[team.ordinal()], u -> u.isFlying() == flying && !u.isDead()); drawAndInterpolate(unitGroups[team.ordinal()], u -> u.isFlying() == flying && !u.isDead(), Unit::drawAll);
drawAndInterpolate(playerGroup, p -> p.isFlying() == flying && p.getTeam() == team); drawAndInterpolate(playerGroup, p -> p.isFlying() == flying && p.getTeam() == team, Unit::drawAll);
Graphics.shader(); Graphics.shader();
blocks.drawTeamBlocks(Layer.turret, team); blocks.drawTeamBlocks(Layer.turret, team);
Graphics.endShaders(); Graphics.endShaders();

View File

@ -263,6 +263,23 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
Draw.rect(mech.iconRegion, x , y, rotation - 90); Draw.rect(mech.iconRegion, x , y, rotation - 90);
} }
@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;
}
@Override @Override
public void draw(){ public void draw(){
if((debug && (!showPlayer || !showUI)) || dead) return; if((debug && (!showPlayer || !showUI)) || dead) return;
@ -274,15 +291,6 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
boostHeat = Mathf.lerpDelta(boostHeat, isBoosting && ((!movement.isZero() && moved) || !isLocal) ? 1f : 0f, 0.08f); boostHeat = Mathf.lerpDelta(boostHeat, isBoosting && ((!movement.isZero() && moved) || !isLocal) ? 1f : 0f, 0.08f);
boolean snap = snapCamera && isLocal;
float px = x, py = y;
if(snap){
x = (int) (x + 0.0001f);
y = (int) (y + 0.0001f);
}
float ft = Mathf.sin(walktime, 6f, 2f) * (1f - boostHeat); float ft = Mathf.sin(walktime, 6f, 2f) * (1f - boostHeat);
Floor floor = getFloorOn(); Floor floor = getFloorOn();
@ -341,9 +349,6 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
} }
Draw.alpha(1f); Draw.alpha(1f);
x = px;
y = py;
} }
@Override @Override

View File

@ -1,5 +1,6 @@
package io.anuke.mindustry.entities; package io.anuke.mindustry.entities;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector2;
import io.anuke.mindustry.content.blocks.Blocks; import io.anuke.mindustry.content.blocks.Blocks;
@ -306,6 +307,24 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
public void drawOver(){ public void drawOver(){
} }
public void drawStats(){
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();
}
public TextureRegion getPowerCellRegion(){
return Draw.region("power-cell");
}
public void drawAll(){
if(!isDead()){
draw();
drawStats();
}
}
public void drawShadow(){ public void drawShadow(){
Draw.rect(getIconRegion(), x , y, rotation - 90); Draw.rect(getIconRegion(), x , y, rotation - 90);
} }
@ -314,10 +333,6 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ
Fill.circle(x, y, getViewDistance()); Fill.circle(x, y, getViewDistance());
} }
public boolean isInfiniteAmmo(){
return false;
}
public float getViewDistance(){ public float getViewDistance(){
return 135f; return 135f;
} }

View File

@ -252,11 +252,6 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{
return type.itemCapacity; return type.itemCapacity;
} }
@Override
public boolean isInfiniteAmmo(){
return isWave;
}
@Override @Override
public void interpolate(){ public void interpolate(){
super.interpolate(); super.interpolate();

View File

@ -3,7 +3,6 @@ package io.anuke.mindustry.game;
import io.anuke.mindustry.entities.units.BaseUnit; import io.anuke.mindustry.entities.units.BaseUnit;
import io.anuke.mindustry.entities.units.GroundUnit; import io.anuke.mindustry.entities.units.GroundUnit;
import io.anuke.mindustry.entities.units.UnitType; import io.anuke.mindustry.entities.units.UnitType;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.type.ItemStack;
import io.anuke.mindustry.type.StatusEffect; import io.anuke.mindustry.type.StatusEffect;
import io.anuke.mindustry.type.Weapon; import io.anuke.mindustry.type.Weapon;
@ -62,10 +61,6 @@ public class SpawnGroup{
* Items this unit spawns with. Null to disable. * Items this unit spawns with. Null to disable.
*/ */
protected ItemStack items; protected ItemStack items;
/**
* Ammo type this unit spawns with. Null to use the first available ammo.
*/
protected Item ammoItem;
public SpawnGroup(UnitType type){ public SpawnGroup(UnitType type){
this.type = type; this.type = type;

View File

@ -41,7 +41,6 @@ public class Waves{
unitScaling = 2; unitScaling = 2;
unitAmount = 1; unitAmount = 1;
spacing = 2; spacing = 2;
ammoItem = Items.tungsten;
end = 30; end = 30;
}}, }},
@ -86,7 +85,6 @@ public class Waves{
groupAmount = 2; groupAmount = 2;
unitScaling = 3; unitScaling = 3;
effect = StatusEffects.overdrive; effect = StatusEffects.overdrive;
ammoItem = Items.silicon;
}}, }},
new SpawnGroup(UnitTypes.dagger){{ new SpawnGroup(UnitTypes.dagger){{
@ -95,7 +93,6 @@ public class Waves{
unitAmount = 1; unitAmount = 1;
unitScaling = 3; unitScaling = 3;
effect = StatusEffects.shielded; effect = StatusEffects.shielded;
ammoItem = Items.thorium;
max = 10; max = 10;
}}, }},
@ -121,7 +118,6 @@ public class Waves{
new SpawnGroup(UnitTypes.monsoon){{ new SpawnGroup(UnitTypes.monsoon){{
begin = 40; begin = 40;
ammoItem = Items.blastCompound;
unitAmount = 2; unitAmount = 2;
spacing = 2; spacing = 2;
unitScaling = 3; unitScaling = 3;
@ -140,7 +136,6 @@ public class Waves{
new SpawnGroup(UnitTypes.monsoon){{ new SpawnGroup(UnitTypes.monsoon){{
begin = 53; begin = 53;
ammoItem = Items.pyratite;
unitAmount = 2; unitAmount = 2;
unitScaling = 3; unitScaling = 3;
spacing = 4; spacing = 4;
@ -150,7 +145,6 @@ public class Waves{
new SpawnGroup(UnitTypes.monsoon){{ new SpawnGroup(UnitTypes.monsoon){{
begin = 53; begin = 53;
ammoItem = Items.coal;
unitAmount = 2; unitAmount = 2;
unitScaling = 3; unitScaling = 3;
spacing = 4; spacing = 4;
@ -176,10 +170,6 @@ public class Waves{
System.out.print(":" + spawn.weapon.name); System.out.print(":" + spawn.weapon.name);
} }
if(spawn.ammoItem != null){
System.out.print(":" + spawn.ammoItem.name);
}
System.out.print(" "); System.out.print(" ");
} }
} }

View File

@ -7,14 +7,11 @@ import com.badlogic.gdx.utils.Array;
import io.anuke.mindustry.content.blocks.Blocks; import io.anuke.mindustry.content.blocks.Blocks;
import io.anuke.mindustry.entities.Player; import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.entities.Unit;
import io.anuke.mindustry.game.TeamInfo.TeamData;
import io.anuke.mindustry.input.InputHandler; import io.anuke.mindustry.input.InputHandler;
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.meta.BlockBar; import io.anuke.mindustry.world.meta.BlockBar;
import io.anuke.ucore.core.Graphics; import io.anuke.ucore.core.Graphics;
import io.anuke.ucore.core.Settings;
import io.anuke.ucore.core.Timers; import io.anuke.ucore.core.Timers;
import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.graphics.Fill; import io.anuke.ucore.graphics.Fill;
@ -157,31 +154,7 @@ public class OverlayRenderer{
Draw.color(); Draw.color();
} }
} }
} }
if((!debug || showUI) && Settings.getBool("healthbars")){
for(TeamData ally : (debug ? state.teams.getTeams() : state.teams.getTeams(true))){
renderer.drawAndInterpolate(unitGroups[ally.team.ordinal()], u -> !u.isDead(), this::drawStats);
}
renderer.drawAndInterpolate(playerGroup, u -> !u.isDead(), this::drawStats);
}
}
void drawStats(Unit unit){
if(unit.isDead()) return;
float x = unit.x;
float y = unit.y;
if(unit == players[0] && players.length == 1 && snapCamera){
x = (int) (x + 0.0001f);
y = (int) (y + 0.0001f);
}
//drawEncloser(x, y - 8f, 1f);
//drawBar(Palette.healthstats, x, y - 8f, unit.healthf());
} }
void drawBar(Color color, float x, float y, float finion){ void drawBar(Color color, float x, float y, float finion){

View File

@ -3,70 +3,72 @@ package io.anuke.mindustry.graphics;
import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Color;
public class Palette{ public class Palette{
public static final Color command = Color.valueOf("eab678"); public static final Color
public static final Color bulletYellow = Color.valueOf("ffeec9"); command = Color.valueOf("eab678"),
public static final Color bulletYellowBack = Color.valueOf("f9c87a");
public static final Color missileYellow = Color.valueOf("ffd2ae"); bulletYellow = Color.valueOf("ffeec9"),
public static final Color missileYellowBack = Color.valueOf("e58956"); bulletYellowBack = Color.valueOf("f9c87a"),
public static final Color plastaniumBack = Color.valueOf("d8d97f"); missileYellow = Color.valueOf("ffd2ae"),
public static final Color plastaniumFront = Color.valueOf("fffac6"); missileYellowBack = Color.valueOf("e58956"),
public static final Color lightFlame = Color.valueOf("ffdd55"); plastaniumBack = Color.valueOf("d8d97f"),
public static final Color darkFlame = Color.valueOf("db401c"); plastaniumFront = Color.valueOf("fffac6"),
public static final Color turretHeat = Color.valueOf("ab3400"); lightFlame = Color.valueOf("ffdd55"),
darkFlame = Color.valueOf("db401c"),
public static final Color lightOrange = Color.valueOf("f68021"); turretHeat = Color.valueOf("ab3400"),
public static final Color lightishOrange = Color.valueOf("f8ad42");
public static final Color lighterOrange = Color.valueOf("f6e096");
public static final Color lightishGray = Color.valueOf("a2a2a2"); lightOrange = Color.valueOf("f68021"),
public static final Color darkishGray = new Color(0.3f, 0.3f, 0.3f, 1f); lightishOrange = Color.valueOf("f8ad42"),
lighterOrange = Color.valueOf("f6e096"),
public static final Color lancerLaser = Color.valueOf("a9d8ff"); lightishGray = Color.valueOf("a2a2a2"),
darkishGray = new Color(0.3f, 0.3f, 0.3f, 1f),
public static final Color stoneGray = Color.valueOf("8f8f8f"); lancerLaser = Color.valueOf("a9d8ff"),
public static final Color portalLight = Color.valueOf("9054ea"); stoneGray = Color.valueOf("8f8f8f"),
public static final Color portal = Color.valueOf("6344d7");
public static final Color portalDark = Color.valueOf("3f3dac");
public static final Color powerLaserFrom = Color.valueOf("e3e3e3"); portalLight = Color.valueOf("9054ea"),
public static final Color powerLaserTo = Color.valueOf("ffe7a8"); portal = Color.valueOf("6344d7"),
portalDark = Color.valueOf("3f3dac"),
public static final Color description = Color.WHITE; powerLaserFrom = Color.valueOf("e3e3e3"),
public static final Color turretinfo = Color.ORANGE; powerLaserTo = Color.valueOf("ffe7a8"),
public static final Color iteminfo = Color.LIGHT_GRAY;
public static final Color powerinfo = Color.YELLOW;
public static final Color liquidinfo = Color.ROYAL;
public static final Color craftinfo = Color.LIGHT_GRAY;
public static final Color missingitems = Color.SCARLET; description = Color.WHITE,
public static final Color health = Color.YELLOW; turretinfo = Color.ORANGE,
public static final Color ammo = Color.valueOf("32cf6d"); iteminfo = Color.LIGHT_GRAY,
public static final Color healthstats = Color.SCARLET; powerinfo = Color.YELLOW,
public static final Color bar = Color.SLATE; liquidinfo = Color.ROYAL,
public static final Color interact = Color.ORANGE; craftinfo = Color.LIGHT_GRAY,
public static final Color accent = Color.valueOf("f4ba6e");
public static final Color place = Color.valueOf("6335f8");
public static final Color remove = Color.valueOf("e55454");
public static final Color placeRotate = accent;
public static final Color breakInvalid = Color.valueOf("d44b3d");
public static final Color range = Color.valueOf("f4ba6e");
public static final Color power = Color.valueOf("fbd367");
public static final Color placing = Color.valueOf("616161");
public static final Color lightTrail = Color.valueOf("ffe2a9"); missingitems = Color.SCARLET,
health = Color.YELLOW,
ammo = Color.valueOf("32cf6d"),
healthstats = Color.SCARLET,
bar = Color.SLATE,
interact = Color.ORANGE,
accent = Color.valueOf("f4ba6e"),
place = Color.valueOf("6335f8"),
remove = Color.valueOf("e55454"),
placeRotate = accent,
breakInvalid = Color.valueOf("d44b3d"),
range = Color.valueOf("f4ba6e"),
power = Color.valueOf("fbd367"),
placing = Color.valueOf("616161"),
public static final Color redSpark = Color.valueOf("fbb97f"); lightTrail = Color.valueOf("ffe2a9"),
public static final Color orangeSpark = Color.valueOf("d2b29c");
public static final Color redDust = Color.valueOf("ffa480"); redSpark = Color.valueOf("fbb97f"),
public static final Color redderDust = Color.valueOf("ff7b69"); orangeSpark = Color.valueOf("d2b29c"),
public static final Color plasticSmoke = Color.valueOf("f1e479"); redDust = Color.valueOf("ffa480"),
public static final Color plasticBurn = Color.valueOf("e9ead3"); redderDust = Color.valueOf("ff7b69"),
plasticSmoke = Color.valueOf("f1e479"),
plasticBurn = Color.valueOf("e9ead3");
} }

View File

@ -14,7 +14,7 @@ public class OreBlock extends Floor{
public OreBlock(Item ore, Floor base){ public OreBlock(Item ore, Floor base){
super("ore-" + ore.name + "-" + base.name); super("ore-" + ore.name + "-" + base.name);
this.formalName = ore.name + " " + base.formalName; this.formalName = ore.localizedName() + " " + base.formalName;
this.drops = new ItemStack(ore, 1); this.drops = new ItemStack(ore, 1);
this.base = base; this.base = base;
this.variants = 3; this.variants = 3;