Removed all references to size

This commit is contained in:
Anuken
2018-10-19 13:48:08 -04:00
parent a6d82f44b3
commit c1362a02f3
9 changed files with 28 additions and 171 deletions

View File

@@ -217,7 +217,7 @@ public class World extends Module{
beginMapLoad(); beginMapLoad();
int width = sectorSize * sector.width, height = sectorSize * sector.height; int width = sectorSize, height = sectorSize;
Tile[][] tiles = createTiles(width, height); Tile[][] tiles = createTiles(width, height);

View File

@@ -26,8 +26,7 @@ public class SectorPresets{
//base tutorial mission //base tutorial mission
add(new SectorPreset(0, 0, add(new SectorPreset(0, 0,
TutorialSector.getMissions(), TutorialSector.getMissions(),
Array.with(Items.copper, Items.coal, Items.lead), Array.with(Items.copper, Items.coal, Items.lead)));
1));
//command center mission //command center mission
add(new SectorPreset(0, 1, add(new SectorPreset(0, 1,
@@ -39,8 +38,7 @@ public class SectorPresets{
new CommandMission(UnitCommand.attack), new CommandMission(UnitCommand.attack),
new BattleMission() new BattleMission()
), ),
Array.with(Items.copper, Items.lead, Items.coal), Array.with(Items.copper, Items.lead, Items.coal)));
2));
//pad mission //pad mission
add(new SectorPreset(0, -2, add(new SectorPreset(0, -2,
@@ -49,8 +47,7 @@ public class SectorPresets{
new MechMission(mobile ? Mechs.alpha : Mechs.dart), new MechMission(mobile ? Mechs.alpha : Mechs.dart),
new WaveMission(15) new WaveMission(15)
), ),
Array.with(Items.copper, Items.lead, Items.coal, Items.titanium), Array.with(Items.copper, Items.lead, Items.coal, Items.titanium)));
2));
//oil mission //oil mission
add(new SectorPreset(-2, 0, add(new SectorPreset(-2, 0,
@@ -61,8 +58,7 @@ public class SectorPresets{
Missions.blockRecipe(CraftingBlocks.biomatterCompressor), Missions.blockRecipe(CraftingBlocks.biomatterCompressor),
new ContentMission(Liquids.oil) new ContentMission(Liquids.oil)
), ),
Array.with(Items.copper, Items.lead, Items.coal, Items.titanium), Array.with(Items.copper, Items.lead, Items.coal, Items.titanium)));
2));
} }
public Array<Item> getOres(int x, int y){ public Array<Item> getOres(int x, int y){
@@ -74,12 +70,8 @@ public class SectorPresets{
} }
private void add(SectorPreset preset){ private void add(SectorPreset preset){
for(int x = 0; x < preset.size; x++){ presets.put(preset.x, preset.y, preset);
for(int y = 0; y < preset.size; y++){ orePresets.put(preset.x, preset.y, preset.ores);
presets.put(x + preset.x, y + preset.y, preset);
orePresets.put(x + preset.x, y + preset.y, preset.ores);
}
}
} }
public static class SectorPreset{ public static class SectorPreset{
@@ -87,16 +79,11 @@ public class SectorPresets{
public final Array<Item> ores; public final Array<Item> ores;
public final int x, y; public final int x, y;
public SectorPreset(int x, int y, Array<Mission> missions, Array<Item> ores, int size){ public SectorPreset(int x, int y, Array<Mission> missions, Array<Item> ores){
this.missions = missions; this.missions = missions;
this.size = size;
this.x = x; this.x = x;
this.y = y; this.y = y;
this.ores = ores; this.ores = ores;
} }
void generate(Sector sector){
}
} }
} }

View File

@@ -3,34 +3,33 @@ package io.anuke.mindustry.maps;
import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Pixmap.Format; import com.badlogic.gdx.graphics.Pixmap.Format;
import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.math.GridPoint2;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import io.anuke.mindustry.content.Items; import io.anuke.mindustry.content.Items;
import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.entities.units.BaseUnit;
import io.anuke.mindustry.game.Difficulty; import io.anuke.mindustry.game.Difficulty;
import io.anuke.mindustry.game.Team; import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.io.SaveIO; import io.anuke.mindustry.io.SaveIO;
import io.anuke.mindustry.maps.SectorPresets.SectorPreset; import io.anuke.mindustry.maps.SectorPresets.SectorPreset;
import io.anuke.mindustry.maps.generation.WorldGenerator.GenResult; import io.anuke.mindustry.maps.generation.WorldGenerator.GenResult;
import io.anuke.mindustry.maps.missions.*; import io.anuke.mindustry.maps.missions.BattleMission;
import io.anuke.mindustry.maps.missions.Mission;
import io.anuke.mindustry.maps.missions.Missions;
import io.anuke.mindustry.maps.missions.WaveMission;
import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.type.ItemStack;
import io.anuke.mindustry.type.Recipe; import io.anuke.mindustry.type.Recipe;
import io.anuke.mindustry.world.ColorMapper; import io.anuke.mindustry.world.ColorMapper;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.defense.Wall; import io.anuke.mindustry.world.blocks.defense.Wall;
import io.anuke.ucore.core.Settings; import io.anuke.ucore.core.Settings;
import io.anuke.ucore.entities.Entities; import io.anuke.ucore.util.Bits;
import io.anuke.ucore.entities.EntityGroup; import io.anuke.ucore.util.GridMap;
import io.anuke.ucore.entities.trait.Entity; import io.anuke.ucore.util.Log;
import io.anuke.ucore.util.*; import io.anuke.ucore.util.Mathf;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
public class Sectors{ public class Sectors{
private static final int sectorImageSize = 32; private static final int sectorImageSize = 32;
private static final boolean checkExpansion = true;
private final GridMap<Sector> grid = new GridMap<>(); private final GridMap<Sector> grid = new GridMap<>();
private final SectorPresets presets = new SectorPresets(); private final SectorPresets presets = new SectorPresets();
@@ -82,18 +81,6 @@ public class Sectors{
return grid.get(Bits.getLeftShort(position), Bits.getRightShort(position)); return grid.get(Bits.getLeftShort(position), Bits.getRightShort(position));
} }
/**Returns whether a sector of this size and position can be fit here.*/
public boolean canFit(int x, int y, int width, int height){
for(int cx = x; cx < x + width; cx++){
for(int cy = y; cy < y + height; cy++){
if(grid.get(cx, cy) != null){
return false;
}
}
}
return true;
}
public Difficulty getDifficulty(Sector sector){ public Difficulty getDifficulty(Sector sector){
if(sector.difficulty == 0){ if(sector.difficulty == 0){
//yes, this means hard tutorial difficulty //yes, this means hard tutorial difficulty
@@ -163,24 +150,10 @@ public class Sectors{
Array<Sector> out = Settings.getObject("sector-data", Array.class, Array::new); Array<Sector> out = Settings.getObject("sector-data", Array.class, Array::new);
for(Sector sector : out){ for(Sector sector : out){
short x = sector.x;
short y = sector.y;
int w = sector.width;
int h = sector.height;
createTexture(sector); createTexture(sector);
initSector(sector); initSector(sector);
grid.put(sector.x, sector.y, sector);
sector.x = x;
sector.y = y;
sector.width = w;
sector.height = h;
for(int cx = 0; cx < sector.width; cx++){
for(int cy = 0; cy < sector.height; cy++){
grid.put(sector.x + cx, sector.y + cy, sector);
}
}
} }
if(out.size == 0){ if(out.size == 0){
@@ -188,6 +161,11 @@ public class Sectors{
} }
} }
public void clear(){
grid.clear();
save();
}
public void save(){ public void save(){
Array<Sector> out = new Array<>(); Array<Sector> out = new Array<>();
@@ -207,7 +185,6 @@ public class Sectors{
if(presets.get(sector.x, sector.y) != null){ if(presets.get(sector.x, sector.y) != null){
SectorPreset p = presets.get(sector.x, sector.y); SectorPreset p = presets.get(sector.x, sector.y);
sector.missions.addAll(p.missions); sector.missions.addAll(p.missions);
sector.width = sector.height = p.size;
sector.x = (short)p.x; sector.x = (short)p.x;
sector.y = (short)p.y; sector.y = (short)p.y;
}else{ }else{
@@ -237,42 +214,12 @@ public class Sectors{
} }
private void generate(Sector sector){ private void generate(Sector sector){
int width = Mathf.randomSeed(sector.getSeed()+1, 1, 3);
int height = Mathf.randomSeed(sector.getSeed()+2, 1, 3);
int finalWidth = 1, finalHeight = 1;
int finalX = sector.x, finalY = sector.y;
for(int x = 1; x <= width; x++){
for(int y = 1; y <= height; y++){
for(GridPoint2 point : Geometry.d8edge){
int shiftx = (int)(-x/2f + (point.x * (x - 1))/2f), shifty = (int)(-y/2f + (point.y * (y - 1))/2f);
if(canFit(sector.x + shiftx, sector.y + shifty, x, y)){
finalWidth = x;
finalHeight = y;
finalX = sector.x + shiftx;
finalY = sector.y + shifty;
}
}
}
}
sector.width = finalWidth;
sector.height = finalHeight;
sector.x = (short)finalX;
sector.y = (short)finalY;
//recipe mission //recipe mission
addRecipeMission(sector, 3); addRecipeMission(sector, 3);
//expand
addExpandMission(sector, 16);
if((sector.width + sector.height) <= 3){
sector.difficulty = Math.max(sector.difficulty - 3, 0);
}
//50% chance to get a wave mission //50% chance to get a wave mission
if(Mathf.randomSeed(sector.getSeed() + 6) < 0.5 || (sector.width + sector.height) <= 3){ if(Mathf.randomSeed(sector.getSeed() + 6) < 0.5){
sector.missions.add(new WaveMission(sector.difficulty*5 + Mathf.randomSeed(sector.getSeed(), 1, 4)*5)); sector.missions.add(new WaveMission(sector.difficulty*5 + Mathf.randomSeed(sector.getSeed(), 1, 4)*5));
}else{ }else{
sector.missions.add(new BattleMission()); sector.missions.add(new BattleMission());
@@ -283,22 +230,10 @@ public class Sectors{
//possibly another battle mission //possibly another battle mission
if(Mathf.randomSeed(sector.getSeed() + 3) < 0.3){ if(Mathf.randomSeed(sector.getSeed() + 3) < 0.3){
addExpandMission(sector, 20);
sector.missions.add(new BattleMission()); sector.missions.add(new BattleMission());
} }
} }
private void addExpandMission(Sector sector, int offset){
//add 0-1 expansion mission
if(sector.missions.size > 0){
int ex = sector.width >= 3 ? 0 : Mathf.randomSeed(sector.getSeed() + 6 + offset, -2, 2);
int ey = sector.height >= 3 ? 0 : Mathf.randomSeed(sector.getSeed() + 7 + offset, -2, 2);
if(ex != 0 || ey != 0){
sector.missions.add(new ExpandMission(ex, ey));
}
}
}
private void addRecipeMission(Sector sector, int offset){ private void addRecipeMission(Sector sector, int offset){
//build list of locked recipes to add mission for obtaining it //build list of locked recipes to add mission for obtaining it
if(!headless && Mathf.randomSeed(sector.getSeed() + offset) < 0.5){ if(!headless && Mathf.randomSeed(sector.getSeed() + offset) < 0.5){
@@ -323,7 +258,7 @@ public class Sectors{
sector.texture.dispose(); sector.texture.dispose();
} }
Pixmap pixmap = new Pixmap(sectorImageSize * sector.width, sectorImageSize * sector.height, Format.RGBA8888); Pixmap pixmap = new Pixmap(sectorImageSize, sectorImageSize, Format.RGBA8888);
GenResult secResult = new GenResult(); GenResult secResult = new GenResult();
for(int x = 0; x < pixmap.getWidth(); x++){ for(int x = 0; x < pixmap.getWidth(); x++){

View File

@@ -90,13 +90,7 @@ public class TutorialSector{
new BlockLocMission(PowerBlocks.powerNode, 62, 54), new BlockLocMission(PowerBlocks.powerNode, 62, 54),
new UnitMission(UnitTypes.dagger).setMessage("$tutorial.dagger"), new UnitMission(UnitTypes.dagger).setMessage("$tutorial.dagger"),
new ExpandMission(1, 0){ new ActionMission(TutorialSector::generateBase),
@Override
public void onComplete(){
super.onComplete();
generateBase();
}
},
new BattleMission(){ new BattleMission(){
public void generate(Generation gen){} //no public void generate(Generation gen){} //no
public void onFirstBegin(){} //also no public void onFirstBegin(){} //also no

View File

@@ -60,7 +60,6 @@ public class FortressGenerator{
float difficultyScl = Mathf.clamp(gen.sector.difficulty / 20f + gen.random.range(0.25f), 0f, 0.9999f); float difficultyScl = Mathf.clamp(gen.sector.difficulty / 20f + gen.random.range(0.25f), 0f, 0.9999f);
float dscl2 = Mathf.clamp(0.5f + gen.sector.difficulty / 20f + gen.random.range(0.1f), 0f, 1.5f); float dscl2 = Mathf.clamp(0.5f + gen.sector.difficulty / 20f + gen.random.range(0.1f), 0f, 1.5f);
int coreDst = FortressGenerator.coreDst*Math.min(gen.sector.width, gen.sector.height);
Array<Block> turrets = find(b -> b instanceof ItemTurret); Array<Block> turrets = find(b -> b instanceof ItemTurret);
Array<Block> powerTurrets = find(b -> b instanceof PowerTurret); Array<Block> powerTurrets = find(b -> b instanceof PowerTurret);

View File

@@ -31,14 +31,8 @@ public class BattleMission extends Mission{
} }
Tile core = state.teams.get(defaultTeam).cores.first(); Tile core = state.teams.get(defaultTeam).cores.first();
Generation gen = new Generation(world.getSector(), world.getTiles(), world.width(), world.height(), new SeedRandom(world.getSector().getSeed()-1)); Generation gen = new Generation(world.getSector(), world.getTiles(), world.width(), world.height(), new SeedRandom(world.getSector().getSeed()-1));
int ex = world.getSector().lastExpandX;
int ey = world.getSector().lastExpandY;
int enx = world.width() - 1 - spacing; int enx = world.width() - 1 - spacing;
int eny = world.height() - 1 - spacing; int eny = world.height() - 1 - spacing;
if(ex < 0) enx = spacing*gen.sector.width;
if(ex > 0) enx = world.width() - 1 - spacing*gen.sector.width;
if(ey < 0) eny = spacing*gen.sector.height;
if(ey > 0) eny = world.height() - 1 - spacing*gen.sector.height;
new FortressGenerator().generate(gen, Team.red, core.x, core.y, enx, eny); new FortressGenerator().generate(gen, Team.red, core.x, core.y, enx, eny);
} }

View File

@@ -1,49 +0,0 @@
package io.anuke.mindustry.maps.missions;
import static io.anuke.mindustry.Vars.*;
/**An action mission which simply expands the sector.*/
public class ExpandMission extends ActionMission{
private boolean done = false;
private final int expandX, expandY;
public ExpandMission(int expandX, int expandY){
this.expandX = expandX;
this.expandY = expandY;
runner = () -> {
if(headless){
world.sectors.expandSector(world.getSector(), expandX, expandY);
done = true;
}else{
ui.loadLogic(() -> {
world.sectors.expandSector(world.getSector(), expandX, expandY);
done = true;
});
}
};
}
@Override
public void onFirstBegin(){
runner.run();
}
@Override
public boolean isComplete(){
return done;
}
@Override
public void onComplete(){
done = false;
}
public int getExpandX(){
return expandX;
}
public int getExpandY(){
return expandY;
}
}

View File

@@ -133,8 +133,8 @@ public class SectorsDialog extends FloatingDialog{
float drawY = y + height/2f + sectorY * padSectorSize - offsetY * padSectorSize - panY % padSectorSize; float drawY = y + height/2f + sectorY * padSectorSize - offsetY * padSectorSize - panY % padSectorSize;
Sector sector = world.sectors.get(sectorX, sectorY); Sector sector = world.sectors.get(sectorX, sectorY);
int width = (sector == null ? 1 : sector.width); int width = 1;
int height = (sector == null ? 1 : sector.height); int height = 1;
float paddingx = (width-1) * sectorPadding; float paddingx = (width-1) * sectorPadding;
float paddingy = (height-1) * sectorPadding; float paddingy = (height-1) * sectorPadding;

View File

@@ -151,9 +151,7 @@ public class SettingsMenuDialog extends SettingsDialog{
dialog.addCloseButton(); dialog.addCloseButton();
dialog.content().addButton("$text.settings.clearsectors", "clear", () -> { dialog.content().addButton("$text.settings.clearsectors", "clear", () -> {
ui.showConfirm("$text.confirm", "$text.settings.clear.confirm", () -> { ui.showConfirm("$text.confirm", "$text.settings.clear.confirm", () -> {
Settings.clearBytes("sectors"); world.sectors.clear();
Settings.save();
world.sectors.load();
dialog.hide(); dialog.hide();
}); });
}); });
@@ -161,7 +159,6 @@ public class SettingsMenuDialog extends SettingsDialog{
dialog.content().addButton("$text.settings.clearunlocks", "clear", () -> { dialog.content().addButton("$text.settings.clearunlocks", "clear", () -> {
ui.showConfirm("$text.confirm", "$text.settings.clear.confirm", () -> { ui.showConfirm("$text.confirm", "$text.settings.clear.confirm", () -> {
control.unlocks.reset(); control.unlocks.reset();
Settings.save();
dialog.hide(); dialog.hide();
}); });
}); });