Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 50 additions & 3 deletions src/biotech/world/blocks/production/BoostableDrill.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import arc.math.Mathf;
import arc.math.geom.Point2;
import arc.struct.*;
import arc.util.Log;
import biotech.world.blocks.production.DrillUpgrader.*;
import mindustry.game.Team;
import mindustry.gen.Building;
import mindustry.type.Item;
Expand Down Expand Up @@ -37,23 +39,68 @@ public int checkBooster(Tile tile) {
if (tile.build == null) continue;
if (tile.build.tile.nearby(edge).build == null) continue;
if (tile.build.tile.nearby(edge).build instanceof DrillUpgrader.DrillUpgraderBuild build) {
if (build.canBoost()) boost = build.boost;
boost = build.boost;
}
}
return boost;
}

public class BoostableDrillBuild extends DrillBuild {
public Seq<DrillUpgraderBuild> linked = new Seq<>();

public int lastChange = -2;

public void updateOreCount(){
countOre(tile);
dominantItem = returnItem;
dominantItems = returnCount;
}

public void updateModules(DrillUpgraderBuild build){
linked.addUnique(build);
updateOreCount();
}

public void removeModule(DrillUpgraderBuild build){
linked.remove(build);
updateOreCount();
}

public int highestTier(){
if(linked.size <= 0) return 0;
linked.sort( f -> f.boost);
return linked.first().boost;
}


@Override
public float efficiencyScale(){
return moduleEfficiency() ;
}

public float moduleEfficiency(){
if(linked.size <= 0) return 1f;

float[] total = {0};
for(DrillUpgraderBuild m : linked) total[0] += m.efficiency;
return total[0] / linked.size ;
}


@Override
public void placed(){
super.placed();

countOre(tile);
}

@Override
public void updateTile() {
super.updateTile();
if (lastChange != world.tileChanges) {
lastChange = world.tileChanges;
countOre(tile);
updateOreCount();
}
super.updateTile();
}
}
}
54 changes: 50 additions & 4 deletions src/biotech/world/blocks/production/DrillUpgrader.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,19 @@

import arc.graphics.g2d.Draw;
import arc.graphics.g2d.TextureRegion;
import arc.math.geom.*;
import arc.struct.EnumSet;
import arc.util.Log;
import biotech.world.blocks.production.BoostableDrill.*;
import mindustry.gen.Building;
import mindustry.graphics.Drawf;
import mindustry.world.Block;
import mindustry.world.Tile;
import mindustry.world.*;
import mindustry.world.blocks.power.PowerBlock;
import mindustry.world.meta.BlockFlag;
import mindustry.world.meta.Env;

import static mindustry.Vars.world;

public class DrillUpgrader extends Block {

public DrillUpgrader(String name) {
Expand All @@ -30,11 +33,54 @@ public DrillUpgrader(String name) {
}

public static class DrillUpgraderBuild extends Building {
public int lastChange = -2;

public int boost = 1;

public boolean canBoost() {
return power.status == 1.0f;
@Override
public void placed() {
super.placed();

updateLinks();
}

@Override
public void onProximityUpdate(){
super.onProximityUpdate();

updateLinks();
}

public void updateLinks(){
for (Point2 edge : Edges.getEdges(block.size)) {
if (tile.build == null) continue;
if (tile.build.tile.nearby(edge).build == null) continue;
if(tile.build.tile.nearby(edge).build instanceof BoostableDrillBuild b){
b.updateModules(this);
}
}
}

@Override
public void onRemoved(){
super.onRemoved();

for (Point2 edge : Edges.getEdges(block.size)) {
if (tile.build == null) continue;
if (tile.build.tile.nearby(edge).build == null) continue;
if(tile.build.tile.nearby(edge).build instanceof BoostableDrillBuild b){
b.removeModule(this);
}
}
}

@Override
public void updateTile() {
if (lastChange != world.tileChanges) {
lastChange = world.tileChanges;
updateLinks();
}
}

}
}
Loading