mirror of
https://github.com/Anuken/Mindustry.git
synced 2025-07-21 21:28:28 +07:00
More map editor improvements, turret outline rendering
This commit is contained in:
BIN
core/assets-raw/sprites/ui/icons/icon-menu-large.png
Normal file
BIN
core/assets-raw/sprites/ui/icons/icon-menu-large.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 165 B |
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 92 KiB |
@ -1,7 +1,7 @@
|
|||||||
#Autogenerated file. Do not modify.
|
#Autogenerated file. Do not modify.
|
||||||
#Wed Mar 21 00:30:33 EDT 2018
|
#Wed Mar 21 16:44:11 EDT 2018
|
||||||
version=release
|
version=release
|
||||||
androidBuildCode=582
|
androidBuildCode=587
|
||||||
name=Mindustry
|
name=Mindustry
|
||||||
code=3.4
|
code=3.4
|
||||||
build=custom build
|
build=custom build
|
||||||
|
@ -23,6 +23,7 @@ import io.anuke.mindustry.input.InputHandler;
|
|||||||
import io.anuke.mindustry.input.PlaceMode;
|
import io.anuke.mindustry.input.PlaceMode;
|
||||||
import io.anuke.mindustry.ui.fragments.ToolFragment;
|
import io.anuke.mindustry.ui.fragments.ToolFragment;
|
||||||
import io.anuke.mindustry.world.BlockBar;
|
import io.anuke.mindustry.world.BlockBar;
|
||||||
|
import io.anuke.mindustry.world.Layer;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.mindustry.world.blocks.Blocks;
|
import io.anuke.mindustry.world.blocks.Blocks;
|
||||||
import io.anuke.ucore.core.*;
|
import io.anuke.ucore.core.*;
|
||||||
@ -183,12 +184,13 @@ public class Renderer extends RendererModule{
|
|||||||
|
|
||||||
blocks.drawFloor();
|
blocks.drawFloor();
|
||||||
blocks.processBlocks();
|
blocks.processBlocks();
|
||||||
blocks.drawBlocks(false);
|
blocks.drawBlocks(Layer.overlay);
|
||||||
|
|
||||||
drawAllTeams(false);
|
drawAllTeams(false);
|
||||||
Entities.draw(Entities.defaultGroup());
|
Entities.draw(Entities.defaultGroup());
|
||||||
|
|
||||||
blocks.drawBlocks(true);
|
blocks.skipLayer(Layer.turret);
|
||||||
|
blocks.drawBlocks(Layer.laser);
|
||||||
|
|
||||||
drawAllTeams(true);
|
drawAllTeams(true);
|
||||||
|
|
||||||
@ -221,6 +223,9 @@ public class Renderer extends RendererModule{
|
|||||||
Graphics.beginShaders(Shaders.outline);
|
Graphics.beginShaders(Shaders.outline);
|
||||||
Graphics.shader(Shaders.hit, false);
|
Graphics.shader(Shaders.hit, false);
|
||||||
drawTeam(team, flying);
|
drawTeam(team, flying);
|
||||||
|
Draw.alpha(0f);
|
||||||
|
blocks.drawTeamBlocks(Layer.turret, team);
|
||||||
|
Draw.alpha(1f);
|
||||||
Graphics.shader();
|
Graphics.shader();
|
||||||
Graphics.endShaders();
|
Graphics.endShaders();
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,8 @@ import io.anuke.ucore.util.Bundles;
|
|||||||
import io.anuke.ucore.util.Log;
|
import io.anuke.ucore.util.Log;
|
||||||
import io.anuke.ucore.util.Strings;
|
import io.anuke.ucore.util.Strings;
|
||||||
|
|
||||||
|
import java.io.DataInputStream;
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.*;
|
import static io.anuke.mindustry.Vars.*;
|
||||||
|
|
||||||
public class MapEditorDialog extends Dialog{
|
public class MapEditorDialog extends Dialog{
|
||||||
@ -70,39 +72,14 @@ public class MapEditorDialog extends Dialog{
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
menu = new FloatingDialog("$text.menu");
|
openFile = new FileChooser("$text.loadimage", FileChooser.mapFilter, true, file -> {
|
||||||
menu.addCloseButton();
|
|
||||||
|
|
||||||
menu.content().defaults().size(240f, 60f).padBottom(5);
|
|
||||||
|
|
||||||
float isize = 16*2f;
|
|
||||||
|
|
||||||
menu.content().addImageButton("icon-back", isize, () -> {
|
|
||||||
if(!saved){
|
|
||||||
ui.showConfirm("$text.confirm", "$text.editor.unsaved", this::hide);
|
|
||||||
}else{
|
|
||||||
hide();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
menu.content().row();
|
|
||||||
|
|
||||||
menu.content().addImageButton("icon-save", isize, () -> {
|
|
||||||
saveFile.show();
|
|
||||||
});
|
|
||||||
|
|
||||||
/*
|
|
||||||
openFile = new FileChooser("$text.loadimage", FileChooser.pngFilter, true, file -> {
|
|
||||||
ui.loadfrag.show();
|
ui.loadfrag.show();
|
||||||
Timers.run(3f, () -> {
|
Timers.run(3f, () -> {
|
||||||
try{
|
try{
|
||||||
Pixmap pixmap = new Pixmap(file);
|
MapTileData data = MapIO.readTileData(new DataInputStream(file.read()));
|
||||||
if(verifySize(pixmap)){
|
|
||||||
editor.setPixmap(pixmap);
|
editor.beginEdit(data);
|
||||||
view.clearStack();
|
view.clearStack();
|
||||||
}else{
|
|
||||||
ui.showError(Bundles.format("text.editor.badsize", Arrays.toString(MapEditor.validMapSizes)));
|
|
||||||
}
|
|
||||||
}catch (Exception e){
|
}catch (Exception e){
|
||||||
ui.showError(Bundles.format("text.editor.errorimageload", Strings.parseException(e, false)));
|
ui.showError(Bundles.format("text.editor.errorimageload", Strings.parseException(e, false)));
|
||||||
Log.err(e);
|
Log.err(e);
|
||||||
@ -111,7 +88,38 @@ public class MapEditorDialog extends Dialog{
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
*/
|
menu = new FloatingDialog("$text.menu");
|
||||||
|
menu.addCloseButton();
|
||||||
|
|
||||||
|
menu.content().defaults().size(280f, 60f).padBottom(5);
|
||||||
|
|
||||||
|
float isize = 16*2f;
|
||||||
|
|
||||||
|
menu.content().addImageTextButton("$text.quit", "icon-back", isize, () -> {
|
||||||
|
if(!saved){
|
||||||
|
ui.showConfirm("$text.confirm", "$text.editor.unsaved", this::hide);
|
||||||
|
}else{
|
||||||
|
hide();
|
||||||
|
}
|
||||||
|
menu.hide();
|
||||||
|
});
|
||||||
|
|
||||||
|
menu.content().row();
|
||||||
|
|
||||||
|
menu.content().addImageTextButton("$text.editor.savemap", "icon-save-map", isize, () -> {
|
||||||
|
saveFile.show();
|
||||||
|
menu.hide();
|
||||||
|
});
|
||||||
|
|
||||||
|
menu.content().row();
|
||||||
|
|
||||||
|
menu.content().addImageTextButton("$text.editor.loadmap", "icon-load-map", isize, () -> {
|
||||||
|
openFile.show();
|
||||||
|
menu.hide();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
loadDialog = new MapLoadDialog(map -> {
|
loadDialog = new MapLoadDialog(map -> {
|
||||||
saveDialog.setFieldText(map.name);
|
saveDialog.setFieldText(map.name);
|
||||||
@ -205,7 +213,7 @@ public class MapEditorDialog extends Dialog{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Dialog show(){
|
public Dialog show(){
|
||||||
return super.show(Core.scene, Actions.sequence(Actions.scaleTo(1f, 1f), Actions.alpha(0f), Actions.fadeIn(0.3f)));
|
return super.show(Core.scene, Actions.sequence(Actions.alpha(0f), Actions.scaleTo(1f, 1f), Actions.fadeIn(0.3f)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public MapView getView() {
|
public MapView getView() {
|
||||||
@ -247,9 +255,9 @@ public class MapEditorDialog extends Dialog{
|
|||||||
|
|
||||||
tools.defaults().size(60f, 64f).padBottom(-5.1f);
|
tools.defaults().size(60f, 64f).padBottom(-5.1f);
|
||||||
|
|
||||||
tools.addImageButton("icon-arrow-left", 14*3f, () -> hide());
|
tools.addImageButton("icon-back", 16*2, () -> hide());
|
||||||
|
|
||||||
tools.addImageButton("icon-menu", 14*3f, menu::show);
|
tools.addImageButton("icon-menu-large", 16*2f, menu::show);
|
||||||
|
|
||||||
tools.row();
|
tools.row();
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import com.badlogic.gdx.graphics.Color;
|
|||||||
import com.badlogic.gdx.graphics.GL20;
|
import com.badlogic.gdx.graphics.GL20;
|
||||||
import com.badlogic.gdx.graphics.OrthographicCamera;
|
import com.badlogic.gdx.graphics.OrthographicCamera;
|
||||||
import com.badlogic.gdx.utils.Array;
|
import com.badlogic.gdx.utils.Array;
|
||||||
|
import io.anuke.mindustry.game.Team;
|
||||||
import io.anuke.mindustry.world.Block;
|
import io.anuke.mindustry.world.Block;
|
||||||
import io.anuke.mindustry.world.Layer;
|
import io.anuke.mindustry.world.Layer;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
@ -120,8 +121,7 @@ public class BlockRenderer{
|
|||||||
return requestidx;
|
return requestidx;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void drawBlocks(boolean top){
|
public void drawBlocks(Layer stopAt){
|
||||||
Layer stopAt = top ? Layer.laser : Layer.overlay;
|
|
||||||
|
|
||||||
for(; iterateidx < requestidx; iterateidx ++){
|
for(; iterateidx < requestidx; iterateidx ++){
|
||||||
|
|
||||||
@ -142,6 +142,36 @@ public class BlockRenderer{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void drawTeamBlocks(Layer layer, Team team){
|
||||||
|
int iterateidx = this.iterateidx;
|
||||||
|
|
||||||
|
for(; iterateidx < requestidx; iterateidx ++){
|
||||||
|
|
||||||
|
if(iterateidx < requests.size - 1 && requests.get(iterateidx).layer.ordinal() > layer.ordinal()){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
BlockRequest req = requests.get(iterateidx);
|
||||||
|
if(req.tile.getTeam() != team) continue;
|
||||||
|
Block block = req.tile.block();
|
||||||
|
|
||||||
|
if(req.layer == block.layer){
|
||||||
|
block.drawLayer(req.tile);
|
||||||
|
}else if(req.layer == block.layer2){
|
||||||
|
block.drawLayer2(req.tile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void skipLayer(Layer stopAt){
|
||||||
|
|
||||||
|
for(; iterateidx < requestidx; iterateidx ++){
|
||||||
|
if(iterateidx < requests.size - 1 && requests.get(iterateidx).layer.ordinal() > stopAt.ordinal()){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void addRequest(Tile tile, Layer layer){
|
private void addRequest(Tile tile, Layer layer){
|
||||||
if(requestidx >= requests.size){
|
if(requestidx >= requests.size){
|
||||||
requests.add(new BlockRequest());
|
requests.add(new BlockRequest());
|
||||||
|
@ -25,7 +25,7 @@ public class Recipes {
|
|||||||
new Recipe(distribution, DistributionBlocks.conveyor, stack(Item.iron, 1)),
|
new Recipe(distribution, DistributionBlocks.conveyor, stack(Item.iron, 1)),
|
||||||
new Recipe(distribution, DistributionBlocks.steelconveyor, stack(Item.steel, 1)),
|
new Recipe(distribution, DistributionBlocks.steelconveyor, stack(Item.steel, 1)),
|
||||||
new Recipe(distribution, DistributionBlocks.pulseconveyor, stack(Item.dirium, 1)),
|
new Recipe(distribution, DistributionBlocks.pulseconveyor, stack(Item.dirium, 1)),
|
||||||
new Recipe(distribution, DistributionBlocks.router, stack(Item.stone, 2)),
|
new Recipe(distribution, DistributionBlocks.router, stack(Item.iron, 2)),
|
||||||
new Recipe(distribution, DistributionBlocks.multiplexer, stack(Item.iron, 8)),
|
new Recipe(distribution, DistributionBlocks.multiplexer, stack(Item.iron, 8)),
|
||||||
new Recipe(distribution, DistributionBlocks.junction, stack(Item.iron, 2)),
|
new Recipe(distribution, DistributionBlocks.junction, stack(Item.iron, 2)),
|
||||||
new Recipe(distribution, DistributionBlocks.tunnel, stack(Item.iron, 2)),
|
new Recipe(distribution, DistributionBlocks.tunnel, stack(Item.iron, 2)),
|
||||||
@ -35,8 +35,8 @@ public class Recipes {
|
|||||||
new Recipe(distribution, DistributionBlocks.unloader, stack(Item.steel, 5)),
|
new Recipe(distribution, DistributionBlocks.unloader, stack(Item.steel, 5)),
|
||||||
new Recipe(distribution, DistributionBlocks.sortedunloader, stack(Item.steel, 5)),
|
new Recipe(distribution, DistributionBlocks.sortedunloader, stack(Item.steel, 5)),
|
||||||
|
|
||||||
new Recipe(weapon, WeaponBlocks.doubleturret, stack(Item.stone, 7)),
|
new Recipe(weapon, WeaponBlocks.doubleturret, stack(Item.iron, 7)),
|
||||||
new Recipe(weapon, WeaponBlocks.gatlingturret, stack(Item.iron, 8), stack(Item.stone, 10)),
|
new Recipe(weapon, WeaponBlocks.gatlingturret, stack(Item.iron, 8)),
|
||||||
new Recipe(weapon, WeaponBlocks.flameturret, stack(Item.iron, 12), stack(Item.steel, 9)),
|
new Recipe(weapon, WeaponBlocks.flameturret, stack(Item.iron, 12), stack(Item.steel, 9)),
|
||||||
new Recipe(weapon, WeaponBlocks.railgunturret, stack(Item.iron, 15), stack(Item.steel, 10)),
|
new Recipe(weapon, WeaponBlocks.railgunturret, stack(Item.iron, 15), stack(Item.steel, 10)),
|
||||||
new Recipe(weapon, WeaponBlocks.laserturret, stack(Item.steel, 12), stack(Item.titanium, 12)),
|
new Recipe(weapon, WeaponBlocks.laserturret, stack(Item.steel, 12), stack(Item.titanium, 12)),
|
||||||
@ -48,7 +48,7 @@ public class Recipes {
|
|||||||
new Recipe(weapon, WeaponBlocks.missileturret, stack(Item.steel, 70), stack(Item.titanium, 50), stack(Item.dirium, 55)),
|
new Recipe(weapon, WeaponBlocks.missileturret, stack(Item.steel, 70), stack(Item.titanium, 50), stack(Item.dirium, 55)),
|
||||||
new Recipe(weapon, WeaponBlocks.fornaxcannon, stack(Item.steel, 70), stack(Item.titanium, 50), stack(Item.dirium, 55)),
|
new Recipe(weapon, WeaponBlocks.fornaxcannon, stack(Item.steel, 70), stack(Item.titanium, 50), stack(Item.dirium, 55)),
|
||||||
|
|
||||||
new Recipe(crafting, ProductionBlocks.smelter, stack(Item.stone, 40), stack(Item.iron, 40)),
|
new Recipe(crafting, ProductionBlocks.smelter, stack(Item.iron, 40)),
|
||||||
new Recipe(crafting, ProductionBlocks.alloysmelter, stack(Item.titanium, 50), stack(Item.steel, 50)),
|
new Recipe(crafting, ProductionBlocks.alloysmelter, stack(Item.titanium, 50), stack(Item.steel, 50)),
|
||||||
new Recipe(crafting, ProductionBlocks.coalextractor, stack(Item.steel, 10), stack(Item.iron, 10)),
|
new Recipe(crafting, ProductionBlocks.coalextractor, stack(Item.steel, 10), stack(Item.iron, 10)),
|
||||||
new Recipe(crafting, ProductionBlocks.titaniumextractor, stack(Item.steel, 30), stack(Item.iron, 30)),
|
new Recipe(crafting, ProductionBlocks.titaniumextractor, stack(Item.steel, 30), stack(Item.iron, 30)),
|
||||||
@ -61,8 +61,8 @@ public class Recipes {
|
|||||||
//new Recipe(crafting, ProductionBlocks.centrifuge, stack(Item.steel, 30), stack(Item.iron, 30)),
|
//new Recipe(crafting, ProductionBlocks.centrifuge, stack(Item.steel, 30), stack(Item.iron, 30)),
|
||||||
|
|
||||||
//new Recipe(production, ProductionBlocks.stonedrill, stack(Item.stone, 12)),
|
//new Recipe(production, ProductionBlocks.stonedrill, stack(Item.stone, 12)),
|
||||||
new Recipe(production, ProductionBlocks.irondrill, stack(Item.stone, 25)),
|
new Recipe(production, ProductionBlocks.irondrill, stack(Item.iron, 25)),
|
||||||
new Recipe(production, ProductionBlocks.coaldrill, stack(Item.stone, 25), stack(Item.iron, 40)),
|
new Recipe(production, ProductionBlocks.coaldrill, stack(Item.iron, 25), stack(Item.iron, 40)),
|
||||||
new Recipe(production, ProductionBlocks.titaniumdrill, stack(Item.iron, 50), stack(Item.steel, 50)),
|
new Recipe(production, ProductionBlocks.titaniumdrill, stack(Item.iron, 50), stack(Item.steel, 50)),
|
||||||
new Recipe(production, ProductionBlocks.uraniumdrill, stack(Item.iron, 40), stack(Item.steel, 40)),
|
new Recipe(production, ProductionBlocks.uraniumdrill, stack(Item.iron, 40), stack(Item.steel, 40)),
|
||||||
new Recipe(production, ProductionBlocks.quartzextractor, stack(Item.titanium, 40), stack(Item.dirium, 40)),
|
new Recipe(production, ProductionBlocks.quartzextractor, stack(Item.titanium, 40), stack(Item.dirium, 40)),
|
||||||
@ -71,9 +71,9 @@ public class Recipes {
|
|||||||
new Recipe(production, ProductionBlocks.waterextractor, stack(Item.titanium, 40), stack(Item.dirium, 40)),
|
new Recipe(production, ProductionBlocks.waterextractor, stack(Item.titanium, 40), stack(Item.dirium, 40)),
|
||||||
new Recipe(production, ProductionBlocks.oilextractor, stack(Item.titanium, 40), stack(Item.dirium, 40)),
|
new Recipe(production, ProductionBlocks.oilextractor, stack(Item.titanium, 40), stack(Item.dirium, 40)),
|
||||||
|
|
||||||
new Recipe(power, ProductionBlocks.coalgenerator, stack(Item.iron, 30), stack(Item.stone, 20)),
|
new Recipe(power, ProductionBlocks.coalgenerator, stack(Item.iron, 30)),
|
||||||
new Recipe(power, ProductionBlocks.thermalgenerator, stack(Item.steel, 30), stack(Item.iron, 30)),
|
new Recipe(power, ProductionBlocks.thermalgenerator, stack(Item.steel, 30)),
|
||||||
new Recipe(power, ProductionBlocks.combustiongenerator, stack(Item.iron, 30), stack(Item.stone, 20)),
|
new Recipe(power, ProductionBlocks.combustiongenerator, stack(Item.iron, 30)),
|
||||||
new Recipe(power, ProductionBlocks.solarpanel, stack(Item.iron, 30), stack(Item.silicon, 20)),
|
new Recipe(power, ProductionBlocks.solarpanel, stack(Item.iron, 30), stack(Item.silicon, 20)),
|
||||||
new Recipe(power, ProductionBlocks.largesolarpanel, stack(Item.iron, 30), stack(Item.silicon, 20)),
|
new Recipe(power, ProductionBlocks.largesolarpanel, stack(Item.iron, 30), stack(Item.silicon, 20)),
|
||||||
new Recipe(power, ProductionBlocks.rtgenerator, stack(Item.titanium, 20), stack(Item.steel, 20)),
|
new Recipe(power, ProductionBlocks.rtgenerator, stack(Item.titanium, 20), stack(Item.steel, 20)),
|
||||||
|
@ -6,6 +6,7 @@ import com.badlogic.gdx.graphics.g2d.GlyphLayout;
|
|||||||
import com.badlogic.gdx.utils.Align;
|
import com.badlogic.gdx.utils.Align;
|
||||||
import com.badlogic.gdx.utils.Array;
|
import com.badlogic.gdx.utils.Array;
|
||||||
import com.badlogic.gdx.utils.Pools;
|
import com.badlogic.gdx.utils.Pools;
|
||||||
|
import io.anuke.mindustry.Vars;
|
||||||
import io.anuke.mindustry.io.Platform;
|
import io.anuke.mindustry.io.Platform;
|
||||||
import io.anuke.ucore.core.Core;
|
import io.anuke.ucore.core.Core;
|
||||||
import io.anuke.ucore.core.Timers;
|
import io.anuke.ucore.core.Timers;
|
||||||
@ -321,6 +322,7 @@ public class FileChooser extends FloatingDialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Predicate<FileHandle> pngFilter = file -> file.extension().equalsIgnoreCase("png");
|
public static Predicate<FileHandle> pngFilter = file -> file.extension().equalsIgnoreCase("png");
|
||||||
|
public static Predicate<FileHandle> mapFilter = file -> file.extension().equalsIgnoreCase(Vars.mapExtension);
|
||||||
public static Predicate<FileHandle> jpegFilter = file -> file.extension().equalsIgnoreCase("png") || file.extension().equalsIgnoreCase("jpg") || file.extension().equalsIgnoreCase("jpeg");
|
public static Predicate<FileHandle> jpegFilter = file -> file.extension().equalsIgnoreCase("png") || file.extension().equalsIgnoreCase("jpg") || file.extension().equalsIgnoreCase("jpeg");
|
||||||
public static Predicate<FileHandle> defaultFilter = file -> true;
|
public static Predicate<FileHandle> defaultFilter = file -> true;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user