Implemented public submodules

This commit is contained in:
Anuken
2018-10-08 09:41:01 -04:00
parent fadfdaa673
commit 9994ddb31b
25 changed files with 58 additions and 123 deletions

View File

@@ -202,7 +202,7 @@ public class AndroidLauncher extends PatchedAndroidApplication{
file.write(inStream, false); file.write(inStream, false);
if(SaveIO.isSaveValid(file)){ if(SaveIO.isSaveValid(file)){
try{ try{
SaveSlot slot = control.getSaves().importSave(file); SaveSlot slot = control.saves.importSave(file);
ui.load.runLoadSave(slot); ui.load.runLoadSave(slot);
}catch(IOException e){ }catch(IOException e){
ui.showError(Bundles.format("text.save.import.fail", Strings.parseException(e, false))); ui.showError(Bundles.format("text.save.import.fail", Strings.parseException(e, false)));

View File

@@ -129,7 +129,7 @@ public class DebugBlocks extends BlockList implements ContentList{
Table cont = new Table(); Table cont = new Table();
for(int i = 0; i < items.size; i++){ 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; final int f = i;
ImageButton button = cont.addImageButton("liquid-icon-" + items.get(i).name, "toggle", 24, ImageButton button = cont.addImageButton("liquid-icon-" + items.get(i).name, "toggle", 24,

View File

@@ -40,13 +40,13 @@ public class Control extends Module{
/** Minimum period of time between the same sound being played.*/ /** Minimum period of time between the same sound being played.*/
private static final long minSoundPeriod = 100; private static final long minSoundPeriod = 100;
public final Saves saves;
public final Unlocks unlocks;
private boolean hiscore = false; private boolean hiscore = false;
private boolean wasPaused = false; private boolean wasPaused = false;
private Saves saves;
private Unlocks unlocks;
private InputHandler[] inputs = {}; private InputHandler[] inputs = {};
private ObjectMap<Sound, Long> soundMap = new ObjectMap<>(); private ObjectMap<Sound, Long> soundMap = new ObjectMap<>();
private Throwable error; private Throwable error;
public Control(){ public Control(){
@@ -224,18 +224,10 @@ public class Control extends Module{
System.arraycopy(oldi, 0, inputs, 0, inputs.length); System.arraycopy(oldi, 0, inputs, 0, inputs.length);
} }
public Unlocks unlocks(){
return unlocks;
}
public void setError(Throwable error){ public void setError(Throwable error){
this.error = error; this.error = error;
} }
public Saves getSaves(){
return saves;
}
public InputHandler input(int index){ public InputHandler input(int index){
return inputs[index]; return inputs[index];
} }
@@ -262,10 +254,10 @@ public class Control extends Module{
if(entity == null) return; 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()){ if(players[0].inventory.hasItem()){
control.unlocks().unlockContent(players[0].inventory.getItem().item); unlocks.unlockContent(players[0].inventory.getItem().item);
} }
outer: 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(!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); ui.hudfrag.showUnlock(recipe);
} }
} }
@@ -333,7 +325,7 @@ public class Control extends Module{
/** Called from main logic thread.*/ /** Called from main logic thread.*/
public void runUpdateLogic(){ public void runUpdateLogic(){
if(!state.is(State.menu)){ if(!state.is(State.menu)){
renderer.minimap().updateUnitArray(); renderer.minimap.updateUnitArray();
} }
} }

View File

@@ -2,8 +2,6 @@ package io.anuke.mindustry.core;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color; 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.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2; 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.Consumer;
import io.anuke.ucore.function.Predicate; import io.anuke.ucore.function.Predicate;
import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.graphics.Hue;
import io.anuke.ucore.graphics.Lines; import io.anuke.ucore.graphics.Lines;
import io.anuke.ucore.graphics.Surface; import io.anuke.ucore.graphics.Surface;
import io.anuke.ucore.modules.RendererModule; 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; import static io.anuke.ucore.core.Core.camera;
public class Renderer extends RendererModule{ 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 int targetscale = baseCameraScale;
private Texture background = new Texture("sprites/background.png");
private Rectangle rect = new Rectangle(), rect2 = new Rectangle(); private Rectangle rect = new Rectangle(), rect2 = new Rectangle();
private Vector2 avgPosition = new Translator(); 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(){ public Renderer(){
Core.batch = new SpriteBatch(4096); Core.batch = new SpriteBatch(4096);
@@ -118,18 +110,14 @@ public class Renderer extends RendererModule{
Cursors.loadCustom("drill"); Cursors.loadCustom("drill");
Cursors.loadCustom("unload"); Cursors.loadCustom("unload");
clearColor = Hue.lightness(0f); clearColor = new Color(0f, 0f, 0f, 1f);
clearColor.a = 1f;
background.setWrap(TextureWrap.Repeat, TextureWrap.Repeat); effectSurface = Graphics.createSurface(Core.cameraScale);
pixelSurface = Graphics.createSurface(Core.cameraScale);
} }
@Override @Override
public void init(){ public void init(){
int scale = Core.cameraScale;
effectSurface = Graphics.createSurface(scale);
pixelSurface = Graphics.createSurface(scale);
} }
@Override @Override
@@ -209,8 +197,6 @@ public class Renderer extends RendererModule{
Graphics.clear(clearColor); Graphics.clear(clearColor);
drawPadding();
blocks.drawFloor(); blocks.drawFloor();
drawAndInterpolate(groundEffectGroup, e -> e instanceof BelowLiquidTrait); drawAndInterpolate(groundEffectGroup, e -> e instanceof BelowLiquidTrait);
@@ -352,7 +338,6 @@ public class Renderer extends RendererModule{
@Override @Override
public void dispose(){ public void dispose(){
background.dispose();
fog.dispose(); fog.dispose();
} }
@@ -365,37 +350,6 @@ public class Renderer extends RendererModule{
return avgPosition; 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(){ void drawDebug(){
int rangex = (int) (Core.camera.viewportWidth / tilesize / 2), rangey = (int) (Core.camera.viewportHeight / tilesize / 2); 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(); Draw.color();
} }
public BlockRenderer getBlocks(){
return blocks;
}
public void setCameraScale(int amount){ public void setCameraScale(int amount){
targetscale = amount; targetscale = amount;
clampScale(); clampScale();

View File

@@ -25,14 +25,15 @@ import io.anuke.ucore.util.*;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
public class World extends Module{ 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 Map currentMap;
private Sector currentSector; private Sector currentSector;
private Tile[][] tiles; private Tile[][] tiles;
private Pathfinder pathfinder = new Pathfinder(); private Pathfinder pathfinder = new Pathfinder();
private BlockIndexer indexer = new BlockIndexer(); 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 Array<Tile> tempTiles = new ThreadArray<>();
private boolean generating, invalidMap; private boolean generating, invalidMap;

View File

@@ -567,7 +567,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
for(Block block : Vars.content.blocks()){ for(Block block : Vars.content.blocks()){
TextureRegion[] regions = block.getCompactIcon(); 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){ && block != StorageBlocks.core){
continue; continue;
} }

View File

@@ -494,7 +494,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
return; return;
}else{ }else{
//unlock mech when used //unlock mech when used
control.unlocks().unlockContent(mech); control.unlocks.unlockContent(mech);
} }
if(mobile){ if(mobile){

View File

@@ -29,7 +29,7 @@ public class UnitDrops{
for(int i = 0; i < 3; i++){ for(int i = 0; i < 3; i++){
for(Item item : dropTable){ for(Item item : dropTable){
//only drop unlocked items //only drop unlocked items
if(!Vars.headless && !Vars.control.unlocks().isUnlocked(item)){ if(!Vars.headless && !Vars.control.unlocks.isUnlocked(item)){
continue; continue;
} }

View File

@@ -168,7 +168,7 @@ public class Saves{
threads.runGraphics(() -> { threads.runGraphics(() -> {
//Renderer fog needs to be written on graphics thread, but save() can run on logic thread //Renderer fog needs to be written on graphics thread, but save() can run on logic thread
//thus, runGraphics is required here //thus, runGraphics is required here
renderer.fog().writeFog(); renderer.fog.writeFog();
//save on the logic thread //save on the logic thread
threads.run(() -> { threads.run(() -> {

View File

@@ -41,7 +41,7 @@ public abstract class UnlockableContent extends MappableContent{
return true; return true;
}else{ }else{
for(UnlockableContent cont : depend){ for(UnlockableContent cont : depend){
if(!control.unlocks().isUnlocked(cont)){ if(!control.unlocks.isUnlocked(cont)){
return false; return false;
} }
} }

View File

@@ -71,7 +71,7 @@ public enum CacheLayer{
} }
public void endShader(Shader shader){ public void endShader(Shader shader){
renderer.getBlocks().endFloor(); renderer.blocks.endFloor();
renderer.pixelSurface.getBuffer().bind(); renderer.pixelSurface.getBuffer().bind();
@@ -81,6 +81,6 @@ public enum CacheLayer{
Core.camera.viewportWidth * Core.camera.zoom, -Core.camera.viewportHeight * Core.camera.zoom); Core.camera.viewportWidth * Core.camera.zoom, -Core.camera.viewportHeight * Core.camera.zoom);
Graphics.end(); Graphics.end();
Graphics.shader(); Graphics.shader();
renderer.getBlocks().beginFloor(); renderer.blocks.beginFloor();
} }
} }

View File

@@ -140,7 +140,7 @@ public class DesktopInput extends InputHandler{
renderer.scaleCamera((int) Inputs.getAxisTapped(section, "zoom")); 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; if(player.isDead()) return;

View File

@@ -159,7 +159,7 @@ public class Save16 extends SaveFileVersion{
//--META-- //--META--
stream.writeInt(version); //version id stream.writeInt(version); //version id
stream.writeLong(TimeUtils.millis()); //last saved 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(Version.build); //build
stream.writeInt(world.getSector() == null ? invalidSector : world.getSector().packedPosition()); //sector ID stream.writeInt(world.getSector() == null ? invalidSector : world.getSector().packedPosition()); //sector ID

View File

@@ -48,11 +48,11 @@ public class Sector{
} }
public SaveSlot getSave(){ public SaveSlot getSave(){
return !hasSave() ? null : control.getSaves().getByID(saveID); return !hasSave() ? null : control.saves.getByID(saveID);
} }
public boolean hasSave(){ public boolean hasSave(){
return !headless && control.getSaves().getByID(saveID) != null; return !headless && control.saves.getByID(saveID) != null;
} }
public int packedPosition(){ public int packedPosition(){

View File

@@ -50,7 +50,7 @@ public class Sectors{
world.loadSector(sector); world.loadSector(sector);
logic.play(); logic.play();
if(!headless){ if(!headless){
sector.saveID = control.getSaves().addSave("sector-" + sector.packedPosition()).index; sector.saveID = control.saves.addSave("sector-" + sector.packedPosition()).index;
} }
world.sectors().save(); world.sectors().save();
world.setSector(sector); world.setSector(sector);
@@ -147,7 +147,7 @@ public class Sectors{
} }
if(!headless){ if(!headless){
renderer.fog().setLoadingOffset(shiftX, shiftY); renderer.fog.setLoadingOffset(shiftX, shiftY);
} }
//create *new* tile array //create *new* tile array

View File

@@ -66,7 +66,7 @@ public class Recipe extends UnlockableContent{
arr.clear(); arr.clear();
for(Recipe r : content.recipes()){ 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))){ !((r.mode != null && r.mode != state.mode) || (r.desktopOnly && mobile) || (r.isPad && !state.mode.showPads))){
arr.add(r); arr.add(r);
} }
@@ -168,7 +168,7 @@ public class Recipe extends UnlockableContent{
ContentStatValue stat = (ContentStatValue) value; ContentStatValue stat = (ContentStatValue) value;
UnlockableContent[] content = stat.getValueContent(); UnlockableContent[] content = stat.getValueContent();
for(UnlockableContent c : content){ for(UnlockableContent c : content){
control.unlocks().unlockContent(c); control.unlocks.unlockContent(c);
} }
} }
} }

View File

@@ -28,52 +28,44 @@ public class Minimap extends Table{
Image image = new Image(new TextureRegionDrawable(new TextureRegion())){ Image image = new Image(new TextureRegionDrawable(new TextureRegion())){
@Override @Override
public void draw(Batch batch, float parentAlpha){ public void draw(Batch batch, float parentAlpha){
if(renderer.minimap().getRegion() == null) return; if(renderer.minimap.getRegion() == null) return;
TextureRegionDrawable draw = (TextureRegionDrawable) getDrawable(); TextureRegionDrawable draw = (TextureRegionDrawable) getDrawable();
draw.getRegion().setRegion(renderer.minimap().getRegion()); draw.getRegion().setRegion(renderer.minimap.getRegion());
super.draw(batch, parentAlpha); super.draw(batch, parentAlpha);
if(renderer.minimap().getTexture() != null){ if(renderer.minimap.getTexture() != null){
renderer.minimap().drawEntities(x, y, width, height); renderer.minimap.drawEntities(x, y, width, height);
} }
if(showFog){ if(showFog){
renderer.fog().getTexture().setFilter(TextureFilter.Nearest, TextureFilter.Nearest); renderer.fog.getTexture().setFilter(TextureFilter.Nearest, TextureFilter.Nearest);
TextureRegion r = draw.getRegion(); TextureRegion r = draw.getRegion();
float pad = renderer.fog().getPadding(); float pad = renderer.fog.getPadding();
float px = r.getU() * world.width() + pad; float px = r.getU() * world.width() + pad;
float py = r.getV() * world.height() + pad; float py = r.getV() * world.height() + pad;
float px2 = r.getU2() * world.width() + pad; float px2 = r.getU2() * world.width() + pad;
float py2 = r.getV2() * world.height() + 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.setU(px / (world.width() + pad*2f));
r.setV(1f - py / (world.height() + pad*2f)); r.setV(1f - py / (world.height() + pad*2f));
r.setU2(px2 / (world.width() + pad*2f)); r.setU2(px2 / (world.width() + pad*2f));
r.setV2(1f - py2 / (world.height() + 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); Graphics.shader(Shaders.fog);
super.draw(batch, parentAlpha); super.draw(batch, parentAlpha);
Graphics.shader(); Graphics.shader();
renderer.fog().getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear); renderer.fog.getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
} }
} }
}; };
addListener(new InputListener(){ addListener(new InputListener(){
public boolean scrolled(InputEvent event, float x, float y, int amount){ public boolean scrolled(InputEvent event, float x, float y, int amount){
renderer.minimap().zoomBy(amount); renderer.minimap.zoomBy(amount);
return true; return true;
} }
}); });

View File

@@ -53,7 +53,7 @@ public class LoadDialog extends FloatingDialog{
Timers.runTask(2f, () -> Core.scene.setScrollFocus(pane)); Timers.runTask(2f, () -> Core.scene.setScrollFocus(pane));
Array<SaveSlot> array = control.getSaves().getSaveSlots(); Array<SaveSlot> array = control.saves.getSaveSlots();
for(SaveSlot slot : array){ for(SaveSlot slot : array){
if(slot.isHidden()) continue; if(slot.isHidden()) continue;
@@ -142,7 +142,7 @@ public class LoadDialog extends FloatingDialog{
public void addSetup(){ public void addSetup(){
boolean valids = false; 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){ if(!valids){
@@ -159,7 +159,7 @@ public class LoadDialog extends FloatingDialog{
Platform.instance.showFileChooser(Bundles.get("text.save.import"), "Mindustry Save", file -> { Platform.instance.showFileChooser(Bundles.get("text.save.import"), "Mindustry Save", file -> {
if(SaveIO.isSaveValid(file)){ if(SaveIO.isSaveValid(file)){
try{ try{
control.getSaves().importSave(file); control.saves.importSave(file);
setup(); setup();
}catch(IOException e){ }catch(IOException e){
ui.showError(Bundles.format("text.save.import.fail", Strings.parseException(e, false))); ui.showError(Bundles.format("text.save.import.fail", Strings.parseException(e, false)));

View File

@@ -118,15 +118,15 @@ public class PausedDialog extends FloatingDialog{
} }
public void runExitSave(){ public void runExitSave(){
if(control.getSaves().getCurrent() == null || if(control.saves.getCurrent() == null ||
!control.getSaves().getCurrent().isAutosave()){ !control.saves.getCurrent().isAutosave()){
state.set(State.menu); state.set(State.menu);
return; return;
} }
ui.loadLogic("$text.saveload", () -> { ui.loadLogic("$text.saveload", () -> {
try{ try{
control.getSaves().getCurrent().save(); control.saves.getCurrent().save();
}catch(Throwable e){ }catch(Throwable e){
e.printStackTrace(); e.printStackTrace();
threads.runGraphics(() -> ui.showError("[orange]" + Bundles.get("text.savefail"))); threads.runGraphics(() -> ui.showError("[orange]" + Bundles.get("text.savefail")));

View File

@@ -25,7 +25,7 @@ public class SaveDialog extends LoadDialog{
slots.addImageTextButton("$text.save.new", "icon-add", "clear", 14 * 3, () -> slots.addImageTextButton("$text.save.new", "icon-add", "clear", 14 * 3, () ->
ui.showTextInput("$text.save", "$text.save.newslot", "", text -> { ui.showTextInput("$text.save", "$text.save.newslot", "", text -> {
ui.loadGraphics("$text.saving", () -> { ui.loadGraphics("$text.saving", () -> {
control.getSaves().addSave(text); control.saves.addSave(text);
threads.runGraphics(() -> threads.run(() -> threads.runGraphics(this::setup))); threads.runGraphics(() -> threads.run(() -> threads.runGraphics(this::setup)));
}); });
}) })

View File

@@ -59,11 +59,11 @@ public class UnlocksDialog extends FloatingDialog{
if(unlock.isHidden()) continue; 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()); image.addListener(new HandCursorListener());
list.add(image).size(size).pad(3); 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.clicked(() -> Vars.ui.content.show(unlock));
image.addListener(new Tooltip<>(new Table("clear"){{ image.addListener(new Tooltip<>(new Table("clear"){{
add(unlock.localizedName()); add(unlock.localizedName());

View File

@@ -184,7 +184,7 @@ public class HudFragment extends Fragment{
//'saving' indicator //'saving' indicator
parent.fill(t -> { 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"); t.add("$text.saveload");
}); });

View File

@@ -219,7 +219,7 @@ public class Block extends BaseBlock {
/**Call when some content is produced. This unlocks the content if it is applicable.*/ /**Call when some content is produced. This unlocks the content if it is applicable.*/
public void useContent(Tile tile, UnlockableContent content){ public void useContent(Tile tile, UnlockableContent content){
if(!headless && tile.getTeam() == players[0].getTeam()){ if(!headless && tile.getTeam() == players[0].getTeam()){
control.unlocks().handleContentUsed(content); control.unlocks.handleContentUsed(content);
} }
} }

View File

@@ -37,7 +37,7 @@ public interface SelectionTrait{
} }
for(Item item : items){ 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)) ImageButton button = cont.addImageButton("white", "toggle", 24, () -> consumer.accept(item))
.group(group).get(); .group(group).get();

View File

@@ -140,7 +140,7 @@ public class IOSLauncher extends IOSApplication.Delegate {
if(SaveIO.isSaveValid(file)){ if(SaveIO.isSaveValid(file)){
try{ try{
SaveSlot slot = control.getSaves().importSave(file); SaveSlot slot = control.saves.importSave(file);
ui.load.runLoadSave(slot); ui.load.runLoadSave(slot);
}catch (IOException e){ }catch (IOException e){
ui.showError(Bundles.format("text.save.import.fail", Strings.parseException(e, false))); ui.showError(Bundles.format("text.save.import.fail", Strings.parseException(e, false)));