v0.7.0: added logic to alchemy scene and recipes in prep for UI changes
This commit is contained in:
@@ -85,6 +85,22 @@ public abstract class Recipe {
|
|||||||
protected int outQuantity;
|
protected int outQuantity;
|
||||||
//***
|
//***
|
||||||
|
|
||||||
|
//gets a simple list of items based on inputs
|
||||||
|
public ArrayList<Item> getIngredients() {
|
||||||
|
ArrayList<Item> result = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
for (int i = 0; i < inputs.length; i++) {
|
||||||
|
Item ingredient = inputs[i].newInstance();
|
||||||
|
ingredient.quantity(inQuantity[i]);
|
||||||
|
result.add(ingredient);
|
||||||
|
}
|
||||||
|
} catch (Exception e){
|
||||||
|
ShatteredPixelDungeon.reportException( e );
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean testIngredients(ArrayList<Item> ingredients) {
|
public final boolean testIngredients(ArrayList<Item> ingredients) {
|
||||||
|
|
||||||
|
|||||||
+41
-7
@@ -26,6 +26,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Badges;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.Chrome;
|
import com.shatteredpixel.shatteredpixeldungeon.Chrome;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Belongings;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Recipe;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Recipe;
|
||||||
@@ -396,17 +397,36 @@ public class AlchemyScene extends PixelScene {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void populate(ArrayList<Item> toFind, Belongings inventory){
|
||||||
|
clearSlots();
|
||||||
|
|
||||||
|
int curslot = 0;
|
||||||
|
for (Item finding : toFind){
|
||||||
|
int needed = finding.quantity();
|
||||||
|
ArrayList<Item> found = inventory.getAllSimilar(finding);
|
||||||
|
while (!found.isEmpty() && needed > 0){
|
||||||
|
Item detached;
|
||||||
|
if (finding instanceof Dart) {
|
||||||
|
detached = found.get(0).detachAll(inventory.backpack);
|
||||||
|
} else {
|
||||||
|
detached = found.get(0).detach(inventory.backpack);
|
||||||
|
}
|
||||||
|
inputs[curslot].item(detached);
|
||||||
|
curslot++;
|
||||||
|
needed -= detached.quantity();
|
||||||
|
if (detached == found.get(0)) {
|
||||||
|
found.remove(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
updateState();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void destroy() {
|
public void destroy() {
|
||||||
synchronized ( inputs ) {
|
synchronized ( inputs ) {
|
||||||
|
clearSlots();
|
||||||
for (int i = 0; i < inputs.length; i++) {
|
for (int i = 0; i < inputs.length; i++) {
|
||||||
if (inputs[i] != null && inputs[i].item != null) {
|
|
||||||
if (!(inputs[i].item instanceof AlchemistsToolkit)) {
|
|
||||||
if (!inputs[i].item.collect()) {
|
|
||||||
Dungeon.level.drop(inputs[i].item, Dungeon.hero.pos);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
inputs[i] = null;
|
inputs[i] = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -421,6 +441,20 @@ public class AlchemyScene extends PixelScene {
|
|||||||
super.destroy();
|
super.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void clearSlots(){
|
||||||
|
synchronized ( inputs ) {
|
||||||
|
for (int i = 0; i < inputs.length; i++) {
|
||||||
|
if (inputs[i] != null && inputs[i].item != null) {
|
||||||
|
if (!(inputs[i].item instanceof AlchemistsToolkit)) {
|
||||||
|
if (!inputs[i].item.collect()) {
|
||||||
|
Dungeon.level.drop(inputs[i].item, Dungeon.hero.pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static class ItemButton extends Component {
|
public static class ItemButton extends Component {
|
||||||
|
|
||||||
protected NinePatch bg;
|
protected NinePatch bg;
|
||||||
|
|||||||
Reference in New Issue
Block a user