Added thermal generator / Enemy bases with spawning

This commit is contained in:
Anuken
2018-08-05 17:00:26 -04:00
parent 07c19ce085
commit 66fab1b3df
35 changed files with 980 additions and 812 deletions

View File

@@ -13,13 +13,16 @@ import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.defense.turrets.ItemTurret;
import io.anuke.mindustry.world.blocks.defense.turrets.PowerTurret;
import io.anuke.mindustry.world.blocks.defense.turrets.Turret;
import io.anuke.mindustry.world.blocks.units.ResupplyPoint;
import io.anuke.ucore.util.Mathf;
import static io.anuke.mindustry.Vars.world;
public class FortressGenerator{
private final static int minCoreDst = 60;
private static Structure[] structures;
private static Structure[] bases;
private int enemyX, enemyY, coreX, coreY;
private Team team;
@@ -40,9 +43,15 @@ public class FortressGenerator{
//more advanced duo outpost
new Structure(0.04f, Items.lead, "BwYADnR1bmdzdGVuLWRyaWxsAwADZHVvBAAIc3BsaXR0ZXIBAA10dW5nc3Rlbi13YWxsAgATdHVuZ3N0ZW4td2FsbC1sYXJnZQAAA2FpcgUACGNvbnZleW9yCQkAAAAAAQEBAQEBAQEBAgAAAAAAAAICAAEDAAQDAwACAgAAAAABAgACAAABAgUCAQEAAAAAAQABAgMAAQIBAgUCAQEBAQMAAQABAgQCBQMFAwYCBQEFAQQDAQABAgMAAQEBAQUAAQMBAwMAAQABAwICAAMBAQUAAQMCAgADAQMAAAAAAAIDAAQDAwAAAwADAAAAAAAAAQIBAwEDAQMBAwAAAAA="),
//tungsten duo and drone outpost
new Structure(0.02f, Items.tungsten, "BgEADXR1bmdzdGVuLXdhbGwEAA1jYXJiaWRlLWRyaWxsAwADZHVvAgATdHVuZ3N0ZW4td2FsbC1sYXJnZQAAA2FpcgUACWRyb25lLXBhZAUHAAAAAAEDAQMCAgAAAAAAAAAAAQADAAADAAMBAgAAAAABAAQBBQAAAAECAAAAAAEAAwAAAAAAAQIAAAAAAQABAQEBAQEBAg=="),
//lead storage
new Structure(0.02f, Items.lead, vaults),
//mini dagger outpost
new Structure(0.02f, Items.lead, "CwIADXR1bmdzdGVuLXdhbGwGAAhjb252ZXlvcgUAA2R1bwgACmRhZ2dlci1wYWQBABN0dW5nc3Rlbi13YWxsLWxhcmdlBwAIc3BsaXR0ZXIDAA5yZXN1cHBseS1wb2ludAoADHJlcGFpci1wb2ludAkADnR1bmdzdGVuLWRyaWxsAAADYWlyBAALc29sYXItcGFuZWwHCQAAAAABAAABAgECAQIBAAAAAAEAAAMAAwADAwEEAAIBAgICAgAAAAAFAwYDBwMCAQIBBQECAgAAAAAIAAAACQMGAQYBBwMCAgAAAAAAAAAAAQMAAAIDBQECAgEAAAAKAQQBAAAAAAIBAgECAgAAAAACAQIBAgEAAAAAAAAAAA=="),
//salvo outpost
new Structure(0.02f, Items.tungsten, "BAIABXNhbHZvAwANY2FyYmlkZS1kcmlsbAAAA2FpcgEADGNhcmJpZGUtd2FsbAcHAAAAAAEDAQMBAwEDAAABAwEDAQMCAAAAAQMAAAEAAgAAAAAAAAABAwEDAQAAAAAAAwACAAAAAQIBAAEBAgAAAAAAAAABAgAAAQEAAAAAAQEBAQEBAAABAQEBAQEBAQAAAAA="),
@@ -52,15 +61,50 @@ public class FortressGenerator{
//titanium storage
new Structure(0.02f, Items.titanium, vaults),
//2x interceptor outpost
new Structure(0.02f, Items.lead, "CgMAEXNvbGFyLXBhbmVsLWxhcmdlBgADZHVvAgAPaW50ZXJjZXB0b3ItcGFkBAASY2FyYmlkZS13YWxsLWxhcmdlBwAOcmVzdXBwbHktcG9pbnQAAANhaXIFAAtzb2xhci1wYW5lbAEADGNhcmJpZGUtd2FsbAkAC2Rpc3RyaWJ1dG9yCAALbGFzZXItZHJpbGwKCAEAAQMBAwEDAQMBAwECAAABAAIDAAAAAAAAAAABAgAAAQAAAAAAAAADAQAAAQIBAgQDAAAFAAAAAAAAAAYCAQMAAAAABwAIAAAACQAAAAECBAMAAAEAAAAAAAABAAABAgAAAAAFAAAAAAAAAAYCAQIBAAIDAAAAAAMBAAABAgECAQAAAAAAAAAAAAAAAQIAAAEAAQEBAQEBAQEBAQEBAAA="),
//coal laser outpost
new Structure(0.03f, null, "BgEADHRob3JpdW0td2FsbAMABmxhbmNlcgUAFGNvbWJ1c3Rpb24tZ2VuZXJhdG9yBAANY2FyYmlkZS1kcmlsbAAAA2FpcgIAC3NvbGFyLXBhbmVsBwcAAAEAAQABAQEBAQEBAAAAAQACAgMAAAACAAEAAAABAAICAAAAAAIAAQAAAAEAAQAEAQUAAQABAAAAAQACAAMBAAMCAAEAAAABAAIAAAMAAwIAAQAAAAEAAQABAwEDAQABAA=="),
//ultimate laser outpost
new Structure(0.02f, null, "BgMABmxhbmNlcgIAEmNhcmJpZGUtd2FsbC1sYXJnZQUAEXNvbGFyLXBhbmVsLWxhcmdlAAADYWlyBAALc29sYXItcGFuZWwBAAxjYXJiaWRlLXdhbGwPDwAAAAAAAAAAAAABAwIDAAABAwAAAAAAAAAAAAAAAAAAAAACAwAAAgMAAAAAAAACAwAAAgMAAAAAAAAAAAAAAQMAAAAAAAAAAAMDAAAAAAAAAAAAAAIDAAAAAAAAAgMAAAMDAAAEAwAAAAADAwAAAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDAAAAAAAAAgMAAAMDAAAAAAUDAAAAAAAAAAAEAwAAAAABAwEDAAAAAAAAAAAAAAAAAAAAAAUDAAADAwAAAgMAAAIDAAADAwAAAAAAAAAABAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAFAwAAAAAAAAAAAwMAAAIDAAABAwEDAgMAAAQDAAAAAAAAAAAFAwAAAAAAAAAAAAAAAAAAAAAAAAMDAAADAwAAAAAAAAAAAwMAAAIDAAAAAAAAAgMAAAAAAAAAAAAAAwMAAAQDAAAAAAAAAAAAAAAAAAAAAAIDAAACAwAAAAAAAAIDAAACAwAAAQMAAAAAAAABAwAAAAAAAAAAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAAAAAAEDAAAAAAAAAAAAAA=="),
//fabricator outpost
new Structure(0.02f, Items.tungsten, "BgUADWNhcmJpZGUtZHJpbGwBABJ0aG9yaXVtLXdhbGwtbGFyZ2UCAAx0aG9yaXVtLXdhbGwEAANkdW8AAANhaXIDAA5mYWJyaWNhdG9yLXBhZAkJAAAAAAEDAAACAwEDAAAAAAAAAAACAwADAAMCAwADAAMCAgAAAQMAAAMCAAACAAMCAAABAwAAAAAAAAAAAAAEAgAAAAAAAgAAAgMCAAIBBAIFAAQCAgMCAgIDAQMAAAMCAAAEAgMCAAABAwAAAAAAAAAAAAACAQAAAAAAAgAAAAACAAEDAAECAQEDAAECAQAAAAAAAAAAAAACAwACAAAAAAAA"),
//coal storage
new Structure(0.02f, Items.coal, vaults),
};
bases = new Structure[]{
//primitive 4-spawner base
new Structure("CAQADXR1bmdzdGVuLXdhbGwFAANkdW8HAARjb3JlAQAKZGFnZ2VyLXBhZAYACHVubG9hZGVyAgAMcmVwYWlyLXBvaW50AAADYWlyAwALc29sYXItcGFuZWwJBwAAAQMAAAIDAQMAAAAAAAAAAAAAAwIAAAAAAAAEAAQBBAEEAQQBBAEEAgQABQIAAAAAAAAFAgQCBAAGAwAABwAAAAYDBAAEAAUCAAAAAAAABQIEAAQABAMEAwQDBAMEAAQAAAABAwAAAwIBAwAAAAAAAAAAAAACAwAAAAAAAA=="),
//more advanced base, 8 spawners
new Structure("CQIADXR1bmdzdGVuLXdhbGwGAANkdW8IAARjb3JlAQAKZGFnZ2VyLXBhZAcACHVubG9hZGVyBAATdHVuZ3N0ZW4td2FsbC1sYXJnZQUADHJlcGFpci1wb2ludAAAA2FpcgMAC3NvbGFyLXBhbmVsCwsAAAAAAQEAAAAAAAAAAAEBAAAAAAAAAAAAAAAAAAACAwMAAgMAAAAAAAAAAAEBAAAEAAAAAgMFAAIDBAAAAAEBAAAAAAAAAAAAAAYABwIGAAAAAAAAAAAAAAACAAIABgAAAAAAAAAGAAICAgAAAAAAAwAFAAcCAAAIAAAABwIFAAMAAAAAAAIAAgAGAAAAAAAAAAYAAgICAAAAAQEAAAQAAAAGAAcCBgAEAAAAAQEAAAAAAAAAAAAAAgEFAAIBAAAAAAAAAAAAAAAAAQEAAAIDAwACAwEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="),
//rather advanced flyer base, no ground units, drones
new Structure("DQIADXR1bmdzdGVuLXdhbGwHAAhjb252ZXlvcgMAA2R1bwwABGNvcmULAAh1bmxvYWRlcgEAE3R1bmdzdGVuLXdhbGwtbGFyZ2UGAA9pbnRlcmNlcHRvci1wYWQFAAhzcGxpdHRlcgoADHJlcGFpci1wb2ludAQABXNhbHZvAAADYWlyCAAJZHJvbmUtcGFkCQALc29sYXItcGFuZWwREQAAAAAAAAAAAAAAAAEAAAACAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAwAAAAAAAgABAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAADAAUAAwAEAAAAAAAAAAAAAAAAAAAAAQAAAAYAAAAAAAAAAgMHAgIDAAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAgMHAgcDBQEHAQcCAgMAAAAAAAAAAAAAAAACAAQAAAACAwgAAAAJAAcCCQAIAAAAAgMEAAAAAgAAAAEAAAAAAAAABwMAAAAACgMLAgoDAAAAAAcBAAAAAAEAAAAAAAAAAwACAwcCCQAKAwAAAAAAAAoDCQAHAgIDAwAAAAAAAgADAAUABwMFAAcDCwIAAAwAAAALAwcBBQIHAQUAAwACAAEAAAADAAIDBwAJAAoDAAAAAAAACgMJAAcAAgMDAAEAAAAAAAAABAAAAAcDCAAAAAoDCwMKAwgAAAAHAQQAAAAAAAAAAAACAAAAAAACAwAAAAAJAAcACQAAAAAAAgMAAAAAAgAAAAAAAQAAAAYAAAACAwcABwMFAgcBBwACAwYAAAABAAAAAAAAAAAAAAAAAAAABAAAAAIDBwACAwQAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAUDAwAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAEAAAADAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAA"),
//advanced carbide base with fabricators, drones
new Structure("Ew4ADXR1bmdzdGVuLXdhbGwHABFzb2xhci1wYW5lbC1sYXJnZRAACGNvbnZleW9yDAADZHVvEgAEY29yZQMACmRhZ2dlci1wYWQRAAh1bmxvYWRlcgkAD2ludGVyY2VwdG9yLXBhZA8ACHNwbGl0dGVyBgAGbGFuY2VyDQARdGl0YW5pdW0tY29udmV5b3IBABJjYXJiaWRlLXdhbGwtbGFyZ2ULAAxyZXBhaXItcG9pbnQIAAVzYWx2bwAAA2FpcgUACXRpdGFuLXBhZAoAC3NvbGFyLXBhbmVsAgAMY2FyYmlkZS13YWxsBAAOZmFicmljYXRvci1wYWQTFQAAAAAAAAAAAAAAAAAAAQMAAwAAAAAAAAEDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAAAAAAIBAAEAAQAAAAAAAAABAAECAQAAAAACAgAAAAAAAAAAAAAAAAICAwAAAAICBAAAAAAABQAAAAQAAAACAAMAAAACAgAAAAAAAAAAAAAAAAICAAAAAAICAAAAAAAAAAAAAAAAAAACAAAAAAACAgAAAAAAAAAAAAAAAAEAAAABAAAABgAAAAAAAAAAAAYAAAABAAAAAQAAAAAAAAAAAAIAAQIAAAAAAAAAAAAAAAMAAwAABwAAAAAAAAAAAAAAAAAAAAECAAACAAIAAAAAAAEAAAAIAAAACQAAAAAAAAAAAAkAAAAIAAAAAQAAAAAAAAACAAIACAMAAAAAAAAAAAAAAAAAAAoACwAKAAAAAAAAAAAAAAAAAAgDAAACAAIAAAAAAAIADAMMAw0CDgAMAAAAAAAAAAwADgANAgwBDAECAAAAAAACAAIAAgMPAw0DDwAPAw8AEAMRAgAAEgAAABECEAEPAA8DDwANAQ8DAgMCAAIACAMAAAIADAMMAw0ADgAMAAAAAAAAAAwADgANAAwBDAECAAgDAAACAAIAAAAAAAEAAAAIAAAACQAAAAoACwAKAAkAAAAIAAAAAQAAAAAAAAACAAIAAQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAACAAIAAAIAAAEAAAABAAAABgAAAAAABwAAAAYAAAABAAAAAQAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAwAAAAICBAAAAAAAAAAAAAQAAAACAAMAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAICAAAAAAAABQAAAAAAAAACAAAAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAICAQMAAwAAAAAAAAEDAAMCAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAA=="),
//lots of titans and daggers
new Structure("DAcACHNwbGl0dGVyBgADZHVvCwAEY29yZQMACmRhZ2dlci1wYWQKAAh1bmxvYWRlcggAEXRpdGFuaXVtLWNvbnZleW9yAgASY2FyYmlkZS13YWxsLWxhcmdlBQAFc2Fsdm8AAANhaXIEAAl0aXRhbi1wYWQBAAxjYXJiaWRlLXdhbGwJAAtkaXN0cmlidXRvchMTAAAAAAECAAAAAAAAAAAAAAECAAABAgAAAAAAAAAAAAABAgAAAAAAAAIDAAAAAAAAAAAAAAAAAQIBAAECAAAAAAAAAAAAAAIDAAAAAAECAAAAAAAAAAAAAAMAAAABAgEAAQIDAAAAAAAAAAAAAAAAAAECAAAAAAAAAAAAAAAAAAMAAAECAQABAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAFAwAABgAHAAYABQMAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAgCAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAwAACQAAAAYDCAIGAwkAAAAFAwAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCgMKAAoDAAAAAAAAAAAAAAAAAAAAAAECAQMBAwEDBgABAAYDCgMAAAAAAAAKAwYDAQAGAAEBAQEBAQECAAABAwEDAQMHAAgDCAMKAAAACwAAAAoACAEIAQcAAQEBAQEBAAABAgEDAQMBAwYAAQAGAwoDAAAAAAAACgMGAwEABgABAQEBAQEBAgAAAAADAAAABQMAAAkAAAAKAwoACgMJAAAABQMAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYDCAAGAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAwAAAQMIAAEDBQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAGAAcABgAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAECAQABAAMAAAAAAAAAAAAAAAAAAAABAgIDAAAAAAAAAAAAAAAAAQIBAAEAAAAAAAADAAMAAwIDAAABAgAAAAAAAAAAAAAAAAAAAAABAgEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAAAAAAAAAAAAAECAAABAgAAAAAAAAAAAAABAgAAAAA="),
//superfortress
new Structure("EwwAEXNvbGFyLXBhbmVsLWxhcmdlDgADZHVvEgAEY29yZQMACmRhZ2dlci1wYWQQAAttb25zb29uLXBhZBEACHVubG9hZGVyCgAPaW50ZXJjZXB0b3ItcGFkCQAGbGFuY2VyDwARdGl0YW5pdW0tY29udmV5b3ICABJjYXJiaWRlLXdhbGwtbGFyZ2UGAA5yZXN1cHBseS1wb2ludAQADHJlcGFpci1wb2ludAsABXNhbHZvAAADYWlyCAAJZHJvbmUtcGFkBwAJdGl0YW4tcGFkBQALc29sYXItcGFuZWwBAAxjYXJiaWRlLXdhbGwNAAtkaXN0cmlidXRvch8fAAAAAAAAAAAAAAAAAAABAwAAAAAAAAAAAAACAgAAAQICAgAAAAAAAAAAAAAAAAECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAAAAAAAAAAAAAAAAAAABAgAAAAAAAAAAAAAAAAAAAQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAAAAAAAAAAADAgAABAEFAQYBBQEEAQMCAAAAAAAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAAAAAAABwIAAAAAAAAIAgAABQEIAgAAAAAAAAAABwIAAAAAAAABAgAAAAAAAAAAAAAAAAAAAAAAAAICAAAJAgAAAAAAAAAACgMAAAAAAAABAAAAAAAKAwAAAAAAAAAACQIAAAICAAAAAAAAAAAAAAAAAAAAAAECAAAAAAAAAAAAAAAAAAAAAAAACwAAAAEACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAAAAAAAAAAAAAICAAAJAgAACQIAAAAADAAAAAsAAAAAAAAAAQAAAAAACwAAAAAADAAAAAkCAAAJAgAAAgIAAAAAAAABAwEDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAOAg0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAA4CAAAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwIAAAAADAAAAAAADAAAAAAAAAABAQ8CDwIPAgEAAAAAAAAADAAAAAAADAAAAAAABwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBDwIPAg8CAQABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAgAACgMAAAsAAAALAAAAAQIAAAAAAAAPAg8CDwIAAAAAAAABAQsAAAALAAAACgMAAAMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgAAEAIAAA8CDwIPAgAAEAIAAAEAAAIAAAAAAAAAAAAAAAAAAAAAAAACAgAABAEIAgAACwEAAA0AAAABAQEBAAAAAAAAEQARABEAAAAAAAAAAQABAA0AAAALAQAACAIAAAQBAgIAAAAAAAAFAQAAAAAAAAAAAAAAAA8DDwMPAw8DEQMAAAAAAAARAw8BDwEPAQ8BAAAAAAAAAAAAAAAABQEAAAAAAQMBAwYBBQEBAQEBAQEOAg4CDwMPAw8DDwMRAAAAEgAAABEADwEPAQ8BDwEOAQ4BAQEBAQEBBQEGAQEBAQECAgAABQEIAgAACwEAAA0AAAAPAw8DDwMPAxEDAAAAAAAAEQMPAQ8BDwEPAQ0AAAALAQAACAIAAAUBAgIAAAAAAAAEAQAAAAAAAAAAAAAAAAECAQIAAAAAAAARAxEAEQMAAAAAAAABAwEDAAAAAAAAAAAAAAAABAEAAAAAAAAAAAMCAAAKAwAACwAAAAsAAAABAgAAEAIAAA8ADwAPAAAAEAIAAAEACwAAAAsAAAAKAwAAAwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAAAAAAADwAPAA8AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEPAA8ADwABAwEDAQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwIAAAAADAAAAAAADAAAAAsAAAABAQ8ADwAPAAEDCwAAAAAADAAAAAAADAIAAAAABwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAOAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAQMCAgAACQIAAAkCAAAAAAAAAAALAAAAAAAAAA4AAAAAAAsAAAAAAAAAAAAJAgAACQIAAAICAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAALAQAAAQILAQAAAAAAAAAADAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgICAAAJAgAAAAAAAAAACgMAAAAAAAABAgAAAAAKAwAAAAAAAAAACQIAAAICAAABAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAIAAAECCAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAgIAAAAABwIAAAMCAAAAAAAABQEAAAAAAwIAAAAABwIAAAICAAABAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQBBQEGAQUBBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgIAAAEAAgIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAA="),
//welcome to drone hell
new Structure("CwcAEXNvbGFyLXBhbmVsLWxhcmdlCQAMdGhvcml1bS13YWxsCgAEY29yZQUACmRhZ2dlci1wYWQDAAZsYW5jZXIBABJjYXJiaWRlLXdhbGwtbGFyZ2UGAAxyZXBhaXItcG9pbnQAAANhaXIIAAlkcm9uZS1wYWQEAAtzb2xhci1wYW5lbAIADGNhcmJpZGUtd2FsbBERAQMAAAEAAAACAwIDAAAAAAICAAAAAAIBAgEBAwAAAQMAAAAAAAAAAAAAAwAAAAAAAAACAgADAAMDAAAAAAAAAAAAAAABAAAABAEEAwAAAAAFAwAABgEFAwAAAAAAAAQBBAEBAwAAAAAAAAQDAAAAAAAAAAAAAAQCAAAAAAAAAAAAAAQBAAAAAAIAAwAAAAAABwMAAAgBAAAJAAgBAAAAAAcDAAADAAAAAgACAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAIAAAAAAAUDAAAIAQAACQMJAwkDCQMJAwgBAAAFAwAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAACQIAAAAAAAAAAAAAAAACAwIDBgEEAgkBCQEJAAAACgAAAAkCCQEJAQQCBgECAQIBAAAAAAUDAAAIAQAACQAAAAAAAAAJAggBAAAFAwAAAAAAAAAAAAAAAAAAAAEAAAkACQEJAQkBCQEAAAAAAAAAAAAAAAACAAMAAAAAAAAAAAAIAQAACQIIAQAAAAAAAAAAAwAAAAIAAgAAAAAAAAAHAwAAAAAAAAkCAAAAAAAABwMAAAAAAAACAAEDAAAEAAAAAAAAAAUDAAAEAgUDAAAAAAAAAAAEAAEDAAAAAAAABAAEAAMAAAAAAAAABgEAAAAAAwAAAAQABAAAAAAAAQMAAAEDAAAAAAAAAAAAAAIAAAAAAAAAAAABAwAAAQMAAAAAAAAAAAAAAgMCAwAAAAACAAAAAAACAQIBAAAAAAAAAAA="),
//welcome to bomber/interceptor hell
new Structure("DgUACHNwbGl0dGVyBgAEaGFpbAIAEnRob3JpdW0td2FsbC1sYXJnZQEADHRob3JpdW0td2FsbAQAA2R1bw0ABGNvcmULAAttb25zb29uLXBhZAwACHVubG9hZGVyCgAPaW50ZXJjZXB0b3ItcGFkCAARdGl0YW5pdW0tY29udmV5b3IDAAVzYWx2bwkABnJpcHBsZQAAA2FpcgcAC2Rpc3RyaWJ1dG9yGRkAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAgIAAAEAAgMAAAIDAAACAwAAAwIAAAQBAwIAAAIDAAACAwAAAgMAAAEAAgIAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAEBAQEAAAAAAAAGAQYBAwIAAAcAAAAIAgcAAAADAgAABgEGAQAAAAAAAAEBAQEAAAAAAgIAAAAACQEAAAoCAAAAAAAAAAAAAAgCAAAAAAAAAAAKAgAAAAAJAQAAAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgCCAIIAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAAAGAAoCAAAKAwAAAAALAwAACAIIAggCAAALAwAACgMAAAoCAAAGAAICAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAIAggCCAIAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAACAgAAAwIAAAAAAAAAAAAAAAAAAAgCCAIIAgAAAAAAAAAAAAAAAAMCAAACAgAAAAABAAAAAAAAAAAAAAALAwAAAAALAwAACAIIAggCAAALAwAAAAALAwAAAAAAAAAAAAABAAEAAwIAAAcAAAAAAAAAAAAAAAAAAAAMAwwBDAIAAAAAAAAAAAAAAAAHBQAAAwIAAAEAAQAAAAAAAAAAAAgDCAMIAwgDCAMMAQAAAAAAAAwCCAEIAQgBCAEIAQAAAAAAAAAAAQABAAQBBQAIAwgDCAMIAwgDCAMIAwwDAAANAAAADAMIAQgBCAEIAQgBCAEIAQUABAEBAAEAAwIAAAcAAAAIAwgDCAMIAwgDDAIAAAAAAAAMAwgBCAEIAQgBCAEHAAAAAwIAAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAwCDAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAIAAAADAgAAAAALAwAAAAALAwAACAAIAAgAAAALAwAAAAALAwAAAwIAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABgAKAgAACgMAAAAAAAAAAAgACAAIAAAAAAAAAAoDAAAKAgAABgACAAAAAAAAAAAAAAEGAAAAAAAAAAAAAAALAwAACAAIAAgAAAALAwAAAAAAAAAAAAAGAAAAAAAAAAAAAgAAAAAAAAAAAAoCAAAAAAAAAAAIAAgACAAAAAAAAAAKAgAAAAAAAAAAAgAAAAAAAAAAAAAAAAAJAQAAAAAAAAMCAAAHBQAACAAHAAAAAwIAAAAAAAAAAAkBAAAAAAAAAAAAAAEBAQEAAAAAAAAGAQYBAAAAAAAAAAAIAAAAAAAAAAAABgMGAwAAAAAAAAEBAQEAAAAAAgMAAAEAAgMAAwIDAAACAwAAAwIAAAUAAwIAAAIBAAACAQAAAgEAAAEDAgMAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAABAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAA=="),
//welcome to unit hell
new Structure("DQoACHNwbGl0dGVyBAAMdGhvcml1bS13YWxsDAAEY29yZQEACmRhZ2dlci1wYWQHAAttb25zb29uLXBhZAsACHVubG9hZGVyCAAPaW50ZXJjZXB0b3ItcGFkBQARdGl0YW5pdW0tY29udmV5b3IJAAxyZXBhaXItcG9pbnQDAAVzYWx2bwAAA2FpcgIACXRpdGFuLXBhZAYAC3NvbGFyLXBhbmVsFRUAAAAAAAAAAAAAAAABAQAAAQEAAAAAAQEAAAEBAAAAAAAAAAAAAAAAAAAAAAIBAAAAAAIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBAAAAAAIBAAAAAAAAAAAAAAAAAAADAQAABAAEAAAABAAEAAMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQMGAAAABgAFAQAAAAAAAAAAAAAAAAAAAAAAAAIBAAAAAAcDAAAIAwAABQIJAAAACQAFAggDAAAAAAcDAAAAAAIBAAAAAAAAAAAAAAAAAAAAAAAABQIKAAACCgAFAgAAAAAAAAAAAAAAAAAAAAABAQAAAwEAAAgDAAAAAAAAAAAFAgACBQIAAAAAAAAIAwAAAwEAAAEBAAAAAAAAAAAAAAAAAAAAAAcDAAAFAgACBQIAAAcDAAAAAAAAAAAAAAAAAAABAQAABAMFAgUDBQMAAAAAAAALAQACCwEAAAAAAAAFAQUBBQIEAQEBAAAAAAAABAMGAAkACgAFAwUDCwIAAAAAAAALAQUBBQEKAAkABgAEAQAAAAAAAAAAAAAAAAAAAAMAAwADAAIAAAwAAAAAAgABAAEAAQAAAAAAAAAAAAABAQAABAMGAAkACgAFAwUDCwAAAAAAAAALAgUBBQEKAAkABgAEAQEBAAAAAAAABAMFAAUDBQMAAAAAAAALAQABCwAAAAAAAAAFAQUBBQAEAQAAAAABAQAAAwEAAAgDAAAAAAcDAAAFAAAABQAAAAcDAAAIAwAAAwEAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAwAABQAKAAAACgAFAAgDAAAAAAAAAAAAAAAAAAAAAAIBAAAAAAcDAAAAAAAABQAJAAAACQAFAAAAAAAAAAcDAAAAAAIBAAAAAAAAAAAAAAAAAAADAQAABQMGAAAABgAFAQMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIBAAAAAAIBAAEBAQAAAQEAAAAAAQEAAAEBAAAAAAIBAAAAAAIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAA=")
};
}
public void generate(Generation gen, Team team, int coreX, int coreY, int enemyX, int enemyY){
@@ -78,18 +122,31 @@ public class FortressGenerator{
void genOutposts(){
int padding = 10;
int maxDifficulty = 10;
float baseChance = 0.75f;
int maxDifficulty = 13;
float baseChance = 0.4f;
Array<Structure> selected = new Array<>();
Array<Rectangle> used = new Array<>();
Rectangle rect = new Rectangle();
Structure base = bases[Mathf.clamp((int)(bases.length * (float)gen.sector.difficulty / maxDifficulty) + gen.random.range(2), 0, bases.length-1)];
int maxIndex = (int)(1 + ((float)gen.sector.difficulty / maxDifficulty * (structures.length-2)));
for(int i = maxIndex/3; i < maxIndex; i++){
for(int i = maxIndex/2; i < maxIndex; i++){
selected.add(structures[i]);
}
used.add(new Rectangle(enemyX - base.width()/2, enemyY - base.height()/2, base.width(), base.height()));
int elev = gen.tiles[enemyX][enemyY].getElevation();
for(int x = 0; x < base.width(); x++){
for(int y = 0; y < base.height(); y++){
Tile tile = gen.tiles[enemyX - base.width()/2 + x][enemyY - base.height()/2 + y];
StructBlock block = base.layout[x][y];
tile.setElevation(elev);
tile.setRotation(block.rotation);
tile.setBlock(block.block, team);
}
}
for(Structure struct : selected){
for(int x = padding; x < gen.width - padding; x++){
loop:
@@ -115,9 +172,7 @@ public class FortressGenerator{
tile.setRotation(block.rotation);
tile.setBlock(block.block, team);
if(block.block instanceof Turret){
fillTurret(tile);
}
fill(tile);
}
}
}
@@ -127,14 +182,17 @@ public class FortressGenerator{
}
}
void fillTurret(Tile tile){
void fill(Tile tile){
Block block = tile.block();
if(block instanceof PowerTurret){
tile.entity.power.amount = block.powerCapacity;
}else if(block instanceof ItemTurret){
ItemTurret turret = (ItemTurret)block;
AmmoType[] type = turret.getAmmoTypes();
block.handleStack(type[0].item, block.acceptStack(type[0].item, 1000, tile, null), tile, null);
}else if(block instanceof ResupplyPoint){
tile.entity.items.add(Items.lead, tile.block().itemCapacity);
}
}
@@ -148,5 +206,19 @@ public class FortressGenerator{
this.layout = StructureFormat.read(encoding);
this.chance = chance;
}
public Structure(String encoding){
this.ore = null;
this.layout = StructureFormat.read(encoding);
this.chance = 0;
}
int width(){
return layout.length;
}
int height(){
return layout[0].length;
}
}
}

View File

@@ -248,10 +248,12 @@ public class WorldGenerator{
int lerpDst = 20;
lerpDst *= lerpDst;
float minDst = Float.MAX_VALUE;
if(detailed && spawnpoints != null){
for(GridPoint2 p : spawnpoints){
float dst = Vector2.dst2(p.x, p.y, localX, localY);
minDst = Math.min(minDst, dst);
if(dst < lerpDst){
float targetElevation = Math.max(0.86f, (float)elevationOf(sectorX * sectorSize + p.x + Short.MAX_VALUE, sectorY * sectorSize + p.y + Short.MAX_VALUE, true));
@@ -273,7 +275,7 @@ public class WorldGenerator{
}else if(temp + ridge/2f < 0.8 || elevation < 1.3){
floor = Blocks.blackstone;
if(iceridge > 0.25){
if(iceridge > 0.25 && minDst > lerpDst/1.5f){
elevation ++;
}
}else{