properly add / remove things from tiles
parent
e31a164871
commit
17171f4e6e
|
|
@ -120,8 +120,7 @@ public class Tree extends WorldObject implements ITileThing, ISelectable, IWorka
|
|||
@Override
|
||||
public void onRemove() {
|
||||
Vector2i pos = getWorldPosition().xy();
|
||||
Log log = new Log(pos.x, pos.y);
|
||||
getTile().placeThing(log);
|
||||
add(new Log(pos.x, pos.y));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package xyz.valnet.hadean.gameobjects.worldobjects;
|
|||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import xyz.valnet.engine.math.Vector2i;
|
||||
import xyz.valnet.engine.math.Vector4f;
|
||||
import xyz.valnet.engine.math.Vector4i;
|
||||
import xyz.valnet.engine.scenegraph.GameObject;
|
||||
|
|
@ -42,6 +43,7 @@ public abstract class WorldObject extends GameObject {
|
|||
private void updateTileLinks(Set<Tile> tiles) {
|
||||
if(tiles == null || tiles.size() == 0) return;
|
||||
if(!(this instanceof ITileThing)) return;
|
||||
boolean inScene = inScene();
|
||||
|
||||
Set<Tile> removeTiles = new HashSet<Tile>();
|
||||
Set<Tile> addTiles = new HashSet<Tile>();
|
||||
|
|
@ -58,25 +60,41 @@ public abstract class WorldObject extends GameObject {
|
|||
|
||||
for(Tile tile : removeTiles) {
|
||||
linkedTiles.remove(tile);
|
||||
tile.remove(this);
|
||||
if(this instanceof ITileThing) {
|
||||
tile.removeThing((ITileThing) this);
|
||||
}
|
||||
}
|
||||
|
||||
for(Tile tile : addTiles) {
|
||||
linkedTiles.add(tile);
|
||||
if(this instanceof ITileThing) {
|
||||
tile.placeThing((ITileThing) this);
|
||||
}
|
||||
}
|
||||
|
||||
if(linkedTiles.size() == 0 && inScene()) {
|
||||
remove(this);
|
||||
}
|
||||
|
||||
if(linkedTiles.size() != 0 && !inScene()) {
|
||||
add(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void setPosition(Vector4i vector) {
|
||||
protected void setPosition(Vector4i vector) {
|
||||
setPosition(vector.x, vector.y, vector.z, vector.w);
|
||||
}
|
||||
|
||||
public void setPosition(int x, int y) {
|
||||
protected void setPosition(Vector2i vector) {
|
||||
setPosition(vector.x, vector.y);
|
||||
}
|
||||
|
||||
protected void setPosition(int x, int y) {
|
||||
setPosition(x, y, 1, 1);
|
||||
}
|
||||
|
||||
public void setPosition(int x, int y, int w, int h) {
|
||||
protected void setPosition(int x, int y, int w, int h) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.w = w;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package xyz.valnet.hadean.gameobjects.worldobjects.items;
|
||||
|
||||
import xyz.valnet.engine.math.Vector4f;
|
||||
import xyz.valnet.engine.math.Vector2i;
|
||||
import xyz.valnet.engine.math.Vector4i;
|
||||
import xyz.valnet.hadean.gameobjects.Job;
|
||||
import xyz.valnet.hadean.gameobjects.JobBoard;
|
||||
import xyz.valnet.hadean.gameobjects.Tile;
|
||||
|
|
@ -91,4 +92,22 @@ public abstract class Item extends WorldObject implements ISelectable, ITileThin
|
|||
public boolean matches(IItemPredicate itemPredicate) {
|
||||
return itemPredicate.matches(this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void setPosition(Vector4i vector) {
|
||||
super.setPosition(vector);
|
||||
}
|
||||
|
||||
public void setPosition(Vector2i vector) {
|
||||
super.setPosition(vector);
|
||||
}
|
||||
|
||||
public void setPosition(int x, int y) {
|
||||
super.setPosition(x, y);
|
||||
}
|
||||
|
||||
public void setPosition(int x, int y, int w, int h) {
|
||||
super.setPosition(x, y, w, h);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,9 +42,7 @@ public class Pawn extends Agent {
|
|||
|
||||
public void pickupItemByPredicate(IItemPredicate itemPredicate) {
|
||||
Item item = getTile().pickupByItemPredicate(itemPredicate);
|
||||
if(item == null) return;
|
||||
remove(item);
|
||||
inventory.add(item);
|
||||
dropoffItem(item);
|
||||
}
|
||||
|
||||
public void pickupItem(Item i) {
|
||||
|
|
@ -58,8 +56,8 @@ public class Pawn extends Agent {
|
|||
if(!inventory.contains(item)) {
|
||||
return;
|
||||
}
|
||||
inventory.remove(item);
|
||||
add(item);
|
||||
inventory.remove(add(item));
|
||||
item.setPosition(getWorldPosition().xy());
|
||||
getTile().placeThing(item);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue