Moved some methods around

This commit is contained in:
Anuken
2020-03-01 00:09:03 -05:00
parent 4b36a6d5bd
commit a2a9cffdee
19 changed files with 58 additions and 51 deletions

View File

@@ -176,7 +176,7 @@ public class Control implements ApplicationListener, Loadable{
}); });
Events.on(UnitDestroyEvent.class, e -> { Events.on(UnitDestroyEvent.class, e -> {
if(world.isCampaign()){ if(state.isCampaign()){
data.unlockContent(e.unit.type()); data.unlockContent(e.unit.type());
} }
}); });
@@ -448,7 +448,7 @@ public class Control implements ApplicationListener, Loadable{
if(!state.is(State.menu)){ if(!state.is(State.menu)){
input.update(); input.update();
if(world.isCampaign()){ if(state.isCampaign()){
for(Tilec tile : state.teams.cores(player.team())){ for(Tilec tile : state.teams.cores(player.team())){
for(Item item : content.items()){ for(Item item : content.items()){
if(tile.items().has(item)){ if(tile.items().has(item)){

View File

@@ -1,11 +1,13 @@
package mindustry.core; package mindustry.core;
import arc.*; import arc.*;
import arc.util.ArcAnnotate.*;
import mindustry.game.EventType.*; import mindustry.game.EventType.*;
import mindustry.game.*; import mindustry.game.*;
import mindustry.gen.*; import mindustry.gen.*;
import mindustry.type.*;
import static mindustry.Vars.*; import static mindustry.Vars.net;
public class GameState{ public class GameState{
/** Current wave number, can be anything in non-wave modes. */ /** Current wave number, can be anything in non-wave modes. */
@@ -34,6 +36,20 @@ public class GameState{
state = astate; state = astate;
} }
/**Note that being in a campaign does not necessarily mean having a sector. */
public boolean isCampaign(){
return rules.sector != null;
}
public boolean hasSector(){
return rules.sector != null;
}
@Nullable
public Sector getSector(){
return rules.sector;
}
public boolean isEditor(){ public boolean isEditor(){
return rules.editor; return rules.editor;
} }

View File

@@ -31,9 +31,9 @@ public class Logic implements ApplicationListener{
public Logic(){ public Logic(){
Events.on(WaveEvent.class, event -> { Events.on(WaveEvent.class, event -> {
if(world.isCampaign()){ if(state.isCampaign()){
//TODO implement //TODO implement
//world.getSector().updateWave(state.wave); //state.getSector().updateWave(state.wave);
} }
}); });
@@ -101,7 +101,7 @@ public class Logic implements ApplicationListener{
Events.fire(new PlayEvent()); Events.fire(new PlayEvent());
//add starting items //add starting items
if(!world.isCampaign()){ if(!state.isCampaign()){
for(TeamData team : state.teams.getActive()){ for(TeamData team : state.teams.getActive()){
if(team.hasCore()){ if(team.hasCore()){
Tilec entity = team.core(); Tilec entity = team.core();
@@ -130,7 +130,7 @@ public class Logic implements ApplicationListener{
public void runWave(){ public void runWave(){
spawner.spawnEnemies(); spawner.spawnEnemies();
state.wave++; state.wave++;
state.wavetime = world.isCampaign() && world.getSector().isLaunchWave(state.wave) ? state.rules.waveSpacing * state.rules.launchWaveMultiplier : state.rules.waveSpacing; state.wavetime = state.isCampaign() && state.getSector().isLaunchWave(state.wave) ? state.rules.waveSpacing * state.rules.launchWaveMultiplier : state.rules.waveSpacing;
Events.fire(new WaveEvent()); Events.fire(new WaveEvent());
} }
@@ -152,7 +152,7 @@ public class Logic implements ApplicationListener{
} }
if(alive != null && !state.gameOver){ if(alive != null && !state.gameOver){
if(world.isCampaign() && alive == state.rules.defaultTeam){ if(state.isCampaign() && alive == state.rules.defaultTeam){
//in attack maps, a victorious game over is equivalent to a launch //in attack maps, a victorious game over is equivalent to a launch
Call.launchZone(); Call.launchZone();
}else{ }else{
@@ -173,9 +173,9 @@ public class Logic implements ApplicationListener{
Fx.launch.at(tile); Fx.launch.at(tile);
} }
if(world.isCampaign()){ if(state.isCampaign()){
//TODO implement //TODO implement
//world.getSector().setLaunched(); //state.getSector().setLaunched();
} }
Time.runTask(30f, () -> { Time.runTask(30f, () -> {
@@ -212,7 +212,7 @@ public class Logic implements ApplicationListener{
} }
if(!state.isPaused()){ if(!state.isPaused()){
if(world.isCampaign()){ if(state.isCampaign()){
universe.update(); universe.update();
} }
Time.update(); Time.update();

View File

@@ -178,14 +178,6 @@ public class World{
return generating; return generating;
} }
public boolean isCampaign(){
return getSector() != null;
}
public Sector getSector(){
return state.rules.sector;
}
public void loadGenerator(int width, int height, Cons<Tiles> generator){ public void loadGenerator(int width, int height, Cons<Tiles> generator){
beginMapLoad(); beginMapLoad();
@@ -352,13 +344,13 @@ public class World{
} }
//TODO tweak noise and radius //TODO tweak noise and radius
if(world.isCampaign()){ if(state.isCampaign()){
int circleBlend = 14; int circleBlend = 14;
//quantized angle //quantized angle
float offset = getSector().rect.rotation + 90; float offset = state.getSector().rect.rotation + 90;
float angle = Angles.angle(x, y, tiles.width/2, tiles.height/2) + offset; float angle = Angles.angle(x, y, tiles.width/2, tiles.height/2) + offset;
//polygon sides, depends on sector //polygon sides, depends on sector
int sides = getSector().tile.corners.length; int sides = state.getSector().tile.corners.length;
float step = 360f / sides; float step = 360f / sides;
//prev and next angles of poly //prev and next angles of poly
float prev = Mathf.round(angle, step); float prev = Mathf.round(angle, step);

View File

@@ -70,7 +70,7 @@ public abstract class UnlockableContent extends MappableContent{
/** @return whether this content is unlocked, or the player is in a custom game. */ /** @return whether this content is unlocked, or the player is in a custom game. */
public final boolean unlockedCur(){ public final boolean unlockedCur(){
return Vars.data.isUnlocked(this) || !Vars.world.isCampaign(); return Vars.data.isUnlocked(this) || !Vars.state.isCampaign();
} }
public final boolean locked(){ public final boolean locked(){

View File

@@ -45,7 +45,7 @@ public class Universe{
} }
//update sector light //update sector light
float light = world.getSector().getLight(); float light = state.getSector().getLight();
float alpha = Mathf.clamp(Mathf.map(light, 0f, 0.8f, 0.1f, 1f)); float alpha = Mathf.clamp(Mathf.map(light, 0f, 0.8f, 0.1f, 1f));
//assign and map so darkness is not 100% dark //assign and map so darkness is not 100% dark
state.rules.ambientLight.a = 1f - alpha; state.rules.ambientLight.a = 1f - alpha;

View File

@@ -27,8 +27,8 @@ public class FileMapGenerator implements WorldGenerator{
SaveIO.load(map.file); SaveIO.load(map.file);
for(Tile tile : tiles){ for(Tile tile : tiles){
if(tile.block() instanceof StorageBlock && !(tile.block() instanceof CoreBlock) && world.getSector() != null){ if(tile.block() instanceof StorageBlock && !(tile.block() instanceof CoreBlock) && state.getSector() != null){
for(Content content : world.getSector().data.resources){ for(Content content : state.getSector().data.resources){
if(content instanceof Item && Mathf.chance(0.3)){ if(content instanceof Item && Mathf.chance(0.3)){
tile.entity.items().add((Item)content, Math.min(Mathf.random(500), tile.block().itemCapacity)); tile.entity.items().add((Item)content, Math.min(Mathf.random(500), tile.block().itemCapacity));
} }

View File

@@ -91,6 +91,6 @@ public class DatabaseDialog extends FloatingDialog{
} }
boolean unlocked(UnlockableContent content){ boolean unlocked(UnlockableContent content){
return (!Vars.world.isCampaign() && !Vars.state.is(State.menu)) || content.unlocked(); return (!Vars.state.isCampaign() && !Vars.state.is(State.menu)) || content.unlocked();
} }
} }

View File

@@ -66,7 +66,7 @@ public class GameOverDialog extends FloatingDialog{
t.add(Core.bundle.format("stat.playtime", control.saves.getCurrent().getPlayTime())); t.add(Core.bundle.format("stat.playtime", control.saves.getCurrent().getPlayTime()));
t.row(); t.row();
} }
if(world.isCampaign() && !state.stats.itemsDelivered.isEmpty()){ if(state.isCampaign() && !state.stats.itemsDelivered.isEmpty()){
t.add("$stat.delivered"); t.add("$stat.delivered");
t.row(); t.row();
for(Item item : content.items()){ for(Item item : content.items()){
@@ -80,14 +80,14 @@ public class GameOverDialog extends FloatingDialog{
} }
} }
if(world.isCampaign()){ if(state.isCampaign()){
RankResult result = state.stats.calculateRank(world.getSector(), state.launched); RankResult result = state.stats.calculateRank(state.getSector(), state.launched);
t.add(Core.bundle.format("stat.rank", result.rank + result.modifier)); t.add(Core.bundle.format("stat.rank", result.rank + result.modifier));
t.row(); t.row();
} }
}).pad(12); }).pad(12);
if(world.isCampaign()){ if(state.isCampaign()){
buttons.addButton("$continue", () -> { buttons.addButton("$continue", () -> {
hide(); hide();
state.set(State.menu); state.set(State.menu);

View File

@@ -41,7 +41,7 @@ public class PausedDialog extends FloatingDialog{
cont.addImageTextButton("$back", Icon.left, this::hide).colspan(2).width(dw * 2 + 20f); cont.addImageTextButton("$back", Icon.left, this::hide).colspan(2).width(dw * 2 + 20f);
cont.row(); cont.row();
if(world.isCampaign()){ if(state.isCampaign()){
cont.addImageTextButton("$techtree", Icon.tree, ui.tech::show); cont.addImageTextButton("$techtree", Icon.tree, ui.tech::show);
}else{ }else{
cont.addImageTextButton("$database", Icon.book, ui.database::show); cont.addImageTextButton("$database", Icon.book, ui.database::show);
@@ -49,7 +49,7 @@ public class PausedDialog extends FloatingDialog{
cont.addImageTextButton("$settings", Icon.settings, ui.settings::show); cont.addImageTextButton("$settings", Icon.settings, ui.settings::show);
if(!state.rules.tutorial){ if(!state.rules.tutorial){
if(!world.isCampaign() && !state.isEditor()){ if(!state.isCampaign() && !state.isEditor()){
cont.row(); cont.row();
cont.addImageTextButton("$savegame", Icon.save, save::show); cont.addImageTextButton("$savegame", Icon.save, save::show);
cont.addImageTextButton("$loadgame", Icon.upload, load::show).disabled(b -> net.active()); cont.addImageTextButton("$loadgame", Icon.upload, load::show).disabled(b -> net.active());
@@ -79,7 +79,7 @@ public class PausedDialog extends FloatingDialog{
cont.addRowImageTextButton("$back", Icon.play, this::hide); cont.addRowImageTextButton("$back", Icon.play, this::hide);
cont.addRowImageTextButton("$settings", Icon.settings, ui.settings::show); cont.addRowImageTextButton("$settings", Icon.settings, ui.settings::show);
if(!world.isCampaign() && !state.isEditor()){ if(!state.isCampaign() && !state.isEditor()){
cont.addRowImageTextButton("$save", Icon.save, save::show); cont.addRowImageTextButton("$save", Icon.save, save::show);
cont.row(); cont.row();

View File

@@ -84,7 +84,7 @@ public class HudFragment extends Fragment{
}else{ }else{
ui.chatfrag.toggle(); ui.chatfrag.toggle();
} }
}else if(world.isCampaign()){ }else if(state.isCampaign()){
ui.tech.show(); ui.tech.show();
}else{ }else{
ui.database.show(); ui.database.show();
@@ -497,10 +497,10 @@ public class HudFragment extends Fragment{
} }
private boolean inLaunchWave(){ private boolean inLaunchWave(){
return world.isCampaign() && return state.isCampaign() &&
world.getSector().metCondition() && state.getSector().metCondition() &&
!net.client() && !net.client() &&
state.wave % world.getSector().launchPeriod == 0 && !spawner.isSpawning(); state.wave % state.getSector().launchPeriod == 0 && !spawner.isSpawning();
} }
private boolean canLaunch(){ private boolean canLaunch(){
@@ -559,7 +559,7 @@ public class HudFragment extends Fragment{
}else{ }else{
builder.append(Core.bundle.get("launch")); builder.append(Core.bundle.get("launch"));
builder.append("\n"); builder.append("\n");
builder.append(Core.bundle.format("launch.next", state.wave + world.getSector().launchPeriod)); builder.append(Core.bundle.format("launch.next", state.wave + state.getSector().launchPeriod));
builder.append("\n"); builder.append("\n");
} }
builder.append("[]\n"); builder.append("[]\n");

View File

@@ -440,7 +440,7 @@ public class PlacementFragment extends Fragment{
} }
boolean unlocked(Block block){ boolean unlocked(Block block){
return !world.isCampaign() || data.isUnlocked(block); return !state.isCampaign() || data.isUnlocked(block);
} }
/** Returns the currently displayed block in the top box. */ /** Returns the currently displayed block in the top box. */

View File

@@ -376,7 +376,7 @@ public class Block extends BlockStorage{
/** 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){
//only unlocks content in zones //only unlocks content in zones
if(!headless && tile.team() == player.team() && world.isCampaign()){ if(!headless && tile.team() == player.team() && state.isCampaign()){
logic.handleContent(content); logic.handleContent(content);
} }
} }

View File

@@ -24,7 +24,7 @@ public class ItemSelection{
int i = 0; int i = 0;
for(T item : items){ for(T item : items){
if(!data.isUnlocked(item) && world.isCampaign()) continue; if(!data.isUnlocked(item) && state.isCampaign()) continue;
ImageButton button = cont.addImageButton(Tex.whiteui, Styles.clearToggleTransi, 24, () -> control.input.frag.config.hideConfig()).group(group).get(); ImageButton button = cont.addImageButton(Tex.whiteui, Styles.clearToggleTransi, 24, () -> control.input.frag.config.hideConfig()).group(group).get();
button.changed(() -> consumer.get(button.isChecked() ? item : null)); button.changed(() -> consumer.get(button.isChecked() ? item : null));

View File

@@ -47,7 +47,7 @@ public class ItemTurret extends CooledTurret{
@Override @Override
public void build(Tile tile, Table table){ public void build(Tile tile, Table table){
MultiReqImage image = new MultiReqImage(); MultiReqImage image = new MultiReqImage();
content.items().each(i -> filter.get(i) && (!world.isCampaign() || data.isUnlocked(i)), item -> image.add(new ReqImage(new ItemImage(item.icon(Cicon.medium)), content.items().each(i -> filter.get(i) && (!state.isCampaign() || data.isUnlocked(i)), item -> image.add(new ReqImage(new ItemImage(item.icon(Cicon.medium)),
() -> tile.entity != null && !((ItemTurretEntity)tile.entity).ammo.isEmpty() && ((ItemEntry)tile.<ItemTurretEntity>ent().ammo.peek()).item == item))); () -> tile.entity != null && !((ItemTurretEntity)tile.entity).ammo.isEmpty() && ((ItemEntry)tile.<ItemTurretEntity>ent().ammo.peek()).item == item)));
table.add(image).size(8 * 4); table.add(image).size(8 * 4);

View File

@@ -16,8 +16,7 @@ import mindustry.world.Tile;
import mindustry.world.meta.BlockStat; import mindustry.world.meta.BlockStat;
import mindustry.world.meta.StatUnit; import mindustry.world.meta.StatUnit;
import static mindustry.Vars.data; import static mindustry.Vars.*;
import static mindustry.Vars.world;
public class LaunchPad extends StorageBlock{ public class LaunchPad extends StorageBlock{
public final int timerLaunch = timers++; public final int timerLaunch = timers++;
@@ -73,7 +72,7 @@ public class LaunchPad extends StorageBlock{
public void update(Tile tile){ public void update(Tile tile){
Tilec entity = tile.entity; Tilec entity = tile.entity;
if(world.isCampaign() && entity.consValid() && entity.items().total() >= itemCapacity && entity.timer(timerLaunch, launchTime / entity.timeScale())){ if(state.isCampaign() && entity.consValid() && entity.items().total() >= itemCapacity && entity.timer(timerLaunch, launchTime / entity.timeScale())){
for(Item item : Vars.content.items()){ for(Item item : Vars.content.items()){
Events.fire(Trigger.itemLaunch); Events.fire(Trigger.itemLaunch);
Fx.padlaunch.at(tile); Fx.padlaunch.at(tile);

View File

@@ -35,7 +35,7 @@ public class ConsumeItemFilter extends Consume{
@Override @Override
public void build(Tile tile, Table table){ public void build(Tile tile, Table table){
MultiReqImage image = new MultiReqImage(); MultiReqImage image = new MultiReqImage();
content.items().each(i -> filter.get(i) && (!world.isCampaign() || data.isUnlocked(i)), item -> image.add(new ReqImage(new ItemImage(item.icon(Cicon.medium), 1), () -> tile.entity != null && tile.entity.items() != null && tile.entity.items().has(item)))); content.items().each(i -> filter.get(i) && (!state.isCampaign() || data.isUnlocked(i)), item -> image.add(new ReqImage(new ItemImage(item.icon(Cicon.medium), 1), () -> tile.entity != null && tile.entity.items() != null && tile.entity.items().has(item))));
table.add(image).size(8 * 4); table.add(image).size(8 * 4);
} }

View File

@@ -8,7 +8,7 @@ public enum BuildVisibility{
shown(() -> true), shown(() -> true),
debugOnly(() -> false), debugOnly(() -> false),
sandboxOnly(() -> Vars.state.rules.infiniteResources), sandboxOnly(() -> Vars.state.rules.infiniteResources),
campaignOnly(() -> Vars.world.isCampaign()), campaignOnly(() -> Vars.state.isCampaign()),
lightingOnly(() -> Vars.state.rules.lighting); lightingOnly(() -> Vars.state.rules.lighting);
private final Boolp visible; private final Boolp visible;

View File

@@ -188,7 +188,7 @@ public class SStats implements SteamUserStatsCallback{
Events.on(LoseEvent.class, e -> { Events.on(LoseEvent.class, e -> {
if(campaign()){ if(campaign()){
//TODO implement //TODO implement
//if(world.getSector().metCondition() && (state.wave - world.getSector().conditionWave) / world.getSector().launchPeriod >= 1){ //if(state.getSector().metCondition() && (state.wave - state.getSector().conditionWave) / state.getSector().launchPeriod >= 1){
// skipLaunching2Death.complete(); // skipLaunching2Death.complete();
//} //}
} }
@@ -240,7 +240,7 @@ public class SStats implements SteamUserStatsCallback{
SStat.attacksWon.add(); SStat.attacksWon.add();
} }
RankResult result = state.stats.calculateRank(world.getSector(), state.launched); RankResult result = state.stats.calculateRank(state.getSector(), state.launched);
if(result.rank == Rank.S) earnSRank.complete(); if(result.rank == Rank.S) earnSRank.complete();
if(result.rank == Rank.SS) earnSSRank.complete(); if(result.rank == Rank.SS) earnSSRank.complete();
} }
@@ -274,7 +274,7 @@ public class SStats implements SteamUserStatsCallback{
} }
private boolean campaign(){ private boolean campaign(){
return Vars.world.isCampaign(); return Vars.state.isCampaign();
} }
@Override @Override