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

@@ -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,

View File

@@ -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();
}
}

View File

@@ -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();

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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){

View File

@@ -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;
}

View File

@@ -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(() -> {

View File

@@ -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;
}
}

View File

@@ -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();
}
}

View File

@@ -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;

View File

@@ -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

View File

@@ -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(){

View File

@@ -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

View File

@@ -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);
}
}
}

View File

@@ -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;
}
});

View File

@@ -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)));

View File

@@ -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")));

View File

@@ -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)));
});
})

View File

@@ -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());

View File

@@ -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");
});

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.*/
public void useContent(Tile tile, UnlockableContent content){
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){
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();