Implemented public submodules
This commit is contained in:
@@ -129,7 +129,7 @@ public class DebugBlocks extends BlockList implements ContentList{
|
||||
Table cont = new Table();
|
||||
|
||||
for(int i = 0; i < items.size; i++){
|
||||
if(!control.unlocks().isUnlocked(items.get(i))) continue;
|
||||
if(!control.unlocks.isUnlocked(items.get(i))) continue;
|
||||
|
||||
final int f = i;
|
||||
ImageButton button = cont.addImageButton("liquid-icon-" + items.get(i).name, "toggle", 24,
|
||||
|
||||
@@ -40,13 +40,13 @@ public class Control extends Module{
|
||||
/** Minimum period of time between the same sound being played.*/
|
||||
private static final long minSoundPeriod = 100;
|
||||
|
||||
public final Saves saves;
|
||||
public final Unlocks unlocks;
|
||||
|
||||
private boolean hiscore = false;
|
||||
private boolean wasPaused = false;
|
||||
private Saves saves;
|
||||
private Unlocks unlocks;
|
||||
private InputHandler[] inputs = {};
|
||||
private ObjectMap<Sound, Long> soundMap = new ObjectMap<>();
|
||||
|
||||
private Throwable error;
|
||||
|
||||
public Control(){
|
||||
@@ -224,18 +224,10 @@ public class Control extends Module{
|
||||
System.arraycopy(oldi, 0, inputs, 0, inputs.length);
|
||||
}
|
||||
|
||||
public Unlocks unlocks(){
|
||||
return unlocks;
|
||||
}
|
||||
|
||||
public void setError(Throwable error){
|
||||
this.error = error;
|
||||
}
|
||||
|
||||
public Saves getSaves(){
|
||||
return saves;
|
||||
}
|
||||
|
||||
public InputHandler input(int index){
|
||||
return inputs[index];
|
||||
}
|
||||
@@ -262,10 +254,10 @@ public class Control extends Module{
|
||||
|
||||
if(entity == null) return;
|
||||
|
||||
entity.items.forEach((item, amount) -> control.unlocks().unlockContent(item));
|
||||
entity.items.forEach((item, amount) -> unlocks.unlockContent(item));
|
||||
|
||||
if(players[0].inventory.hasItem()){
|
||||
control.unlocks().unlockContent(players[0].inventory.getItem().item);
|
||||
unlocks.unlockContent(players[0].inventory.getItem().item);
|
||||
}
|
||||
|
||||
outer:
|
||||
@@ -276,7 +268,7 @@ public class Control extends Module{
|
||||
if(!entity.items.has(stack.item, Math.min((int) (stack.amount * unlockResourceScaling), 2000))) continue outer;
|
||||
}
|
||||
|
||||
if(control.unlocks().unlockContent(recipe)){
|
||||
if(unlocks.unlockContent(recipe)){
|
||||
ui.hudfrag.showUnlock(recipe);
|
||||
}
|
||||
}
|
||||
@@ -333,7 +325,7 @@ public class Control extends Module{
|
||||
/** Called from main logic thread.*/
|
||||
public void runUpdateLogic(){
|
||||
if(!state.is(State.menu)){
|
||||
renderer.minimap().updateUnitArray();
|
||||
renderer.minimap.updateUnitArray();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,8 +2,6 @@ package io.anuke.mindustry.core;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.graphics.Texture;
|
||||
import com.badlogic.gdx.graphics.Texture.TextureWrap;
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||
import com.badlogic.gdx.math.Rectangle;
|
||||
import com.badlogic.gdx.math.Vector2;
|
||||
@@ -33,7 +31,6 @@ import io.anuke.ucore.entities.trait.Entity;
|
||||
import io.anuke.ucore.function.Consumer;
|
||||
import io.anuke.ucore.function.Predicate;
|
||||
import io.anuke.ucore.graphics.Draw;
|
||||
import io.anuke.ucore.graphics.Hue;
|
||||
import io.anuke.ucore.graphics.Lines;
|
||||
import io.anuke.ucore.graphics.Surface;
|
||||
import io.anuke.ucore.modules.RendererModule;
|
||||
@@ -47,20 +44,15 @@ import static io.anuke.ucore.core.Core.batch;
|
||||
import static io.anuke.ucore.core.Core.camera;
|
||||
|
||||
public class Renderer extends RendererModule{
|
||||
public Surface effectSurface;
|
||||
public final Surface effectSurface;
|
||||
public final BlockRenderer blocks = new BlockRenderer();
|
||||
public final MinimapRenderer minimap = new MinimapRenderer();
|
||||
public final OverlayRenderer overlays = new OverlayRenderer();
|
||||
public final FogRenderer fog = new FogRenderer();
|
||||
|
||||
private int targetscale = baseCameraScale;
|
||||
private Texture background = new Texture("sprites/background.png");
|
||||
|
||||
private Rectangle rect = new Rectangle(), rect2 = new Rectangle();
|
||||
private Vector2 avgPosition = new Translator();
|
||||
private Vector2 tmpVector1 = new Translator();
|
||||
private Vector2 tmpVector2 = new Translator();
|
||||
|
||||
private BlockRenderer blocks = new BlockRenderer();
|
||||
private MinimapRenderer minimap = new MinimapRenderer();
|
||||
private OverlayRenderer overlays = new OverlayRenderer();
|
||||
private FogRenderer fog = new FogRenderer();
|
||||
|
||||
public Renderer(){
|
||||
Core.batch = new SpriteBatch(4096);
|
||||
@@ -118,18 +110,14 @@ public class Renderer extends RendererModule{
|
||||
Cursors.loadCustom("drill");
|
||||
Cursors.loadCustom("unload");
|
||||
|
||||
clearColor = Hue.lightness(0f);
|
||||
clearColor.a = 1f;
|
||||
clearColor = new Color(0f, 0f, 0f, 1f);
|
||||
|
||||
background.setWrap(TextureWrap.Repeat, TextureWrap.Repeat);
|
||||
effectSurface = Graphics.createSurface(Core.cameraScale);
|
||||
pixelSurface = Graphics.createSurface(Core.cameraScale);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(){
|
||||
int scale = Core.cameraScale;
|
||||
|
||||
effectSurface = Graphics.createSurface(scale);
|
||||
pixelSurface = Graphics.createSurface(scale);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -209,8 +197,6 @@ public class Renderer extends RendererModule{
|
||||
|
||||
Graphics.clear(clearColor);
|
||||
|
||||
drawPadding();
|
||||
|
||||
blocks.drawFloor();
|
||||
|
||||
drawAndInterpolate(groundEffectGroup, e -> e instanceof BelowLiquidTrait);
|
||||
@@ -352,7 +338,6 @@ public class Renderer extends RendererModule{
|
||||
|
||||
@Override
|
||||
public void dispose(){
|
||||
background.dispose();
|
||||
fog.dispose();
|
||||
}
|
||||
|
||||
@@ -365,37 +350,6 @@ public class Renderer extends RendererModule{
|
||||
return avgPosition;
|
||||
}
|
||||
|
||||
public FogRenderer fog(){
|
||||
return fog;
|
||||
}
|
||||
|
||||
public MinimapRenderer minimap(){
|
||||
return minimap;
|
||||
}
|
||||
|
||||
void drawPadding(){
|
||||
float vw = world.width() * tilesize;
|
||||
float cw = camera.viewportWidth * camera.zoom;
|
||||
float ch = camera.viewportHeight * camera.zoom;
|
||||
if(vw < cw){
|
||||
batch.draw(background,
|
||||
camera.position.x + vw / 2,
|
||||
Mathf.round(camera.position.y - ch / 2, tilesize),
|
||||
(cw - vw) / 2,
|
||||
ch + tilesize,
|
||||
0, 0,
|
||||
((cw - vw) / 2 / tilesize), -ch / tilesize + 1);
|
||||
|
||||
batch.draw(background,
|
||||
camera.position.x - vw / 2,
|
||||
Mathf.round(camera.position.y - ch / 2, tilesize),
|
||||
-(cw - vw) / 2,
|
||||
ch + tilesize,
|
||||
0, 0,
|
||||
-((cw - vw) / 2 / tilesize), -ch / tilesize + 1);
|
||||
}
|
||||
}
|
||||
|
||||
void drawDebug(){
|
||||
int rangex = (int) (Core.camera.viewportWidth / tilesize / 2), rangey = (int) (Core.camera.viewportHeight / tilesize / 2);
|
||||
|
||||
@@ -432,10 +386,6 @@ public class Renderer extends RendererModule{
|
||||
Draw.color();
|
||||
}
|
||||
|
||||
public BlockRenderer getBlocks(){
|
||||
return blocks;
|
||||
}
|
||||
|
||||
public void setCameraScale(int amount){
|
||||
targetscale = amount;
|
||||
clampScale();
|
||||
|
||||
@@ -25,14 +25,15 @@ import io.anuke.ucore.util.*;
|
||||
import static io.anuke.mindustry.Vars.*;
|
||||
|
||||
public class World extends Module{
|
||||
public final Maps maps = new Maps();
|
||||
public final Sectors sectors = new Sectors();
|
||||
public final WorldGenerator generator = new WorldGenerator();
|
||||
|
||||
private Map currentMap;
|
||||
private Sector currentSector;
|
||||
private Tile[][] tiles;
|
||||
private Pathfinder pathfinder = new Pathfinder();
|
||||
private BlockIndexer indexer = new BlockIndexer();
|
||||
private Maps maps = new Maps();
|
||||
private Sectors sectors = new Sectors();
|
||||
private WorldGenerator generator = new WorldGenerator();
|
||||
|
||||
private Array<Tile> tempTiles = new ThreadArray<>();
|
||||
private boolean generating, invalidMap;
|
||||
|
||||
@@ -567,7 +567,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
||||
|
||||
for(Block block : Vars.content.blocks()){
|
||||
TextureRegion[] regions = block.getCompactIcon();
|
||||
if((block.synthetic() && (Recipe.getByResult(block) == null || !control.unlocks().isUnlocked(Recipe.getByResult(block))))
|
||||
if((block.synthetic() && (Recipe.getByResult(block) == null || !control.unlocks.isUnlocked(Recipe.getByResult(block))))
|
||||
&& block != StorageBlocks.core){
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -494,7 +494,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
|
||||
return;
|
||||
}else{
|
||||
//unlock mech when used
|
||||
control.unlocks().unlockContent(mech);
|
||||
control.unlocks.unlockContent(mech);
|
||||
}
|
||||
|
||||
if(mobile){
|
||||
|
||||
@@ -29,7 +29,7 @@ public class UnitDrops{
|
||||
for(int i = 0; i < 3; i++){
|
||||
for(Item item : dropTable){
|
||||
//only drop unlocked items
|
||||
if(!Vars.headless && !Vars.control.unlocks().isUnlocked(item)){
|
||||
if(!Vars.headless && !Vars.control.unlocks.isUnlocked(item)){
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@ public class Saves{
|
||||
threads.runGraphics(() -> {
|
||||
//Renderer fog needs to be written on graphics thread, but save() can run on logic thread
|
||||
//thus, runGraphics is required here
|
||||
renderer.fog().writeFog();
|
||||
renderer.fog.writeFog();
|
||||
|
||||
//save on the logic thread
|
||||
threads.run(() -> {
|
||||
|
||||
@@ -41,7 +41,7 @@ public abstract class UnlockableContent extends MappableContent{
|
||||
return true;
|
||||
}else{
|
||||
for(UnlockableContent cont : depend){
|
||||
if(!control.unlocks().isUnlocked(cont)){
|
||||
if(!control.unlocks.isUnlocked(cont)){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ public enum CacheLayer{
|
||||
}
|
||||
|
||||
public void endShader(Shader shader){
|
||||
renderer.getBlocks().endFloor();
|
||||
renderer.blocks.endFloor();
|
||||
|
||||
renderer.pixelSurface.getBuffer().bind();
|
||||
|
||||
@@ -81,6 +81,6 @@ public enum CacheLayer{
|
||||
Core.camera.viewportWidth * Core.camera.zoom, -Core.camera.viewportHeight * Core.camera.zoom);
|
||||
Graphics.end();
|
||||
Graphics.shader();
|
||||
renderer.getBlocks().beginFloor();
|
||||
renderer.blocks.beginFloor();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,7 +140,7 @@ public class DesktopInput extends InputHandler{
|
||||
renderer.scaleCamera((int) Inputs.getAxisTapped(section, "zoom"));
|
||||
}
|
||||
|
||||
renderer.minimap().zoomBy(-(int) Inputs.getAxisTapped(section, "zoom_minimap"));
|
||||
renderer.minimap.zoomBy(-(int) Inputs.getAxisTapped(section, "zoom_minimap"));
|
||||
|
||||
if(player.isDead()) return;
|
||||
|
||||
|
||||
@@ -159,7 +159,7 @@ public class Save16 extends SaveFileVersion{
|
||||
//--META--
|
||||
stream.writeInt(version); //version id
|
||||
stream.writeLong(TimeUtils.millis()); //last saved
|
||||
stream.writeLong(headless ? 0 : control.getSaves().getTotalPlaytime()); //playtime
|
||||
stream.writeLong(headless ? 0 : control.saves.getTotalPlaytime()); //playtime
|
||||
stream.writeInt(Version.build); //build
|
||||
stream.writeInt(world.getSector() == null ? invalidSector : world.getSector().packedPosition()); //sector ID
|
||||
|
||||
|
||||
@@ -48,11 +48,11 @@ public class Sector{
|
||||
}
|
||||
|
||||
public SaveSlot getSave(){
|
||||
return !hasSave() ? null : control.getSaves().getByID(saveID);
|
||||
return !hasSave() ? null : control.saves.getByID(saveID);
|
||||
}
|
||||
|
||||
public boolean hasSave(){
|
||||
return !headless && control.getSaves().getByID(saveID) != null;
|
||||
return !headless && control.saves.getByID(saveID) != null;
|
||||
}
|
||||
|
||||
public int packedPosition(){
|
||||
|
||||
@@ -50,7 +50,7 @@ public class Sectors{
|
||||
world.loadSector(sector);
|
||||
logic.play();
|
||||
if(!headless){
|
||||
sector.saveID = control.getSaves().addSave("sector-" + sector.packedPosition()).index;
|
||||
sector.saveID = control.saves.addSave("sector-" + sector.packedPosition()).index;
|
||||
}
|
||||
world.sectors().save();
|
||||
world.setSector(sector);
|
||||
@@ -147,7 +147,7 @@ public class Sectors{
|
||||
}
|
||||
|
||||
if(!headless){
|
||||
renderer.fog().setLoadingOffset(shiftX, shiftY);
|
||||
renderer.fog.setLoadingOffset(shiftX, shiftY);
|
||||
}
|
||||
|
||||
//create *new* tile array
|
||||
|
||||
@@ -66,7 +66,7 @@ public class Recipe extends UnlockableContent{
|
||||
|
||||
arr.clear();
|
||||
for(Recipe r : content.recipes()){
|
||||
if(r.category == category && (control.unlocks().isUnlocked(r)) &&
|
||||
if(r.category == category && (control.unlocks.isUnlocked(r)) &&
|
||||
!((r.mode != null && r.mode != state.mode) || (r.desktopOnly && mobile) || (r.isPad && !state.mode.showPads))){
|
||||
arr.add(r);
|
||||
}
|
||||
@@ -168,7 +168,7 @@ public class Recipe extends UnlockableContent{
|
||||
ContentStatValue stat = (ContentStatValue) value;
|
||||
UnlockableContent[] content = stat.getValueContent();
|
||||
for(UnlockableContent c : content){
|
||||
control.unlocks().unlockContent(c);
|
||||
control.unlocks.unlockContent(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,52 +28,44 @@ public class Minimap extends Table{
|
||||
Image image = new Image(new TextureRegionDrawable(new TextureRegion())){
|
||||
@Override
|
||||
public void draw(Batch batch, float parentAlpha){
|
||||
if(renderer.minimap().getRegion() == null) return;
|
||||
if(renderer.minimap.getRegion() == null) return;
|
||||
|
||||
TextureRegionDrawable draw = (TextureRegionDrawable) getDrawable();
|
||||
draw.getRegion().setRegion(renderer.minimap().getRegion());
|
||||
draw.getRegion().setRegion(renderer.minimap.getRegion());
|
||||
super.draw(batch, parentAlpha);
|
||||
if(renderer.minimap().getTexture() != null){
|
||||
renderer.minimap().drawEntities(x, y, width, height);
|
||||
if(renderer.minimap.getTexture() != null){
|
||||
renderer.minimap.drawEntities(x, y, width, height);
|
||||
}
|
||||
|
||||
if(showFog){
|
||||
renderer.fog().getTexture().setFilter(TextureFilter.Nearest, TextureFilter.Nearest);
|
||||
renderer.fog.getTexture().setFilter(TextureFilter.Nearest, TextureFilter.Nearest);
|
||||
|
||||
TextureRegion r = draw.getRegion();
|
||||
float pad = renderer.fog().getPadding();
|
||||
float pad = renderer.fog.getPadding();
|
||||
|
||||
float px = r.getU() * world.width() + pad;
|
||||
float py = r.getV() * world.height() + pad;
|
||||
float px2 = r.getU2() * world.width() + pad;
|
||||
float py2 = r.getV2() * world.height() + pad;
|
||||
|
||||
r.setTexture(renderer.fog().getTexture());
|
||||
r.setTexture(renderer.fog.getTexture());
|
||||
r.setU(px / (world.width() + pad*2f));
|
||||
r.setV(1f - py / (world.height() + pad*2f));
|
||||
r.setU2(px2 / (world.width() + pad*2f));
|
||||
r.setV2(1f - py2 / (world.height() + pad*2f));
|
||||
|
||||
//r.setV(1f - draw.getRegion().getV());
|
||||
//r.setV2(1f - draw.getRegion().getV2());
|
||||
|
||||
//r.setU(r.getU() + renderer.fog().getPadding()/(float)(world.width() + renderer.fog().getPadding()*2) * renderer.minimap().getZoom());
|
||||
//r.setV(r.getV() - renderer.fog().getPadding()/(float)(world.height() + renderer.fog().getPadding()*2) * renderer.minimap().getZoom());
|
||||
//r.setU2(r.getU2() - renderer.fog().getPadding()/(float)(world.width() + renderer.fog().getPadding()*2) * renderer.minimap().getZoom());
|
||||
//r.setV2(r.getV2() + renderer.fog().getPadding()/(float)(world.height() + renderer.fog().getPadding()*2) * renderer.minimap().getZoom());
|
||||
|
||||
Graphics.shader(Shaders.fog);
|
||||
super.draw(batch, parentAlpha);
|
||||
Graphics.shader();
|
||||
|
||||
renderer.fog().getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
|
||||
renderer.fog.getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
addListener(new InputListener(){
|
||||
public boolean scrolled(InputEvent event, float x, float y, int amount){
|
||||
renderer.minimap().zoomBy(amount);
|
||||
renderer.minimap.zoomBy(amount);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -53,7 +53,7 @@ public class LoadDialog extends FloatingDialog{
|
||||
|
||||
Timers.runTask(2f, () -> Core.scene.setScrollFocus(pane));
|
||||
|
||||
Array<SaveSlot> array = control.getSaves().getSaveSlots();
|
||||
Array<SaveSlot> array = control.saves.getSaveSlots();
|
||||
|
||||
for(SaveSlot slot : array){
|
||||
if(slot.isHidden()) continue;
|
||||
@@ -142,7 +142,7 @@ public class LoadDialog extends FloatingDialog{
|
||||
|
||||
public void addSetup(){
|
||||
boolean valids = false;
|
||||
for(SaveSlot slot : control.getSaves().getSaveSlots()) if(!slot.isHidden()) valids = true;
|
||||
for(SaveSlot slot : control.saves.getSaveSlots()) if(!slot.isHidden()) valids = true;
|
||||
|
||||
if(!valids){
|
||||
|
||||
@@ -159,7 +159,7 @@ public class LoadDialog extends FloatingDialog{
|
||||
Platform.instance.showFileChooser(Bundles.get("text.save.import"), "Mindustry Save", file -> {
|
||||
if(SaveIO.isSaveValid(file)){
|
||||
try{
|
||||
control.getSaves().importSave(file);
|
||||
control.saves.importSave(file);
|
||||
setup();
|
||||
}catch(IOException e){
|
||||
ui.showError(Bundles.format("text.save.import.fail", Strings.parseException(e, false)));
|
||||
|
||||
@@ -118,15 +118,15 @@ public class PausedDialog extends FloatingDialog{
|
||||
}
|
||||
|
||||
public void runExitSave(){
|
||||
if(control.getSaves().getCurrent() == null ||
|
||||
!control.getSaves().getCurrent().isAutosave()){
|
||||
if(control.saves.getCurrent() == null ||
|
||||
!control.saves.getCurrent().isAutosave()){
|
||||
state.set(State.menu);
|
||||
return;
|
||||
}
|
||||
|
||||
ui.loadLogic("$text.saveload", () -> {
|
||||
try{
|
||||
control.getSaves().getCurrent().save();
|
||||
control.saves.getCurrent().save();
|
||||
}catch(Throwable e){
|
||||
e.printStackTrace();
|
||||
threads.runGraphics(() -> ui.showError("[orange]" + Bundles.get("text.savefail")));
|
||||
|
||||
@@ -25,7 +25,7 @@ public class SaveDialog extends LoadDialog{
|
||||
slots.addImageTextButton("$text.save.new", "icon-add", "clear", 14 * 3, () ->
|
||||
ui.showTextInput("$text.save", "$text.save.newslot", "", text -> {
|
||||
ui.loadGraphics("$text.saving", () -> {
|
||||
control.getSaves().addSave(text);
|
||||
control.saves.addSave(text);
|
||||
threads.runGraphics(() -> threads.run(() -> threads.runGraphics(this::setup)));
|
||||
});
|
||||
})
|
||||
|
||||
@@ -59,11 +59,11 @@ public class UnlocksDialog extends FloatingDialog{
|
||||
|
||||
if(unlock.isHidden()) continue;
|
||||
|
||||
Image image = control.unlocks().isUnlocked(unlock) ? new Image(unlock.getContentIcon()) : new Image("icon-locked");
|
||||
Image image = control.unlocks.isUnlocked(unlock) ? new Image(unlock.getContentIcon()) : new Image("icon-locked");
|
||||
image.addListener(new HandCursorListener());
|
||||
list.add(image).size(size).pad(3);
|
||||
|
||||
if(control.unlocks().isUnlocked(unlock)){
|
||||
if(control.unlocks.isUnlocked(unlock)){
|
||||
image.clicked(() -> Vars.ui.content.show(unlock));
|
||||
image.addListener(new Tooltip<>(new Table("clear"){{
|
||||
add(unlock.localizedName());
|
||||
|
||||
@@ -184,7 +184,7 @@ public class HudFragment extends Fragment{
|
||||
|
||||
//'saving' indicator
|
||||
parent.fill(t -> {
|
||||
t.bottom().visible(() -> !state.is(State.menu) && control.getSaves().isSaving());
|
||||
t.bottom().visible(() -> !state.is(State.menu) && control.saves.isSaving());
|
||||
t.add("$text.saveload");
|
||||
});
|
||||
|
||||
|
||||
@@ -219,7 +219,7 @@ public class Block extends BaseBlock {
|
||||
/**Call when some content is produced. This unlocks the content if it is applicable.*/
|
||||
public void useContent(Tile tile, UnlockableContent content){
|
||||
if(!headless && tile.getTeam() == players[0].getTeam()){
|
||||
control.unlocks().handleContentUsed(content);
|
||||
control.unlocks.handleContentUsed(content);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ public interface SelectionTrait{
|
||||
}
|
||||
|
||||
for(Item item : items){
|
||||
if(!control.unlocks().isUnlocked(item)) continue;
|
||||
if(!control.unlocks.isUnlocked(item)) continue;
|
||||
|
||||
ImageButton button = cont.addImageButton("white", "toggle", 24, () -> consumer.accept(item))
|
||||
.group(group).get();
|
||||
|
||||
Reference in New Issue
Block a user