Moved many block files; work on annotation processor

This commit is contained in:
Anuken
2018-06-06 14:51:25 -04:00
parent 917e2e40fb
commit ccb97e34d5
147 changed files with 685 additions and 520 deletions

View File

@@ -8,7 +8,7 @@ import io.anuke.mindustry.game.EventType.TileChangeEvent;
import io.anuke.mindustry.game.EventType.WorldLoadEvent;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.world.BlockFlag;
import io.anuke.mindustry.world.meta.BlockFlag;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.core.Events;
import io.anuke.ucore.util.EnumSet;

View File

@@ -10,7 +10,7 @@ import io.anuke.mindustry.game.EventType.TileChangeEvent;
import io.anuke.mindustry.game.EventType.WorldLoadEvent;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.game.TeamInfo.TeamData;
import io.anuke.mindustry.world.BlockFlag;
import io.anuke.mindustry.world.meta.BlockFlag;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.core.Events;
import io.anuke.ucore.core.Timers;

View File

@@ -9,7 +9,7 @@ import io.anuke.mindustry.type.ContentList;
import io.anuke.mindustry.type.ItemStack;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.*;
import io.anuke.mindustry.world.blocks.*;
public class Blocks extends BlockList implements ContentList{
public static Block air, spawn, blockpart, build1, build2, build3, build4, build5, build6, defaultFloor, space, metalfloor, deepwater, water, lava, oil, stone, blackstone, iron, lead, coal, titanium, thorium, dirt, sand, ice, snow, grass, sandblock, snowblock, stoneblock, blackstoneblock, grassblock, mossblock, shrub, rock, icerock, blackrock, dirtblock;

View File

@@ -8,7 +8,7 @@ import io.anuke.mindustry.type.ContentList;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.type.ItemStack;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.blocks.types.production.*;
import io.anuke.mindustry.world.blocks.production.*;
public class CraftingBlocks extends BlockList implements ContentList {
public static Block smelter, alloysmelter, siliconsmelter, poweralloysmelter, powersmelter, cryofluidmixer, melter, separator, centrifuge, plasticFormer, biomatterCompressor, pulverizer, oilRefinery, stoneFormer, weaponFactory, incinerator;

View File

@@ -8,9 +8,9 @@ import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.type.Liquid;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.PowerBlock;
import io.anuke.mindustry.world.blocks.types.distribution.Sorter;
import io.anuke.mindustry.world.blocks.types.power.PowerDistributor;
import io.anuke.mindustry.world.blocks.PowerBlock;
import io.anuke.mindustry.world.blocks.distribution.Sorter;
import io.anuke.mindustry.world.blocks.power.PowerDistributor;
import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.scene.ui.ButtonGroup;
import io.anuke.ucore.scene.ui.ImageButton;
@@ -64,11 +64,7 @@ public class DebugBlocks extends BlockList implements ContentList{
solid = true;
hasLiquids = true;
liquidCapacity = 100f;
}
@Override
public boolean isConfigurable(Tile tile) {
return true;
configurable = true;
}
@Override

View File

@@ -3,9 +3,9 @@ package io.anuke.mindustry.content.blocks;
import io.anuke.mindustry.content.fx.BlockFx;
import io.anuke.mindustry.type.ContentList;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.blocks.types.Wall;
import io.anuke.mindustry.world.blocks.types.defense.Door;
import io.anuke.mindustry.world.blocks.types.defense.ShieldedWallBlock;
import io.anuke.mindustry.world.blocks.Wall;
import io.anuke.mindustry.world.blocks.defense.Door;
import io.anuke.mindustry.world.blocks.defense.ShieldedWallBlock;
public class DefenseBlocks extends BlockList implements ContentList {
public static Block stonewall, ironwall, steelwall, titaniumwall, diriumwall, compositewall, steelwalllarge, titaniumwalllarge, diriumwalllarge, titaniumshieldwall, door, largedoor;

View File

@@ -2,7 +2,7 @@ package io.anuke.mindustry.content.blocks;
import io.anuke.mindustry.type.ContentList;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.blocks.types.distribution.*;
import io.anuke.mindustry.world.blocks.distribution.*;
public class DistributionBlocks extends BlockList implements ContentList{
public static Block conveyor, steelconveyor, pulseconveyor, router, multiplexer, junction, bridgeconveyor, laserconveyor, sorter, splitter, overflowgate;

View File

@@ -2,8 +2,8 @@ package io.anuke.mindustry.content.blocks;
import io.anuke.mindustry.type.ContentList;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.blocks.types.distribution.*;
import io.anuke.mindustry.world.blocks.types.production.Pump;
import io.anuke.mindustry.world.blocks.distribution.*;
import io.anuke.mindustry.world.blocks.production.Pump;
public class LiquidBlocks extends BlockList implements ContentList{
public static Block pump, fluxpump, conduit, pulseconduit, liquidrouter, liquidtank, liquidjunction, bridgeconduit, laserconduit;

View File

@@ -3,10 +3,10 @@ package io.anuke.mindustry.content.blocks;
import io.anuke.mindustry.content.fx.BlockFx;
import io.anuke.mindustry.type.ContentList;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.blocks.types.defense.RepairTurret;
import io.anuke.mindustry.world.blocks.types.defense.ShieldBlock;
import io.anuke.mindustry.world.blocks.types.distribution.Teleporter;
import io.anuke.mindustry.world.blocks.types.power.*;
import io.anuke.mindustry.world.blocks.defense.RepairTurret;
import io.anuke.mindustry.world.blocks.defense.ShieldBlock;
import io.anuke.mindustry.world.blocks.distribution.Teleporter;
import io.anuke.mindustry.world.blocks.power.*;
public class PowerBlocks extends BlockList implements ContentList {
public static Block combustiongenerator, thermalgenerator, liquidcombustiongenerator, rtgenerator, solarpanel, largesolarpanel, nuclearReactor, fusionReactor, repairturret, megarepairturret, shieldgenerator, battery, batteryLarge, powernode, powernodelarge, teleporter;

View File

@@ -6,10 +6,10 @@ import io.anuke.mindustry.content.Liquids;
import io.anuke.mindustry.content.fx.BlockFx;
import io.anuke.mindustry.type.ContentList;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.blocks.types.production.Cultivator;
import io.anuke.mindustry.world.blocks.types.production.Drill;
import io.anuke.mindustry.world.blocks.types.production.Fracker;
import io.anuke.mindustry.world.blocks.types.production.SolidPump;
import io.anuke.mindustry.world.blocks.production.Cultivator;
import io.anuke.mindustry.world.blocks.production.Drill;
import io.anuke.mindustry.world.blocks.production.Fracker;
import io.anuke.mindustry.world.blocks.production.SolidPump;
public class ProductionBlocks extends BlockList implements ContentList {
public static Block ironDrill, reinforcedDrill, steelDrill, titaniumDrill, laserdrill, nucleardrill, plasmadrill, waterextractor, oilextractor, cultivator;

View File

@@ -2,10 +2,10 @@ package io.anuke.mindustry.content.blocks;
import io.anuke.mindustry.type.ContentList;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.blocks.types.storage.CoreBlock;
import io.anuke.mindustry.world.blocks.types.storage.SortedUnloader;
import io.anuke.mindustry.world.blocks.types.storage.Unloader;
import io.anuke.mindustry.world.blocks.types.storage.Vault;
import io.anuke.mindustry.world.blocks.storage.CoreBlock;
import io.anuke.mindustry.world.blocks.storage.SortedUnloader;
import io.anuke.mindustry.world.blocks.storage.Unloader;
import io.anuke.mindustry.world.blocks.storage.Vault;
public class StorageBlocks extends BlockList implements ContentList {
public static Block core, vault, unloader, sortedunloader;

View File

@@ -5,10 +5,10 @@ import io.anuke.mindustry.content.UnitTypes;
import io.anuke.mindustry.type.ContentList;
import io.anuke.mindustry.type.ItemStack;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.blocks.types.units.DropPoint;
import io.anuke.mindustry.world.blocks.types.units.RepairPoint;
import io.anuke.mindustry.world.blocks.types.units.ResupplyPoint;
import io.anuke.mindustry.world.blocks.types.units.UnitFactory;
import io.anuke.mindustry.world.blocks.units.DropPoint;
import io.anuke.mindustry.world.blocks.units.RepairPoint;
import io.anuke.mindustry.world.blocks.units.ResupplyPoint;
import io.anuke.mindustry.world.blocks.units.UnitFactory;
public class UnitBlocks extends BlockList implements ContentList {
public static Block resupplyPoint, repairPoint, droneFactory, dropPoint;

View File

@@ -6,7 +6,7 @@ import io.anuke.mindustry.content.fx.ShootFx;
import io.anuke.mindustry.type.AmmoType;
import io.anuke.mindustry.type.ContentList;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.blocks.types.defense.turrets.*;
import io.anuke.mindustry.world.blocks.defense.turrets.*;
import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.util.Angles;
import io.anuke.ucore.util.Mathf;

View File

@@ -81,8 +81,8 @@ public class Logic extends Module {
public void runWave(){
//TODO spawn enemies
for(int i = 0; i < 100; i ++){
//TODO spawn enemies properly
for(int i = 0; i < 10; i ++){
BaseUnit unit = UnitTypes.vtol.create(Team.red);
Vector2 offset = new Vector2().setToRandomDirection().scl(world.width()/2f*tilesize).add(world.width()/2f*tilesize, world.height()/2f*tilesize);
unit.inventory.addAmmo(AmmoTypes.bulletIron);

View File

@@ -20,7 +20,7 @@ import io.anuke.mindustry.entities.traits.BelowLiquidTrait;
import io.anuke.mindustry.entities.units.BaseUnit;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.graphics.*;
import io.anuke.mindustry.world.BlockFlag;
import io.anuke.mindustry.world.meta.BlockFlag;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.core.Core;
import io.anuke.ucore.core.Effects;

View File

@@ -5,7 +5,7 @@ import com.badlogic.gdx.utils.IntSet;
import io.anuke.mindustry.io.MapTileData.DataPosition;
import io.anuke.mindustry.io.MapTileData.TileDataMarker;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.blocks.types.Floor;
import io.anuke.mindustry.world.blocks.Floor;
import io.anuke.ucore.util.Bits;
import static io.anuke.mindustry.Vars.ui;

View File

@@ -9,7 +9,7 @@ import io.anuke.mindustry.io.MapTileData;
import io.anuke.mindustry.io.MapTileData.DataPosition;
import io.anuke.mindustry.io.MapTileData.TileDataMarker;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.blocks.types.Floor;
import io.anuke.mindustry.world.blocks.Floor;
import io.anuke.ucore.util.Bits;
import io.anuke.ucore.util.Mathf;

View File

@@ -9,7 +9,7 @@ import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.ColorMapper;
import io.anuke.mindustry.world.ColorMapper.BlockPair;
import io.anuke.mindustry.content.blocks.Blocks;
import io.anuke.mindustry.world.blocks.types.Floor;
import io.anuke.mindustry.world.blocks.Floor;
import io.anuke.ucore.graphics.Pixmaps;
import io.anuke.ucore.noise.RidgedPerlin;
import io.anuke.ucore.noise.Simplex;

View File

@@ -20,8 +20,8 @@ import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.graphics.Trail;
import io.anuke.mindustry.type.*;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.Floor;
import io.anuke.mindustry.world.blocks.types.storage.CoreBlock.CoreEntity;
import io.anuke.mindustry.world.blocks.Floor;
import io.anuke.mindustry.world.blocks.storage.CoreBlock.CoreEntity;
import io.anuke.ucore.core.*;
import io.anuke.ucore.entities.EntityGroup;
import io.anuke.ucore.entities.trait.SolidTrait;

View File

@@ -7,10 +7,10 @@ import io.anuke.mindustry.entities.traits.TargetTrait;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.Wall;
import io.anuke.mindustry.world.blocks.types.modules.InventoryModule;
import io.anuke.mindustry.world.blocks.types.modules.LiquidModule;
import io.anuke.mindustry.world.blocks.types.modules.PowerModule;
import io.anuke.mindustry.world.blocks.Wall;
import io.anuke.mindustry.world.blocks.modules.InventoryModule;
import io.anuke.mindustry.world.blocks.modules.LiquidModule;
import io.anuke.mindustry.world.blocks.modules.PowerModule;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.entities.EntityGroup;

View File

@@ -9,7 +9,7 @@ import io.anuke.mindustry.net.Interpolator;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.type.StatusEffect;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.Floor;
import io.anuke.mindustry.world.blocks.Floor;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.entities.impl.DestructibleEntity;

View File

@@ -2,7 +2,7 @@ package io.anuke.mindustry.entities.effect;
import com.badlogic.gdx.math.Interpolation;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.defense.ShieldBlock;
import io.anuke.mindustry.world.blocks.defense.ShieldBlock;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.entities.EntityGroup;
import io.anuke.ucore.entities.impl.BaseEntity;

View File

@@ -14,8 +14,8 @@ import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.type.Recipe;
import io.anuke.mindustry.world.Build;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.BuildBlock;
import io.anuke.mindustry.world.blocks.types.BuildBlock.BuildEntity;
import io.anuke.mindustry.world.blocks.BuildBlock;
import io.anuke.mindustry.world.blocks.BuildBlock.BuildEntity;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Events;
import io.anuke.ucore.core.Timers;

View File

@@ -10,7 +10,7 @@ import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.type.AmmoType;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.world.BlockFlag;
import io.anuke.mindustry.world.meta.BlockFlag;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Effects.Effect;

View File

@@ -7,7 +7,7 @@ import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.graphics.Trail;
import io.anuke.mindustry.type.AmmoType;
import io.anuke.mindustry.world.BlockFlag;
import io.anuke.mindustry.world.meta.BlockFlag;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.graphics.Draw;

View File

@@ -5,9 +5,9 @@ import io.anuke.mindustry.Vars;
import io.anuke.mindustry.entities.Units;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.type.AmmoType;
import io.anuke.mindustry.world.BlockFlag;
import io.anuke.mindustry.world.meta.BlockFlag;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.Floor;
import io.anuke.mindustry.world.blocks.Floor;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.util.*;

View File

@@ -13,10 +13,10 @@ import io.anuke.mindustry.entities.units.UnitType;
import io.anuke.mindustry.game.EventType.BlockBuildEvent;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.world.BlockFlag;
import io.anuke.mindustry.world.meta.BlockFlag;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.BuildBlock;
import io.anuke.mindustry.world.blocks.types.BuildBlock.BuildEntity;
import io.anuke.mindustry.world.blocks.BuildBlock;
import io.anuke.mindustry.world.blocks.BuildBlock.BuildEntity;
import io.anuke.ucore.core.Events;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.entities.EntityGroup;

View File

@@ -1,6 +1,5 @@
package io.anuke.mindustry.entities.units.types;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import io.anuke.mindustry.entities.units.FlyingUnit;
import io.anuke.mindustry.entities.units.UnitType;
import io.anuke.mindustry.game.Team;
@@ -9,10 +8,6 @@ import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.util.Mathf;
public class Vtol extends FlyingUnit {
static TextureRegion
booster1 = Draw.region("vtol-booster-1"),
booster2 = Draw.region("vtol-booster-2"),
region = Draw.region("vtol");
public Vtol(UnitType type, Team team) {
super(type, team);
@@ -22,10 +17,11 @@ public class Vtol extends FlyingUnit {
public void draw() {
Draw.alpha(hitTime / hitDuration);
Draw.rect(region, x, y, rotation - 90);
Draw.rect("vtol", x, y, rotation - 90);
for(int i : Mathf.signs){
Draw.rect(booster1, x, y, 12*i, 12, rotation - 90);
Draw.rect(booster2, x, y, 12*i, 12, rotation - 90);
Draw.rect("vtol-booster-1", x, y, 12*i, 12, rotation - 90);
Draw.rect("vtol-booster-2", x, y, 12*i, 12, rotation - 90);
}
Draw.alpha(1f);

View File

@@ -5,7 +5,7 @@ import io.anuke.mindustry.content.blocks.Blocks;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.StaticBlock;
import io.anuke.mindustry.world.blocks.StaticBlock;
import io.anuke.ucore.core.Graphics;
import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.util.Mathf;

View File

@@ -9,7 +9,7 @@ import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.entities.Unit;
import io.anuke.mindustry.game.TeamInfo.TeamData;
import io.anuke.mindustry.input.InputHandler;
import io.anuke.mindustry.world.BlockBar;
import io.anuke.mindustry.world.meta.BlockBar;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.core.Graphics;
import io.anuke.ucore.core.Inputs;

View File

@@ -0,0 +1,23 @@
package io.anuke.mindustry.input;
import io.anuke.ucore.function.Callable;
import io.anuke.ucore.scene.utils.Cursors;
/**Type of cursor for displaying on desktop.*/
public enum CursorType {
normal(Cursors::restoreCursor),
hand(Cursors::setHand),
drill(() -> Cursors.set("drill")),
unload(() -> Cursors.set("unload"));
private final Callable call;
CursorType(Callable call){
this.call = call;
}
/**Sets the current system cursor to this.*/
void set(){
call.run();
}
}

View File

@@ -16,15 +16,13 @@ import io.anuke.ucore.core.Inputs;
import io.anuke.ucore.core.Inputs.DeviceType;
import io.anuke.ucore.core.KeyBinds;
import io.anuke.ucore.core.Settings;
import io.anuke.ucore.function.Callable;
import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.graphics.Lines;
import io.anuke.ucore.scene.ui.layout.Unit;
import io.anuke.ucore.scene.utils.Cursors;
import io.anuke.ucore.util.Mathf;
import static io.anuke.mindustry.Vars.*;
import static io.anuke.mindustry.input.DesktopInput.CursorType.*;
import static io.anuke.mindustry.input.CursorType.*;
import static io.anuke.mindustry.input.PlaceMode.*;
public class DesktopInput extends InputHandler{
@@ -154,9 +152,7 @@ public class DesktopInput extends InputHandler{
if(cursor != null){
cursor = cursor.target();
if(cursor.block().isCursor(cursor)) {
cursorType = hand;
}
cursorType = cursor.block().getCursor(cursor);
if(canMine(cursor)){
cursorType = drill;
@@ -314,20 +310,4 @@ public class DesktopInput extends InputHandler{
}
}
enum CursorType{
normal(Cursors::restoreCursor),
hand(Cursors::setHand),
drill(() -> Cursors.set("drill")),
unload(() -> Cursors.set("unload"));
private final Callable call;
CursorType(Callable call){
this.call = call;
}
void set(){
call.run();
}
}
}

View File

@@ -94,7 +94,7 @@ public abstract class InputHandler extends InputAdapter{
boolean showedInventory = false;
//check if tapped block is configurable
if(tile.block().isConfigurable(tile) && tile.getTeam() == player.getTeam()){
if(tile.block().configurable && tile.getTeam() == player.getTeam()){
consumed = true;
if((!frag.config.isShown() //if the config fragment is hidden, show
//alternatively, the current selected block can 'agree' to switch config tiles

View File

@@ -0,0 +1,50 @@
package io.anuke.mindustry.io;
import io.anuke.annotations.Annotations.ReadClass;
import io.anuke.annotations.Annotations.WriteClass;
import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.world.Tile;
import java.nio.ByteBuffer;
import static io.anuke.mindustry.Vars.playerGroup;
import static io.anuke.mindustry.Vars.world;
public class TypeIO {
@WriteClass(Player.class)
public static void writePlayer(ByteBuffer buffer, Player player){
buffer.putInt(player.id);
}
@ReadClass(Player.class)
public static Player readPlayer(ByteBuffer buffer){
return playerGroup.getByID(buffer.getInt());
}
@WriteClass(Tile.class)
public static void writeTile(ByteBuffer buffer, Tile tile){
buffer.putInt(tile.packedPosition());
}
@ReadClass(Tile.class)
public static Tile readTile(ByteBuffer buffer){
return world.tile(buffer.getInt());
}
@WriteClass(String.class)
public static void writeString(ByteBuffer buffer, String string){
byte[] bytes = string.getBytes();
buffer.putShort((short)bytes.length);
buffer.put(bytes);
}
@ReadClass(String.class)
public static String readString(ByteBuffer buffer){
short length = buffer.getShort();
byte[] bytes = new byte[length];
buffer.get(bytes);
return new String(bytes);
}
}

View File

@@ -11,7 +11,7 @@ import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.io.SaveFileVersion;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.BlockPart;
import io.anuke.mindustry.world.blocks.BlockPart;
import io.anuke.ucore.entities.Entities;
import io.anuke.ucore.entities.EntityGroup;
import io.anuke.ucore.entities.EntityPhysics;

View File

@@ -6,10 +6,10 @@ import com.badlogic.gdx.utils.ObjectMap;
import com.badlogic.gdx.utils.TimeUtils;
import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.blocks.types.BlockPart;
import io.anuke.mindustry.world.blocks.types.Floor;
import io.anuke.mindustry.world.blocks.types.Rock;
import io.anuke.mindustry.world.blocks.types.StaticBlock;
import io.anuke.mindustry.world.blocks.BlockPart;
import io.anuke.mindustry.world.blocks.Floor;
import io.anuke.mindustry.world.blocks.Rock;
import io.anuke.mindustry.world.blocks.StaticBlock;
import io.anuke.ucore.core.Settings;
import static io.anuke.mindustry.Vars.world;

View File

@@ -18,8 +18,6 @@ public class Interpolator {
public Vector2 pos = new Vector2();
public float[] values = {};
public Vector2 smoothPos = new Vector2();
public void read(float cx, float cy, float x, float y, long sent, float... target1ds){
targets = target1ds;
time = 0f;

View File

@@ -9,7 +9,7 @@ import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.io.Version;
import io.anuke.mindustry.type.Upgrade;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.BlockPart;
import io.anuke.mindustry.world.blocks.BlockPart;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.entities.Entities;
import io.anuke.ucore.util.Bits;

View File

@@ -17,9 +17,15 @@ import io.anuke.mindustry.game.UnlockableContent;
import io.anuke.mindustry.graphics.CacheLayer;
import io.anuke.mindustry.graphics.Layer;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.input.CursorType;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.type.ItemStack;
import io.anuke.mindustry.type.Liquid;
import io.anuke.mindustry.world.meta.BlockBar;
import io.anuke.mindustry.world.meta.BlockBars;
import io.anuke.mindustry.world.meta.BlockFlag;
import io.anuke.mindustry.world.meta.BlockGroup;
import io.anuke.mindustry.world.meta.BlockStats;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.graphics.Hue;
@@ -98,11 +104,11 @@ public class Block extends BaseBlock implements UnlockableContent{
/**whether this block has instant transfer checking. used for calculations to prevent infinite loops.*/
public boolean instantTransfer = false;
/**The block group. Unless {@link #canReplace} is overriden, blocks in the same group can replace each other.*/
public BlockGroup group = BlockGroup.none;
public io.anuke.mindustry.world.meta.BlockGroup group = io.anuke.mindustry.world.meta.BlockGroup.none;
/**list of displayed block status bars. Defaults to health bar.*/
public BlockBars bars = new BlockBars();
public io.anuke.mindustry.world.meta.BlockBars bars = new BlockBars();
/**List of block stats.*/
public BlockStats stats = new BlockStats();
public io.anuke.mindustry.world.meta.BlockStats stats = new BlockStats();
/**List of block flags. Used for AI indexing.*/
public EnumSet<BlockFlag> flags;
/**Whether to automatically set the entity to 'sleeping' when created.*/
@@ -113,6 +119,8 @@ public class Block extends BaseBlock implements UnlockableContent{
public TextureRegion shadowRegion;
/**Texture region array for drawing multiple shadows.*/
public TextureRegion[] shadowRegions;
/**Whether the block can be tapped and selected to configure.*/
public boolean configurable;
public Block(String name) {
this.name = name;
@@ -174,28 +182,14 @@ public class Block extends BaseBlock implements UnlockableContent{
}
/**Returns whether or not a hand cursor should be shown over this block.*/
public boolean isCursor(Tile tile){
return isConfigurable(tile);
public CursorType getCursor(Tile tile){
return configurable ? CursorType.normal : CursorType.hand;
}
/**Called when this block is tapped to build a UI on the table.
* {@link #isConfigurable(Tile)} able} must return true for this to be called.*/
* {@link #configurable} able} must return true for this to be called.*/
public void buildTable(Tile tile, Table table) {}
//TODO why make it a method?
/**Returns whether this tile can be configured.*/
public boolean isConfigurable(Tile tile){
return false;
}
//TODO remove this
public void configure(Tile tile, byte data){}
//TODO remove this
public void setConfigure(Tile tile, byte data){
configure(tile, data);
}
/**Called when another tile is tapped while this block is selected.
* Returns whether or not this block should be deselected.*/
public boolean onConfigureTileTapped(Tile tile, Tile other){
@@ -225,8 +219,8 @@ public class Block extends BaseBlock implements UnlockableContent{
//TODO make this easier to config.
public void setBars(){
if(hasPower) bars.add(new BlockBar(BarType.power, true, tile -> tile.entity.power.amount / powerCapacity));
if(hasLiquids) bars.add(new BlockBar(BarType.liquid, true, tile -> tile.entity.liquids.amount / liquidCapacity));
if(hasPower) bars.add(new io.anuke.mindustry.world.meta.BlockBar(BarType.power, true, tile -> tile.entity.power.amount / powerCapacity));
if(hasLiquids) bars.add(new io.anuke.mindustry.world.meta.BlockBar(BarType.liquid, true, tile -> tile.entity.liquids.amount / liquidCapacity));
if(hasItems) bars.add(new BlockBar(BarType.inventory, true, tile -> (float)tile.entity.items.totalItems() / itemCapacity));
}

View File

@@ -7,7 +7,7 @@ import io.anuke.mindustry.content.fx.Fx;
import io.anuke.mindustry.entities.Units;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.type.Recipe;
import io.anuke.mindustry.world.blocks.types.BuildBlock.BuildEntity;
import io.anuke.mindustry.world.blocks.BuildBlock.BuildEntity;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.entities.Entities;

View File

@@ -9,10 +9,10 @@ import io.anuke.mindustry.entities.traits.TargetTrait;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.type.Recipe;
import io.anuke.mindustry.world.blocks.types.Floor;
import io.anuke.mindustry.world.blocks.types.modules.InventoryModule;
import io.anuke.mindustry.world.blocks.types.modules.LiquidModule;
import io.anuke.mindustry.world.blocks.types.modules.PowerModule;
import io.anuke.mindustry.world.blocks.Floor;
import io.anuke.mindustry.world.blocks.modules.InventoryModule;
import io.anuke.mindustry.world.blocks.modules.LiquidModule;
import io.anuke.mindustry.world.blocks.modules.PowerModule;
import io.anuke.ucore.function.Consumer;
import io.anuke.ucore.util.Bits;
import io.anuke.ucore.entities.trait.PosTrait;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types;
package io.anuke.mindustry.world.blocks;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types;
package io.anuke.mindustry.world.blocks;
import java.io.DataInputStream;
import java.io.DataOutputStream;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types;
package io.anuke.mindustry.world.blocks;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.type.Liquid;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types;
package io.anuke.mindustry.world.blocks;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import io.anuke.mindustry.content.fx.ExplosionFx;
@@ -14,9 +14,9 @@ import io.anuke.mindustry.graphics.Shaders;
import io.anuke.mindustry.type.Recipe;
import io.anuke.mindustry.world.BarType;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.BlockBar;
import io.anuke.mindustry.world.meta.BlockBar;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.modules.InventoryModule;
import io.anuke.mindustry.world.blocks.modules.InventoryModule;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Graphics;
import io.anuke.ucore.graphics.Draw;
@@ -31,6 +31,7 @@ public class BuildBlock extends Block {
size = Integer.parseInt(name.charAt(name.length()-1) + "");
health = 1;
layer = Layer.placement;
configurable = true;
}
@Override
@@ -43,11 +44,6 @@ public class BuildBlock extends Block {
return true;
}
@Override
public boolean isCursor(Tile tile) {
return true;
}
@Override
public void setBars(){
bars.replace(new BlockBar(BarType.health, true, tile -> (float)tile.<BuildEntity>entity().progress));

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types;
package io.anuke.mindustry.world.blocks;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.TextureRegion;

View File

@@ -1,10 +1,10 @@
package io.anuke.mindustry.world.blocks.types;
package io.anuke.mindustry.world.blocks;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.BlockGroup;
import io.anuke.mindustry.world.meta.BlockGroup;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.modules.LiquidModule;
import io.anuke.mindustry.world.blocks.modules.LiquidModule;
import io.anuke.ucore.graphics.Draw;
public class LiquidBlock extends Block{

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types;
package io.anuke.mindustry.world.blocks;
import io.anuke.mindustry.content.blocks.Blocks;

View File

@@ -1,7 +1,7 @@
package io.anuke.mindustry.world.blocks.types;
package io.anuke.mindustry.world.blocks;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.BlockGroup;
import io.anuke.mindustry.world.meta.BlockGroup;
public abstract class PowerBlock extends Block{

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types;
package io.anuke.mindustry.world.blocks;
import io.anuke.mindustry.world.Block;

View File

@@ -0,0 +1,42 @@
package io.anuke.mindustry.world.blocks;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.utils.Array;
import io.anuke.mindustry.type.Item;
import io.anuke.ucore.function.Consumer;
import io.anuke.ucore.function.Supplier;
import io.anuke.ucore.scene.style.TextureRegionDrawable;
import io.anuke.ucore.scene.ui.ButtonGroup;
import io.anuke.ucore.scene.ui.ImageButton;
import io.anuke.ucore.scene.ui.layout.Table;
public interface SelectionTrait {
default void buildItemTable(Table table, Supplier<Item> holder, Consumer<Item> consumer){
Array<Item> items = Item.all();
ButtonGroup<ImageButton> group = new ButtonGroup<>();
Table cont = new Table();
cont.margin(4);
cont.marginBottom(5);
cont.add().colspan(4).height(50f * (int)(items.size/4f + 1f));
cont.row();
for(int i = 0; i < items.size; i ++){
final int f = i;
ImageButton button = cont.addImageButton("white", "toggle", 24, () -> consumer.accept(items.get(f)))
.size(38, 42).padBottom(-5.1f).group(group).get();
button.getStyle().imageUp = new TextureRegionDrawable(new TextureRegion(items.get(i).region));
button.setChecked(holder.get().id == f);
if(i%4 == 3){
cont.row();
}
}
table.add(cont);
}
}

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types;
package io.anuke.mindustry.world.blocks;
import io.anuke.mindustry.graphics.CacheLayer;
import io.anuke.mindustry.world.Block;

View File

@@ -1,7 +1,7 @@
package io.anuke.mindustry.world.blocks.types;
package io.anuke.mindustry.world.blocks;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.BlockGroup;
import io.anuke.mindustry.world.meta.BlockGroup;
public class Wall extends Block{

View File

@@ -1,12 +1,13 @@
package io.anuke.mindustry.world.blocks.types.defense;
package io.anuke.mindustry.world.blocks.defense;
import com.badlogic.gdx.math.Rectangle;
import io.anuke.mindustry.content.fx.BlockFx;
import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.entities.Units;
import io.anuke.mindustry.input.CursorType;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.Wall;
import io.anuke.mindustry.world.blocks.Wall;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Effects.Effect;
import io.anuke.ucore.graphics.Draw;
@@ -39,8 +40,8 @@ public class Door extends Wall{
}
@Override
public boolean isCursor(Tile tile){
return true;
public CursorType getCursor(Tile tile){
return CursorType.hand;
}
@Override

View File

@@ -1,11 +1,11 @@
package io.anuke.mindustry.world.blocks.types.defense;
package io.anuke.mindustry.world.blocks.defense;
import com.badlogic.gdx.math.MathUtils;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.entities.Units;
import io.anuke.mindustry.graphics.Layer;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.defense.turrets.PowerTurret;
import io.anuke.mindustry.world.blocks.defense.turrets.PowerTurret;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.graphics.Hue;

View File

@@ -1,10 +1,10 @@
package io.anuke.mindustry.world.blocks.types.defense;
package io.anuke.mindustry.world.blocks.defense;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.entities.effect.Shield;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.PowerBlock;
import io.anuke.mindustry.world.blocks.PowerBlock;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.entities.impl.BulletEntity;
import io.anuke.ucore.util.Mathf;

View File

@@ -1,9 +1,9 @@
package io.anuke.mindustry.world.blocks.types.defense;
package io.anuke.mindustry.world.blocks.defense;
import com.badlogic.gdx.graphics.Color;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.PowerBlock;
import io.anuke.mindustry.world.blocks.PowerBlock;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.util.Strings;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.defense;
package io.anuke.mindustry.world.blocks.defense;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
@@ -14,7 +14,7 @@ import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.type.AmmoEntry;
import io.anuke.mindustry.type.AmmoType;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.BlockGroup;
import io.anuke.mindustry.world.meta.BlockGroup;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Effects.Effect;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.defense.turrets;
package io.anuke.mindustry.world.blocks.defense.turrets;
import io.anuke.mindustry.type.AmmoType;
import io.anuke.mindustry.world.Tile;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.defense.turrets;
package io.anuke.mindustry.world.blocks.defense.turrets;
import io.anuke.mindustry.type.AmmoType;
import io.anuke.mindustry.world.Tile;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.defense.turrets;
package io.anuke.mindustry.world.blocks.defense.turrets;
import com.badlogic.gdx.utils.ObjectMap;
import io.anuke.mindustry.entities.Unit;
@@ -6,9 +6,9 @@ import io.anuke.mindustry.type.AmmoEntry;
import io.anuke.mindustry.type.AmmoType;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.world.BarType;
import io.anuke.mindustry.world.BlockBar;
import io.anuke.mindustry.world.meta.BlockBar;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.defense.Turret;
import io.anuke.mindustry.world.blocks.defense.Turret;
public class ItemTurret extends Turret {
protected int maxAmmo = 100;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.defense.turrets;
package io.anuke.mindustry.world.blocks.defense.turrets;
import io.anuke.mindustry.content.fx.Fx;
import io.anuke.mindustry.type.AmmoType;

View File

@@ -1,13 +1,13 @@
package io.anuke.mindustry.world.blocks.types.defense.turrets;
package io.anuke.mindustry.world.blocks.defense.turrets;
import com.badlogic.gdx.utils.ObjectMap;
import io.anuke.mindustry.type.AmmoType;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.type.Liquid;
import io.anuke.mindustry.world.BarType;
import io.anuke.mindustry.world.BlockBar;
import io.anuke.mindustry.world.meta.BlockBar;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.defense.Turret;
import io.anuke.mindustry.world.blocks.defense.Turret;
import io.anuke.ucore.core.Effects;
public abstract class LiquidTurret extends Turret {

View File

@@ -1,8 +1,8 @@
package io.anuke.mindustry.world.blocks.types.defense.turrets;
package io.anuke.mindustry.world.blocks.defense.turrets;
import io.anuke.mindustry.type.AmmoType;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.defense.Turret;
import io.anuke.mindustry.world.blocks.defense.Turret;
import io.anuke.ucore.util.Strings;
public abstract class PowerTurret extends Turret {

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.distribution;
package io.anuke.mindustry.world.blocks.distribution;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.type.Item;

View File

@@ -1,11 +1,11 @@
package io.anuke.mindustry.world.blocks.types.distribution;
package io.anuke.mindustry.world.blocks.distribution;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.type.Liquid;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.LiquidBlock;
import io.anuke.mindustry.world.blocks.types.modules.LiquidModule;
import io.anuke.mindustry.world.blocks.LiquidBlock;
import io.anuke.mindustry.world.blocks.modules.LiquidModule;
import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.util.Mathf;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.distribution;
package io.anuke.mindustry.world.blocks.distribution;
import com.badlogic.gdx.utils.LongArray;
import io.anuke.mindustry.content.Items;
@@ -7,7 +7,7 @@ import io.anuke.mindustry.entities.Unit;
import io.anuke.mindustry.graphics.Layer;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.BlockGroup;
import io.anuke.mindustry.world.meta.BlockGroup;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.graphics.Draw;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.distribution;
package io.anuke.mindustry.world.blocks.distribution;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.graphics.CapStyle;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.distribution;
package io.anuke.mindustry.world.blocks.distribution;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.utils.IntArray;
@@ -41,6 +41,7 @@ public class ItemBridge extends Block {
layer = Layer.power;
expanded = true;
itemCapacity = 30;
configurable = true;
}
@Override
@@ -55,11 +56,6 @@ public class ItemBridge extends Block {
lastPlaced = tile.packedPosition();
}
@Override
public boolean isConfigurable(Tile tile) {
return true;
}
@Override
public void drawPlace(int x, int y, int rotation, boolean valid) {
Lines.stroke(2f);

View File

@@ -1,11 +1,11 @@
package io.anuke.mindustry.world.blocks.types.distribution;
package io.anuke.mindustry.world.blocks.distribution;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.NumberUtils;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.BlockGroup;
import io.anuke.mindustry.world.meta.BlockGroup;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.function.Consumer;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.distribution;
package io.anuke.mindustry.world.blocks.distribution;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.world.Tile;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.distribution;
package io.anuke.mindustry.world.blocks.distribution;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.world.Tile;

View File

@@ -1,9 +1,9 @@
package io.anuke.mindustry.world.blocks.types.distribution;
package io.anuke.mindustry.world.blocks.distribution;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import io.anuke.mindustry.type.Liquid;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.LiquidBlock;
import io.anuke.mindustry.world.blocks.LiquidBlock;
import io.anuke.ucore.graphics.Draw;
public class LiquidJunction extends LiquidBlock{

View File

@@ -1,7 +1,7 @@
package io.anuke.mindustry.world.blocks.types.distribution;
package io.anuke.mindustry.world.blocks.distribution;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.LiquidBlock;
import io.anuke.mindustry.world.blocks.LiquidBlock;
public class LiquidRouter extends LiquidBlock{

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.distribution;
package io.anuke.mindustry.world.blocks.distribution;
import io.anuke.mindustry.world.Block;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.distribution;
package io.anuke.mindustry.world.blocks.distribution;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.world.Tile;

View File

@@ -1,8 +1,8 @@
package io.anuke.mindustry.world.blocks.types.distribution;
package io.anuke.mindustry.world.blocks.distribution;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.BlockGroup;
import io.anuke.mindustry.world.meta.BlockGroup;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.core.Timers;

View File

@@ -1,17 +1,13 @@
package io.anuke.mindustry.world.blocks.types.distribution;
package io.anuke.mindustry.world.blocks.distribution;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.utils.Array;
import io.anuke.mindustry.content.Items;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.BlockGroup;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.SelectionTrait;
import io.anuke.mindustry.world.meta.BlockGroup;
import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.scene.style.TextureRegionDrawable;
import io.anuke.ucore.scene.ui.ButtonGroup;
import io.anuke.ucore.scene.ui.ImageButton;
import io.anuke.ucore.scene.ui.layout.Table;
import io.anuke.ucore.util.Mathf;
@@ -19,7 +15,7 @@ import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
public class Sorter extends Block{
public class Sorter extends Block implements SelectionTrait{
public Sorter(String name) {
super(name);
@@ -27,11 +23,14 @@ public class Sorter extends Block{
solid = true;
instantTransfer = true;
group = BlockGroup.transportation;
configurable = true;
}
@Override
public void draw(Tile tile){
super.draw(tile);
//TODO call event for change
SorterEntity entity = tile.entity();
@@ -92,48 +91,11 @@ public class Sorter extends Block{
return to;
}
@Override
public void configure(Tile tile, byte data) {
SorterEntity entity = tile.entity();
if(entity != null){
entity.sortItem = Item.getByID(data);
}
}
@Override
public boolean isConfigurable(Tile tile){
return true;
}
@Override
public void buildTable(Tile tile, Table table){
SorterEntity entity = tile.entity();
Array<Item> items = Item.all();
ButtonGroup<ImageButton> group = new ButtonGroup<>();
Table cont = new Table();
cont.margin(4);
cont.marginBottom(5);
cont.add().colspan(4).height(50f * (int)(items.size/4f + 1f));
cont.row();
for(int i = 0; i < items.size; i ++){
final int f = i;
ImageButton button = cont.addImageButton("white", "toggle", 24, () -> {
setConfigure(tile, (byte)f);
}).size(38, 42).padBottom(-5.1f).group(group).get();
button.getStyle().imageUp = new TextureRegionDrawable(new TextureRegion(items.get(i).region));
button.setChecked(entity.sortItem.id == f);
if(i%4 == 3){
cont.row();
}
}
table.add(cont);
buildItemTable(table, () -> entity.sortItem, item -> entity.sortItem = item);
}
@Override

View File

@@ -1,8 +1,8 @@
package io.anuke.mindustry.world.blocks.types.distribution;
package io.anuke.mindustry.world.blocks.distribution;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.BlockGroup;
import io.anuke.mindustry.world.meta.BlockGroup;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.util.Mathf;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.distribution;
package io.anuke.mindustry.world.blocks.distribution;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.utils.Array;
@@ -9,7 +9,7 @@ import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.type.Liquid;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.PowerBlock;
import io.anuke.mindustry.world.blocks.PowerBlock;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Effects.Effect;
import io.anuke.ucore.core.Timers;
@@ -65,15 +65,7 @@ public class Teleporter extends PowerBlock{
itemCapacity = 100;
hasLiquids = true;
liquidCapacity = 100f;
}
@Override
public void configure(Tile tile, byte data) {
TeleporterEntity entity = tile.entity();
if(entity != null){
entity.color = data;
entity.items.clear();
}
configurable = true;
}
@Override
@@ -84,7 +76,7 @@ public class Teleporter extends PowerBlock{
@Override
public void placed(Tile tile){
tile.<TeleporterEntity>entity().color = lastColor;
setConfigure(tile, lastColor);
tile.<TeleporterEntity>entity().color = lastColor;
}
@Override
@@ -211,16 +203,13 @@ public class Teleporter extends PowerBlock{
}
}
}
@Override
public boolean isConfigurable(Tile tile){
return true;
}
@Override
public void buildTable(Tile tile, Table table){
TeleporterEntity entity = tile.entity();
//TODO call event for change
ButtonGroup<ImageButton> group = new ButtonGroup<>();
Table cont = new Table();
cont.margin(4);
@@ -233,7 +222,6 @@ public class Teleporter extends PowerBlock{
final int f = i;
ImageButton button = cont.addImageButton("white", "toggle", 24, () -> {
lastColor = (byte)f;
setConfigure(tile, (byte)f);
}).size(34, 38).padBottom(-5.1f).group(group).get();
button.getStyle().imageUpColor = colorArray[f];
button.setChecked(entity.color == f);

View File

@@ -1,10 +1,10 @@
package io.anuke.mindustry.world.blocks.types.distribution;
package io.anuke.mindustry.world.blocks.distribution;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import io.anuke.mindustry.type.Liquid;
import io.anuke.mindustry.world.BarType;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.LiquidBlock;
import io.anuke.mindustry.world.blocks.LiquidBlock;
import io.anuke.ucore.graphics.Draw;
public class TunnelConduit extends LiquidBlock {

View File

@@ -1,10 +1,11 @@
package io.anuke.mindustry.world.blocks.types.distribution;
package io.anuke.mindustry.world.blocks.distribution;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.NumberUtils;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.world.*;
import io.anuke.mindustry.world.meta.BlockGroup;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.util.Bits;
@@ -20,7 +21,7 @@ public class TunnelConveyor extends Block{
solid = true;
health = 70;
instantTransfer = true;
bars.add(new BlockBar(BarType.inventory, true, tile -> (float)tile.<TunnelEntity>entity().index/capacity));
bars.add(new io.anuke.mindustry.world.meta.BlockBar(BarType.inventory, true, tile -> (float)tile.<TunnelEntity>entity().index/capacity));
group = BlockGroup.transportation;
}

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.logic;
package io.anuke.mindustry.world.blocks.logic;
import io.anuke.mindustry.world.Block;

View File

@@ -1,8 +1,8 @@
package io.anuke.mindustry.world.blocks.types.modules;
package io.anuke.mindustry.world.blocks.modules;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.type.ItemStack;
import io.anuke.mindustry.world.blocks.types.BlockModule;
import io.anuke.mindustry.world.blocks.BlockModule;
import java.io.DataInputStream;
import java.io.DataOutputStream;

View File

@@ -1,8 +1,8 @@
package io.anuke.mindustry.world.blocks.types.modules;
package io.anuke.mindustry.world.blocks.modules;
import io.anuke.mindustry.content.Liquids;
import io.anuke.mindustry.type.Liquid;
import io.anuke.mindustry.world.blocks.types.BlockModule;
import io.anuke.mindustry.world.blocks.BlockModule;
import java.io.DataInputStream;
import java.io.DataOutputStream;

View File

@@ -1,6 +1,6 @@
package io.anuke.mindustry.world.blocks.types.modules;
package io.anuke.mindustry.world.blocks.modules;
import io.anuke.mindustry.world.blocks.types.BlockModule;
import io.anuke.mindustry.world.blocks.BlockModule;
import java.io.DataInputStream;
import java.io.DataOutputStream;

View File

@@ -1,11 +1,11 @@
package io.anuke.mindustry.world.blocks.types.power;
package io.anuke.mindustry.world.blocks.power;
import com.badlogic.gdx.graphics.Color;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.content.fx.BlockFx;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.world.BarType;
import io.anuke.mindustry.world.BlockBar;
import io.anuke.mindustry.world.meta.BlockBar;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Effects.Effect;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.power;
package io.anuke.mindustry.world.blocks.power;
import io.anuke.mindustry.type.Item;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.power;
package io.anuke.mindustry.world.blocks.power;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
@@ -6,7 +6,7 @@ import io.anuke.mindustry.content.Liquids;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.type.Liquid;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.production.GenericCrafter.GenericCrafterEntity;
import io.anuke.mindustry.world.blocks.production.GenericCrafter.GenericCrafterEntity;
import io.anuke.ucore.core.Graphics;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.graphics.Draw;

View File

@@ -1,10 +1,10 @@
package io.anuke.mindustry.world.blocks.types.power;
package io.anuke.mindustry.world.blocks.power;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.content.fx.BlockFx;
import io.anuke.mindustry.type.Liquid;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.power.BurnerGenerator.BurnerEntity;
import io.anuke.mindustry.world.blocks.power.BurnerGenerator.BurnerEntity;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Effects.Effect;
import io.anuke.ucore.core.Timers;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.power;
package io.anuke.mindustry.world.blocks.power;
import io.anuke.mindustry.type.Liquid;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.power;
package io.anuke.mindustry.world.blocks.power;
import com.badlogic.gdx.graphics.Color;
import io.anuke.mindustry.content.Items;
@@ -9,7 +9,7 @@ import io.anuke.mindustry.content.fx.ExplosionFx;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.type.Liquid;
import io.anuke.mindustry.world.BarType;
import io.anuke.mindustry.world.BlockBar;
import io.anuke.mindustry.world.meta.BlockBar;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Timers;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.power;
package io.anuke.mindustry.world.blocks.power;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.IntArray;
@@ -7,7 +7,7 @@ import io.anuke.mindustry.graphics.Layer;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.world.Edges;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.PowerBlock;
import io.anuke.mindustry.world.blocks.PowerBlock;
import io.anuke.ucore.core.Settings;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.graphics.Draw;
@@ -44,6 +44,7 @@ public class PowerDistributor extends PowerBlock{
layer = Layer.power;
hasItems = false;
powerCapacity = 5f;
configurable = true;
}
@Override
@@ -59,11 +60,6 @@ public class PowerDistributor extends PowerBlock{
lastPlaced = tile.packedPosition();
}
@Override
public boolean isConfigurable(Tile tile){
return true;
}
@Override
public void setStats(){
super.setStats();

View File

@@ -1,11 +1,11 @@
package io.anuke.mindustry.world.blocks.types.power;
package io.anuke.mindustry.world.blocks.power;
import com.badlogic.gdx.math.GridPoint2;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.world.Edges;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.PowerBlock;
import io.anuke.mindustry.world.BlockFlag;
import io.anuke.mindustry.world.blocks.PowerBlock;
import io.anuke.mindustry.world.meta.BlockFlag;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.util.EnumSet;

View File

@@ -1,9 +1,9 @@
package io.anuke.mindustry.world.blocks.types.power;
package io.anuke.mindustry.world.blocks.power;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.core.Timers;
public class SolarGenerator extends io.anuke.mindustry.world.blocks.types.power.PowerGenerator {
public class SolarGenerator extends io.anuke.mindustry.world.blocks.power.PowerGenerator {
/**power generated per frame*/
protected float generation = 0.005f;

View File

@@ -1,9 +1,9 @@
package io.anuke.mindustry.world.blocks.types.production;
package io.anuke.mindustry.world.blocks.production;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.production.GenericCrafter.GenericCrafterEntity;
import io.anuke.mindustry.world.blocks.production.GenericCrafter.GenericCrafterEntity;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.util.Mathf;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.production;
package io.anuke.mindustry.world.blocks.production;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.TextureRegion;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.production;
package io.anuke.mindustry.world.blocks.production;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
@@ -10,7 +10,7 @@ import io.anuke.mindustry.graphics.Layer;
import io.anuke.mindustry.type.Item;
import io.anuke.mindustry.type.Liquid;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.BlockGroup;
import io.anuke.mindustry.world.meta.BlockGroup;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Effects.Effect;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.production;
package io.anuke.mindustry.world.blocks.production;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import io.anuke.mindustry.entities.TileEntity;

View File

@@ -1,4 +1,4 @@
package io.anuke.mindustry.world.blocks.types.production;
package io.anuke.mindustry.world.blocks.production;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import io.anuke.mindustry.entities.TileEntity;
@@ -9,7 +9,7 @@ import io.anuke.mindustry.type.ItemStack;
import io.anuke.mindustry.type.Liquid;
import io.anuke.mindustry.world.BarType;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.BlockBar;
import io.anuke.mindustry.world.meta.BlockBar;
import io.anuke.mindustry.world.Tile;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Effects.Effect;

Some files were not shown because too many files have changed in this diff Show More