Improved hover block system
This commit is contained in:
@@ -497,6 +497,7 @@ text.mech.ability = [LIGHT_GRAY]Ability\: {0}
|
|||||||
text.liquid.heatcapacity = [LIGHT_GRAY]Heat Capacity\: {0}
|
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.constructing = {0}\n[LIGHT_GRAY](Constructing)
|
||||||
block.spawn.name = Enemy Spawn
|
block.spawn.name = Enemy Spawn
|
||||||
block.core.name = Core
|
block.core.name = Core
|
||||||
block.metalfloor.name = Metal Floor
|
block.metalfloor.name = Metal Floor
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ import static io.anuke.mindustry.Vars.*;
|
|||||||
* This class should <i>not</i> call any outside methods to change state of modules, but instead fire events.
|
* This class should <i>not</i> call any outside methods to change state of modules, but instead fire events.
|
||||||
*/
|
*/
|
||||||
public class Logic extends Module{
|
public class Logic extends Module{
|
||||||
public boolean doUpdate = true;
|
|
||||||
|
|
||||||
public Logic(){
|
public Logic(){
|
||||||
Events.on(TileChangeEvent.class, event -> {
|
Events.on(TileChangeEvent.class, event -> {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package io.anuke.mindustry.ui;
|
package io.anuke.mindustry.ui;
|
||||||
|
|
||||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||||
import io.anuke.mindustry.content.blocks.Blocks;
|
|
||||||
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.OreBlock;
|
import io.anuke.mindustry.world.blocks.OreBlock;
|
||||||
@@ -15,12 +14,12 @@ import io.anuke.ucore.util.Mathf;
|
|||||||
import static io.anuke.mindustry.Vars.world;
|
import static io.anuke.mindustry.Vars.world;
|
||||||
|
|
||||||
public class SelectionTable extends Table{
|
public class SelectionTable extends Table{
|
||||||
Block selected = Blocks.air;
|
Tile lastTile;
|
||||||
|
|
||||||
public SelectionTable(){
|
public SelectionTable(){
|
||||||
super("clear");
|
super("clear");
|
||||||
|
|
||||||
margin(4f);
|
margin(5f);
|
||||||
|
|
||||||
update(() -> {
|
update(() -> {
|
||||||
Block result;
|
Block result;
|
||||||
@@ -32,16 +31,20 @@ public class SelectionTable extends Table{
|
|||||||
result = null;
|
result = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(result != null) selected = result;
|
if(result != null){
|
||||||
|
lastTile = tile;
|
||||||
|
}
|
||||||
|
|
||||||
getTranslation().y = Mathf.lerp(getTranslation().y, result == null ? -getHeight() : 0f, 0.2f);
|
getTranslation().y = Mathf.lerp(getTranslation().y, result == null ? -getHeight() : 0f, 0.2f);
|
||||||
});
|
});
|
||||||
|
|
||||||
Image image = new Image(new TextureRegionDrawable(new TextureRegion(Draw.region("clear"))));
|
Image image = new Image(new TextureRegionDrawable(new TextureRegion(Draw.region("clear"))));
|
||||||
image.update(() -> ((TextureRegionDrawable)image.getDrawable()).setRegion(selected.getEditorIcon()));
|
image.update(() ->
|
||||||
|
((TextureRegionDrawable)image.getDrawable()).setRegion(lastTile == null ? Draw.getBlankRegion() :
|
||||||
|
lastTile.block().getDisplayIcon(lastTile)));
|
||||||
|
|
||||||
add(image).size(16*2);
|
add(image).size(16*2).padRight(4);
|
||||||
label(() -> selected instanceof OreBlock ? selected.drops.item.localizedName() : selected.formalName).pad(4);
|
label(() -> lastTile == null ? "" : lastTile.block().getDisplayName(lastTile));
|
||||||
|
|
||||||
pack();
|
pack();
|
||||||
getTranslation().y = - getHeight();
|
getTranslation().y = - getHeight();
|
||||||
|
|||||||
@@ -452,6 +452,14 @@ public class Block extends BaseBlock {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getDisplayName(Tile tile){
|
||||||
|
return formalName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TextureRegion getDisplayIcon(Tile tile){
|
||||||
|
return getEditorIcon();
|
||||||
|
}
|
||||||
|
|
||||||
public TextureRegion getEditorIcon(){
|
public TextureRegion getEditorIcon(){
|
||||||
if(editorIcon == null){
|
if(editorIcon == null){
|
||||||
editorIcon = Draw.region("block-icon-" + name, Draw.region("clear"));
|
editorIcon = Draw.region("block-icon-" + name, Draw.region("clear"));
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import io.anuke.mindustry.graphics.Layer;
|
|||||||
import io.anuke.mindustry.graphics.Palette;
|
import io.anuke.mindustry.graphics.Palette;
|
||||||
import io.anuke.mindustry.graphics.Shaders;
|
import io.anuke.mindustry.graphics.Shaders;
|
||||||
import io.anuke.mindustry.input.CursorType;
|
import io.anuke.mindustry.input.CursorType;
|
||||||
|
import io.anuke.mindustry.type.ContentType;
|
||||||
import io.anuke.mindustry.type.ItemStack;
|
import io.anuke.mindustry.type.ItemStack;
|
||||||
import io.anuke.mindustry.type.Recipe;
|
import io.anuke.mindustry.type.Recipe;
|
||||||
import io.anuke.mindustry.world.BarType;
|
import io.anuke.mindustry.world.BarType;
|
||||||
@@ -26,6 +27,7 @@ import io.anuke.mindustry.world.modules.ItemModule;
|
|||||||
import io.anuke.ucore.core.Effects;
|
import io.anuke.ucore.core.Effects;
|
||||||
import io.anuke.ucore.core.Graphics;
|
import io.anuke.ucore.core.Graphics;
|
||||||
import io.anuke.ucore.graphics.Draw;
|
import io.anuke.ucore.graphics.Draw;
|
||||||
|
import io.anuke.ucore.util.Bundles;
|
||||||
import io.anuke.ucore.util.Mathf;
|
import io.anuke.ucore.util.Mathf;
|
||||||
|
|
||||||
import java.io.DataInput;
|
import java.io.DataInput;
|
||||||
@@ -68,6 +70,18 @@ public class BuildBlock extends Block{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDisplayName(Tile tile){
|
||||||
|
BuildEntity entity = tile.entity();
|
||||||
|
return Bundles.format("block.constructing", entity.recipe == null ? entity.previous.formalName : entity.recipe.result.formalName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TextureRegion getDisplayIcon(Tile tile){
|
||||||
|
BuildEntity entity = tile.entity();
|
||||||
|
return (entity.recipe == null ? entity.previous : entity.recipe.result).getEditorIcon();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isSolidFor(Tile tile){
|
public boolean isSolidFor(Tile tile){
|
||||||
BuildEntity entity = tile.entity();
|
BuildEntity entity = tile.entity();
|
||||||
|
|||||||
@@ -24,6 +24,11 @@ public class OreBlock extends Floor{
|
|||||||
this.edge = base.name;
|
this.edge = base.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDisplayName(Tile tile){
|
||||||
|
return drops.item.localizedName();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TextureRegion getEditorIcon(){
|
public TextureRegion getEditorIcon(){
|
||||||
if(editorIcon == null){
|
if(editorIcon == null){
|
||||||
|
|||||||
Reference in New Issue
Block a user