This commit is contained in:
Sharlotte
2021-07-21 18:50:57 +09:00
parent cc1121bd47
commit a6cd44a26d
2 changed files with 71 additions and 74 deletions

View File

@@ -133,10 +133,10 @@ public class BarInfo {
if(target instanceof Turret.TurretBuild){ if(target instanceof Turret.TurretBuild){
Turret turret = (Turret)((Turret.TurretBuild)target).block; Turret turret = (Turret)((Turret.TurretBuild)target).block;
if(turret.chargeTime > 0f) { if(turret.chargeTime > 0f) {
float value = Mathf.clamp(Main.hud.heat2 / turret.chargeTime) * 100f; float value = Mathf.clamp(Main.hud.charge / turret.chargeTime) * 100f;
strings.set(3, Core.bundle.format("shar-stat.charge", Strings.fixed(value, (Math.abs((int)value - value) <= 0.001f ? 0 : Math.abs((int)(value * 10) - value * 10) <= 0.001f ? 1 : 2)))); strings.set(3, Core.bundle.format("shar-stat.charge", Strings.fixed(value, (Math.abs((int)value - value) <= 0.001f ? 0 : Math.abs((int)(value * 10) - value * 10) <= 0.001f ? 1 : 2))));
colors.set(3, Pal.surge.cpy().lerp(Pal.accent, Main.hud.heat2 / turret.chargeTime)); colors.set(3, Pal.surge.cpy().lerp(Pal.accent, Main.hud.charge / turret.chargeTime));
numbers.set(3, Main.hud.heat2 / turret.chargeTime); numbers.set(3, Main.hud.charge / turret.chargeTime);
} }
} }
else if(target instanceof Unit && ((Unit) target).type != null) { else if(target instanceof Unit && ((Unit) target).type != null) {

View File

@@ -44,19 +44,17 @@ public class HudUi {
float coreScrollPos; float coreScrollPos;
float tileScrollPos; float tileScrollPos;
@Nullable UnitType type;
Element image; Element image;
Color lastItemColor = Pal.items; Color lastItemColor = Pal.items;
Color lastAmmoColor = Pal.ammo; Color lastAmmoColor = Pal.ammo;
float heat; float charge;
float heat2;
float a; float a;
int uiIndex = 0; int uiIndex = 0;
//to update wave, core table //to update tables
int maxwave; int waveamount;
int coreamount; int coreamount;
int weaponamount;
BarInfo info = new BarInfo(); BarInfo info = new BarInfo();
Seq<String> strings = new Seq<>(new String[]{"","","","","",""}); Seq<String> strings = new Seq<>(new String[]{"","","","","",""});
@@ -381,68 +379,67 @@ public class HudUi {
public void addWeapon(){ public void addWeapon(){
weapon = new Table(tx -> { weapon = new Table(tx -> {
tx.left().defaults().minSize(Scl.scl(12 * 8f)); tx.left().defaults().minSize(Scl.scl(12 * 8f));
weaponamount = ((Unit)getUnit()).type.weapons.size;
tx.add(new Table(scene.getStyle(Button.ButtonStyle.class).up, tt -> {
tt.left().top().defaults().width(Scl.scl(24/3f * 8f)).minHeight(Scl.scl(12/3f * 8f));
if(getUnit() instanceof Unit && settings.getBool("weaponui") && ((Unit)getUnit()).type != null && ((Unit)getUnit()).type.weapons.size != 0) for(int r = 0; r < ((Unit)getUnit()).type.weapons.size; r++){
tx.add(new Table(scene.getStyle(Button.ButtonStyle.class).up, tt -> { Weapon weapon = ((Unit)getUnit()).type.weapons.get(r);
tt.left().top().defaults().width(Scl.scl(24/3f * 8f)).minHeight(Scl.scl(12/3f * 8f)); WeaponMount mount = ((Unit)getUnit()).mounts[r];
TextureRegion region = !weapon.name.equals("") && weapon.outlineRegion.found() ? weapon.outlineRegion : ((Unit)getUnit()).type.uiIcon;
if(((Unit)getUnit()).type.weapons.size > 1 && r % 3 == 0) tt.row();
else if(r % 3 == 0) tt.row();
tt.table(weapontable -> {
weapontable.left();
weapontable.add(new Stack(){{
add(new Table(o -> {
o.left();
o.add(new Image(region){
@Override
public void draw(){
validate();
for(int r = 0; r < ((Unit)getUnit()).type.weapons.size; r++){ float x = this.x;
Weapon weapon = ((Unit)getUnit()).type.weapons.get(r); float y = this.y;
WeaponMount mount = ((Unit)getUnit()).mounts[r]; float scaleX = this.scaleX;
TextureRegion region = !weapon.name.equals("") && weapon.outlineRegion.found() ? weapon.outlineRegion : ((Unit)getUnit()).type.uiIcon; float scaleY = this.scaleY;
if(((Unit)getUnit()).type.weapons.size > 1 && r % 3 == 0) tt.row(); Draw.color(color);
else if(r % 3 == 0) tt.row(); Draw.alpha(parentAlpha * color.a);
tt.table(weapontable -> {
weapontable.left();
weapontable.add(new Stack(){{
add(new Table(o -> {
o.left();
o.add(new Image(region){
@Override
public void draw(){
validate();
float x = this.x; if(getDrawable() instanceof TransformDrawable){
float y = this.y; float rotation = getRotation();
float scaleX = this.scaleX; if(scaleX != 1 || scaleY != 1 || rotation != 0){
float scaleY = this.scaleY; getDrawable().draw(x + imageX, y + imageY, originX - imageX, originY - imageY,
Draw.color(color); imageWidth, imageHeight, scaleX, scaleY, rotation);
Draw.alpha(parentAlpha * color.a); return;
if(getDrawable() instanceof TransformDrawable){
float rotation = getRotation();
if(scaleX != 1 || scaleY != 1 || rotation != 0){
getDrawable().draw(x + imageX, y + imageY, originX - imageX, originY - imageY,
imageWidth, imageHeight, scaleX, scaleY, rotation);
return;
}
} }
float recoil = -((mount.reload) / weapon.reload * weapon.recoil);
y += recoil;
if(getDrawable() != null) getDrawable().draw(x + imageX, y + imageY, imageWidth * scaleX, imageHeight * scaleY);
} }
}.setScaling(Scaling.fit)).size(Scl.scl(6 * 8f)).scaling(Scaling.fit);
}));
add(new Table(h -> { float recoil = -((mount.reload) / weapon.reload * weapon.recoil);
h.add(new Stack(){{ y += recoil;
add(new Table(e -> { if(getDrawable() != null) getDrawable().draw(x + imageX, y + imageY, imageWidth * scaleX, imageHeight * scaleY);
e.defaults().growX().height(Scl.scl(9)).width(Scl.scl(31.5f)).padTop(Scl.scl(9*2f)); }
Bar reloadBar = new Bar( }.setScaling(Scaling.fit)).size(Scl.scl(6 * 8f)).scaling(Scaling.fit);
() -> "", }));
() -> Pal.accent.cpy().lerp(Color.orange, mount.reload / weapon.reload),
() -> mount.reload / weapon.reload); add(new Table(h -> {
e.add(reloadBar); h.add(new Stack(){{
e.pack(); add(new Table(e -> {
})); e.defaults().growX().height(Scl.scl(9)).width(Scl.scl(31.5f)).padTop(Scl.scl(9*2f));
}}).padLeft(Scl.scl(8f)); Bar reloadBar = new Bar(
h.pack(); () -> "",
})); () -> Pal.accent.cpy().lerp(Color.orange, mount.reload / weapon.reload),
}}).left(); () -> mount.reload / weapon.reload);
}).left(); e.add(reloadBar);
tt.center(); e.pack();
} }));
}}).padLeft(Scl.scl(8f));
h.pack();
}));
}}).left();
}).left();
tt.center();
}
}){ }){
@Override @Override
protected void drawBackground(float x, float y) { protected void drawBackground(float x, float y) {
@@ -556,13 +553,13 @@ public class HudUi {
numbers = info.returnNumbers(getUnit()); numbers = info.returnNumbers(getUnit());
colors = info.returnColors(getUnit()); colors = info.returnColors(getUnit());
if(getUnit() instanceof Turret.TurretBuild){ if(getUnit() instanceof Turret.TurretBuild){
if(((Turret.TurretBuild)getUnit()).charging) heat2 += Time.delta; if(((Turret.TurretBuild)getUnit()).charging) charge += Time.delta;
else heat2 = 0f; else charge = 0f;
} }
heat += Time.delta; if (settings.getBool("weaponui")
if (heat >= 6) { && getUnit() instanceof Unit
heat = 0f; && ((Unit)getUnit()).type != null
if(getUnit() instanceof Unit) type = ((Unit)getUnit()).type(); && weaponamount != ((Unit)getUnit()).type.weapons.size) {
table.removeChild(weapon); table.removeChild(weapon);
addWeapon(); addWeapon();
table.row(); table.row();
@@ -577,8 +574,8 @@ public class HudUi {
public void setWave(Table table){ public void setWave(Table table){
int winWave = state.isCampaign() && state.rules.winWave > 0 ? state.rules.winWave : Integer.MAX_VALUE; int winWave = state.isCampaign() && state.rules.winWave > 0 ? state.rules.winWave : Integer.MAX_VALUE;
maxwave = settings.getInt("wavemax"); waveamount = settings.getInt("wavemax");
for(int i = settings.getBool("pastwave") ? 0 : state.wave - 1; i <= Math.min(state.wave + maxwave, winWave - 2); i++){ for(int i = settings.getBool("pastwave") ? 0 : state.wave - 1; i <= Math.min(state.wave + waveamount, winWave - 2); i++){
final int j = i; final int j = i;
if(!settings.getBool("emptywave") && state.rules.spawns.find(g -> g.getSpawned(j) > 0) == null) continue; if(!settings.getBool("emptywave") && state.rules.spawns.find(g -> g.getSpawned(j) > 0) == null) continue;
table.table(t -> { table.table(t -> {
@@ -725,7 +722,7 @@ public class HudUi {
} }
} }
waveScrollPos = wavePane.getScrollY(); waveScrollPos = wavePane.getScrollY();
if(maxwave != settings.getInt("wavemax")) if(waveamount != settings.getInt("wavemax"))
wavePane.setWidget(new Table(tx -> tx.table(this::setWave).left())); wavePane.setWidget(new Table(tx -> tx.table(this::setWave).left()));
}); });
wavePane.setOverscroll(false, false); wavePane.setOverscroll(false, false);