Custom spawn locations

This commit is contained in:
Anuken
2018-10-10 13:02:00 -04:00
parent 05201d7012
commit 5f1bc6c6c2
10 changed files with 225 additions and 186 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 B

View File

@@ -515,6 +515,7 @@ text.liquid.heatcapacity=[LIGHT_GRAY]Heat Capacity: {0}
text.liquid.viscosity=[LIGHT_GRAY]Viscosity: {0} text.liquid.viscosity=[LIGHT_GRAY]Viscosity: {0}
text.liquid.temperature=[LIGHT_GRAY]Temperature: {0} text.liquid.temperature=[LIGHT_GRAY]Temperature: {0}
block.spawn.name=Enemy Spawn
block.core.name=Core block.core.name=Core
block.metalfloor.name=Metal Floor block.metalfloor.name=Metal Floor
block.deepwater.name=deepwater block.deepwater.name=deepwater

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 102 KiB

View File

@@ -1,6 +1,7 @@
package io.anuke.mindustry.ai; package io.anuke.mindustry.ai;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import io.anuke.mindustry.content.blocks.Blocks;
import io.anuke.mindustry.entities.units.BaseUnit; import io.anuke.mindustry.entities.units.BaseUnit;
import io.anuke.mindustry.entities.units.Squad; import io.anuke.mindustry.entities.units.Squad;
import io.anuke.mindustry.game.EventType.WorldLoadEvent; import io.anuke.mindustry.game.EventType.WorldLoadEvent;
@@ -25,6 +26,7 @@ public class WaveSpawner{
private GridBits quadrants; private GridBits quadrants;
private Array<SpawnGroup> groups; private Array<SpawnGroup> groups;
private boolean dynamicSpawn;
private Array<FlyerSpawn> flySpawns = new Array<>(); private Array<FlyerSpawn> flySpawns = new Array<>();
private Array<GroundSpawn> groundSpawns = new Array<>(); private Array<GroundSpawn> groundSpawns = new Array<>();
@@ -81,10 +83,12 @@ public class WaveSpawner{
int addGround = groundGroups - groundSpawns.size, addFly = flyGroups - flySpawns.size; int addGround = groundGroups - groundSpawns.size, addFly = flyGroups - flySpawns.size;
//add extra groups if the total exceeds it //add extra groups if the total exceeds it
for(int i = 0; i < addGround; i++){ if(!dynamicSpawn){
GroundSpawn spawn = new GroundSpawn(); for(int i = 0; i < addGround; i++){
findLocation(spawn); GroundSpawn spawn = new GroundSpawn();
groundSpawns.add(spawn); findLocation(spawn);
groundSpawns.add(spawn);
}
} }
for(int i = 0; i < addFly; i++){ for(int i = 0; i < addFly; i++){
@@ -117,9 +121,12 @@ public class WaveSpawner{
flyCount++; flyCount++;
}else{ }else{
GroundSpawn spawn = groundSpawns.get(groundCount); GroundSpawn spawn = groundSpawns.get(groundCount);
checkQuadrant(spawn.x, spawn.y);
if(!getQuad(spawn.x, spawn.y)){ if(dynamicSpawn){
findLocation(spawn); checkQuadrant(spawn.x, spawn.y);
if(!getQuad(spawn.x, spawn.y)){
findLocation(spawn);
}
} }
spawnX = spawn.x * quadsize * tilesize + quadsize * tilesize / 2f; spawnX = spawn.x * quadsize * tilesize + quadsize * tilesize / 2f;
@@ -165,6 +172,7 @@ public class WaveSpawner{
} }
private void reset(WorldLoadEvent event){ private void reset(WorldLoadEvent event){
dynamicSpawn = false;
flySpawns.clear(); flySpawns.clear();
groundSpawns.clear(); groundSpawns.clear();
quadrants = new GridBits(quadWidth(), quadHeight()); quadrants = new GridBits(quadWidth(), quadHeight());
@@ -174,6 +182,20 @@ public class WaveSpawner{
}else{ }else{
groups = world.getSector().spawns; groups = world.getSector().spawns;
} }
dynamicSpawn = true;
for(int x = 0; x < world.width(); x++){
for(int y = 0; y < world.height(); y++){
if(world.tile(x, y).block() == Blocks.spawn){
dynamicSpawn = false;
GroundSpawn spawn = new GroundSpawn();
spawn.x = x/quadsize;
spawn.y = y/quadsize;
groundSpawns.add(spawn);
}
}
}
} }
private boolean getQuad(int quadx, int quady){ private boolean getQuad(int quadx, int quady){

View File

@@ -4,15 +4,19 @@ import com.badlogic.gdx.graphics.Color;
import io.anuke.mindustry.content.Items; import io.anuke.mindustry.content.Items;
import io.anuke.mindustry.content.Liquids; import io.anuke.mindustry.content.Liquids;
import io.anuke.mindustry.content.StatusEffects; import io.anuke.mindustry.content.StatusEffects;
import io.anuke.mindustry.graphics.CacheLayer;
import io.anuke.mindustry.game.ContentList; import io.anuke.mindustry.game.ContentList;
import io.anuke.mindustry.graphics.CacheLayer;
import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.type.ItemStack;
import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.*; import io.anuke.mindustry.world.blocks.*;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.graphics.Lines;
import io.anuke.ucore.util.Mathf;
public class Blocks extends BlockList implements ContentList{ public class Blocks extends BlockList implements ContentList{
public static Block air, blockpart, space, metalfloor, deepwater, water, lava, oil, stone, blackstone, dirt, sand, ice, snow, grass, shrub, rock, icerock, blackrock; public static Block air, blockpart, spawn, space, metalfloor, deepwater, water, lava, oil, stone, blackstone, dirt, sand, ice, snow, grass, shrub, rock, icerock, blackrock;
@Override @Override
@@ -23,19 +27,26 @@ public class Blocks extends BlockList implements ContentList{
alwaysReplace = true; alwaysReplace = true;
} }
//don't draw public void draw(Tile tile){}
public void draw(Tile tile){ public void load(){}
} public void init(){}
public void load(){
}
public void init(){
}
}; };
blockpart = new BlockPart(); blockpart = new BlockPart();
spawn = new Block("spawn"){
{
}
public void drawShadow(Tile tile){}
public void draw(Tile tile){
Draw.color(Color.SCARLET);
Lines.circle(tile.worldx(), tile.worldy(), 4f +Mathf.absin(Timers.time(), 6f, 6f));
Draw.color();
}
};
for(int i = 1; i <= 6; i++){ for(int i = 1; i <= 6; i++){
new BuildBlock("build" + i); new BuildBlock("build" + i);
} }

View File

@@ -84,6 +84,11 @@ public class MapIO{
data.write(x, y, DataPosition.floor, block.floor.id); data.write(x, y, DataPosition.floor, block.floor.id);
data.write(x, y, DataPosition.elevation, (byte)block.elevation); data.write(x, y, DataPosition.elevation, (byte)block.elevation);
//place spawn
if(color == Color.rgba8888(Color.RED)){
data.write(x, y, DataPosition.wall, Blocks.spawn.id);
}
//place core //place core
if(color == Color.rgba8888(Color.GREEN)){ if(color == Color.rgba8888(Color.GREEN)){
for(int dx = 0; dx < 3; dx++){ for(int dx = 0; dx < 3; dx++){

View File

@@ -114,7 +114,7 @@ public class Drill extends Block{
@Override @Override
public TextureRegion[] getIcon(){ public TextureRegion[] getIcon(){
return new TextureRegion[]{region, rotatorRegion, topRegion}; return new TextureRegion[]{Draw.region(name), Draw.region(name + "-rotator"), Draw.region(name + "-top")};
} }
@Override @Override