Core: Acropolis

This commit is contained in:
Anuken
2021-11-10 09:38:18 -05:00
parent da87726176
commit c87bc11ad2
10 changed files with 46 additions and 14 deletions

View File

@@ -95,7 +95,7 @@ public class Blocks implements ContentList{
//storage
coreShard, coreFoundation, coreNucleus, vault, container, unloader,
//storage - erekir
coreBastion, coreAegis, coreCitadel,
coreBastion, coreAegis, coreCitadel, coreAcropolis,
//turrets
duo, scatter, scorch, hail, arc, wave, lancer, swarmer, salvo, fuse, ripple, cyclone, foreshadow, spectre, meltdown, segment, parallax, tsunami,
@@ -1841,7 +1841,7 @@ public class Blocks implements ContentList{
//TODO cost
requirements(Category.effect, with(Items.beryllium, 7000, Items.graphite, 7000, Items.tungsten, 5000, Items.carbide, 5000));
unitType = UnitTypes.gamma;
unitType = UnitTypes.evoke;
health = 14000;
itemCapacity = 11000;
size = 5;
@@ -1851,6 +1851,20 @@ public class Blocks implements ContentList{
researchCostMultiplier = 0.11f;
}};
coreAcropolis = new CoreBlock("core-acropolis"){{
//TODO cost
requirements(Category.effect, with(Items.beryllium, 11000, Items.graphite, 11000, Items.tungsten, 9000, Items.carbide, 10000));
unitType = UnitTypes.evoke;
health = 22000;
itemCapacity = 16000;
size = 6;
thrusterLength = 48/4f;
unitCapModifier = 40;
researchCostMultiplier = 0.11f;
}};
vault = new StorageBlock("vault"){{
requirements(Category.effect, with(Items.titanium, 250, Items.thorium, 125));
size = 3;

View File

@@ -2434,16 +2434,12 @@ public class UnitTypes implements ContentList{
commandLimit = 5;
engineSize = 0;
//TODO ugly definition...
engines = new UnitEngine[]{
setEnginesMirror(
new UnitEngine(21 / 4f, 19 / 4f, 2.2f, 45f),
new UnitEngine(-21 / 4f, 19 / 4f, 2.2f, 135f),
new UnitEngine(23 / 4f, -22 / 4f, 2.2f, 315f)
);
new UnitEngine(23 / 4f, -22 / 4f, 2.2f, 315f),
new UnitEngine(-23 / 4f, -22 / 4f, 2.2f, 225f)
};
weapons.add(new Weapon(""){{
weapons.add(new Weapon(){{
reload = 55f;
x = 0f;
y = 1f;

View File

@@ -121,7 +121,7 @@ public class UnitType extends UnlockableContent{
public boolean canDrown = true, naval = false;
public float drownTimeMultiplier = 1f;
public float engineOffset = 5f, engineSize = 2.5f;
public UnitEngine[] engines = {};
public Seq<UnitEngine> engines = new Seq<>();
public float strafePenalty = 0.5f;
public float hitSize = 6f;
public float itemOffsetY = 3f;
@@ -607,6 +607,19 @@ public class UnitType extends UnlockableContent{
return ContentType.unit;
}
/** Sets up engines, mirroring the contents of the specified array. */
public void setEnginesMirror(UnitEngine... array){
for(var base : array){
engines.add(base);
var engine = base.copy();
engine.x *= -1;
engine.rotation = 180f - engine.rotation;
if(engine.rotation < 0) engine.rotation += 360f;
engines.add(engine);
}
}
//region drawing
public void draw(Unit unit){
@@ -657,7 +670,7 @@ public class UnitType extends UnlockableContent{
if(drawBody) drawOutline(unit);
drawWeaponOutlines(unit);
if(engineSize > 0) drawEngine(unit);
if(engines.length > 0) drawEngines(unit);
if(engines.size > 0) drawEngines(unit);
if(drawBody) drawBody(unit);
if(drawCell) drawCell(unit);
drawWeapons(unit);
@@ -1047,7 +1060,7 @@ public class UnitType extends UnlockableContent{
//endregion
public static class UnitEngine{
public static class UnitEngine implements Cloneable{
public float x, y, radius, rotation;
public UnitEngine(float x, float y, float radius, float rotation){
@@ -1059,6 +1072,14 @@ public class UnitType extends UnlockableContent{
public UnitEngine(){
}
public UnitEngine copy(){
try{
return (UnitEngine)clone();
}catch(CloneNotSupportedException awful){
throw new RuntimeException("fantastic", awful);
}
}
}
}