Changed inventory system to use real core inventory

This commit is contained in:
Anuken
2018-04-14 11:14:00 -04:00
parent 86b7966027
commit fcf62ada8f
16 changed files with 77 additions and 118 deletions

View File

@@ -1,33 +1,27 @@
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[] items = new int[Item.getAllItems().size];
private boolean updated;
public boolean isUpdated(){
return updated;
}
public void setUpdated(boolean updated){
this.updated = updated;
}
private final int[] empty = new int[Item.getAllItems().size];
public void clearItems(){
updated = true;
Arrays.fill(items, 0);
Arrays.fill(items(), 0);
if(debug){
for(Item item : Item.getAllItems()){
if(item.material) items[item.id] = 99999;
if(item.material) items()[item.id] = 99999;
}
}else{
addItem(Items.iron, 40);
@@ -35,16 +29,15 @@ public class Inventory {
}
public void fill(){
Arrays.fill(items, 999999999);
Arrays.fill(items(), 999999999);
}
public int getAmount(Item item){
return items[item.id];
return items()[item.id];
}
public void addItem(Item item, int amount){
updated = true;
items[item.id] += amount;
items()[item.id] += amount;
}
public boolean hasItems(ItemStack[] items){
@@ -62,29 +55,42 @@ public class Inventory {
}
public boolean hasItem(ItemStack req){
updated = true;
return items[req.item.id] >= req.amount;
return items()[req.item.id] >= req.amount;
}
public boolean hasItem(Item item, int amount){
updated = true;
return items[item.id] >= amount;
return items()[item.id] >= amount;
}
public void removeItem(ItemStack req){
updated = true;
items[req.item.id] -= req.amount;
if(items[req.item.id] < 0) items[req.item.id] = 0; //prevents negative item glitches in multiplayer
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){
updated = true;
for(ItemStack req : reqs)
removeItem(req);
}
public int[] writeItems(){
return items();
}
public int[] readItems(){
return items();
}
/*
public int[] getItems(){
updated = true;
return items;
return items();
}*/
private int[] items(){
ObjectSet<TeamData> set = state.teams.getTeams(true);
if(set.size == 0) return empty;
Array<Tile> tiles = set.first().cores;
if(tiles.size == 0) return empty;
return tiles.first().entity.inventory.items;
}
}