mirror of
https://github.com/Anuken/Mindustry.git
synced 2026-01-27 06:51:30 -08:00
fixed some sector things, broke more things
This commit is contained in:
parent
988e1add82
commit
45b87ec615
12 changed files with 30 additions and 47 deletions
|
|
@ -160,9 +160,7 @@ public class Control implements ApplicationListener, Loadable{
|
|||
|
||||
//delete the save, it is gone.
|
||||
if(saves.getCurrent() != null && !state.rules.tutorial){
|
||||
Sector sector = state.getSector();
|
||||
sector.save = null;
|
||||
saves.getCurrent().delete();
|
||||
saves.getCurrent().save();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -283,18 +281,16 @@ public class Control implements ApplicationListener, Loadable{
|
|||
state.rules.sector = sector;
|
||||
|
||||
//if there is no base, simulate a new game and place the right loadout at the spawn position
|
||||
//TODO this is broken?
|
||||
if(state.rules.defaultTeam.cores().isEmpty()){
|
||||
//reset wave so things are more fair
|
||||
state.wave = 1;
|
||||
|
||||
//kill all friendly units, since they should be dead anwyay
|
||||
//kill all units, since they should be dead anwyay
|
||||
for(Unit unit : Groups.unit){
|
||||
if(unit.team() == state.rules.defaultTeam){
|
||||
unit.remove();
|
||||
}
|
||||
unit.remove();
|
||||
}
|
||||
|
||||
Tile spawn = world.tile(sector.getSpawnPosition());
|
||||
//TODO PLACE CORRECT LOADOUT
|
||||
Schematics.placeLoadout(universe.getLastLoadout(), spawn.x, spawn.y);
|
||||
|
||||
//set up camera/player locations
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ public class Logic implements ApplicationListener{
|
|||
}
|
||||
|
||||
//waves depend on attack status.
|
||||
state.rules.waves = state.rules.sector.isUnderAttack();
|
||||
state.rules.waves = state.rules.sector.isUnderAttack() || !state.rules.sector.hasBase();
|
||||
|
||||
//add resources based on turns passed
|
||||
if(state.rules.sector.save != null && core != null){
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ public class Objectives{
|
|||
}
|
||||
}
|
||||
|
||||
//TODO fix
|
||||
public static class SectorComplete extends SectorObjective{
|
||||
|
||||
public SectorComplete(SectorPreset zone){
|
||||
|
|
@ -39,12 +38,12 @@ public class Objectives{
|
|||
|
||||
@Override
|
||||
public boolean complete(){
|
||||
return preset.sector.save != null && preset.sector.save.meta.wave >= preset.sector.save.meta.rules.winWave;
|
||||
return preset.sector.save != null && preset.sector.save.meta.wave >= preset.captureWave;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String display(){
|
||||
return Core.bundle.format("requirement.wave", preset.sector.save == null ? "<unknown>" : preset.sector.save.meta.rules.winWave, preset.localizedName);
|
||||
return Core.bundle.format("requirement.capture", preset.localizedName);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -161,17 +161,14 @@ public class Universe{
|
|||
|
||||
//if so, just delete the save for now. it's lost.
|
||||
//TODO don't delete it later maybe
|
||||
sector.save.delete();
|
||||
//clear recieved
|
||||
sector.setExtraItems(new ItemSeq());
|
||||
sector.save = null;
|
||||
sector.setDamage(0f);
|
||||
sector.setDamage(1.01f);
|
||||
}else if(attacked && wavesPassed > 0 && sector.save.meta.wave + wavesPassed >= sector.save.meta.rules.winWave && !sector.hasEnemyBase()){
|
||||
//autocapture the sector
|
||||
sector.setUnderAttack(false);
|
||||
|
||||
//fire the event
|
||||
Events.fire(new SectorCaptureEvent(state.rules.sector));
|
||||
Events.fire(new SectorCaptureEvent(sector));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -179,9 +176,10 @@ public class Universe{
|
|||
if(sector.save != null && sector.save.meta != null && sector.save.meta.secinfo != null && sector.save.meta.secinfo.destination != null){
|
||||
Sector to = sector.save.meta.secinfo.destination;
|
||||
if(to.save != null){
|
||||
float scl = Math.max(1f - sector.getDamage(), 0);
|
||||
ItemSeq items = new ItemSeq();
|
||||
//calculated exported items to this sector
|
||||
sector.save.meta.secinfo.export.each((item, stat) -> items.add(item, (int)(stat.mean * newSecondsPassed)));
|
||||
sector.save.meta.secinfo.export.each((item, stat) -> items.add(item, (int)(stat.mean * newSecondsPassed * scl)));
|
||||
to.addItems(items);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -360,6 +360,13 @@ public class SectorDamage{
|
|||
}
|
||||
}
|
||||
|
||||
//kill every core if damage is maximum
|
||||
if(damage >= 1){
|
||||
for(Building c : state.rules.defaultTeam.cores().copy()){
|
||||
c.tile.remove();
|
||||
}
|
||||
}
|
||||
|
||||
float falloff = (damage) / (Math.max(tiles.width, tiles.height) * Mathf.sqrt2);
|
||||
int peak = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ public class Sector{
|
|||
|
||||
/** @return whether the player has a base here. */
|
||||
public boolean hasBase(){
|
||||
return save != null && !save.meta.tags.getBool("nocores");
|
||||
return save != null && !save.meta.tags.getBool("nocores") && getDamage() < 1f;
|
||||
}
|
||||
|
||||
/** @return whether the enemy has a generated base here. */
|
||||
|
|
@ -229,9 +229,10 @@ public class Sector{
|
|||
|
||||
if(save != null){
|
||||
long seconds = getSecondsPassed();
|
||||
float scl = Math.max(1f - getDamage(), 0);
|
||||
|
||||
//add produced items
|
||||
save.meta.secinfo.production.each((item, stat) -> count.add(item, (int)(stat.mean * seconds)));
|
||||
save.meta.secinfo.production.each((item, stat) -> count.add(item, (int)(stat.mean * seconds * scl)));
|
||||
|
||||
//add received items
|
||||
count.add(getExtraItems());
|
||||
|
|
@ -253,6 +254,8 @@ public class Sector{
|
|||
|
||||
/** @return sector damage from enemy, 0 to 1 */
|
||||
public float getDamage(){
|
||||
//dead sector
|
||||
if(save != null & save.meta.tags.getBool("nocores")) return 1.01f;
|
||||
return Core.settings.getFloat(key("damage"), 0f);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -394,8 +394,10 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
|||
stable.table(t -> {
|
||||
t.left();
|
||||
|
||||
float scl = Math.max(1f - sector.getDamage(), 0);
|
||||
|
||||
sector.save.meta.secinfo.production.each((item, stat) -> {
|
||||
int total = (int)(stat.mean * 60);
|
||||
int total = (int)(stat.mean * 60 * scl);
|
||||
if(total > 1){
|
||||
t.image(item.icon(Cicon.small)).padRight(3);
|
||||
t.add(UI.formatAmount(total) + " " + Core.bundle.get("unit.perminute")).color(Color.lightGray);
|
||||
|
|
|
|||
|
|
@ -291,7 +291,7 @@ public class SettingsMenuDialog extends SettingsDialog{
|
|||
}
|
||||
return s + "%";
|
||||
});
|
||||
graphics.sliderPref("bridgeopacity", 75, 0, 100, 5, s -> s + "%");
|
||||
graphics.sliderPref("bridgeopacity", 100, 0, 100, 5, s -> s + "%");
|
||||
|
||||
if(!mobile){
|
||||
graphics.checkPref("vsync", true, b -> Core.graphics.setVSync(b));
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ public class HudFragment extends Fragment{
|
|||
//TODO details and stuff
|
||||
Events.on(SectorCaptureEvent.class, e ->{
|
||||
//TODO localize
|
||||
showToast("Sector[accent] captured[]!");
|
||||
showToast("Sector [accent]" + (e.sector.isBeingPlayed() ? "" : e.sector.id + " ") + "[]captured!");
|
||||
});
|
||||
|
||||
//TODO localize
|
||||
|
|
|
|||
|
|
@ -310,23 +310,6 @@ public class CoreBlock extends StorageBlock{
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyed(){
|
||||
super.onDestroyed();
|
||||
|
||||
if(state.isCampaign() && team == state.rules.waveTeam){
|
||||
//do not recache
|
||||
world.setGenerating(true);
|
||||
tile.setOverlay(Blocks.spawn);
|
||||
world.setGenerating(false);
|
||||
|
||||
if(!spawner.getSpawns().contains(tile)){
|
||||
spawner.getSpawns().add(tile);
|
||||
}
|
||||
spawner.doShockwave(x, y);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void placed(){
|
||||
super.placed();
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
org.gradle.daemon=true
|
||||
org.gradle.jvmargs=-Xms256m -Xmx1024m
|
||||
archash=171cba8dda6deed931b998a0eb368d61f68ea38c
|
||||
archash=7ce118ba1fcbe652dd3b225fd7d16a7a761c238e
|
||||
|
|
|
|||
|
|
@ -63,11 +63,6 @@ public class FakeGraphics extends Graphics{
|
|||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getRawDeltaTime(){
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFramesPerSecond(){
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue