Implemented shore map / New blocks / Bugfixes

This commit is contained in:
Anuken 2019-01-30 13:34:38 -05:00
parent dbf05a1419
commit 209e3f03c1
32 changed files with 1906 additions and 1682 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 992 B

After

Width:  |  Height:  |  Size: 987 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 990 B

After

Width:  |  Height:  |  Size: 983 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -522,7 +522,7 @@ block.tar.name = Tar
block.blackstone.name = Black Stone
block.stone.name = Stone
block.dirt.name = Dirt
block.sand.name = Sand
block.sand.name = Dark Sand
block.ice.name = Ice
block.snow.name = Snow
block.grass.name = Grass

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 980 KiB

After

Width:  |  Height:  |  Size: 1,009 KiB

Before After
Before After

View file

@ -159,6 +159,7 @@ public class Pathfinder{
if(other != null && (path.weights[dx][dy] > cost + other.cost || path.searches[dx][dy] < path.search)
&& passable(other, team)){
if(other.cost < 0) throw new IllegalArgumentException("Tile cost cannot be negative! " + other);
path.frontier.addFirst(world.tile(dx, dy));
path.weights[dx][dy] = cost + other.cost;
path.searches[dx][dy] = (short)path.search;

View file

@ -24,7 +24,7 @@ import java.io.IOException;
import static io.anuke.mindustry.Vars.*;
public class WaveSpawner{
private static final float shockwaveBase = 350f, shockwaveRand = 10f, maxShockwaveDst = shockwaveBase + shockwaveRand;
private static final float shockwaveBase = 380f, shockwaveRand = 50f, maxShockwaveDst = shockwaveBase + shockwaveRand;
private Array<SpawnGroup> groups;
private Array<FlyerSpawn> flySpawns = new Array<>();
private Array<GroundSpawn> groundSpawns = new Array<>();

View file

@ -36,7 +36,7 @@ public class Blocks implements ContentList{
//environment
air, part, spawn, deepwater, water, tar, stone, craters, charr, sand, ice, snow,
grass, holostone, rocks, icerocks, cliffs, pine, whiteTree, whiteTreeDead, sporeCluster,
iceSnow,
iceSnow, sandWater, dunerocks,
//crafting
siliconSmelter, graphitePress, plastaniumCompressor, multiPress, phaseWeaver, surgeSmelter, pyratiteMixer, blastMixer, cryofluidMixer,
@ -46,6 +46,7 @@ public class Blocks implements ContentList{
powerVoid, powerSource, itemSource, liquidSource, itemVoid,
//defense
scrapWall, scrapWallLarge,
copperWall, copperWallLarge, titaniumWall, titaniumWallLarge, thoriumWall, thoriumWallLarge, door, doorLarge,
phaseWall, phaseWallLarge, surgeWall, surgeWallLarge, mendProjector, overdriveProjector, forceProjector, shockMine,
@ -158,6 +159,18 @@ public class Blocks implements ContentList{
minimapColor = Color.valueOf("323232");
}};
sandWater = new Floor("sand-water"){{
liquidColor = Color.valueOf("596ab8");
speedMultiplier = 0.8f;
variants = 0;
status = StatusEffects.wet;
statusDuration = 50f;
liquidDrop = Liquids.water;
isLiquid = true;
cacheLayer = CacheLayer.water;
minimapColor = Color.valueOf("506eb4");
}};
sand = new Floor("sand"){{
itemDrop = Items.sand;
minimapColor = Color.valueOf("988a67");
@ -202,6 +215,10 @@ public class Blocks implements ContentList{
variants = 2;
}};
dunerocks = new StaticWall("dunerocks"){{
variants = 2;
}};
pine = new StaticWall("pine"){{
//fillsTile = false;
variants = 0;
@ -433,6 +450,16 @@ public class Blocks implements ContentList{
int wallHealthMultiplier = 3;
scrapWall = new Wall("scrap-wall"){{
health = 80;
variants = 3;
}};
scrapWallLarge = new Wall("scrap-wall-large"){{
health = 80 * 4;
size = 2;
}};
copperWall = new Wall("copper-wall"){{
requirements(Category.defense, ItemStack.with(Items.copper, 12));
health = 80 * wallHealthMultiplier;
@ -440,7 +467,6 @@ public class Blocks implements ContentList{
copperWallLarge = new Wall("copper-wall-large"){{
requirements(Category.defense, ItemStack.with(Items.copper, 12 * 4));
requirements(Category.defense, ItemStack.with(Items.copper, 12));
health = 80 * 4 * wallHealthMultiplier;
size = 2;
}};

View file

@ -168,16 +168,61 @@ public class Zones implements ContentList{
}};
}};
ruinousShores = new Zone("ruinousShores", new MapGenerator("ruinousShores")){{ //TODO implement
deployCost = ItemStack.with(Items.copper, 300);
startingItems = ItemStack.with(Items.copper, 200);
conditionWave = 15;
ruinousShores = new Zone("ruinousShores", new MapGenerator("ruinousShores", 1)){{ //TODO implement
deployCost = ItemStack.with(Items.copper, 600, Items.graphite, 50);
startingItems = ItemStack.with(Items.copper, 400);
conditionWave = 20;
launchPeriod = 20;
zoneRequirements = new Zone[]{frozenForest};
blockRequirements = new Block[]{Blocks.copperWall};
itemRequirements = ItemStack.with(Items.lead, 6000, Items.graphite, 2000);
blockRequirements = new Block[]{Blocks.graphitePress, Blocks.combustionGenerator};
rules = () -> new Rules(){{
waves = true;
waveTimer = true;
waveSpacing = 60 * 80;
waveSpacing = 60 * 60;
spawns = Array.with(
new SpawnGroup(UnitTypes.wraith){{
unitScaling = 2;
spacing = 2;
end = 10;
}},
new SpawnGroup(UnitTypes.dagger){{
begin = 2;
spacing = 2;
unitScaling = 2;
}},
new SpawnGroup(UnitTypes.wraith){{
begin = 10;
unitScaling = 0.5f;
unitAmount = 6;
spacing = 10;
}},
new SpawnGroup(UnitTypes.crawler){{
begin = 5;
unitScaling = 1;
spacing = 5;
unitAmount = 1;
effect = StatusEffects.overdrive;
}},
new SpawnGroup(UnitTypes.crawler){{
begin = 22;
unitScaling = 1;
spacing = 20;
unitScaling = 0.5f;
unitAmount = 10;
}},
new SpawnGroup(UnitTypes.dagger){{
begin = 11;
spacing = 2;
unitScaling = 2;
unitAmount = 2;
}}
);
}};
}};

View file

@ -84,10 +84,11 @@ public class BlockRenderer{
public void drawFog(){
float ww = world.width() * tilesize, wh = world.height() * tilesize;
float u = (camera.position.x - camera.width/2f) / ww,
v = (camera.position.y - camera.height/2f) / wh,
u2 = (camera.position.x + camera.width/2f) / ww,
v2 = (camera.position.y + camera.height/2f) / wh;
float x = camera.position.x + tilesize/2f, y = camera.position.y + tilesize/2f;
float u = (x - camera.width/2f) / ww,
v = (y - camera.height/2f) / wh,
u2 = (x + camera.width/2f) / ww,
v2 = (y + camera.height/2f) / wh;
Tmp.tr1.set(fog.getTexture());
Tmp.tr1.set(u, v2, u2, v);

View file

@ -18,7 +18,7 @@ public enum Binding implements KeyBind{
dash(KeyCode.SHIFT_LEFT),
drop_unit(KeyCode.SHIFT_LEFT),
gridMode(KeyCode.SPACE),
gridModeShift(KeyCode.SHIFT_LEFT),
gridModeShift(KeyCode.ALT_LEFT),
zoom_hold(KeyCode.CONTROL_LEFT, "view"),
zoom(new Axis(KeyCode.SCROLL)),
zoom_minimap(new Axis(KeyCode.MINUS, KeyCode.PLUS)),

View file

@ -90,8 +90,10 @@ public class MapGenerator extends Generator{
int newX = Mathf.clamp((int)(simplex.octaveNoise2D(1, 1, 1.0 / scl, x, y) * distortion + x), 0, data.width()-1);
int newY = Mathf.clamp((int)(simplex.octaveNoise2D(1, 1, 1.0 / scl, x + 9999, y + 9999) * distortion + y), 0, data.height()-1);
if(tile.block() instanceof StaticWall
&& tiles[newX][newY].block() instanceof StaticWall){
if((tile.block() instanceof StaticWall
&& tiles[newX][newY].block() instanceof StaticWall)
|| tile.block() == Blocks.air
|| tiles[newX][newY].block() == Blocks.air){
tile.setBlock(tiles[newX][newY].block());
}

View file

@ -152,7 +152,7 @@ public class DeployDialog extends FloatingDialog{
}
void buildButton(Zone zone, TextButton button){
button.setDisabled(() -> !canUnlock(zone) || !data.hasItems(zone.itemRequirements));
button.setDisabled(() -> !canUnlock(zone) || !data.hasItems(zone.deployCost));
button.clicked(() -> {
if(!data.isUnlocked(zone)){
data.removeItems(zone.itemRequirements);

View file

@ -2,6 +2,7 @@ package io.anuke.mindustry.world;
import io.anuke.arc.collection.Array;
import io.anuke.arc.function.Consumer;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.math.geom.Geometry;
import io.anuke.arc.math.geom.Point2;
import io.anuke.arc.math.geom.Position;
@ -330,11 +331,11 @@ public class Tile implements Position, TargetTrait{
}
if(target().synthetic()){
cost += target().block().health / 10f;
cost += Mathf.clamp(target().block().health / 10f, 0, 28);
}
if(floor.isLiquid){
cost += 100f;
cost += 80;
}
}

View file

@ -1,9 +1,15 @@
package io.anuke.mindustry.world.blocks.defense;
import io.anuke.arc.Core;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.graphics.g2d.TextureRegion;
import io.anuke.arc.math.Mathf;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.meta.BlockGroup;
public class Wall extends Block{
protected int variants = 0;
public Wall(String name){
super(name);
@ -12,6 +18,34 @@ public class Wall extends Block{
group = BlockGroup.walls;
}
@Override
public void load(){
super.load();
if(variants != 0){
variantRegions = new TextureRegion[variants];
for(int i = 0; i < variants; i++){
variantRegions[i] = Core.atlas.find(name + (i + 1));
}
region = variantRegions[0];
}
}
@Override
public void draw(Tile tile){
if(variants == 0){
Draw.rect(region, tile.drawx(), tile.drawy());
}else{
Draw.rect(variantRegions[Mathf.randomSeed(tile.pos(), 0, Math.max(0, variantRegions.length - 1))], tile.drawx(), tile.drawy());
}
}
@Override
public TextureRegion[] generateIcons(){
return new TextureRegion[]{Core.atlas.find(Core.atlas.has(name) ? name : name + "1")};
}
@Override
public boolean canReplace(Block other){
return super.canReplace(other) && health > other.health;

View file

@ -160,14 +160,16 @@ public class Generators {
try{
Image image = ImagePacker.get(floor.generateIcons()[0]);
Image edge = ImagePacker.get("edge-stencil-" + floor.edgeStyle);
Image result = new Image(edge.width(), edge.height());
for(int x = 0; x < edge.width(); x++){
for(int y = 0; y < edge.height(); y++){
edge.draw(x, y, edge.getColor(x, y).mul(image.getColor(x % image.width(), y % image.height())));
result.draw(x, y, edge.getColor(x, y).mul(image.getColor(x % image.width(), y % image.height())));
}
}
edge.save(floor.name + "-edge");
result.save(floor.name + "-edge");
}catch(Exception ignored){}
}
});