v0.2.3e: reworked night mode into a level feeling
This commit is contained in:
parent
66db278940
commit
e4d0017137
|
@ -169,8 +169,6 @@ public class Dungeon {
|
||||||
|
|
||||||
// Hero's field of view
|
// Hero's field of view
|
||||||
public static boolean[] visible = new boolean[Level.LENGTH];
|
public static boolean[] visible = new boolean[Level.LENGTH];
|
||||||
|
|
||||||
public static boolean nightMode;
|
|
||||||
|
|
||||||
public static int version;
|
public static int version;
|
||||||
|
|
||||||
|
@ -349,8 +347,6 @@ public class Dungeon {
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public static void switchLevel( final Level level, int pos ) {
|
public static void switchLevel( final Level level, int pos ) {
|
||||||
|
|
||||||
nightMode = new Date().getHours() < 7;
|
|
||||||
|
|
||||||
Dungeon.level = level;
|
Dungeon.level = level;
|
||||||
Actor.init();
|
Actor.init();
|
||||||
|
|
||||||
|
|
|
@ -382,7 +382,7 @@ public abstract class Mob extends Char {
|
||||||
Badges.validateMonstersSlain();
|
Badges.validateMonstersSlain();
|
||||||
Statistics.qualifiedForNoKilling = false;
|
Statistics.qualifiedForNoKilling = false;
|
||||||
|
|
||||||
if (Dungeon.nightMode) {
|
if (Dungeon.level.feeling == Feeling.DARK) {
|
||||||
Statistics.nightHunt++;
|
Statistics.nightHunt++;
|
||||||
} else {
|
} else {
|
||||||
Statistics.nightHunt = 0;
|
Statistics.nightHunt = 0;
|
||||||
|
|
|
@ -42,6 +42,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Generator;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Heap;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Stylus;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Stylus;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.Torch;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor;
|
import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.AlchemistsToolkit;
|
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.AlchemistsToolkit;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose;
|
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose;
|
||||||
|
@ -84,7 +85,8 @@ public abstract class Level implements Bundlable {
|
||||||
NONE,
|
NONE,
|
||||||
CHASM,
|
CHASM,
|
||||||
WATER,
|
WATER,
|
||||||
GRASS
|
GRASS,
|
||||||
|
DARK
|
||||||
};
|
};
|
||||||
|
|
||||||
public static final int WIDTH = 32;
|
public static final int WIDTH = 32;
|
||||||
|
@ -172,6 +174,7 @@ public abstract class Level implements Bundlable {
|
||||||
private static final String MOBS = "mobs";
|
private static final String MOBS = "mobs";
|
||||||
private static final String BLOBS = "blobs";
|
private static final String BLOBS = "blobs";
|
||||||
private static final String FALLING = "falling";
|
private static final String FALLING = "falling";
|
||||||
|
private static final String FEELING = "feeling";
|
||||||
|
|
||||||
public void create() {
|
public void create() {
|
||||||
|
|
||||||
|
@ -240,6 +243,11 @@ public abstract class Level implements Bundlable {
|
||||||
case 2:
|
case 2:
|
||||||
feeling = Feeling.GRASS;
|
feeling = Feeling.GRASS;
|
||||||
break;
|
break;
|
||||||
|
case 3:
|
||||||
|
feeling = Feeling.DARK;
|
||||||
|
addItemToSpawn(new Torch());
|
||||||
|
viewDistance = (int)Math.ceil(viewDistance/3f);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -330,6 +338,10 @@ public abstract class Level implements Bundlable {
|
||||||
}
|
}
|
||||||
|
|
||||||
fallingItems = (ArrayList)bundle.getCollection( FALLING );
|
fallingItems = (ArrayList)bundle.getCollection( FALLING );
|
||||||
|
|
||||||
|
feeling = bundle.getEnum( FEELING, Feeling.class );
|
||||||
|
if (feeling == Feeling.DARK)
|
||||||
|
viewDistance = (int)Math.ceil(viewDistance/3f);
|
||||||
|
|
||||||
buildFlagMaps();
|
buildFlagMaps();
|
||||||
cleanWalls();
|
cleanWalls();
|
||||||
|
@ -348,6 +360,7 @@ public abstract class Level implements Bundlable {
|
||||||
bundle.put( MOBS, mobs );
|
bundle.put( MOBS, mobs );
|
||||||
bundle.put( BLOBS, blobs.values() );
|
bundle.put( BLOBS, blobs.values() );
|
||||||
bundle.put( FALLING, fallingItems);
|
bundle.put( FALLING, fallingItems);
|
||||||
|
bundle.put( FEELING, feeling );
|
||||||
}
|
}
|
||||||
|
|
||||||
public int tunnelTile() {
|
public int tunnelTile() {
|
||||||
|
@ -435,7 +448,7 @@ public abstract class Level implements Bundlable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
spend( Dungeon.nightMode || Statistics.amuletObtained ? TIME_TO_RESPAWN / 2 : TIME_TO_RESPAWN );
|
spend( Dungeon.level.feeling == Feeling.DARK || Statistics.amuletObtained ? TIME_TO_RESPAWN / 2 : TIME_TO_RESPAWN );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -73,11 +73,11 @@ public class GameScene extends PixelScene {
|
||||||
|
|
||||||
private static final String TXT_WELCOME = "Welcome to the level %d of Pixel Dungeon!";
|
private static final String TXT_WELCOME = "Welcome to the level %d of Pixel Dungeon!";
|
||||||
private static final String TXT_WELCOME_BACK = "Welcome back to the level %d of Pixel Dungeon!";
|
private static final String TXT_WELCOME_BACK = "Welcome back to the level %d of Pixel Dungeon!";
|
||||||
private static final String TXT_NIGHT_MODE = "Be cautious, since the dungeon is even more dangerous at night!";
|
|
||||||
|
|
||||||
private static final String TXT_CHASM = "Your steps echo across the dungeon.";
|
private static final String TXT_CHASM = "Your steps echo across the dungeon.";
|
||||||
private static final String TXT_WATER = "You hear water splashing around you.";
|
private static final String TXT_WATER = "You hear water splashing around you.";
|
||||||
private static final String TXT_GRASS = "The smell of vegetation is thick in the air.";
|
private static final String TXT_GRASS = "The smell of vegetation is thick in the air.";
|
||||||
|
private static final String TXT_DARK = "You can hear enemies moving in the darkness...";
|
||||||
private static final String TXT_SECRETS = "The atmosphere hints that this floor hides many secrets.";
|
private static final String TXT_SECRETS = "The atmosphere hints that this floor hides many secrets.";
|
||||||
|
|
||||||
static GameScene scene;
|
static GameScene scene;
|
||||||
|
@ -240,16 +240,16 @@ public class GameScene extends PixelScene {
|
||||||
case GRASS:
|
case GRASS:
|
||||||
GLog.w( TXT_GRASS );
|
GLog.w( TXT_GRASS );
|
||||||
break;
|
break;
|
||||||
|
case DARK:
|
||||||
|
GLog.w( TXT_DARK );
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
if (Dungeon.level instanceof RegularLevel &&
|
if (Dungeon.level instanceof RegularLevel &&
|
||||||
((RegularLevel)Dungeon.level).secretDoors > Random.IntRange( 3, 4 )) {
|
((RegularLevel)Dungeon.level).secretDoors > Random.IntRange( 3, 4 )) {
|
||||||
GLog.w( TXT_SECRETS );
|
GLog.w( TXT_SECRETS );
|
||||||
}
|
}
|
||||||
if (Dungeon.nightMode && !Dungeon.bossLevel()) {
|
|
||||||
GLog.w( TXT_NIGHT_MODE );
|
|
||||||
}
|
|
||||||
|
|
||||||
busy = new BusyIndicator();
|
busy = new BusyIndicator();
|
||||||
busy.camera = uiCamera;
|
busy.camera = uiCamera;
|
||||||
busy.x = 1;
|
busy.x = 1;
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
package com.shatteredpixel.shatteredpixeldungeon.scenes;
|
package com.shatteredpixel.shatteredpixeldungeon.scenes;
|
||||||
|
|
||||||
import java.nio.FloatBuffer;
|
import java.nio.FloatBuffer;
|
||||||
|
import java.util.Calendar;
|
||||||
|
|
||||||
import com.watabou.gltextures.Gradient;
|
import com.watabou.gltextures.Gradient;
|
||||||
import com.watabou.gltextures.SmartTexture;
|
import com.watabou.gltextures.SmartTexture;
|
||||||
|
@ -82,7 +83,7 @@ public class SurfaceScene extends PixelScene {
|
||||||
window.camera = viewport;
|
window.camera = viewport;
|
||||||
add( window );
|
add( window );
|
||||||
|
|
||||||
boolean dayTime = !Dungeon.nightMode;
|
boolean dayTime = Calendar.getInstance().get(Calendar.HOUR_OF_DAY) >= 7;
|
||||||
|
|
||||||
Sky sky = new Sky( dayTime );
|
Sky sky = new Sky( dayTime );
|
||||||
sky.scale.set( WIDTH, HEIGHT );
|
sky.scale.set( WIDTH, HEIGHT );
|
||||||
|
|
Loading…
Reference in New Issue
Block a user