Preset capture waves / More tooltips

This commit is contained in:
Anuken
2020-07-31 14:06:15 -04:00
parent caf5d37d98
commit e4cdf20030
7 changed files with 26 additions and 134 deletions

Binary file not shown.

View File

@@ -9,7 +9,7 @@ public class SectorPresets implements ContentList{
public static SectorPreset public static SectorPreset
groundZero, groundZero,
craters, frozenForest, ruinousShores, stainedMountains, tarFields, fungalPass, craters, frozenForest, ruinousShores, stainedMountains, tarFields, fungalPass,
saltFlats, overgrowth, impact0078, crags, saltFlats, overgrowth,
desolateRift, nuclearComplex; desolateRift, nuclearComplex;
@Override @Override
@@ -17,34 +17,27 @@ public class SectorPresets implements ContentList{
groundZero = new SectorPreset("groundZero", serpulo, 15){{ groundZero = new SectorPreset("groundZero", serpulo, 15){{
alwaysUnlocked = true; alwaysUnlocked = true;
conditionWave = 5; captureWave = 10;
launchPeriod = 5;
rules = r -> {
r.winWave = 10;
};
}}; }};
saltFlats = new SectorPreset("saltFlats", serpulo, 101){{ saltFlats = new SectorPreset("saltFlats", serpulo, 101){{
conditionWave = 10;
launchPeriod = 5;
}}; }};
frozenForest = new SectorPreset("frozenForest", serpulo, 86){{ frozenForest = new SectorPreset("frozenForest", serpulo, 86){{
conditionWave = 10; captureWave = 40;
}}; }};
craters = new SectorPreset("craters", serpulo, 18){{ craters = new SectorPreset("craters", serpulo, 18){{
conditionWave = 10; captureWave = 40;
}}; }};
ruinousShores = new SectorPreset("ruinousShores", serpulo, 19){{ ruinousShores = new SectorPreset("ruinousShores", serpulo, 19){{
conditionWave = 20; captureWave = 40;
launchPeriod = 20;
}}; }};
stainedMountains = new SectorPreset("stainedMountains", serpulo, 20){{ stainedMountains = new SectorPreset("stainedMountains", serpulo, 20){{
conditionWave = 10; captureWave = 30;
launchPeriod = 10;
}}; }};
fungalPass = new SectorPreset("fungalPass", serpulo, 21){{ fungalPass = new SectorPreset("fungalPass", serpulo, 21){{
@@ -52,49 +45,20 @@ public class SectorPresets implements ContentList{
}}; }};
overgrowth = new SectorPreset("overgrowth", serpulo, 22){{ overgrowth = new SectorPreset("overgrowth", serpulo, 22){{
conditionWave = 12;
launchPeriod = 4;
}}; }};
tarFields = new SectorPreset("tarFields", serpulo, 23){{ tarFields = new SectorPreset("tarFields", serpulo, 23){{
conditionWave = 15; captureWave = 40;
launchPeriod = 10;
}}; }};
desolateRift = new SectorPreset("desolateRift", serpulo, 123){{ desolateRift = new SectorPreset("desolateRift", serpulo, 123){{
conditionWave = 3; captureWave = 40;
launchPeriod = 2;
}}; }};
nuclearComplex = new SectorPreset("nuclearComplex", serpulo, 130){{ nuclearComplex = new SectorPreset("nuclearComplex", serpulo, 130){{
conditionWave = 30; captureWave = 60;
launchPeriod = 15;
}}; }};
/*
crags = new Zone("crags", new MapGenerator("crags").dist(2f)){{
loadout = Loadouts.basicFoundation;
baseLaunchCost = ItemStack.with();
startingItems = ItemStack.list(Items.copper, 2000, Items.lead, 2000, Items.graphite, 500, Items.titanium, 500, Items.silicon, 500);
conditionWave = 3;
launchPeriod = 2;
requirements = with(stainedMountains, 40);
blockRequirements = new Block[]{Blocks.thermalGenerator};
resources = Array.with(Items.copper, Items.scrap, Items.lead, Items.coal, Items.sand};
}};
impact0078 = new SectorPreset("impact0078"){{
loadout = Loadouts.basicNucleus;
baseLaunchCost = ItemStack.list();
startingItems = ItemStack.list(Items.copper, 2000, Items.lead, 2000, Items.graphite, 500, Items.titanium, 500, Items.silicon, 500);
conditionWave = 3;
launchPeriod = 2;
//requirements = with(nuclearComplex, 40);
//blockRequirements = new Block[]{Blocks.thermalGenerator};
//resources = Array.with(Items.copper, Items.scrap, Items.lead, Items.coal, Items.titanium, Items.thorium};
}};*/
} }
} }

View File

@@ -99,6 +99,7 @@ public class UI implements ApplicationListener, Loadable{
Dialog.setHideAction(() -> sequence(fadeOut(0.1f))); Dialog.setHideAction(() -> sequence(fadeOut(0.1f)));
Tooltips.getInstance().animations = false; Tooltips.getInstance().animations = false;
Tooltips.getInstance().textProvider = text -> new Tooltip(t -> t.background(Styles.black5).margin(4f).add(text));
Core.settings.setErrorHandler(e -> { Core.settings.setErrorHandler(e -> {
e.printStackTrace(); e.printStackTrace();

View File

@@ -29,27 +29,6 @@ public class Objectives{
} }
} }
public static class SectorWave extends SectorObjective{
public int wave;
public SectorWave(SectorPreset zone, int wave){
this.preset = zone;
this.wave = wave;
}
protected SectorWave(){}
@Override
public boolean complete(){
return preset.bestWave() >= wave;
}
@Override
public String display(){
return Core.bundle.format("requirement.wave", wave, preset.localizedName);
}
}
public static class SectorComplete extends SectorObjective{ public static class SectorComplete extends SectorObjective{
public SectorComplete(SectorPreset zone){ public SectorComplete(SectorPreset zone){
@@ -65,29 +44,11 @@ public class Objectives{
@Override @Override
public String display(){ public String display(){
return Core.bundle.format("requirement.capture",preset.localizedName); return Core.bundle.format("requirement.capture", preset.localizedName);
}
}
public static class Launched extends SectorObjective{
public Launched(SectorPreset zone){
this.preset = zone;
}
protected Launched(){}
@Override
public boolean complete(){
return preset.hasLaunched();
}
@Override
public String display(){
return Core.bundle.format("requirement.core", preset.localizedName);
} }
} }
//TODO merge
public abstract static class SectorObjective implements Objective{ public abstract static class SectorObjective implements Objective{
public @NonNull SectorPreset preset; public @NonNull SectorPreset preset;
} }

View File

@@ -330,20 +330,20 @@ public class DesktopInput extends InputHandler{
table.button(Icon.paste, Styles.clearPartiali, () -> { table.button(Icon.paste, Styles.clearPartiali, () -> {
ui.schematics.show(); ui.schematics.show();
}); }).tooltip("Schematics");
table.button(Icon.tree, Styles.clearPartiali, () -> { table.button(Icon.tree, Styles.clearPartiali, () -> {
ui.research.show(); ui.research.show();
}).visible(() -> state.isCampaign()); }).visible(() -> state.isCampaign()).tooltip("Research");
table.button(Icon.map, Styles.clearPartiali, () -> { table.button(Icon.map, Styles.clearPartiali, () -> {
ui.planet.show(); ui.planet.show();
}).visible(() -> state.isCampaign()); }).visible(() -> state.isCampaign()).tooltip("Planet Map");
table.button(Icon.up, Styles.clearPartiali, () -> { table.button(Icon.up, Styles.clearPartiali, () -> {
ui.planet.show(state.getSector(), player.team().core()); ui.planet.show(state.getSector(), player.team().core());
}).visible(() -> state.isCampaign()) }).visible(() -> state.isCampaign())
.disabled(b -> player.team().core() == null || !player.team().core().items.has(player.team().core().block.requirements)); .disabled(b -> player.team().core() == null || !player.team().core().items.has(player.team().core().block.requirements)).tooltip("Launch Core");
} }
void pollInput(){ void pollInput(){

View File

@@ -1,6 +1,5 @@
package mindustry.type; package mindustry.type;
import arc.*;
import arc.func.*; import arc.func.*;
import arc.graphics.g2d.*; import arc.graphics.g2d.*;
import arc.scene.ui.layout.*; import arc.scene.ui.layout.*;
@@ -11,16 +10,15 @@ import mindustry.gen.*;
import mindustry.maps.generators.*; import mindustry.maps.generators.*;
import mindustry.ui.*; import mindustry.ui.*;
import static mindustry.Vars.*;
public class SectorPreset extends UnlockableContent{ public class SectorPreset extends UnlockableContent{
public @NonNull FileMapGenerator generator; public @NonNull FileMapGenerator generator;
public @NonNull Planet planet; public @NonNull Planet planet;
public @NonNull Sector sector; public @NonNull Sector sector;
public Cons<Rules> rules = rules -> {}; public int captureWave = 0;
public int conditionWave = Integer.MAX_VALUE; public Cons<Rules> rules = rules -> {
public int launchPeriod = 10; rules.winWave = captureWave;
};
public SectorPreset(String name, Planet planet, int sector){ public SectorPreset(String name, Planet planet, int sector){
super(name); super(name);
@@ -31,39 +29,6 @@ public class SectorPreset extends UnlockableContent{
planet.preset(sector, this); planet.preset(sector, this);
} }
public Rules getRules(){
return generator.map.rules();
}
public boolean isLaunchWave(int wave){
return metCondition() && wave % launchPeriod == 0;
}
public boolean hasLaunched(){
//TODO implement
return Core.settings.getBool(name + "-launched", false);
}
public int bestWave(){
//TODO implement
return Core.settings.getInt(name + "-wave", 0);
}
/** @return whether initial conditions to launch are met. */
public boolean isLaunchMet(){
return bestWave() >= conditionWave;
}
/** Whether this zone has met its condition; if true, the player can leave. */
public boolean metCondition(){
//players can't leave in attack mode.
return state.wave >= conditionWave && !state.rules.attackMode;
}
public boolean canConfigure(){
return true;
}
@Override @Override
public TextureRegion icon(Cicon c){ public TextureRegion icon(Cicon c){
return Icon.terrain.getRegion(); return Icon.terrain.getRegion();

View File

@@ -86,10 +86,11 @@ public class SStats implements SteamUserStatsCallback{
} }
}); });
//TODO achievement invalid
Events.on(ZoneConfigureCompleteEvent.class, e -> { Events.on(ZoneConfigureCompleteEvent.class, e -> {
if(!content.sectors().contains(z -> !z.canConfigure())){ //if(!content.sectors().contains(z -> !z.canConfigure())){
configAllZones.complete(); // configAllZones.complete();
} //}
}); });
Events.on(Trigger.newGame, () -> Core.app.post(() -> { Events.on(Trigger.newGame, () -> Core.app.post(() -> {