v0.2.2a: refactored and tweaked placement of key items in rooms.

This commit is contained in:
Evan Debenham 2014-11-05 16:50:08 -05:00
parent fd81d67616
commit dc4232de2a
7 changed files with 74 additions and 61 deletions

View File

@ -447,16 +447,27 @@ public abstract class Level implements Bundlable {
}
}
//TODO: this results in lots of empty rooms that could otherwise have a prize, should rework, also fix typo.
public Item itemToSpanAsPrize() {
if (Random.Int( itemsToSpawn.size() + 1 ) > 0) {
Item item = Random.element( itemsToSpawn );
itemsToSpawn.remove( item );
return item;
} else {
return null;
}
}
public Item findPrizeItem(){ return findPrizeItem(null); }
public Item findPrizeItem(Class<?extends Item> match){
if (itemsToSpawn.size() == 0)
return null;
if (match == null){
Item item = Random.element(itemsToSpawn);
itemsToSpawn.remove(item);
return item;
}
for (Item item : itemsToSpawn){
if (match.isInstance(item)){
itemsToSpawn.remove( item );
return item;
}
}
return null;
}
private void buildFlagMaps() {

View File

@ -70,14 +70,11 @@ public class LaboratoryPainter extends Painter {
}
private static Item prize( Level level ) {
Item prize = level.itemToSpanAsPrize();
if (prize instanceof Potion) {
return prize;
} else if (prize != null) {
level.addItemToSpawn( prize );
}
return Generator.random( Generator.Category.POTION );
Item prize = level.findPrizeItem( Potion.class );
if (prize == null)
prize = Generator.random( Generator.Category.POTION );
return prize;
}
}

View File

@ -78,13 +78,10 @@ public class LibraryPainter extends Painter {
private static Item prize( Level level ) {
Item prize = level.itemToSpanAsPrize();
if (prize instanceof Scroll) {
return prize;
} else if (prize != null) {
level.addItemToSpawn( prize );
}
Item prize = level.findPrizeItem( Scroll.class );
if (prize == null)
prize = Generator.random( Generator.Category.SCROLL );
return Generator.random( Generator.Category.SCROLL );
return prize;
}
}

View File

@ -76,10 +76,11 @@ public class PitPainter extends Painter {
private static Item prize( Level level ) {
Item prize = level.itemToSpanAsPrize();
if (prize != null) {
return prize;
}
if (Random.Int(2) != 0){
Item prize = level.findPrizeItem();
if (prize != null)
return prize;
}
return Generator.random( Random.oneOf(
Generator.Category.POTION,

View File

@ -82,27 +82,30 @@ public class PoolPainter extends Painter {
}
private static Item prize( Level level ) {
Item prize = level.itemToSpanAsPrize();
if (prize != null) {
return prize;
}
prize = Generator.random( Random.oneOf(
Generator.Category.WEAPON,
Generator.Category.ARMOR
) );
for (int i=0; i < 4; i++) {
Item another = Generator.random( Random.oneOf(
Generator.Category.WEAPON,
Generator.Category.ARMOR
) );
if (another.level > prize.level) {
prize = another;
}
}
return prize;
Item prize;
if (Random.Int(3) != 0){
prize = level.findPrizeItem();
if (prize != null)
return prize;
}
prize = Generator.random( Random.oneOf(
Generator.Category.WEAPON,
Generator.Category.ARMOR
) );
for (int i=0; i < 4; i++) {
Item another = Generator.random( Random.oneOf(
Generator.Category.WEAPON,
Generator.Category.ARMOR
) );
if (another.level > prize.level) {
prize = another;
}
}
return prize;
}
}

View File

@ -48,11 +48,12 @@ public class StoragePainter extends Painter {
}
private static Item prize( Level level ) {
Item prize = level.itemToSpanAsPrize();
if (prize != null) {
return prize;
}
if (Random.Int(2) != 0){
Item prize = level.findPrizeItem();
if (prize != null)
return prize;
}
return Generator.random( Random.oneOf(
Generator.Category.POTION,

View File

@ -78,11 +78,14 @@ public class TrapsPainter extends Painter {
}
private static Item prize( Level level ) {
Item prize = level.itemToSpanAsPrize();
if (prize != null) {
return prize;
}
Item prize;
if (Random.Int(4) != 0){
prize = level.findPrizeItem();
if (prize != null)
return prize;
}
prize = Generator.random( Random.oneOf(
Generator.Category.WEAPON,