block progress bar

This commit is contained in:
Sharlotte
2022-09-24 02:07:12 +09:00
parent 7280cf2ce6
commit 3e55ded420
13 changed files with 93 additions and 88 deletions

View File

@@ -31,8 +31,6 @@ setting.selectopacity.description = Sets the opacity of selection arrow.
setting.baropacity.name = Health Bar Opacity
setting.baropacity.description = Sets the opacity of the unit health bar.
setting.blockStatus.name = enable Block Status
setting.blockStatus.description = display enemy block status too
setting.blockBar.name = enable Block Bar
setting.blockBar.description = display block health bar

View File

@@ -31,8 +31,6 @@ setting.selectopacity.description = 선택 화살표의 투명도를 조절합
setting.baropacity.name = 유닛 바 투명도
setting.baropacity.description = 유닛 바의 투명도를 조절합니다.
setting.blockStatus.name = 블록 상태 표시
setting.blockStatus.description = 적 블록 상태를 표시합니다.
setting.blockBar.name = 블록 바 표시
setting.blockBar.description = 블록 체력바를 표시합니다.

View File

@@ -3,12 +3,11 @@ package informatis.core;
import arc.input.KeyCode;
import informatis.SVars;
import informatis.ui.*;
import informatis.ui.draws.OverDraws;
import informatis.draws.OverDraws;
import informatis.ui.fragments.FragmentManager;
import informatis.ui.windows.*;
import arc.*;
import mindustry.*;
import mindustry.ai.Pathfinder;
import mindustry.game.EventType.*;
import mindustry.mod.*;

View File

@@ -1,6 +1,6 @@
package informatis.core;
import informatis.ui.draws.*;
import informatis.draws.*;
import arc.*;
import arc.graphics.*;
import arc.graphics.g2d.*;

View File

@@ -0,0 +1,84 @@
package informatis.draws;
import arc.graphics.Color;
import arc.graphics.g2d.Draw;
import arc.graphics.g2d.Fill;
import arc.scene.style.TextureRegionDrawable;
import mindustry.Vars;
import mindustry.gen.Building;
import mindustry.gen.Groups;
import mindustry.graphics.Pal;
import mindustry.world.Tile;
import mindustry.world.blocks.ConstructBlock;
import mindustry.world.blocks.defense.turrets.Turret;
import mindustry.world.blocks.units.Reconstructor;
import mindustry.world.blocks.units.UnitFactory;
import static informatis.SUtils.*;
import static arc.Core.settings;
public class BlockDraw extends OverDraw {
BlockDraw(String name, TextureRegionDrawable icon) {
super(name, icon);
registerOption("blockBar");
}
@Override
public void draw() {
super.draw();
if(!enabled) return;
Groups.build.each(b -> {
if(!isInCamera(b.x, b.y, b.block.size/2f)) return;
if(settings.getBool("blockstatus") && b.team != Vars.player.team() && b.block.consumers.length > 0) {
float multiplier = b.block.size > 1 ? 1.0F : 0.64F;
float brcx = b.x + (float)(b.block.size * 8) / 2.0F - 8.0F * multiplier / 2.0F;
float brcy = b.y - (float)(b.block.size * 8) / 2.0F + 8.0F * multiplier / 2.0F;
Draw.z(71.0F);
Draw.color(Pal.gray);
Fill.square(brcx, brcy, 2.5F * multiplier, 45.0F);
Draw.color(b.status().color);
Fill.square(brcx, brcy, 1.5F * multiplier, 45.0F);
Draw.color();
}
});
for (Tile tile : Vars.world.tiles) {
if(!isInCamera(tile.worldx(), tile.worldy(), 8) || tile.build == null) continue;
Building b = tile.build;
if(settings.getBool("blockBar")) {
drawBar(b, 0, -(b.block.size * 4 + 2), b.healthf(), Pal.health);
if(b instanceof Turret.TurretBuild turretBuild)
drawBar(b, 0, b.block.size * 4 + 2, turretBuild.reloadCounter / ((Turret) b.block).reload, Pal.ammo);
if(b instanceof ConstructBlock.ConstructBuild constructBuild)
drawBar(b, 0, b.block.size * 4 + 2, constructBuild.progress(), b.team.color);
if(b instanceof Reconstructor.ReconstructorBuild reconstructorBuild)
drawBar(b, 0, b.block.size * 4 + 2, reconstructorBuild.fraction(), b.team.color);
if(b instanceof UnitFactory.UnitFactoryBuild factoryBuild)
drawBar(b, 0, b.block.size * 4 + 2, factoryBuild.fraction(), b.team.color);
}
}
}
void drawBar(Building b, float offsetX, float offsetY, float progress, Color color) {
float bx = b.x + offsetX, by = b.y + offsetY;
float width = b.block.size * 7.5f, height = 2;
Draw.color(Pal.gray);
Fill.quad(
bx - width/2, by + height/2,
bx - width/2, by - height/2,
bx + width/2, by - height/2,
bx + width/2, by + height/2);
Draw.color(color);
width = b.block.size * 7.5f - 0.5f; height = 2 - 0.5f;
Fill.quad(
bx - width/2, by + height/2,
bx - width/2, by - height/2,
bx - width/2 + width * progress, by - height/2,
bx - width/2 + width * progress, by + height/2);
}
}

View File

@@ -1,4 +1,4 @@
package informatis.ui.draws;
package informatis.draws;
import arc.graphics.Color;
import arc.graphics.g2d.Draw;

View File

@@ -1,4 +1,4 @@
package informatis.ui.draws;
package informatis.draws;
import arc.scene.Element;
import arc.scene.style.TextureRegionDrawable;

View File

@@ -1,4 +1,4 @@
package informatis.ui.draws;
package informatis.draws;
import mindustry.gen.Icon;

View File

@@ -1,15 +1,12 @@
package informatis.ui.draws;
package informatis.draws;
import arc.graphics.Color;
import arc.graphics.g2d.*;
import arc.graphics.gl.FrameBuffer;
import arc.scene.style.TextureRegionDrawable;
import mindustry.Vars;
import mindustry.game.Team;
import mindustry.gen.*;
import mindustry.graphics.Drawf;
import mindustry.graphics.Pal;
import mindustry.type.Weapon;
import mindustry.world.blocks.defense.turrets.*;
import static informatis.SVars.turretRange;

View File

@@ -1,4 +1,4 @@
package informatis.ui.draws;
package informatis.draws;
import informatis.SVars;
import informatis.core.Pathfinder;
@@ -9,10 +9,8 @@ import arc.scene.style.*;
import arc.scene.ui.layout.*;
import arc.struct.*;
import arc.util.*;
import mindustry.Vars;
import mindustry.ai.types.*;
import mindustry.entities.units.*;
import mindustry.game.*;
import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.logic.*;

View File

@@ -1,4 +1,4 @@
package informatis.ui.draws;
package informatis.draws;
import arc.input.KeyCode;
import arc.math.Angles;

View File

@@ -1,69 +0,0 @@
package informatis.ui.draws;
import arc.graphics.g2d.Draw;
import arc.graphics.g2d.Fill;
import arc.scene.style.TextureRegionDrawable;
import mindustry.Vars;
import mindustry.gen.Building;
import mindustry.gen.Groups;
import mindustry.graphics.Pal;
import mindustry.world.Build;
import mindustry.world.Tile;
import java.util.Iterator;
import static informatis.SUtils.*;
import static arc.Core.settings;
public class BlockDraw extends OverDraw {
BlockDraw(String name, TextureRegionDrawable icon) {
super(name, icon);
registerOption("blockStatus");
registerOption("blockBar");
}
@Override
public void draw() {
super.draw();
if(!enabled) return;
Groups.build.each(b -> {
if(!isInCamera(b.x, b.y, b.block.size/2f)) return;
if(settings.getBool("blockStatus") && b.block.consumers.length > 0) {
float multiplier = b.block.size > 1 ? 1.0F : 0.64F;
float brcx = b.x + (float)(b.block.size * 8) / 2.0F - 8.0F * multiplier / 2.0F;
float brcy = b.y - (float)(b.block.size * 8) / 2.0F + 8.0F * multiplier / 2.0F;
Draw.z(71.0F);
Draw.color(Pal.gray);
Fill.square(brcx, brcy, 2.5F * multiplier, 45.0F);
Draw.color(b.status().color);
Fill.square(brcx, brcy, 1.5F * multiplier, 45.0F);
Draw.color();
}
});
for (Tile tile : Vars.world.tiles) {
if(!isInCamera(tile.worldx(), tile.worldy(), 8) || tile.build == null) continue;
Building b = tile.build;
if(settings.getBool("blockBar")) {
float bx = b.x, by = b.y - b.block.size * 4 - 2;
float width = b.block.size * 7.5f, height = 2;
Draw.color(Pal.gray);
Fill.quad(
bx - width/2, by + height/2,
bx - width/2, by - height/2,
bx + width/2, by - height/2,
bx + width/2, by + height/2);
Draw.color(Pal.health);
width = b.block.size * 7.5f - 0.5f; height = 2 - 0.5f;
Fill.quad(
bx - width/2, by + height/2,
bx - width/2, by - height/2,
bx - width/2 + width * b.healthf(), by - height/2,
bx - width/2 + width * b.healthf(), by + height/2);
}
}
}
}

View File

@@ -1,7 +1,7 @@
package informatis.ui.windows;
import informatis.ui.*;
import informatis.ui.draws.*;
import informatis.draws.*;
import arc.math.geom.*;
import arc.scene.ui.*;
import arc.scene.ui.layout.*;