diff --git a/core/assets-raw/sprites/blocks/distribution/vault-icon.png b/core/assets-raw/sprites/blocks/distribution/vault-icon.png deleted file mode 100644 index 13f2aa0fcd..0000000000 Binary files a/core/assets-raw/sprites/blocks/distribution/vault-icon.png and /dev/null differ diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index 870e0066b1..b2359b537e 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -340,13 +340,6 @@ vault orig: 24, 24 offset: 0, 0 index: -1 -vault-icon - rotate: false - xy: 335, 45 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 weaponfactory rotate: false xy: 537, 155 @@ -944,7 +937,7 @@ titanium3 index: -1 water rotate: false - xy: 325, 25 + xy: 315, 15 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -1068,6 +1061,13 @@ rubble-3-0 orig: 24, 24 offset: 0, 0 index: -1 +rubble-3-1 + rotate: false + xy: 397, 143 + size: 24, 24 + orig: 24, 24 + offset: 0, 0 + index: -1 shadow-1 rotate: false xy: 839, 433 @@ -3498,14 +3498,14 @@ triblaster-equip index: -1 vulcan rotate: false - xy: 305, 5 + xy: 335, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 vulcan-equip rotate: false - xy: 315, 15 + xy: 305, 5 size: 8, 8 orig: 8, 8 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index 0c4aeb253c..b59e80334c 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/src/Mindustry.gwt.xml b/core/src/Mindustry.gwt.xml index 11108dfe0c..efc50b6b51 100644 --- a/core/src/Mindustry.gwt.xml +++ b/core/src/Mindustry.gwt.xml @@ -10,7 +10,7 @@ - + diff --git a/core/src/io/anuke/mindustry/ai/HGraph.java b/core/src/io/anuke/mindustry/ai/HGraph.java deleted file mode 100644 index 5fa0c45056..0000000000 --- a/core/src/io/anuke/mindustry/ai/HGraph.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.anuke.mindustry.ai; - -import com.badlogic.gdx.ai.pfa.Connection; -import com.badlogic.gdx.ai.pfa.HierarchicalGraph; -import com.badlogic.gdx.utils.Array; -import io.anuke.mindustry.world.Tile; - -public class HGraph implements HierarchicalGraph { - - @Override - public int getLevelCount() { - return 0; - } - - @Override - public void setLevel(int level) { - - } - - @Override - public Tile convertNodeBetweenLevels(int inputLevel, Tile node, int outputLevel) { - return null; - } - - @Override - public Array> getConnections(Tile fromNode) { - return null; - } -} diff --git a/core/src/io/anuke/mindustry/ai/Heuristics.java b/core/src/io/anuke/mindustry/ai/Heuristics.java deleted file mode 100644 index ad5ff8b453..0000000000 --- a/core/src/io/anuke/mindustry/ai/Heuristics.java +++ /dev/null @@ -1,69 +0,0 @@ -package io.anuke.mindustry.ai; - -import com.badlogic.gdx.ai.pfa.Heuristic; -import io.anuke.mindustry.world.Block; -import io.anuke.mindustry.world.Tile; -import io.anuke.ucore.function.Predicate; - -import static io.anuke.mindustry.Vars.tilesize; - -public class Heuristics { - /**How many times more it costs to go through a destructible block than an empty block.*/ - static final float solidMultiplier = 5f; - /**How many times more it costs to go through a tile that touches a solid block.*/ - static final float occludedMultiplier = 5f; - - /**Calculates the fastest path. No priorities, just avoids solid blocks.*/ - public static class FastestHeuristic implements Heuristic { - - @Override - public float estimate(Tile node, Tile other){ - //Get Manhattan distance cost - float cost = Math.abs(node.worldx() - other.worldx()) + Math.abs(node.worldy() - other.worldy()); - - //If either one of the tiles is a breakable solid block (that is, it's player-made), - //increase the cost by the tilesize times the solid block multiplier - //Also add the block health, so blocks with more health cost more to traverse - if(node.breakable() && node.block().solid) cost += tilesize* solidMultiplier + node.block().health; - if(other.breakable() && other.block().solid) cost += tilesize* solidMultiplier + other.block().health; - - //if this block has solid blocks near it, increase the cost, as we don't want enemies hugging walls - //if(node.occluded) cost += tilesize*occludedMultiplier; - - return cost; - } - } - - /**Calculates the fastest and most destructive path based on a block predicate.*/ - public static class DestrutiveHeuristic implements Heuristic { - /**Should return whether a block if "free", e.g. whether it's an important target*/ - private final Predicate frees; - - public DestrutiveHeuristic(Predicate frees){ - this.frees = frees; - } - - @Override - public float estimate(Tile node, Tile other){ - //Get Manhattan distance cost - float cost = Math.abs(node.worldx() - other.worldx()) + Math.abs(node.worldy() - other.worldy()); - - //If either one of the tiles is a breakable solid block (that is, it's player-made), - //increase the cost by the tilesize times the solid block multiplier - //Also add the block health, so blocks with more health cost more to traverse - if(node.breakable() && node.block().solid) cost += tilesize* solidMultiplier + node.block().health; - if(other.breakable() && other.block().solid) cost += tilesize* solidMultiplier + other.block().health; - - //if this block has solid blocks near it, increase the cost, as we don't want enemies hugging walls - //if(node.occluded) cost += tilesize*occludedMultiplier; - - if(other.getLinked() != null) other = other.getLinked(); - if(node.getLinked() != null) node = node.getLinked(); - - //check if it's free - if(frees.test(other.block()) || frees.test(node.block())) cost = 0; - - return cost; - } - } -} diff --git a/core/src/io/anuke/mindustry/ai/OptimizedGraph.java b/core/src/io/anuke/mindustry/ai/OptimizedGraph.java deleted file mode 100644 index 02bd9e5ebd..0000000000 --- a/core/src/io/anuke/mindustry/ai/OptimizedGraph.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.anuke.mindustry.ai; - -/**An interface for an indexed graph that doesn't use allocations for connections.*/ -public interface OptimizedGraph{ - /**This is used in the same way as getConnections(), but does not use Connection objects.*/ - N[] connectionsOf(N node); - - /** Returns the unique index of the given node. - * @param node the node whose index will be returned - * @return the unique index of the given node. */ - int getIndex (N node); -} diff --git a/core/src/io/anuke/mindustry/ai/OptimizedPathFinder.java b/core/src/io/anuke/mindustry/ai/OptimizedPathFinder.java deleted file mode 100644 index 1b8b59e5f4..0000000000 --- a/core/src/io/anuke/mindustry/ai/OptimizedPathFinder.java +++ /dev/null @@ -1,378 +0,0 @@ -package io.anuke.mindustry.ai; - -import com.badlogic.gdx.ai.pfa.GraphPath; -import com.badlogic.gdx.ai.pfa.PathFinderQueue; -import com.badlogic.gdx.ai.pfa.PathFinderRequest; -import com.badlogic.gdx.utils.BinaryHeap; -import com.badlogic.gdx.utils.IntMap; -import com.badlogic.gdx.utils.TimeUtils; -import io.anuke.mindustry.content.fx.Fx; -import io.anuke.mindustry.world.Tile; -import io.anuke.ucore.core.Effects; -import io.anuke.ucore.function.Consumer; -import io.anuke.ucore.util.Geometry; -import io.anuke.ucore.util.Mathf; - -/**An IndexedAStarPathfinder that uses an OptimizedGraph, and therefore has less allocations.*/ -public class OptimizedPathFinder { - IntMap records = new IntMap<>(); - BinaryHeap openList; - NodeRecord current; - - private int searchId; - private Tile end; - - private static final byte UNVISITED = 0; - private static final byte OPEN = 1; - private static final byte CLOSED = 2; - - private static final boolean debug = false; - - public OptimizedPathFinder() { - this.openList = new BinaryHeap<>(); - } - - public boolean searchNodePath(Tile startNode, Tile endNode, GraphPath outPath) { - this.end = endNode; - - // Perform AStar - boolean found = search(startNode, endNode); - - if (found) { - // Create a path made of nodes - generateNodePath(startNode, outPath); - } - - return found; - } - - protected boolean search(Tile startNode, Tile endNode) { - - initSearch(startNode, endNode); - - // Iterate through processing each node - do { - // Retrieve the node with smallest estimated total cost from the open list - current = openList.pop(); - current.category = CLOSED; - - // Terminate if we reached the goal node - if (current.node == endNode) return true; - - visitChildren(endNode); - - } while (openList.size > 0); - - // We've run out of nodes without finding the goal, so there's no solution - return false; - } - - public boolean search(PathFinderRequest request, long timeToRun) { - - long lastTime = TimeUtils.nanoTime(); - - // We have to initialize the search if the status has just changed - if (request.statusChanged) { - initSearch(request.startNode, request.endNode); - request.statusChanged = false; - } - - // Iterate through processing each node - do { - - // Check the available time - long currentTime = TimeUtils.nanoTime(); - timeToRun -= currentTime - lastTime; - if (timeToRun <= PathFinderQueue.TIME_TOLERANCE) return false; - - // Retrieve the node with smallest estimated total cost from the open list - current = openList.pop(); - current.category = CLOSED; - - // Terminate if we reached the goal node; we've found a path. - if (current.node == request.endNode) { - request.pathFound = true; - - generateNodePath(request.startNode, request.resultPath); - - return true; - } - - // Visit current node's children - visitChildren(request.endNode); - - // Store the current time - lastTime = currentTime; - - } while (openList.size > 0); - - // The open list is empty and we've not found a path. - request.pathFound = false; - return true; - } - - protected void initSearch(Tile startNode, Tile endNode) { - - // Increment the search id - if (++searchId < 0) searchId = 1; - - // Initialize the open list - openList.clear(); - - // Initialize the record for the start node and add it to the open list - NodeRecord startRecord = getNodeRecord(startNode); - startRecord.node = startNode; - //startRecord.connection = null; - startRecord.costSoFar = 0; - addToOpenList(startRecord, estimate(startNode, endNode)); - - current = null; - } - - protected void visitChildren(Tile endNode) { - if(debug) Effects.effect(Fx.node3, current.node.worldx(), current.node.worldy()); - - nodes(current.node, node -> { - float addCost = estimate(current.node, node); - - float nodeCost = current.costSoFar + addCost; - - float nodeHeuristic; - NodeRecord nodeRecord = getNodeRecord(node); - - if (nodeRecord.category == CLOSED) { // The node is closed - - // If we didn't find a shorter route, skip - if (nodeRecord.costSoFar <= nodeCost){ - return; - } - - // We can use the node's old cost values to calculate its heuristic - // without calling the possibly expensive heuristic function - nodeHeuristic = nodeRecord.getEstimatedTotalCost() - nodeRecord.costSoFar; - } else if (nodeRecord.category == OPEN) { // The node is open - - //If our route is no better, then skip - if (nodeRecord.costSoFar <= nodeCost){ - return; - } - - // Remove it from the open list (it will be re-added with the new cost) - openList.remove(nodeRecord); - - // We can use the node's old cost values to calculate its heuristic - // without calling the possibly expensive heuristic function - nodeHeuristic = nodeRecord.getEstimatedTotalCost() - nodeRecord.costSoFar; - } else { // the node is unvisited - - // We'll need to calculate the heuristic value using the function, - // since we don't have a node record with a previously calculated value - nodeHeuristic = estimate(node, endNode); - } - - // Update node record's cost and connection - nodeRecord.costSoFar = nodeCost; - nodeRecord.from = current.node; - - // Add it to the open list with the estimated total cost - addToOpenList(nodeRecord, nodeCost + nodeHeuristic); - }); - } - - protected void nodes(Tile current, Consumer cons){ - if(obstacle(current)) return; - for(int i = 0; i < 4; i ++){ - Tile n = current.getNearby(i); - if(!obstacle(n)) cons.accept(n); - } - } - - protected void jps(Tile current, int direction, Tile end, Consumer cons){ - if(obstacle(current)) return; //skip solid or off-the-screen stuff - - //if there's no start point, scan everything. - if(direction == -1){ - for(int i = 0; i < 8; i ++){ - jps(current.getNearby(Geometry.d8[i]), i, end, cons); - } - return; - } - - if(direction % 2 == 0){ - //forced neighbor in the straight pattern - if(obstacle(rel(current, direction + 2)) && !obstacle(rel(current, direction + 1))){ - cons.accept(rel(current, direction + 1)); - } - - if(obstacle(rel(current, direction - 2)) && !obstacle(rel(current, direction - 1))){ - cons.accept(rel(current, direction - 1)); - } - }else{ //moving diagonal - //forced neighbor in the diagonal pattern - if(obstacle(rel(current, direction + 3)) && !obstacle(rel(current, direction + 2)) && !obstacle(rel(current, direction -2))) { - cons.accept(rel(current, direction + 2)); - } - - if(obstacle(rel(current, direction - 3)) && !obstacle(rel(current, direction - 2))&& !obstacle(rel(current, direction + 2))){ - cons.accept(rel(current, direction - 2)); - } - } - - while(!obstacle(current) && !trap(current, direction)){ - if(debug) Effects.effect(Fx.node1, current.worldx(), current.worldy()); - //moving straight - if(direction % 2 == 0){ - Tile sf = scanDir(rel(current, direction), end, direction); //check if there's anything of interest going straight - if(sf != null){ //if there is, jump to that location immediately and stop. else, nothing must be there, end. - cons.accept(sf); - } - return; - }else{ //moving diagonal - Tile sl = scanDir(rel(current, Mathf.mod(direction - 1, 8)), end, Mathf.mod(direction - 1, 8)); - - if(sl != null){ - cons.accept(sl); - } - - Tile sr = scanDir(rel(current, Mathf.mod(direction + 1, 8)), end, Mathf.mod(direction + 1, 8)); - - if(sr != null){ - cons.accept(sr); - } - - Tile sf = scanDir(rel(current, direction), end, direction); - - if(sf != null){ - cons.accept(sf); - return; - } - } - - if(current == end){ - cons.accept(end); - return; - } - - current = rel(current, direction); - } - } - - protected boolean trap(Tile tile, int direction){ - return direction % 2 == 1 && obstacle(rel(tile, direction - 1)) && obstacle(rel(tile, direction + 1)); - } - - protected Tile scanDir(Tile tile, Tile end, int direction){ - while(!obstacle(tile)){ - if(debug) Effects.effect(Fx.node2, tile.worldx(), tile.worldy()); - if(tile == end) return tile; - if(direction % 2 == 0){ - - //forced neighbor in the straight pattern - if((obstacle(rel(tile, direction + 2)) && !obstacle(rel(tile, direction + 1))) || - (obstacle(rel(tile, direction - 2)) && !obstacle(rel(tile, direction - 1)))){ - //Log.info("Found forced linear neighbor {0} {1} // {2}", tile.x, tile.y, direction); - if(debug) Effects.effect(Fx.node4, tile.worldx(), tile.worldy()); - return tile; - } - }else{ //moving diagonal - //forced neighbor in the diagonal pattern, end here - if((obstacle(rel(tile, direction + 3)) && !obstacle(rel(tile, direction + 2)) && !obstacle(rel(tile, direction - 2))) || - (obstacle(rel(tile, direction - 3)) && !obstacle(rel(tile, direction - 2)) && !obstacle(rel(tile, direction + 2)))) { - if(debug) Effects.effect(Fx.node4, tile.worldx(), tile.worldy()); - //Log.info("Found forced diagonal neighbor {0} {1} // {2}", tile.x, tile.y, direction); - return tile; - }else{ - return null; - } - } - Tile next = rel(tile, direction); - if(obstacle(next)) break; - tile = next; - } - return null; - } - - protected Tile rel(Tile tile, int i){ - return tile.getNearby(Geometry.d8[Mathf.mod(i, 8)]); - } - - protected boolean obstacle(Tile tile){ - return tile == null || (tile.solid() && end.target() != tile && tile.target() != end); - } - - protected float estimate(Tile tile, Tile other){ - return Math.abs(tile.worldx() - other.worldx()) + Math.abs(tile.worldy() - other.worldy()) +0; - // (tile.occluded ? tilesize : 0) + (other.occluded ? tilesize : 0); - } - - protected int relDirection(Tile from, Tile current){ - if(from.y == current.y && from.x > current.x) return 0; - if(from.y == current.y && from.x < current.x) return 4; - if(from.x == current.x && from.y > current.y) return 2; - if(from.x == current.x && from.y < current.y) return 6; - - if(from.y > current.y && from.x > current.x) return 1; - if(from.y < current.y && from.x < current.x) return 5; - if(from.x > current.x && from.y < current.y) return 7; - if(from.x < current.x && from.y > current.y) return 3; - return -1; - } - - protected void generateNodePath(Tile startNode, GraphPath outPath) { - - // Work back along the path, accumulating nodes - // outPath.clear(); - while (current.from != null) { - outPath.add(current.node); - current = records.get(indexOf(current.from)); - } - outPath.add(startNode); - - // Reverse the path - outPath.reverse(); - } - - protected void addToOpenList(NodeRecord nodeRecord, float estimatedTotalCost) { - openList.add(nodeRecord, estimatedTotalCost); - nodeRecord.category = OPEN; - } - - protected NodeRecord getNodeRecord(Tile node) { - if(!records.containsKey(indexOf(node))){ - NodeRecord record = new NodeRecord(); - record.node = node; - record.searchId = searchId; - records.put(indexOf(node), record); - return record; - }else{ - NodeRecord record = records.get(indexOf(node)); - if(record.searchId != searchId){ - record.category = UNVISITED; - record.searchId = searchId; - } - return record; - } - } - - private int indexOf(Tile node){ - return node.packedPosition(); - } - - static class NodeRecord extends BinaryHeap.Node { - Tile node; - Tile from; - - float costSoFar; - byte category; - - int searchId; - - public NodeRecord() { - super(0); - } - - public float getEstimatedTotalCost() { - return getValue(); - } - } -} diff --git a/core/src/io/anuke/mindustry/ai/Raycaster.java b/core/src/io/anuke/mindustry/ai/Raycaster.java deleted file mode 100644 index 6ce48805e0..0000000000 --- a/core/src/io/anuke/mindustry/ai/Raycaster.java +++ /dev/null @@ -1,87 +0,0 @@ -package io.anuke.mindustry.ai; - -import com.badlogic.gdx.ai.utils.Collision; -import com.badlogic.gdx.ai.utils.Ray; -import com.badlogic.gdx.ai.utils.RaycastCollisionDetector; -import com.badlogic.gdx.math.Vector2; -import io.anuke.mindustry.world.Tile; -import io.anuke.ucore.util.Geometry; -import io.anuke.ucore.util.Mathf; - -import static io.anuke.mindustry.Vars.tilesize; -import static io.anuke.mindustry.Vars.world; - -public class Raycaster implements RaycastCollisionDetector{ - private boolean found = false; - - @Override - public boolean collides(Ray ray){ - found = false; - - Geometry.iterateLine(0f, ray.start.x, ray.start.y, ray.end.x, ray.end.y, tilesize, (x, y)->{ - if(solid(x, y)){ - found = true; - return; - } - }); - - return found; - } - - @Override - public boolean findCollision(Collision collision, Ray ray){ - Vector2 v = vectorCast(ray.start.x, ray.start.y, ray.end.x, ray.end.y); - if(v == null) return false; - collision.point = v; - collision.normal = v.nor(); - return true; - } - - Vector2 vectorCast(float x0f, float y0f, float x1f, float y1f){ - int x0 = (int)x0f; - int y0 = (int)y0f; - int x1 = (int)x1f; - int y1 = (int)y1f; - int dx = Math.abs(x1 - x0); - int dy = Math.abs(y1 - y0); - - int sx = x0 < x1 ? 1 : -1; - int sy = y0 < y1 ? 1 : -1; - - int err = dx - dy; - int e2; - while(true){ - - if(solid(x0, y0)){ - return new Vector2(x0, y0); - } - if(x0 == x1 && y0 == y1) break; - - e2 = 2 * err; - if(e2 > -dy){ - err = err - dy; - x0 = x0 + sx; - } - - if(e2 < dx){ - err = err + dx; - y0 = y0 + sy; - } - } - return null; - } - - private boolean solid(float x, float y){ - Tile tile = world.tile(Mathf.scl2(x, tilesize), Mathf.scl2(y, tilesize)); - - if(tile == null || tile.solid()) return true; - - for(int i = 0; i < 4; i ++){ - Tile near = tile.getNearby(i); - if(near == null || near.solid()) return true; - } - - return false; - } - -} diff --git a/core/src/io/anuke/mindustry/ai/SmoothGraphPath.java b/core/src/io/anuke/mindustry/ai/SmoothGraphPath.java deleted file mode 100644 index 39b1b75ec2..0000000000 --- a/core/src/io/anuke/mindustry/ai/SmoothGraphPath.java +++ /dev/null @@ -1,32 +0,0 @@ -package io.anuke.mindustry.ai; - -import com.badlogic.gdx.ai.pfa.DefaultGraphPath; -import com.badlogic.gdx.ai.pfa.SmoothableGraphPath; -import com.badlogic.gdx.math.Vector2; -import io.anuke.mindustry.world.Tile; - -public class SmoothGraphPath extends DefaultGraphPath implements SmoothableGraphPath{ - private Vector2 vector = new Vector2(); - - @Override - public Vector2 getNodePosition(int index){ - Tile tile = nodes.get(index); - return vector.set(tile.worldx(), tile.worldy()); - } - - @Override - public void swapNodes(int index1, int index2){ - nodes.swap(index1, index2); - } - - @Override - public void truncatePath(int newLength){ - nodes.truncate(newLength); - } - - @Override - public void add (Tile node) { - nodes.add(node); - } - -} diff --git a/core/src/io/anuke/mindustry/ai/TileGraph.java b/core/src/io/anuke/mindustry/ai/TileGraph.java deleted file mode 100644 index c4026d6ec7..0000000000 --- a/core/src/io/anuke/mindustry/ai/TileGraph.java +++ /dev/null @@ -1,25 +0,0 @@ -package io.anuke.mindustry.ai; - -import io.anuke.mindustry.world.Tile; - -/**Tilegraph that ignores player-made tiles.*/ -public class TileGraph implements OptimizedGraph { - private Tile[] tiles = new Tile[4]; - - /**Used for the OptimizedPathFinder implementation.*/ - @Override - public Tile[] connectionsOf(Tile node){ - Tile[] nodes = node.getNearby(tiles); - for(int i = 0; i < 4; i ++){ - if(nodes[i] != null && !nodes[i].passable()){ - nodes[i] = null; - } - } - return nodes; - } - - @Override - public int getIndex(Tile node){ - return node.packedPosition(); - } -} diff --git a/core/src/io/anuke/mindustry/content/AmmoTypes.java b/core/src/io/anuke/mindustry/content/AmmoTypes.java index f127240bef..5983a10391 100644 --- a/core/src/io/anuke/mindustry/content/AmmoTypes.java +++ b/core/src/io/anuke/mindustry/content/AmmoTypes.java @@ -2,7 +2,7 @@ package io.anuke.mindustry.content; import io.anuke.mindustry.content.bullets.TurretBullets; import io.anuke.mindustry.content.fx.ShootFx; -import io.anuke.mindustry.resource.AmmoType; +import io.anuke.mindustry.type.AmmoType; public class AmmoTypes { public static final AmmoType diff --git a/core/src/io/anuke/mindustry/content/Items.java b/core/src/io/anuke/mindustry/content/Items.java index e1e69ba949..3bc1945643 100644 --- a/core/src/io/anuke/mindustry/content/Items.java +++ b/core/src/io/anuke/mindustry/content/Items.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.content; import com.badlogic.gdx.graphics.Color; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; public class Items { public static final Item diff --git a/core/src/io/anuke/mindustry/content/Liquids.java b/core/src/io/anuke/mindustry/content/Liquids.java index f841d6bfce..8a74d5beaf 100644 --- a/core/src/io/anuke/mindustry/content/Liquids.java +++ b/core/src/io/anuke/mindustry/content/Liquids.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.content; import com.badlogic.gdx.graphics.Color; -import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.type.Liquid; public class Liquids { diff --git a/core/src/io/anuke/mindustry/content/Mechs.java b/core/src/io/anuke/mindustry/content/Mechs.java index 8653a6e0d1..f758e4c13d 100644 --- a/core/src/io/anuke/mindustry/content/Mechs.java +++ b/core/src/io/anuke/mindustry/content/Mechs.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.content; -import io.anuke.mindustry.resource.Mech; +import io.anuke.mindustry.type.Mech; public class Mechs { public static final Mech diff --git a/core/src/io/anuke/mindustry/content/Recipes.java b/core/src/io/anuke/mindustry/content/Recipes.java index 3aacb01132..2180561285 100644 --- a/core/src/io/anuke/mindustry/content/Recipes.java +++ b/core/src/io/anuke/mindustry/content/Recipes.java @@ -1,9 +1,9 @@ package io.anuke.mindustry.content; import io.anuke.mindustry.content.blocks.*; -import io.anuke.mindustry.resource.ItemStack; -import io.anuke.mindustry.resource.Recipe; -import static io.anuke.mindustry.resource.Section.*; +import io.anuke.mindustry.type.ItemStack; +import io.anuke.mindustry.type.Recipe; +import static io.anuke.mindustry.type.Section.*; public class Recipes { static { diff --git a/core/src/io/anuke/mindustry/content/UpgradeRecipes.java b/core/src/io/anuke/mindustry/content/UpgradeRecipes.java index 5d6e681477..bfaf3309eb 100644 --- a/core/src/io/anuke/mindustry/content/UpgradeRecipes.java +++ b/core/src/io/anuke/mindustry/content/UpgradeRecipes.java @@ -2,9 +2,9 @@ package io.anuke.mindustry.content; import com.badlogic.gdx.utils.ObjectMap; import com.badlogic.gdx.utils.ObjectMap.Entries; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.ItemStack; -import io.anuke.mindustry.resource.Upgrade; +import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.type.ItemStack; +import io.anuke.mindustry.type.Upgrade; import io.anuke.ucore.util.Mathf; public class UpgradeRecipes { diff --git a/core/src/io/anuke/mindustry/content/Weapons.java b/core/src/io/anuke/mindustry/content/Weapons.java index 28248934d7..1b7b89dc83 100644 --- a/core/src/io/anuke/mindustry/content/Weapons.java +++ b/core/src/io/anuke/mindustry/content/Weapons.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.content; import io.anuke.mindustry.content.fx.ShootFx; -import io.anuke.mindustry.resource.Weapon; +import io.anuke.mindustry.type.Weapon; public class Weapons { public static final Weapon diff --git a/core/src/io/anuke/mindustry/content/blocks/Blocks.java b/core/src/io/anuke/mindustry/content/blocks/Blocks.java index da39825cef..37b4059e7d 100644 --- a/core/src/io/anuke/mindustry/content/blocks/Blocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/Blocks.java @@ -5,7 +5,7 @@ import io.anuke.mindustry.content.Items; import io.anuke.mindustry.content.Liquids; import io.anuke.mindustry.content.StatusEffects; import io.anuke.mindustry.graphics.CacheLayer; -import io.anuke.mindustry.resource.ItemStack; +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.*; diff --git a/core/src/io/anuke/mindustry/content/blocks/CraftingBlocks.java b/core/src/io/anuke/mindustry/content/blocks/CraftingBlocks.java index ede38dc179..5de9433d19 100644 --- a/core/src/io/anuke/mindustry/content/blocks/CraftingBlocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/CraftingBlocks.java @@ -4,8 +4,8 @@ import com.badlogic.gdx.graphics.Color; import io.anuke.mindustry.content.Items; import io.anuke.mindustry.content.Liquids; import io.anuke.mindustry.content.fx.BlockFx; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.ItemStack; +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.*; diff --git a/core/src/io/anuke/mindustry/content/blocks/DebugBlocks.java b/core/src/io/anuke/mindustry/content/blocks/DebugBlocks.java index f2d083a298..f429a75406 100644 --- a/core/src/io/anuke/mindustry/content/blocks/DebugBlocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/DebugBlocks.java @@ -3,8 +3,8 @@ package io.anuke.mindustry.content.blocks; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.content.Liquids; import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.Liquid; +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; diff --git a/core/src/io/anuke/mindustry/content/blocks/UnitBlocks.java b/core/src/io/anuke/mindustry/content/blocks/UnitBlocks.java index a306003dbf..85c57ab858 100644 --- a/core/src/io/anuke/mindustry/content/blocks/UnitBlocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/UnitBlocks.java @@ -2,7 +2,7 @@ package io.anuke.mindustry.content.blocks; import io.anuke.mindustry.content.Items; import io.anuke.mindustry.content.UnitTypes; -import io.anuke.mindustry.resource.ItemStack; +import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.blocks.types.units.RepairPoint; import io.anuke.mindustry.world.blocks.types.units.ResupplyPoint; diff --git a/core/src/io/anuke/mindustry/content/blocks/WeaponBlocks.java b/core/src/io/anuke/mindustry/content/blocks/WeaponBlocks.java index 975b5e5c8b..ab3a27a60e 100644 --- a/core/src/io/anuke/mindustry/content/blocks/WeaponBlocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/WeaponBlocks.java @@ -3,7 +3,7 @@ package io.anuke.mindustry.content.blocks; import com.badlogic.gdx.graphics.Color; import io.anuke.mindustry.content.AmmoTypes; import io.anuke.mindustry.content.fx.ShootFx; -import io.anuke.mindustry.resource.AmmoType; +import io.anuke.mindustry.type.AmmoType; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.blocks.types.defense.Turret; import io.anuke.mindustry.world.blocks.types.defense.turrets.*; diff --git a/core/src/io/anuke/mindustry/content/bullets/TurretBullets.java b/core/src/io/anuke/mindustry/content/bullets/TurretBullets.java index 5a80dbb4bd..ac84d2b9e6 100644 --- a/core/src/io/anuke/mindustry/content/bullets/TurretBullets.java +++ b/core/src/io/anuke/mindustry/content/bullets/TurretBullets.java @@ -14,7 +14,7 @@ import io.anuke.mindustry.entities.effect.Fire; import io.anuke.mindustry.entities.effect.Lightning; import io.anuke.mindustry.entities.effect.Puddle; import io.anuke.mindustry.graphics.Palette; -import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Timers; diff --git a/core/src/io/anuke/mindustry/core/ContentLoader.java b/core/src/io/anuke/mindustry/core/ContentLoader.java index 8a3c24c6e1..e3c1c120dc 100644 --- a/core/src/io/anuke/mindustry/core/ContentLoader.java +++ b/core/src/io/anuke/mindustry/core/ContentLoader.java @@ -4,7 +4,7 @@ import io.anuke.mindustry.content.*; import io.anuke.mindustry.content.blocks.*; import io.anuke.mindustry.entities.StatusEffect; import io.anuke.mindustry.entities.units.UnitType; -import io.anuke.mindustry.resource.*; +import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Block; import io.anuke.ucore.util.Log; @@ -59,8 +59,8 @@ public class ContentLoader { Log.info("--- CONTENT INFO ---"); Log.info("Blocks loaded: {0}\nItems loaded: {1}\nLiquids loaded: {2}\nUpgrades loaded: {3}\nUnits loaded: {4}\nAmmo types loaded: {5}\nStatus effects loaded: {6}\nRecipes loaded: {7}\nTotal content classes: {8}", - Block.getAllBlocks().size, Item.getAllItems().size, Liquid.getAllLiquids().size, - Mech.getAllUpgrades().size, UnitType.getAllTypes().size, AmmoType.getAllTypes().size, StatusEffect.getAllEffects().size, Recipe.getAllRecipes().size, content.length); + Block.getAllBlocks().size, io.anuke.mindustry.type.Item.getAllItems().size, Liquid.getAllLiquids().size, + io.anuke.mindustry.type.Mech.getAllUpgrades().size, UnitType.getAllTypes().size, io.anuke.mindustry.type.AmmoType.getAllTypes().size, StatusEffect.getAllEffects().size, io.anuke.mindustry.type.Recipe.getAllRecipes().size, content.length); Log.info("-------------------"); } diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index 5a17ad4c16..351d9c0680 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -18,7 +18,7 @@ import io.anuke.mindustry.io.Map; import io.anuke.mindustry.io.Platform; import io.anuke.mindustry.io.Saves; import io.anuke.mindustry.net.Net; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.ucore.core.*; import io.anuke.ucore.entities.Entities; import io.anuke.ucore.input.InputProxy; diff --git a/core/src/io/anuke/mindustry/core/Logic.java b/core/src/io/anuke/mindustry/core/Logic.java index 5bb0181d14..a4212bea16 100644 --- a/core/src/io/anuke/mindustry/core/Logic.java +++ b/core/src/io/anuke/mindustry/core/Logic.java @@ -11,6 +11,8 @@ import io.anuke.mindustry.game.TeamInfo; import io.anuke.mindustry.game.TeamInfo.TeamData; import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.NetEvents; +import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Events; import io.anuke.ucore.core.Timers; import io.anuke.ucore.entities.Entities; @@ -42,6 +44,14 @@ public class Logic extends Module { public void play(){ state.wavetime = wavespace * state.difficulty.timeScaling * 2; + for(Tile tile : state.teams.get(players[0].team).cores){ + for(Item item : Item.getAllItems()){ + if(item.material){ + tile.entity.items.addItem(item, 1000); + } + } + } + Events.fire(PlayEvent.class); } diff --git a/core/src/io/anuke/mindustry/core/NetClient.java b/core/src/io/anuke/mindustry/core/NetClient.java index 424c75e5be..a2897dd23d 100644 --- a/core/src/io/anuke/mindustry/core/NetClient.java +++ b/core/src/io/anuke/mindustry/core/NetClient.java @@ -13,9 +13,9 @@ import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.Net.SendMode; import io.anuke.mindustry.net.NetworkIO; import io.anuke.mindustry.net.Packets.*; -import io.anuke.mindustry.resource.Recipe; -import io.anuke.mindustry.resource.Upgrade; -import io.anuke.mindustry.resource.Weapon; +import io.anuke.mindustry.type.Recipe; +import io.anuke.mindustry.type.Upgrade; +import io.anuke.mindustry.type.Weapon; import io.anuke.mindustry.world.Build; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Effects; diff --git a/core/src/io/anuke/mindustry/core/NetCommon.java b/core/src/io/anuke/mindustry/core/NetCommon.java index 32b2f7b7d6..8396f2719d 100644 --- a/core/src/io/anuke/mindustry/core/NetCommon.java +++ b/core/src/io/anuke/mindustry/core/NetCommon.java @@ -7,7 +7,7 @@ import io.anuke.mindustry.net.Packets.BlockConfigPacket; import io.anuke.mindustry.net.Packets.BlockTapPacket; import io.anuke.mindustry.net.Packets.ChatPacket; import io.anuke.mindustry.net.Packets.WeaponSwitchPacket; -import io.anuke.mindustry.resource.Upgrade; +import io.anuke.mindustry.type.Upgrade; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.modules.Module; diff --git a/core/src/io/anuke/mindustry/core/NetServer.java b/core/src/io/anuke/mindustry/core/NetServer.java index 0a39b43a41..33d3e529a0 100644 --- a/core/src/io/anuke/mindustry/core/NetServer.java +++ b/core/src/io/anuke/mindustry/core/NetServer.java @@ -16,9 +16,9 @@ import io.anuke.mindustry.net.*; import io.anuke.mindustry.net.Administration.PlayerInfo; import io.anuke.mindustry.net.Net.SendMode; import io.anuke.mindustry.net.Packets.*; -import io.anuke.mindustry.resource.Recipe; -import io.anuke.mindustry.resource.Upgrade; -import io.anuke.mindustry.resource.Weapon; +import io.anuke.mindustry.type.Recipe; +import io.anuke.mindustry.type.Upgrade; +import io.anuke.mindustry.type.Weapon; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Build; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/entities/BlockBuilder.java b/core/src/io/anuke/mindustry/entities/BlockBuilder.java index dfb9f58714..92e1d3bf7a 100644 --- a/core/src/io/anuke/mindustry/entities/BlockBuilder.java +++ b/core/src/io/anuke/mindustry/entities/BlockBuilder.java @@ -2,7 +2,7 @@ package io.anuke.mindustry.entities; import com.badlogic.gdx.utils.Queue; import io.anuke.mindustry.Vars; -import io.anuke.mindustry.resource.Recipe; +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; @@ -76,10 +76,17 @@ public interface BlockBuilder { getPlaceQueue().removeFirst(); } }else{ + TileEntity core = unit.getClosestCore(); + + //if there is no core to build with, stop building! + if(core == null){ + return; + } + //otherwise, update it. BuildEntity entity = tile.entity(); - entity.progress += 1f / entity.recipe.cost; + entity.addProgress(core.items, 1f / entity.recipe.cost); unit.rotation = Mathf.slerpDelta(unit.rotation, unit.angleTo(entity), 0.4f); } } diff --git a/core/src/io/anuke/mindustry/entities/ItemAnimationEffect.java b/core/src/io/anuke/mindustry/entities/ItemAnimationEffect.java deleted file mode 100644 index fded944215..0000000000 --- a/core/src/io/anuke/mindustry/entities/ItemAnimationEffect.java +++ /dev/null @@ -1,62 +0,0 @@ -package io.anuke.mindustry.entities; - -import com.badlogic.gdx.math.Interpolation; -import com.badlogic.gdx.math.Vector2; -import io.anuke.mindustry.Vars; -import io.anuke.mindustry.resource.Item; -import io.anuke.ucore.entities.Entity; -import io.anuke.ucore.entities.TimedEntity; -import io.anuke.ucore.function.Callable; -import io.anuke.ucore.graphics.Draw; -import io.anuke.ucore.util.Mathf; - -/**This class should not be used anymore, as the animation does not fit the style well.*/ -@Deprecated -public class ItemAnimationEffect extends TimedEntity { - private static final float size = 5f; - - private final Vector2 vec = new Vector2(); - private final Vector2 from = new Vector2(); - private final Vector2 to = new Vector2(); - private final Item item; - private final Callable removed; - - public Interpolation interp = Interpolation.fade; - public float endSize = 0.9f; - - public ItemAnimationEffect(Item item, float x, float y, float tox, float toy, Callable removed) { - this.x = x; - this.y = y; - this.item = item; - this.removed = removed; - from.set(x, y); - to.set(tox, toy); - lifetime = 40f; - } - - @Override - public void removed() { - super.removed(); - removed.run(); - } - - @Override - public void update() { - super.update(); - - vec.set(from).interpolate(to, fin(), interp); - x = vec.x; - y = vec.y; - } - - @Override - public void draw() { - float s = size * (1f-Mathf.curve(fin(), endSize)); - Draw.rect(item.region, x, y, s, s); - } - - @Override - public T add() { - return super.add(Vars.effectGroup); - } -} diff --git a/core/src/io/anuke/mindustry/entities/ItemTransfer.java b/core/src/io/anuke/mindustry/entities/ItemTransfer.java new file mode 100644 index 0000000000..21f23e4ac2 --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/ItemTransfer.java @@ -0,0 +1,37 @@ +package io.anuke.mindustry.entities; + +import io.anuke.mindustry.Vars; +import io.anuke.mindustry.type.Item; +import io.anuke.ucore.entities.Entity; +import io.anuke.ucore.entities.TimedEntity; +import io.anuke.ucore.function.Callable; + +public class ItemTransfer extends TimedEntity { + + + public static void create(Item item, float fromx, float fromy, float tox, float toy, Callable done){ + + } + + private ItemTransfer(){} + + @Override + public void removed() { + super.removed(); + } + + @Override + public void update() { + super.update(); + } + + @Override + public void draw() { + + } + + @Override + public T add() { + return super.add(Vars.effectGroup); + } +} diff --git a/core/src/io/anuke/mindustry/entities/Player.java b/core/src/io/anuke/mindustry/entities/Player.java index f04edbebf1..8b465ca6be 100644 --- a/core/src/io/anuke/mindustry/entities/Player.java +++ b/core/src/io/anuke/mindustry/entities/Player.java @@ -14,7 +14,10 @@ import io.anuke.mindustry.game.Team; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.NetEvents; -import io.anuke.mindustry.resource.*; +import io.anuke.mindustry.type.ItemStack; +import io.anuke.mindustry.type.Mech; +import io.anuke.mindustry.type.Upgrade; +import io.anuke.mindustry.type.Weapon; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.types.Floor; import io.anuke.ucore.core.*; @@ -375,12 +378,12 @@ public class Player extends Unit implements BlockBuilder { } @Override - public boolean acceptsAmmo(Item item) { + public boolean acceptsAmmo(io.anuke.mindustry.type.Item item) { return weapon.getAmmoType(item) != null && inventory.canAcceptAmmo(weapon.getAmmoType(item)); } @Override - public void addAmmo(Item item) { + public void addAmmo(io.anuke.mindustry.type.Item item) { inventory.addAmmo(weapon.getAmmoType(item)); } diff --git a/core/src/io/anuke/mindustry/entities/StatusEffect.java b/core/src/io/anuke/mindustry/entities/StatusEffect.java index c698adda8e..3e038e63f3 100644 --- a/core/src/io/anuke/mindustry/entities/StatusEffect.java +++ b/core/src/io/anuke/mindustry/entities/StatusEffect.java @@ -8,10 +8,13 @@ public class StatusEffect{ private static final Array array = new Array<>(); private static int lastid; + /**Duration of this status effect in ticks at maximum power.*/ public final float baseDuration; public final int id; + /**Set of 'opposite' effects, which will decrease the duration of this effect when applied.*/ protected ObjectSet opposites = new ObjectSet<>(); + /**The strength of time decrease when met with an opposite effect, as a fraction of the other's duration.*/ protected float oppositeScale = 0.5f; public StatusEffect(float baseDuration){ diff --git a/core/src/io/anuke/mindustry/entities/SyncEntity.java b/core/src/io/anuke/mindustry/entities/SyncEntity.java index 2c8c5f536c..d86f7b4719 100644 --- a/core/src/io/anuke/mindustry/entities/SyncEntity.java +++ b/core/src/io/anuke/mindustry/entities/SyncEntity.java @@ -115,7 +115,6 @@ public abstract class SyncEntity extends DestructibleEntity{ } public void update(){ - //TODO prevent rubberbanding from getting too bad, clamp values? time += 1f / spacing * Math.min(Timers.delta(), 1f); diff --git a/core/src/io/anuke/mindustry/entities/Unit.java b/core/src/io/anuke/mindustry/entities/Unit.java index ad369c166e..fdd5d8820f 100644 --- a/core/src/io/anuke/mindustry/entities/Unit.java +++ b/core/src/io/anuke/mindustry/entities/Unit.java @@ -3,12 +3,14 @@ package io.anuke.mindustry.entities; import com.badlogic.gdx.math.Vector2; import io.anuke.mindustry.content.blocks.Blocks; import io.anuke.mindustry.game.Team; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.game.TeamInfo.TeamData; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.types.Floor; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Timers; import io.anuke.ucore.entities.SolidEntity; +import io.anuke.ucore.util.Geometry; import io.anuke.ucore.util.Mathf; import java.io.DataInputStream; @@ -76,6 +78,21 @@ public abstract class Unit extends SyncEntity implements SerializableEntity { this.status.set(StatusEffect.getByID(effect), etime); } + public TileEntity getClosestCore(){ + if(state.teams.has(team)){ + TeamData data = state.teams.get(team); + + Tile tile = Geometry.findClosest(x, y, data.cores); + if(tile == null){ + return null; + }else{ + return tile.entity; + } + }else{ + return null; + } + } + public Floor getFloorOn(){ Tile tile = world.tileWorld(x, y); return (Floor)(tile == null || (tile.floor() == null) ? Blocks.defaultFloor : tile.floor()); diff --git a/core/src/io/anuke/mindustry/entities/UnitInventory.java b/core/src/io/anuke/mindustry/entities/UnitInventory.java index 2690fc6adc..807c2fdcac 100644 --- a/core/src/io/anuke/mindustry/entities/UnitInventory.java +++ b/core/src/io/anuke/mindustry/entities/UnitInventory.java @@ -1,10 +1,10 @@ package io.anuke.mindustry.entities; import com.badlogic.gdx.utils.Array; -import io.anuke.mindustry.resource.AmmoEntry; -import io.anuke.mindustry.resource.AmmoType; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.ItemStack; +import io.anuke.mindustry.type.AmmoEntry; +import io.anuke.mindustry.type.AmmoType; +import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.type.ItemStack; import java.io.DataInputStream; import java.io.DataOutputStream; diff --git a/core/src/io/anuke/mindustry/entities/Units.java b/core/src/io/anuke/mindustry/entities/Units.java index 3c0b76c1c8..4c212550bb 100644 --- a/core/src/io/anuke/mindustry/entities/Units.java +++ b/core/src/io/anuke/mindustry/entities/Units.java @@ -19,14 +19,17 @@ import static io.anuke.mindustry.Vars.*; public class Units { private static Rectangle rect = new Rectangle(); + /**Returns the neareset ally tile in a range.*/ public static TileEntity findAllyTile(Team team, float x, float y, float range, Predicate pred){ return findTile(x, y, range, tile -> !state.teams.areEnemies(team, tile.getTeam()) && pred.test(tile)); } + /**Returns the neareset enemy tile in a range.*/ public static TileEntity findEnemyTile(Team team, float x, float y, float range, Predicate pred){ return findTile(x, y, range, tile -> state.teams.areEnemies(team, tile.getTeam()) && pred.test(tile)); } + /**Returns the neareset tile entity in a range.*/ public static TileEntity findTile(float x, float y, float range, Predicate pred){ Entity closest = null; float dst = 0; diff --git a/core/src/io/anuke/mindustry/entities/effect/BelowLiquidEffect.java b/core/src/io/anuke/mindustry/entities/effect/BelowLiquidEffect.java index afec58633f..9fdb754c87 100644 --- a/core/src/io/anuke/mindustry/entities/effect/BelowLiquidEffect.java +++ b/core/src/io/anuke/mindustry/entities/effect/BelowLiquidEffect.java @@ -1,4 +1,5 @@ package io.anuke.mindustry.entities.effect; +/**A flag interface for marking an effect as appearing below liquids.*/ public interface BelowLiquidEffect { } diff --git a/core/src/io/anuke/mindustry/entities/effect/DamageArea.java b/core/src/io/anuke/mindustry/entities/effect/DamageArea.java index 3e5bbb331d..6d78e714b9 100644 --- a/core/src/io/anuke/mindustry/entities/effect/DamageArea.java +++ b/core/src/io/anuke/mindustry/entities/effect/DamageArea.java @@ -23,10 +23,12 @@ import io.anuke.ucore.util.Translator; import static io.anuke.mindustry.Vars.*; +/**Utility class for damaging in an area.*/ public class DamageArea{ private static Rectangle rect = new Rectangle(); private static Translator tr = new Translator(); + /**Creates a dynamic explosion based on specified parameters.*/ public static void dynamicExplosion(float x, float y, float flammability, float explosiveness, float power, float radius, Color color){ for(int i = 0; i < Mathf.clamp(power / 20, 0, 6); i ++){ int branches = 5 + Mathf.clamp((int)(power/30), 1, 20); diff --git a/core/src/io/anuke/mindustry/entities/effect/GroundEffectEntity.java b/core/src/io/anuke/mindustry/entities/effect/GroundEffectEntity.java index 2d230d7294..a6361ec66b 100644 --- a/core/src/io/anuke/mindustry/entities/effect/GroundEffectEntity.java +++ b/core/src/io/anuke/mindustry/entities/effect/GroundEffectEntity.java @@ -9,6 +9,7 @@ import io.anuke.ucore.entities.EffectEntity; import io.anuke.ucore.function.EffectRenderer; import io.anuke.ucore.util.Mathf; +/**A ground effect contains an effect that is rendered on the ground layer as opposed to the top layer.*/ public class GroundEffectEntity extends EffectEntity { private boolean once; @@ -52,8 +53,12 @@ public class GroundEffectEntity extends EffectEntity { once = false; } + /**An effect that is rendered on the ground layer as opposed to the top layer.*/ public static class GroundEffect extends Effect{ + /**How long this effect stays on the ground when static.*/ public final float staticLife; + /**If true, this effect will stop and lie on the ground for a specific duration, + * after its initial lifetime is over.*/ public final boolean isStatic; public GroundEffect(float life, float staticLife, EffectRenderer draw) { diff --git a/core/src/io/anuke/mindustry/entities/effect/Lightning.java b/core/src/io/anuke/mindustry/entities/effect/Lightning.java index df7500f5f4..49b550f65f 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Lightning.java +++ b/core/src/io/anuke/mindustry/entities/effect/Lightning.java @@ -31,6 +31,7 @@ public class Lightning extends TimedEntity implements Poolable{ public Color color = Palette.lancerLaser; + /**Create a lighting branch at a location. Use Team.none to damage everyone.*/ public static void create(Team team, Effect effect, Color color, float damage, float x, float y, float targetAngle, int length){ Lightning l = Pools.obtain(Lightning.class); diff --git a/core/src/io/anuke/mindustry/entities/effect/Puddle.java b/core/src/io/anuke/mindustry/entities/effect/Puddle.java index 2249b181c4..081004b2b1 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Puddle.java +++ b/core/src/io/anuke/mindustry/entities/effect/Puddle.java @@ -15,7 +15,7 @@ import io.anuke.mindustry.entities.Bullet; import io.anuke.mindustry.entities.SerializableEntity; import io.anuke.mindustry.entities.Units; import io.anuke.mindustry.game.Team; -import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Timers; diff --git a/core/src/io/anuke/mindustry/entities/effect/Rubble.java b/core/src/io/anuke/mindustry/entities/effect/Rubble.java index c840292cde..3cd542da03 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Rubble.java +++ b/core/src/io/anuke/mindustry/entities/effect/Rubble.java @@ -7,10 +7,12 @@ import io.anuke.ucore.util.Mathf; import static io.anuke.mindustry.Vars.groundEffectGroup; +/**Class for creating block rubble on the ground.*/ public class Rubble extends TimedEntity implements BelowLiquidEffect{ private static final Color color = Color.valueOf("52504e"); private int size; + /**Creates a rubble effect at a position. Provide a block size to use.*/ public static void create(float x, float y, int size){ Rubble rubble = new Rubble(); rubble.size = size; diff --git a/core/src/io/anuke/mindustry/entities/effect/Shield.java b/core/src/io/anuke/mindustry/entities/effect/Shield.java index fd34aefc64..f6d263dac9 100644 --- a/core/src/io/anuke/mindustry/entities/effect/Shield.java +++ b/core/src/io/anuke/mindustry/entities/effect/Shield.java @@ -14,6 +14,7 @@ import io.anuke.ucore.util.Mathf; import static io.anuke.mindustry.Vars.bulletGroup; import static io.anuke.mindustry.Vars.shieldGroup; +//todo re-implement public class Shield extends Entity{ public boolean active; public boolean hitPlayers = false; diff --git a/core/src/io/anuke/mindustry/entities/units/BaseUnit.java b/core/src/io/anuke/mindustry/entities/units/BaseUnit.java index b2ff038e4f..5b76077339 100644 --- a/core/src/io/anuke/mindustry/entities/units/BaseUnit.java +++ b/core/src/io/anuke/mindustry/entities/units/BaseUnit.java @@ -5,7 +5,7 @@ import io.anuke.mindustry.entities.BulletType; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.Unit; import io.anuke.mindustry.game.Team; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.BlockFlag; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Effects.Effect; diff --git a/core/src/io/anuke/mindustry/entities/units/FlyingUnitType.java b/core/src/io/anuke/mindustry/entities/units/FlyingUnitType.java index c4d615c19b..87671cb61d 100644 --- a/core/src/io/anuke/mindustry/entities/units/FlyingUnitType.java +++ b/core/src/io/anuke/mindustry/entities/units/FlyingUnitType.java @@ -3,7 +3,7 @@ package io.anuke.mindustry.entities.units; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.Unit; import io.anuke.mindustry.entities.Units; -import io.anuke.mindustry.resource.AmmoType; +import io.anuke.mindustry.type.AmmoType; import io.anuke.mindustry.world.BlockFlag; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Timers; diff --git a/core/src/io/anuke/mindustry/entities/units/GroundUnitType.java b/core/src/io/anuke/mindustry/entities/units/GroundUnitType.java index 00e9dd77c7..4ce4250912 100644 --- a/core/src/io/anuke/mindustry/entities/units/GroundUnitType.java +++ b/core/src/io/anuke/mindustry/entities/units/GroundUnitType.java @@ -1,13 +1,10 @@ package io.anuke.mindustry.entities.units; import com.badlogic.gdx.graphics.Color; -import com.badlogic.gdx.math.Vector2; -import com.badlogic.gdx.utils.ObjectSet; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.Unit; import io.anuke.mindustry.entities.Units; -import io.anuke.mindustry.game.TeamInfo.TeamData; -import io.anuke.mindustry.resource.AmmoType; +import io.anuke.mindustry.type.AmmoType; import io.anuke.mindustry.world.BlockFlag; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.types.Floor; diff --git a/core/src/io/anuke/mindustry/entities/units/UnitType.java b/core/src/io/anuke/mindustry/entities/units/UnitType.java index 6710b20d84..ca451507dd 100644 --- a/core/src/io/anuke/mindustry/entities/units/UnitType.java +++ b/core/src/io/anuke/mindustry/entities/units/UnitType.java @@ -8,8 +8,8 @@ import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.Unit; import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.NetEvents; -import io.anuke.mindustry.resource.AmmoType; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.AmmoType; +import io.anuke.mindustry.type.Item; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Timers; import io.anuke.ucore.util.Angles; diff --git a/core/src/io/anuke/mindustry/game/Inventory.java b/core/src/io/anuke/mindustry/game/Inventory.java deleted file mode 100644 index 4f78a476a9..0000000000 --- a/core/src/io/anuke/mindustry/game/Inventory.java +++ /dev/null @@ -1,96 +0,0 @@ -package io.anuke.mindustry.game; - -import com.badlogic.gdx.utils.Array; -import com.badlogic.gdx.utils.ObjectSet; -import io.anuke.mindustry.content.Items; -import io.anuke.mindustry.game.TeamInfo.TeamData; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.ItemStack; -import io.anuke.mindustry.world.Tile; - -import java.util.Arrays; - -import static io.anuke.mindustry.Vars.debug; -import static io.anuke.mindustry.Vars.state; - -public class Inventory { - private final int[] empty = new int[Item.getAllItems().size]; - - public void clearItems(){ - Arrays.fill(items(), 0); - - if(debug){ - for(Item item : Item.getAllItems()){ - if(item.material) items()[item.id] = 99999; - } - }else{ - addItem(Items.iron, 40); - } - } - - public void fill(){ - Arrays.fill(items(), 999999999); - } - - public int getAmount(Item item){ - return items()[item.id]; - } - - public void addItem(Item item, int amount){ - items()[item.id] += amount; - } - - public boolean hasItems(ItemStack[] items){ - for(ItemStack stack : items) - if(!hasItem(stack)) - return false; - return true; - } - - public boolean hasItems(ItemStack[] items, int scaling){ - for(ItemStack stack : items) - if(!hasItem(stack.item, stack.amount * scaling)) - return false; - return true; - } - - public boolean hasItem(ItemStack req){ - return items()[req.item.id] >= req.amount; - } - - public boolean hasItem(Item item, int amount){ - return items()[item.id] >= amount; - } - - public void removeItem(ItemStack req){ - items()[req.item.id] -= req.amount; - if(items()[req.item.id] < 0) items()[req.item.id] = 0; //prevents negative item glitches in multiplayer - } - - public void removeItems(ItemStack... reqs){ - for(ItemStack req : reqs) - removeItem(req); - } - - public int[] writeItems(){ - return items(); - } - - public int[] readItems(){ - return items(); - } - - /* - public int[] getItems(){ - updated = true; - return items(); - }*/ - - private int[] items(){ - ObjectSet set = state.teams.getTeams(true); - if(set.size == 0) return empty; - Array tiles = set.first().cores; - if(tiles.size == 0) return empty; - return tiles.first().entity.items.items; - } -} diff --git a/core/src/io/anuke/mindustry/game/TeamInfo.java b/core/src/io/anuke/mindustry/game/TeamInfo.java index 7400363bdf..bb598f0f3d 100644 --- a/core/src/io/anuke/mindustry/game/TeamInfo.java +++ b/core/src/io/anuke/mindustry/game/TeamInfo.java @@ -18,10 +18,12 @@ public class TeamInfo { private ObjectSet allTeamData = new ObjectSet<>(); private ObjectSet allTeams = new ObjectSet<>(); + /**Returns all teams on a side.*/ public ObjectSet getTeams(boolean ally) { return ally ? allyData : enemyData; } + /**Returns all team data.*/ public ObjectSet getTeams() { return allTeamData; } diff --git a/core/src/io/anuke/mindustry/game/UpgradeInventory.java b/core/src/io/anuke/mindustry/game/UpgradeInventory.java deleted file mode 100644 index 62ca604c6e..0000000000 --- a/core/src/io/anuke/mindustry/game/UpgradeInventory.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.anuke.mindustry.game; - -import com.badlogic.gdx.utils.Array; -import io.anuke.mindustry.content.Weapons; -import io.anuke.mindustry.resource.Weapon; - -public class UpgradeInventory { - private final Array weapons = new Array<>(); - - public boolean hasWeapon(Weapon weapon){ - return weapons.contains(weapon, true); - } - - public void addWeapon(Weapon weapon){ - weapons.add(weapon); - } - - public Array getWeapons(){ - return weapons; - } - - public void reset(){ - weapons.clear(); - weapons.add(Weapons.blaster); - } -} diff --git a/core/src/io/anuke/mindustry/input/DesktopInput.java b/core/src/io/anuke/mindustry/input/DesktopInput.java index 68b2694708..9a63999aef 100644 --- a/core/src/io/anuke/mindustry/input/DesktopInput.java +++ b/core/src/io/anuke/mindustry/input/DesktopInput.java @@ -7,7 +7,7 @@ import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.entities.Player; import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.NetEvents; -import io.anuke.mindustry.resource.Weapon; +import io.anuke.mindustry.type.Weapon; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.*; import io.anuke.ucore.core.Inputs.DeviceType; @@ -129,7 +129,7 @@ public class DesktopInput extends InputHandler{ droppingItem = false; } - if(recipe == null && target != null && !ui.hasMouse() && Inputs.keyDown(section,"block_info") && target.block().isAccessible()){ + if(recipe == null && target != null && !ui.hasMouse() && target.block().isAccessible()){ showCursor = true; if(Inputs.keyTap(section,"select")){ canBeginShoot = false; diff --git a/core/src/io/anuke/mindustry/input/InputHandler.java b/core/src/io/anuke/mindustry/input/InputHandler.java index 868b2f95ca..55447c166c 100644 --- a/core/src/io/anuke/mindustry/input/InputHandler.java +++ b/core/src/io/anuke/mindustry/input/InputHandler.java @@ -2,13 +2,12 @@ package io.anuke.mindustry.input; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.InputAdapter; -import com.badlogic.gdx.math.Interpolation; import com.badlogic.gdx.math.Vector2; import io.anuke.mindustry.entities.BlockBuilder.BuildRequest; -import io.anuke.mindustry.entities.ItemAnimationEffect; +import io.anuke.mindustry.entities.ItemTransfer; import io.anuke.mindustry.entities.Player; -import io.anuke.mindustry.resource.ItemStack; -import io.anuke.mindustry.resource.Recipe; +import io.anuke.mindustry.type.ItemStack; +import io.anuke.mindustry.type.Recipe; import io.anuke.mindustry.ui.fragments.OverlayFragment; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Build; @@ -107,7 +106,7 @@ public abstract class InputHandler extends InputAdapter{ Timers.run(i * 3, () -> { tile.block().getStackOffset(stack.item, tile, stackTrns); - new ItemAnimationEffect(stack.item, + ItemTransfer.create(stack.item, player.x + Angles.trnsx(rotation + 180f, backTrns), player.y + Angles.trnsy(rotation + 180f, backTrns), tile.drawx() + stackTrns.x, tile.drawy() + stackTrns.y, () -> { @@ -117,7 +116,7 @@ public abstract class InputHandler extends InputAdapter{ if(end && remaining[1] > 0) { tile.block().handleStack(stack.item, remaining[1], tile, player); } - }).add(); + }); stack.amount -= removed; remaining[0] -= removed; @@ -130,6 +129,8 @@ public abstract class InputHandler extends InputAdapter{ }); } }else{ + //TODO create drop on the ground + /* Vector2 vec = Graphics.screen(player.x, player.y); if(vec.dst(Gdx.input.getX(), Gdx.graphics.getHeight() - Gdx.input.getY()) > playerSelectRange) { @@ -140,15 +141,12 @@ public abstract class InputHandler extends InputAdapter{ float x = player.x + Angles.trnsx(rotation + 180f, backTrns), y = player.y + Angles.trnsy(rotation + 180f, backTrns); - ItemAnimationEffect e = new ItemAnimationEffect(stack.item, - x, y, x + Mathf.range(20f), y + Mathf.range(20f), () -> {}).add(); - e.interp = Interpolation.pow3Out; - e.endSize = 0.5f; - e.lifetime = 20; + ItemTransfer.create(stack.item, + x, y, x + Mathf.range(20f), y + Mathf.range(20f), () -> {}); }); } player.inventory.clear(); - } + }*/ } } diff --git a/core/src/io/anuke/mindustry/net/NetEvents.java b/core/src/io/anuke/mindustry/net/NetEvents.java index da224bf696..040046ccff 100644 --- a/core/src/io/anuke/mindustry/net/NetEvents.java +++ b/core/src/io/anuke/mindustry/net/NetEvents.java @@ -10,8 +10,8 @@ import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.Unit; import io.anuke.mindustry.net.Net.SendMode; import io.anuke.mindustry.net.Packets.*; -import io.anuke.mindustry.resource.Recipe; -import io.anuke.mindustry.resource.Upgrade; +import io.anuke.mindustry.type.Recipe; +import io.anuke.mindustry.type.Upgrade; import io.anuke.mindustry.world.Tile; import static io.anuke.mindustry.Vars.*; diff --git a/core/src/io/anuke/mindustry/net/NetworkIO.java b/core/src/io/anuke/mindustry/net/NetworkIO.java index 80d5af9294..b1de73f210 100644 --- a/core/src/io/anuke/mindustry/net/NetworkIO.java +++ b/core/src/io/anuke/mindustry/net/NetworkIO.java @@ -7,7 +7,7 @@ import io.anuke.mindustry.entities.Player; import io.anuke.mindustry.game.GameMode; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.io.Version; -import io.anuke.mindustry.resource.Upgrade; +import io.anuke.mindustry.type.Upgrade; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.types.BlockPart; import io.anuke.ucore.core.Timers; diff --git a/core/src/io/anuke/mindustry/resource/AmmoEntry.java b/core/src/io/anuke/mindustry/resource/AmmoEntry.java deleted file mode 100644 index 749bededa6..0000000000 --- a/core/src/io/anuke/mindustry/resource/AmmoEntry.java +++ /dev/null @@ -1,11 +0,0 @@ -package io.anuke.mindustry.resource; - -public class AmmoEntry{ - public AmmoType type; - public int amount; - - public AmmoEntry(AmmoType type, int amount) { - this.type = type; - this.amount = amount; - } -} diff --git a/core/src/io/anuke/mindustry/type/AmmoEntry.java b/core/src/io/anuke/mindustry/type/AmmoEntry.java new file mode 100644 index 0000000000..f4deb909ce --- /dev/null +++ b/core/src/io/anuke/mindustry/type/AmmoEntry.java @@ -0,0 +1,11 @@ +package io.anuke.mindustry.type; + +public class AmmoEntry{ + public io.anuke.mindustry.type.AmmoType type; + public int amount; + + public AmmoEntry(io.anuke.mindustry.type.AmmoType type, int amount) { + this.type = type; + this.amount = amount; + } +} diff --git a/core/src/io/anuke/mindustry/resource/AmmoType.java b/core/src/io/anuke/mindustry/type/AmmoType.java similarity index 90% rename from core/src/io/anuke/mindustry/resource/AmmoType.java rename to core/src/io/anuke/mindustry/type/AmmoType.java index a6ee9d2d6d..3bb5dd91e9 100644 --- a/core/src/io/anuke/mindustry/resource/AmmoType.java +++ b/core/src/io/anuke/mindustry/type/AmmoType.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.resource; +package io.anuke.mindustry.type; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.content.fx.Fx; @@ -13,7 +13,7 @@ public class AmmoType { /**The item used. Always null if liquid isn't.*/ public final Item item; /**The liquid used. Always null if item isn't.*/ - public final Liquid liquid; + public final io.anuke.mindustry.type.Liquid liquid; /**The resulting bullet.*/ public final BulletType bullet; /**For item ammo, this is amount given per ammo item. @@ -48,7 +48,7 @@ public class AmmoType { this.quantityMultiplier = multiplier; } - public AmmoType(Liquid liquid, BulletType result, float multiplier){ + public AmmoType(io.anuke.mindustry.type.Liquid liquid, BulletType result, float multiplier){ this.item = null; this.liquid = liquid; this.bullet = result; diff --git a/core/src/io/anuke/mindustry/resource/Item.java b/core/src/io/anuke/mindustry/type/Item.java similarity index 97% rename from core/src/io/anuke/mindustry/resource/Item.java rename to core/src/io/anuke/mindustry/type/Item.java index 6c1d7a5583..08a33ef620 100644 --- a/core/src/io/anuke/mindustry/resource/Item.java +++ b/core/src/io/anuke/mindustry/type/Item.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.resource; +package io.anuke.mindustry.type; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.g2d.TextureRegion; diff --git a/core/src/io/anuke/mindustry/resource/ItemStack.java b/core/src/io/anuke/mindustry/type/ItemStack.java similarity index 60% rename from core/src/io/anuke/mindustry/resource/ItemStack.java rename to core/src/io/anuke/mindustry/type/ItemStack.java index c11bce57b1..6ab73ca5af 100644 --- a/core/src/io/anuke/mindustry/resource/ItemStack.java +++ b/core/src/io/anuke/mindustry/type/ItemStack.java @@ -1,10 +1,10 @@ -package io.anuke.mindustry.resource; +package io.anuke.mindustry.type; public class ItemStack{ - public Item item; + public io.anuke.mindustry.type.Item item; public int amount; - public ItemStack(Item item, int amount){ + public ItemStack(io.anuke.mindustry.type.Item item, int amount){ this.item = item; this.amount = amount; } diff --git a/core/src/io/anuke/mindustry/resource/Liquid.java b/core/src/io/anuke/mindustry/type/Liquid.java similarity index 97% rename from core/src/io/anuke/mindustry/resource/Liquid.java rename to core/src/io/anuke/mindustry/type/Liquid.java index 605888b735..f5d7d12744 100644 --- a/core/src/io/anuke/mindustry/resource/Liquid.java +++ b/core/src/io/anuke/mindustry/type/Liquid.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.resource; +package io.anuke.mindustry.type; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.utils.Array; diff --git a/core/src/io/anuke/mindustry/resource/Mech.java b/core/src/io/anuke/mindustry/type/Mech.java similarity index 59% rename from core/src/io/anuke/mindustry/resource/Mech.java rename to core/src/io/anuke/mindustry/type/Mech.java index 5ccd99a59d..cfcdad335c 100644 --- a/core/src/io/anuke/mindustry/resource/Mech.java +++ b/core/src/io/anuke/mindustry/type/Mech.java @@ -1,6 +1,6 @@ -package io.anuke.mindustry.resource; +package io.anuke.mindustry.type; -public class Mech extends Upgrade{ +public class Mech extends io.anuke.mindustry.type.Upgrade { public boolean flying; public float mass = 1f; diff --git a/core/src/io/anuke/mindustry/resource/Recipe.java b/core/src/io/anuke/mindustry/type/Recipe.java similarity index 76% rename from core/src/io/anuke/mindustry/resource/Recipe.java rename to core/src/io/anuke/mindustry/type/Recipe.java index a21b3679e4..7f9a0c99d3 100644 --- a/core/src/io/anuke/mindustry/resource/Recipe.java +++ b/core/src/io/anuke/mindustry/type/Recipe.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.resource; +package io.anuke.mindustry.type; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.ObjectMap; @@ -11,20 +11,20 @@ public class Recipe { public final int id; public final Block result; - public final ItemStack[] requirements; - public final Section section; + public final io.anuke.mindustry.type.ItemStack[] requirements; + public final io.anuke.mindustry.type.Section section; public final float cost; public boolean desktopOnly = false, debugOnly = false; - public Recipe(Section section, Block result, ItemStack... requirements){ + public Recipe(io.anuke.mindustry.type.Section section, Block result, io.anuke.mindustry.type.ItemStack... requirements){ this.id = lastid ++; this.result = result; this.requirements = requirements; this.section = section; float timeToPlace = 0f; - for(ItemStack stack : requirements){ + for(io.anuke.mindustry.type.ItemStack stack : requirements){ timeToPlace += stack.amount * stack.item.cost; } @@ -44,7 +44,7 @@ public class Recipe { return this; } - public static Array getBySection(Section section, Array r){ + public static Array getBySection(io.anuke.mindustry.type.Section section, Array r){ for(Recipe recipe : allRecipes){ if(recipe.section == section ) { r.add(recipe); diff --git a/core/src/io/anuke/mindustry/resource/Section.java b/core/src/io/anuke/mindustry/type/Section.java similarity index 72% rename from core/src/io/anuke/mindustry/resource/Section.java rename to core/src/io/anuke/mindustry/type/Section.java index 34747cd099..98f0342167 100644 --- a/core/src/io/anuke/mindustry/resource/Section.java +++ b/core/src/io/anuke/mindustry/type/Section.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.resource; +package io.anuke.mindustry.type; public enum Section{ weapon, production, distribution, liquid, power, defense, crafting, units diff --git a/core/src/io/anuke/mindustry/resource/Upgrade.java b/core/src/io/anuke/mindustry/type/Upgrade.java similarity index 95% rename from core/src/io/anuke/mindustry/resource/Upgrade.java rename to core/src/io/anuke/mindustry/type/Upgrade.java index d8ed2b421c..4c9e941b82 100644 --- a/core/src/io/anuke/mindustry/resource/Upgrade.java +++ b/core/src/io/anuke/mindustry/type/Upgrade.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.resource; +package io.anuke.mindustry.type; import com.badlogic.gdx.utils.Array; import io.anuke.ucore.util.Bundles; diff --git a/core/src/io/anuke/mindustry/resource/Weapon.java b/core/src/io/anuke/mindustry/type/Weapon.java similarity index 87% rename from core/src/io/anuke/mindustry/resource/Weapon.java rename to core/src/io/anuke/mindustry/type/Weapon.java index 1aa355b053..3417634016 100644 --- a/core/src/io/anuke/mindustry/resource/Weapon.java +++ b/core/src/io/anuke/mindustry/type/Weapon.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.resource; +package io.anuke.mindustry.type; import com.badlogic.gdx.utils.ObjectMap; import io.anuke.mindustry.Vars; @@ -16,11 +16,11 @@ import io.anuke.ucore.util.Bits; import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Translator; -public class Weapon extends Upgrade{ +public class Weapon extends io.anuke.mindustry.type.Upgrade { /**minimum cursor distance from player, fixes 'cross-eyed' shooting.*/ protected static float minPlayerDist = 20f; /**ammo type map. set with setAmmo()*/ - protected ObjectMap ammoMap = new ObjectMap<>(); + protected ObjectMap ammoMap = new ObjectMap<>(); /**shell ejection effect*/ protected Effect ejectEffect = Fx.none; /**weapon reload in frames*/ @@ -83,12 +83,12 @@ public class Weapon extends Upgrade{ p.inventory.useAmmo(); } - public AmmoType getAmmoType(Item item){ + public io.anuke.mindustry.type.AmmoType getAmmoType(io.anuke.mindustry.type.Item item){ return ammoMap.get(item); } - protected void setAmmo(AmmoType... types){ - for(AmmoType type : types){ + protected void setAmmo(io.anuke.mindustry.type.AmmoType... types){ + for(io.anuke.mindustry.type.AmmoType type : types){ ammoMap.put(type.item, type); } } @@ -96,7 +96,7 @@ public class Weapon extends Upgrade{ void shootInternal(Player p, float x, float y, float rotation, boolean left){ Angles.shotgun(shots, spacing, rotation, f -> bullet(p, x, y, f + Mathf.range(inaccuracy))); - AmmoType type = p.inventory.getAmmo(); + io.anuke.mindustry.type.AmmoType type = p.inventory.getAmmo(); tr.trns(rotation + 180f, type.recoil); diff --git a/core/src/io/anuke/mindustry/type/WeatherEvent.java b/core/src/io/anuke/mindustry/type/WeatherEvent.java new file mode 100644 index 0000000000..0d6b20336e --- /dev/null +++ b/core/src/io/anuke/mindustry/type/WeatherEvent.java @@ -0,0 +1,19 @@ +package io.anuke.mindustry.type; + +import com.badlogic.gdx.utils.Array; + +public class WeatherEvent { + private static final Array all = new Array<>(); + private static int lastid; + + public final int id; + public final String name; + + public WeatherEvent(String name){ + this.id = lastid ++; + this.name = name; + + all.add(this); + } + +} diff --git a/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java index a323f1631f..b314fbc282 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java @@ -9,7 +9,7 @@ import com.badlogic.gdx.utils.IntSet; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.entities.Player; import io.anuke.mindustry.input.InputHandler; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.ui.ItemImage; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Core; diff --git a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java index 64bfd9466c..268fc95653 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java @@ -9,10 +9,10 @@ import com.badlogic.gdx.utils.IntSet; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.entities.Player; import io.anuke.mindustry.input.InputHandler; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.ItemStack; -import io.anuke.mindustry.resource.Recipe; -import io.anuke.mindustry.resource.Section; +import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.type.ItemStack; +import io.anuke.mindustry.type.Recipe; +import io.anuke.mindustry.type.Section; import io.anuke.mindustry.ui.dialogs.FloatingDialog; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.BlockStats; @@ -62,7 +62,7 @@ public class BlocksFragment implements Fragment{ blocks = new table(){{ itemtable = new Table("button"); - itemtable.setVisible(() -> input.recipe == null && !state.mode.infiniteResources); + itemtable.setVisible(() -> false); itemtable.update(() -> { int[] items = tmpItems; for(int i = 0; i < items.length; i ++){ diff --git a/core/src/io/anuke/mindustry/world/BaseBlock.java b/core/src/io/anuke/mindustry/world/BaseBlock.java index 9eb12c4178..6a2f5cd055 100644 --- a/core/src/io/anuke/mindustry/world/BaseBlock.java +++ b/core/src/io/anuke/mindustry/world/BaseBlock.java @@ -4,8 +4,8 @@ import com.badlogic.gdx.math.GridPoint2; import io.anuke.mindustry.content.fx.EnvironmentFx; import io.anuke.mindustry.entities.Unit; import io.anuke.mindustry.entities.effect.Puddle; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.type.Liquid; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Timers; import io.anuke.ucore.util.Mathf; diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index d96810fba8..5d0307bdde 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -17,9 +17,9 @@ import io.anuke.mindustry.graphics.Layer; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.NetEvents; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.ItemStack; -import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.type.ItemStack; +import io.anuke.mindustry.type.Liquid; import io.anuke.ucore.core.Timers; import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Hue; diff --git a/core/src/io/anuke/mindustry/world/Build.java b/core/src/io/anuke/mindustry/world/Build.java index ea7416a64e..fa21fddd07 100644 --- a/core/src/io/anuke/mindustry/world/Build.java +++ b/core/src/io/anuke/mindustry/world/Build.java @@ -7,7 +7,7 @@ import io.anuke.mindustry.content.blocks.Blocks; import io.anuke.mindustry.content.fx.Fx; import io.anuke.mindustry.entities.Units; import io.anuke.mindustry.game.Team; -import io.anuke.mindustry.resource.Recipe; +import io.anuke.mindustry.type.Recipe; import io.anuke.mindustry.world.blocks.types.BuildBlock.BuildEntity; import io.anuke.ucore.core.Effects; import io.anuke.ucore.entities.Entities; @@ -26,7 +26,6 @@ public class Build { if(tile == null) return null; Block block = tile.isLinked() ? tile.getLinked().block() : tile.block(); - Recipe result = Recipe.getByResult(block); //todo add break results to core inventory @@ -59,9 +58,7 @@ public class Build { Block sub = Block.getByName("build" + result.size); tile.setBlock(sub, rotation); - tile.entity().result = result; - tile.entity().recipe = recipe; - tile.entity().stacks = recipe.requirements; + tile.entity().set(recipe); tile.setTeam(team); if(result.isMultiblock()){ diff --git a/core/src/io/anuke/mindustry/world/ItemBuffer.java b/core/src/io/anuke/mindustry/world/ItemBuffer.java index 5f23f4714e..fa0ba89eb5 100644 --- a/core/src/io/anuke/mindustry/world/ItemBuffer.java +++ b/core/src/io/anuke/mindustry/world/ItemBuffer.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.world; import com.badlogic.gdx.utils.NumberUtils; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.ucore.core.Timers; import io.anuke.ucore.util.Bits; diff --git a/core/src/io/anuke/mindustry/world/Tile.java b/core/src/io/anuke/mindustry/world/Tile.java index b8a3944cdc..442c7c17e2 100644 --- a/core/src/io/anuke/mindustry/world/Tile.java +++ b/core/src/io/anuke/mindustry/world/Tile.java @@ -6,7 +6,7 @@ import com.badlogic.gdx.utils.reflect.ClassReflection; import io.anuke.mindustry.content.blocks.Blocks; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.game.Team; -import io.anuke.mindustry.resource.Recipe; +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; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/BlockPart.java b/core/src/io/anuke/mindustry/world/blocks/types/BlockPart.java index b97dd17d2f..7968d3162c 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/BlockPart.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/BlockPart.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.world.blocks.types; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/BuildBlock.java b/core/src/io/anuke/mindustry/world/blocks/types/BuildBlock.java index 124aac1975..ecbbcd9c4e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/BuildBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/BuildBlock.java @@ -9,12 +9,12 @@ import io.anuke.mindustry.entities.effect.Rubble; import io.anuke.mindustry.game.Team; import io.anuke.mindustry.graphics.Layer; import io.anuke.mindustry.graphics.Shaders; -import io.anuke.mindustry.resource.ItemStack; -import io.anuke.mindustry.resource.Recipe; +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.Tile; +import io.anuke.mindustry.world.blocks.types.modules.InventoryModule; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Graphics; import io.anuke.ucore.graphics.Draw; @@ -33,7 +33,7 @@ public class BuildBlock extends Block { @Override public void setBars(){ - bars.replace(new BlockBar(BarType.health, true, tile -> tile.entity().progress)); + bars.replace(new BlockBar(BarType.health, true, tile -> (float)tile.entity().progress)); } @Override @@ -58,7 +58,7 @@ public class BuildBlock extends Block { for(TextureRegion region : entity.result.getBlockIcon()){ Shaders.blockbuild.region = region; - Shaders.blockbuild.progress = entity.progress; + Shaders.blockbuild.progress = (float)entity.progress; Shaders.blockbuild.apply(); Draw.rect(region, tile.drawx(), tile.drawy(), entity.result.rotate ? tile.getRotation() * 90 : 0); @@ -77,8 +77,8 @@ public class BuildBlock extends Block { @Override public void update(Tile tile) { BuildEntity entity = tile.entity(); - entity.progress -= 1f/entity.result.health/decaySpeedScl; - if(entity.progress > 1f){ + + if(entity.progress >= 1f){ Team team = tile.getTeam(); tile.setBlock(entity.result); tile.setTeam(team); @@ -86,6 +86,12 @@ public class BuildBlock extends Block { }else if(entity.progress < 0f){ entity.damage(entity.health + 1); } + + if(!entity.updated){ + entity.progress -= 1f/entity.result.health/decaySpeedScl; + } + + entity.updated = false; } @Override @@ -94,9 +100,45 @@ public class BuildBlock extends Block { } public class BuildEntity extends TileEntity{ - public Block result; public Recipe recipe; - public float progress = 0.05f; - public ItemStack[] stacks; + + private double progress = 0; + private double[] accumulator; + private Block result; + private boolean updated; + + public void addProgress(InventoryModule inventory, double amount){ + double maxProgress = amount; + + for(int i = 0; i < recipe.requirements.length; i ++){ + accumulator[i] += recipe.requirements[i].amount*amount; //add amount progressed to the accumulator + int required = (int)(accumulator[i]); //calculate items that are required now + + if(required > 0){ //if this amount is positive... + //calculate how many items it can actually use + int maxUse = Math.min(required, inventory.getItem(recipe.requirements[i].item)); + //get this as a fraction + double fraction = maxUse / (double)required; + + //move max progress down if this fraction is less than 1 + maxProgress = Math.min(maxProgress, maxProgress*fraction); + + //remove stuff that is actually used + accumulator[i] -= maxUse; + inventory.removeItem(recipe.requirements[i].item, maxUse); + } + //else, no items are required yet, so just keep going + } + + progress += maxProgress; + updated = true; + } + + public void set(Recipe recipe){ + updated = true; + this.result = recipe.result; + this.recipe = recipe; + this.accumulator = new double[recipe.requirements.length]; + } } } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java index da0f825ffa..c87db61f4b 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java @@ -7,8 +7,8 @@ import io.anuke.mindustry.content.fx.Fx; import io.anuke.mindustry.entities.*; import io.anuke.mindustry.graphics.Layer; import io.anuke.mindustry.graphics.Palette; -import io.anuke.mindustry.resource.AmmoEntry; -import io.anuke.mindustry.resource.AmmoType; +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.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/BurstTurret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/BurstTurret.java index 62474fbf27..ca939bfeb8 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/BurstTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/BurstTurret.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.blocks.types.defense.turrets; -import io.anuke.mindustry.resource.AmmoType; +import io.anuke.mindustry.type.AmmoType; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Timers; import io.anuke.ucore.util.Mathf; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/DoubleTurret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/DoubleTurret.java index 8bb2c107d9..9991011cf4 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/DoubleTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/DoubleTurret.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.blocks.types.defense.turrets; -import io.anuke.mindustry.resource.AmmoType; +import io.anuke.mindustry.type.AmmoType; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.util.Mathf; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/ItemTurret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/ItemTurret.java index 2668763c6c..cd5f07f993 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/ItemTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/ItemTurret.java @@ -1,9 +1,9 @@ package io.anuke.mindustry.world.blocks.types.defense.turrets; import com.badlogic.gdx.utils.ObjectMap; -import io.anuke.mindustry.resource.AmmoEntry; -import io.anuke.mindustry.resource.AmmoType; -import io.anuke.mindustry.resource.Item; +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.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/LaserTurret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/LaserTurret.java index 0d074f6dfd..75282011e6 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/LaserTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/LaserTurret.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.world.blocks.types.defense.turrets; import io.anuke.mindustry.content.fx.Fx; -import io.anuke.mindustry.resource.AmmoType; +import io.anuke.mindustry.type.AmmoType; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Effects.Effect; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/LiquidTurret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/LiquidTurret.java index f423f0bcaa..9f6f7f6a40 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/LiquidTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/LiquidTurret.java @@ -1,9 +1,9 @@ package io.anuke.mindustry.world.blocks.types.defense.turrets; import com.badlogic.gdx.utils.ObjectMap; -import io.anuke.mindustry.resource.AmmoType; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.Liquid; +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.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/PowerTurret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/PowerTurret.java index 6b51f881ee..c0630f9d2b 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/PowerTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/PowerTurret.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.blocks.types.defense.turrets; -import io.anuke.mindustry.resource.AmmoType; +import io.anuke.mindustry.type.AmmoType; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.types.defense.Turret; import io.anuke.ucore.util.Strings; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/BufferedItemBridge.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/BufferedItemBridge.java index 3c72651cde..c224b64b14 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/BufferedItemBridge.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/BufferedItemBridge.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.world.blocks.types.distribution; import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.ItemBuffer; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.util.Mathf; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Conduit.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Conduit.java index e59961e1ac..fa3cb0cf03 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Conduit.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Conduit.java @@ -2,7 +2,7 @@ package io.anuke.mindustry.world.blocks.types.distribution; import com.badlogic.gdx.graphics.g2d.TextureRegion; import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.resource.Liquid; +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; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Conveyor.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Conveyor.java index ef4cf0e743..2a6c5b3235 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Conveyor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Conveyor.java @@ -5,7 +5,7 @@ import io.anuke.mindustry.content.Items; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.Unit; import io.anuke.mindustry.graphics.Layer; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.BlockGroup; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/ItemBridge.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/ItemBridge.java index d5314ec6e1..03835a5c03 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/ItemBridge.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/ItemBridge.java @@ -6,7 +6,7 @@ import com.badlogic.gdx.utils.IntSet; import com.badlogic.gdx.utils.IntSet.IntSetIterator; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.graphics.Layer; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Timers; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java index 96345699eb..16672ec700 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java @@ -3,7 +3,7 @@ package io.anuke.mindustry.world.blocks.types.distribution; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.NumberUtils; import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.BlockGroup; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidBridge.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidBridge.java index cced0c8156..b07aabab99 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidBridge.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidBridge.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.blocks.types.distribution; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Timers; import io.anuke.ucore.util.Mathf; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidExtendingBridge.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidExtendingBridge.java index 0f2f6c94b4..c86abaf771 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidExtendingBridge.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidExtendingBridge.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.blocks.types.distribution; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Timers; import io.anuke.ucore.util.Mathf; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidJunction.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidJunction.java index 254f942b86..1de5a382b6 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidJunction.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidJunction.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.world.blocks.types.distribution; import com.badlogic.gdx.graphics.g2d.TextureRegion; -import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.types.LiquidBlock; import io.anuke.ucore.graphics.Draw; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/OverflowGate.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/OverflowGate.java index 111b86de5c..e1197d31db 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/OverflowGate.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/OverflowGate.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.blocks.types.distribution; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.util.Mathf; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Router.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Router.java index 27dd5d7704..b9b4ec8ba1 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Router.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Router.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.blocks.types.distribution; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.BlockGroup; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Sorter.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Sorter.java index 6355fdb047..9eef97fbf6 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Sorter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Sorter.java @@ -4,7 +4,7 @@ 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.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.BlockGroup; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Splitter.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Splitter.java index 3cd2562f0a..ede5a95e01 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Splitter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Splitter.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.blocks.types.distribution; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.BlockGroup; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Teleporter.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Teleporter.java index 51e015e0ab..b2eb1a0e88 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Teleporter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Teleporter.java @@ -6,8 +6,8 @@ import com.badlogic.gdx.utils.ObjectSet; import io.anuke.mindustry.content.Liquids; import io.anuke.mindustry.content.fx.BlockFx; import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.Liquid; +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.ucore.core.Effects; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConduit.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConduit.java index 2ee765df66..82423dbfcb 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConduit.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConduit.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.world.blocks.types.distribution; import com.badlogic.gdx.graphics.g2d.TextureRegion; -import io.anuke.mindustry.resource.Liquid; +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; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java index 6ecea280f9..7eed31a1b9 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java @@ -3,7 +3,7 @@ package io.anuke.mindustry.world.blocks.types.distribution; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.NumberUtils; import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.*; import io.anuke.ucore.core.Timers; import io.anuke.ucore.util.Bits; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/modules/InventoryModule.java b/core/src/io/anuke/mindustry/world/blocks/types/modules/InventoryModule.java index 1928a87714..9200d242fe 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/modules/InventoryModule.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/modules/InventoryModule.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.world.blocks.types.modules; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.ItemStack; +import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.world.blocks.types.BlockModule; import java.io.DataInputStream; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/modules/LiquidModule.java b/core/src/io/anuke/mindustry/world/blocks/types/modules/LiquidModule.java index 3012b891eb..8637de3261 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/modules/LiquidModule.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/modules/LiquidModule.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.world.blocks.types.modules; import io.anuke.mindustry.content.Liquids; -import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.blocks.types.BlockModule; import java.io.DataInputStream; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/power/BurnerGenerator.java b/core/src/io/anuke/mindustry/world/blocks/types/power/BurnerGenerator.java index 8901f1637b..c337ed8b78 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/power/BurnerGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/power/BurnerGenerator.java @@ -3,7 +3,7 @@ package io.anuke.mindustry.world.blocks.types.power; import com.badlogic.gdx.graphics.Color; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.content.fx.BlockFx; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.BarType; import io.anuke.mindustry.world.BlockBar; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/power/DecayGenerator.java b/core/src/io/anuke/mindustry/world/blocks/types/power/DecayGenerator.java index 36a538e300..90f9d9aa16 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/power/DecayGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/power/DecayGenerator.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.blocks.types.power; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; public class DecayGenerator extends BurnerGenerator { diff --git a/core/src/io/anuke/mindustry/world/blocks/types/power/FusionReactor.java b/core/src/io/anuke/mindustry/world/blocks/types/power/FusionReactor.java index 41c9f69fa7..5d4312999d 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/power/FusionReactor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/power/FusionReactor.java @@ -4,7 +4,7 @@ import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.g2d.TextureRegion; import io.anuke.mindustry.content.Liquids; import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.resource.Liquid; +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.ucore.core.Graphics; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/power/LiquidBurnerGenerator.java b/core/src/io/anuke/mindustry/world/blocks/types/power/LiquidBurnerGenerator.java index ff62036740..511236a609 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/power/LiquidBurnerGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/power/LiquidBurnerGenerator.java @@ -2,7 +2,7 @@ package io.anuke.mindustry.world.blocks.types.power; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.content.fx.BlockFx; -import io.anuke.mindustry.resource.Liquid; +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.ucore.core.Effects; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/power/LiquidHeatGenerator.java b/core/src/io/anuke/mindustry/world/blocks/types/power/LiquidHeatGenerator.java index 7d6181454b..974e90ffed 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/power/LiquidHeatGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/power/LiquidHeatGenerator.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.blocks.types.power; -import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.type.Liquid; public class LiquidHeatGenerator extends LiquidBurnerGenerator { diff --git a/core/src/io/anuke/mindustry/world/blocks/types/power/NuclearReactor.java b/core/src/io/anuke/mindustry/world/blocks/types/power/NuclearReactor.java index 62c13ea02a..af36a767f3 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/power/NuclearReactor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/power/NuclearReactor.java @@ -6,8 +6,8 @@ import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.effect.DamageArea; import io.anuke.mindustry.content.fx.BlockFx; import io.anuke.mindustry.content.fx.ExplosionFx; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.Liquid; +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.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/Cultivator.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Cultivator.java index 3db7e6428a..0fbc12db9c 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/Cultivator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Cultivator.java @@ -4,7 +4,7 @@ import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.g2d.TextureRegion; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.content.fx.Fx; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Timers; import io.anuke.ucore.graphics.Draw; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/Drill.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Drill.java index 4beed3b39b..b599d7b511 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/Drill.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Drill.java @@ -7,8 +7,8 @@ import io.anuke.mindustry.content.Liquids; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.content.fx.BlockFx; import io.anuke.mindustry.graphics.Layer; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.Liquid; +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.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/Fracker.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Fracker.java index c751ecc37f..ac5606992d 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/Fracker.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Fracker.java @@ -2,7 +2,7 @@ package io.anuke.mindustry.world.blocks.types.production; import com.badlogic.gdx.graphics.g2d.TextureRegion; import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Timers; import io.anuke.ucore.graphics.Draw; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/GenericCrafter.java b/core/src/io/anuke/mindustry/world/blocks/types/production/GenericCrafter.java index 84c368d649..855d0ac257 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/GenericCrafter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/GenericCrafter.java @@ -4,9 +4,9 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.content.fx.BlockFx; import io.anuke.mindustry.content.fx.Fx; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.ItemStack; -import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.type.Item; +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; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/Incinerator.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Incinerator.java index f88db5ce8b..bbcc8bc15c 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/Incinerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Incinerator.java @@ -3,8 +3,8 @@ package io.anuke.mindustry.world.blocks.types.production; import com.badlogic.gdx.graphics.Color; import io.anuke.mindustry.content.fx.BlockFx; import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.BarType; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidMixer.java b/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidMixer.java index e2b8cffffe..6a8d7b7d0e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidMixer.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/LiquidMixer.java @@ -2,8 +2,8 @@ package io.anuke.mindustry.world.blocks.types.production; import io.anuke.mindustry.content.Liquids; import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.Liquid; +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.LiquidBlock; import io.anuke.ucore.core.Timers; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/PowerCrafter.java b/core/src/io/anuke/mindustry/world/blocks/types/production/PowerCrafter.java index 9ebd09853a..b8cfd433cf 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/PowerCrafter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/PowerCrafter.java @@ -1,9 +1,9 @@ package io.anuke.mindustry.world.blocks.types.production; import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.ItemStack; -import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.type.ItemStack; +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.production.GenericCrafter.GenericCrafterEntity; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/PowerSmelter.java b/core/src/io/anuke/mindustry/world/blocks/types/production/PowerSmelter.java index 9845629718..595d2ff4fb 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/PowerSmelter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/PowerSmelter.java @@ -3,8 +3,8 @@ package io.anuke.mindustry.world.blocks.types.production; import com.badlogic.gdx.graphics.Color; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.content.fx.BlockFx; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.ItemStack; +import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.world.BarType; import io.anuke.mindustry.world.BlockBar; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/Pump.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Pump.java index ff97d8dd91..af793e06a0 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/Pump.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Pump.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.world.blocks.types.production; import com.badlogic.gdx.graphics.g2d.TextureRegion; -import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.BlockGroup; import io.anuke.mindustry.graphics.Layer; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/Separator.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Separator.java index d91c7a3bef..4a4660ec04 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/Separator.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Separator.java @@ -2,8 +2,8 @@ package io.anuke.mindustry.world.blocks.types.production; import com.badlogic.gdx.graphics.Color; import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.Liquid; +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.production.GenericCrafter.GenericCrafterEntity; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/Smelter.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Smelter.java index 23f01efb5f..07245f7382 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/Smelter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Smelter.java @@ -3,7 +3,7 @@ package io.anuke.mindustry.world.blocks.types.production; import com.badlogic.gdx.graphics.Color; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.content.fx.BlockFx; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.BarType; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.BlockBar; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/SolidPump.java b/core/src/io/anuke/mindustry/world/blocks/types/production/SolidPump.java index f8a74a9ea7..ef0c5c5c12 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/SolidPump.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/SolidPump.java @@ -5,7 +5,7 @@ import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.content.Liquids; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.content.fx.Fx; -import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Effects.Effect; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/storage/CoreBlock.java b/core/src/io/anuke/mindustry/world/blocks/types/storage/CoreBlock.java index 934738c3c0..58d8b20618 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/storage/CoreBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/storage/CoreBlock.java @@ -1,9 +1,10 @@ package io.anuke.mindustry.world.blocks.types.storage; import com.badlogic.gdx.math.Rectangle; +import io.anuke.mindustry.entities.Unit; import io.anuke.mindustry.entities.Units; import io.anuke.mindustry.net.Net; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.BlockFlag; import io.anuke.ucore.graphics.Draw; @@ -28,13 +29,22 @@ public class CoreBlock extends StorageBlock { unbreakable = true; size = 3; hasItems = true; - itemCapacity = 2000; + itemCapacity = 1000; flags = EnumSet.of(BlockFlag.resupplyPoint, BlockFlag.target); } + @Override + public int acceptStack(Item item, int amount, Tile tile, Unit source){ + if(acceptItem(item, tile, tile) && hasItems && source.team == tile.getTeam()){ + return Math.min(itemCapacity - tile.entity.items.getItem(item), amount); + }else{ + return 0; + } + } + @Override public boolean acceptItem(Item item, Tile tile, Tile source) { - return tile.entity.items.totalItems() < itemCapacity; + return tile.entity.items.items[item.id]< itemCapacity && item.material; } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/types/storage/SortedUnloader.java b/core/src/io/anuke/mindustry/world/blocks/types/storage/SortedUnloader.java index c679ba3ed4..7f09546fea 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/storage/SortedUnloader.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/storage/SortedUnloader.java @@ -4,7 +4,7 @@ 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.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.scene.style.TextureRegionDrawable; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/storage/StorageBlock.java b/core/src/io/anuke/mindustry/world/blocks/types/storage/StorageBlock.java index 30f114ade6..652d56d542 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/storage/StorageBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/storage/StorageBlock.java @@ -1,7 +1,7 @@ package io.anuke.mindustry.world.blocks.types.storage; import io.anuke.mindustry.entities.TileEntity; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/storage/Unloader.java b/core/src/io/anuke/mindustry/world/blocks/types/storage/Unloader.java index 37f7c51e78..c097dfcefc 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/storage/Unloader.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/storage/Unloader.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.blocks.types.storage; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.BlockGroup; import io.anuke.mindustry.world.Tile; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/storage/Vault.java b/core/src/io/anuke/mindustry/world/blocks/types/storage/Vault.java index 4cb76911cc..e8d1a8f99c 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/storage/Vault.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/storage/Vault.java @@ -1,6 +1,6 @@ package io.anuke.mindustry.world.blocks.types.storage; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Tile; import io.anuke.ucore.core.Timers; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/units/ResupplyPoint.java b/core/src/io/anuke/mindustry/world/blocks/types/units/ResupplyPoint.java index eb90d5cb22..f4a11db6b3 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/units/ResupplyPoint.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/units/ResupplyPoint.java @@ -6,7 +6,7 @@ import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.Unit; import io.anuke.mindustry.entities.Units; import io.anuke.mindustry.graphics.Layer; -import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.type.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.BlockFlag; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/units/UnitFactory.java b/core/src/io/anuke/mindustry/world/blocks/types/units/UnitFactory.java index cc32202952..37c38f747e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/units/UnitFactory.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/units/UnitFactory.java @@ -10,8 +10,8 @@ import io.anuke.mindustry.entities.units.BaseUnit; import io.anuke.mindustry.entities.units.UnitType; import io.anuke.mindustry.content.fx.BlockFx; import io.anuke.mindustry.graphics.Shaders; -import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.resource.ItemStack; +import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.world.BarType; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.BlockBar;