Reworked Tartaric Gems so that they contain specific demon will types (work for the future)

This commit is contained in:
WayofTime 2016-02-18 18:00:02 -05:00
parent e681085d8b
commit 035ba94976
11 changed files with 142 additions and 76 deletions

View file

@ -63,9 +63,6 @@ public class TileDemonCrucible extends TileInventory implements ITickable, IDemo
conduitList.add(newPos.subtract(getPos()));
}
}
System.out.println("List size: " + conduitList.size());
System.out.println("Current amount: " + getCurrentWill(EnumDemonWillType.DEFAULT));
}
internalCounter++;
@ -79,19 +76,22 @@ public class TileDemonCrucible extends TileInventory implements ITickable, IDemo
if (stack.getItem() instanceof IDemonWillGem)
{
IDemonWillGem gemItem = (IDemonWillGem) stack.getItem();
if (willMap.containsKey(EnumDemonWillType.DEFAULT))
for (EnumDemonWillType type : EnumDemonWillType.values())
{
double current = willMap.get(EnumDemonWillType.DEFAULT);
double fillAmount = Math.min(gemDrainRate, Math.min(current, gemItem.getMaxWill(stack) - gemItem.getWill(stack)));
if (fillAmount > 0)
if (willMap.containsKey(type))
{
gemItem.setWill(stack, fillAmount + gemItem.getWill(stack));
if (willMap.get(EnumDemonWillType.DEFAULT) - fillAmount <= 0)
double current = willMap.get(type);
double fillAmount = Math.min(gemDrainRate, Math.min(current, gemItem.getMaxWill(type, stack) - gemItem.getWill(type, stack)));
if (fillAmount > 0)
{
willMap.remove(EnumDemonWillType.DEFAULT);
} else
{
willMap.put(EnumDemonWillType.DEFAULT, willMap.get(EnumDemonWillType.DEFAULT) - fillAmount);
gemItem.setWill(type, stack, fillAmount + gemItem.getWill(type, stack));
if (willMap.get(type) - fillAmount <= 0)
{
willMap.remove(type);
} else
{
willMap.put(type, willMap.get(type) - fillAmount);
}
}
}
}
@ -105,16 +105,19 @@ public class TileDemonCrucible extends TileInventory implements ITickable, IDemo
if (stack.getItem() instanceof IDemonWillGem)
{
IDemonWillGem gemItem = (IDemonWillGem) stack.getItem();
if (!willMap.containsKey(EnumDemonWillType.DEFAULT))
for (EnumDemonWillType type : EnumDemonWillType.values())
{
willMap.put(EnumDemonWillType.DEFAULT, 0d);
}
if (!willMap.containsKey(type))
{
willMap.put(type, 0d);
}
if (willMap.get(EnumDemonWillType.DEFAULT) < maxWill)
{
double drainAmount = Math.min(maxWill - willMap.get(EnumDemonWillType.DEFAULT), gemDrainRate);
double drained = gemItem.drainWill(stack, drainAmount);
willMap.put(EnumDemonWillType.DEFAULT, willMap.get(EnumDemonWillType.DEFAULT) + drained);
if (willMap.get(type) < maxWill)
{
double drainAmount = Math.min(maxWill - willMap.get(type), gemDrainRate);
double drained = gemItem.drainWill(type, stack, drainAmount);
willMap.put(type, willMap.get(type) + drained);
}
}
}
}

View file

@ -174,7 +174,7 @@ public class TileSoulForge extends TileInventory implements ITickable, IDemonWil
if (soulStack.getItem() instanceof IDemonWillGem)
{
IDemonWillGem soul = (IDemonWillGem) soulStack.getItem();
return soul.getWill(soulStack);
return soul.getWill(EnumDemonWillType.DEFAULT, soulStack);
}
}
@ -201,7 +201,7 @@ public class TileSoulForge extends TileInventory implements ITickable, IDemonWil
if (soulStack.getItem() instanceof IDemonWillGem)
{
IDemonWillGem soul = (IDemonWillGem) soulStack.getItem();
return soul.drainWill(soulStack, requested);
return soul.drainWill(EnumDemonWillType.DEFAULT, soulStack, requested);
}
}
@ -258,8 +258,8 @@ public class TileSoulForge extends TileInventory implements ITickable, IDemonWil
IDemonWillGem willGem = (IDemonWillGem) stack.getItem();
double maxWill = willGem.getMaxWill(stack);
double current = willGem.getWill(stack);
double maxWill = willGem.getMaxWill(type, stack);
double current = willGem.getWill(type, stack);
if (!doFill)
{
@ -270,11 +270,11 @@ public class TileSoulForge extends TileInventory implements ITickable, IDemonWil
if (amount < filled)
{
willGem.setWill(stack, current + amount);
willGem.setWill(type, stack, current + amount);
filled = amount;
} else
{
willGem.setWill(stack, maxWill);
willGem.setWill(type, stack, maxWill);
}
return filled;
@ -292,7 +292,7 @@ public class TileSoulForge extends TileInventory implements ITickable, IDemonWil
IDemonWillGem willGem = (IDemonWillGem) stack.getItem();
double drained = amount;
double current = willGem.getWill(stack);
double current = willGem.getWill(type, stack);
if (current < drained)
{
drained = current;
@ -300,7 +300,7 @@ public class TileSoulForge extends TileInventory implements ITickable, IDemonWil
if (doDrain)
{
drained = willGem.drainWill(stack, drained);
drained = willGem.drainWill(type, stack, drained);
}
return drained;