From 9e16d7385aae1211d8ee24ac2a9f7afbd57d3065 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 25 Aug 2021 10:09:00 -0400 Subject: [PATCH] Implemented #5853 --- .../sprites/statuses/status-shielded.png | Bin 0 -> 260 bytes core/assets/bundles/bundle.properties | 6 ++ core/src/mindustry/editor/WaveInfoDialog.java | 85 +++++++++++++++++- core/src/mindustry/game/Waves.java | 2 +- 4 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 core/assets-raw/sprites/statuses/status-shielded.png diff --git a/core/assets-raw/sprites/statuses/status-shielded.png b/core/assets-raw/sprites/statuses/status-shielded.png new file mode 100644 index 0000000000000000000000000000000000000000..b079c1bfeff9dcf01c8f3690bdd72e76ac449339 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}jKx9jP7LeL$-HD>VA$vB z;usRq`Zm;BtU-ZC_J*}uMP@-8lWxT1bv(Qv3)?iC<- zo`H9V+70U|j8|KNyrmO5uU?&nu8so+ubGZ*R| { + BaseDialog dialog = new BaseDialog("@waves.sort"); + dialog.setFillParent(false); + dialog.cont.table(Tex.button, t -> { + for(Sort s : Sort.all){ + t.button("@waves.sort." + s, Styles.clearTogglet, () -> { + sort = s; + dialog.hide(); + buildGroups(); + }).size(150f, 60f).checked(s == sort); + } + }).row(); + dialog.cont.check("@waves.sort.reverse", b -> { + reverseSort = b; + buildGroups(); + }).padTop(4).checked(reverseSort).padBottom(8f); + dialog.addCloseButton(); + dialog.show(); + buildGroups(); + }).size(60f, 64f); + addCloseButton(); buttons.button("@waves.edit", () -> { @@ -165,7 +190,8 @@ public class WaveInfoDialog extends BaseDialog{ table.margin(10f); if(groups != null){ - groups.sort(g -> g.begin); + groups.sort(sort.sort); + if(reverseSort) groups.reverse(); for(SpawnGroup group : groups){ table.table(Tex.button, t -> { @@ -179,6 +205,11 @@ public class WaveInfoDialog extends BaseDialog{ b.label(() -> (group.begin + 1) + "").color(Color.lightGray).minWidth(45f).labelAlign(Align.left).left(); + b.button(group.effect != null && group.effect != StatusEffects.none ? + new TextureRegionDrawable(group.effect.uiIcon) : + Icon.logicSmall, + Styles.emptyi, () -> showEffect(group)).pad(-6).size(46f); + b.button(Icon.unitsSmall, Styles.emptyi, () -> showUpdate(group)).pad(-6).size(46f); b.button(Icon.cancel, Styles.emptyi, () -> { groups.remove(group); @@ -269,7 +300,10 @@ public class WaveInfoDialog extends BaseDialog{ a.add("@waves.shields").padLeft(4); }).row(); - t.check("@waves.guardian", b -> group.effect = (b ? StatusEffects.boss : null)).padTop(4).update(b -> b.setChecked(group.effect == StatusEffects.boss)).padBottom(8f); + t.check("@waves.guardian", b -> { + group.effect = (b ? StatusEffects.boss : null); + buildGroups(); + }).padTop(4).update(b -> b.setChecked(group.effect == StatusEffects.boss)).padBottom(8f); } }).width(340f).pad(8); @@ -306,6 +340,53 @@ public class WaveInfoDialog extends BaseDialog{ dialog.show(); } + void showEffect(SpawnGroup group){ + BaseDialog dialog = new BaseDialog(""); + dialog.setFillParent(true); + dialog.cont.pane(p -> { + int i = 0; + for(StatusEffect effect : content.statusEffects()){ + if(effect != StatusEffects.none && (effect.isHidden() || effect.reactive)) continue; + + p.button(t -> { + t.left(); + if(effect.uiIcon != null && effect != StatusEffects.none){ + t.image(effect.uiIcon).size(8 * 4).scaling(Scaling.fit).padRight(2f); + }else{ + t.image(Icon.none).size(8 * 4).scaling(Scaling.fit).padRight(2f); + } + + if(effect != StatusEffects.none){ + t.add(effect.localizedName); + }else{ + t.add("@settings.resetKey"); + } + }, () -> { + group.effect = effect; + dialog.hide(); + buildGroups(); + }).pad(2).margin(12f).fillX(); + if(++i % 3 == 0) p.row(); + } + }); + dialog.addCloseButton(); + dialog.show(); + } + + enum Sort{ + begin(g -> g.begin), + health(g -> g.type.health), + type(g -> g.type.id); + + static final Sort[] all = values(); + + final Floatf sort; + + Sort(Floatf sort){ + this.sort = sort; + } + } + void updateWaves(){ graph.groups = groups; graph.from = start; diff --git a/core/src/mindustry/game/Waves.java b/core/src/mindustry/game/Waves.java index 415ccea8fc..867c1476ce 100644 --- a/core/src/mindustry/game/Waves.java +++ b/core/src/mindustry/game/Waves.java @@ -116,7 +116,7 @@ public class Waves{ spacing = 5; unitAmount = 1; unitScaling = 3; - effect = StatusEffects.shielded; + shields = 640f; max = 25; }},