v2.5.0: added landmark functionality for level feelings
This commit is contained in:
@@ -231,6 +231,21 @@ levels.level.statue_desc=Someone wanted to adorn this place, but failed, obvious
|
|||||||
levels.level.alchemy_desc=This pot is filled with magical water. Items can be mixed into the pot to create something new!
|
levels.level.alchemy_desc=This pot is filled with magical water. Items can be mixed into the pot to create something new!
|
||||||
levels.level.empty_well_desc=The well has run dry.
|
levels.level.empty_well_desc=The well has run dry.
|
||||||
|
|
||||||
|
levels.level$feeling.chasm_title=Chasm Floor
|
||||||
|
levels.level$feeling.water_title=Water Floor
|
||||||
|
levels.level$feeling.grass_title=Grass Floor
|
||||||
|
levels.level$feeling.dark_title=Dark Floor
|
||||||
|
levels.level$feeling.large_title=Large Floor
|
||||||
|
levels.level$feeling.traps_title=Traps Floor
|
||||||
|
levels.level$feeling.secrets_title=Secrets Floor
|
||||||
|
levels.level$feeling.chasm_desc=Your steps echo across the dungeon.
|
||||||
|
levels.level$feeling.water_desc=You hear water splashing around you.
|
||||||
|
levels.level$feeling.grass_desc=The smell of vegetation is thick in the air.
|
||||||
|
levels.level$feeling.dark_desc=You can hear enemies moving in the darkness.
|
||||||
|
levels.level$feeling.large_desc=This dungeon floor seems unusually large.
|
||||||
|
levels.level$feeling.traps_desc=The ground seems especially treacherous here.
|
||||||
|
levels.level$feeling.secrets_desc=The atmosphere hints that this floor hides many secrets.
|
||||||
|
|
||||||
levels.mininglevel.wall_desc=A smooth rock wall that's a little softer than usual. You can mine through it with your pickaxe, but it'll take some effort and increase your hunger a bit.
|
levels.mininglevel.wall_desc=A smooth rock wall that's a little softer than usual. You can mine through it with your pickaxe, but it'll take some effort and increase your hunger a bit.
|
||||||
levels.mininglevel.gold_extra_desc=You can probably mine it out with your pickaxe.
|
levels.mininglevel.gold_extra_desc=You can probably mine it out with your pickaxe.
|
||||||
levels.mininglevel.crystal_name=Crystal spike
|
levels.mininglevel.crystal_name=Crystal spike
|
||||||
|
|||||||
@@ -36,13 +36,6 @@ scenes.gamescene.warp=The walls warp and shift around you!
|
|||||||
scenes.gamescene.return=You return to floor %d of the dungeon.
|
scenes.gamescene.return=You return to floor %d of the dungeon.
|
||||||
scenes.gamescene.resurrect=You materialize somewhere on floor %d.
|
scenes.gamescene.resurrect=You materialize somewhere on floor %d.
|
||||||
scenes.gamescene.secret_hint=You're certain that there's a secret room somewhere on this floor.
|
scenes.gamescene.secret_hint=You're certain that there's a secret room somewhere on this floor.
|
||||||
scenes.gamescene.chasm=Your steps echo across the dungeon.
|
|
||||||
scenes.gamescene.water=You hear water splashing around you.
|
|
||||||
scenes.gamescene.grass=The smell of vegetation is thick in the air.
|
|
||||||
scenes.gamescene.dark=You can hear enemies moving in the darkness.
|
|
||||||
scenes.gamescene.large=This dungeon floor seems unusually large.
|
|
||||||
scenes.gamescene.traps=The ground seems especially treacherous here.
|
|
||||||
scenes.gamescene.secrets=The atmosphere hints that this floor hides many secrets.
|
|
||||||
scenes.gamescene.choose_examine=Choose Examine
|
scenes.gamescene.choose_examine=Choose Examine
|
||||||
scenes.gamescene.multiple_examine=There are multiple things of interest here, which one do you want to examine?
|
scenes.gamescene.multiple_examine=There are multiple things of interest here, which one do you want to examine?
|
||||||
scenes.gamescene.dont_know=You don't know what is there.
|
scenes.gamescene.dont_know=You don't know what is there.
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ package com.shatteredpixel.shatteredpixeldungeon.journal;
|
|||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.keys.Key;
|
import com.shatteredpixel.shatteredpixeldungeon.items.keys.Key;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.BlacksmithSprite;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.BlacksmithSprite;
|
||||||
@@ -85,7 +86,13 @@ public class Notes {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public enum Landmark {
|
public enum Landmark {
|
||||||
//a landmark for each depth type
|
CHASM_FLOOR,
|
||||||
|
WATER_FLOOR,
|
||||||
|
GRASS_FLOOR,
|
||||||
|
DARK_FLOOR,
|
||||||
|
LARGE_FLOOR,
|
||||||
|
TRAPS_FLOOR,
|
||||||
|
SECRETS_FLOOR,
|
||||||
|
|
||||||
//more special room landmarks?
|
//more special room landmarks?
|
||||||
// distant well
|
// distant well
|
||||||
@@ -124,7 +131,38 @@ public class Notes {
|
|||||||
public Image icon(){
|
public Image icon(){
|
||||||
switch (landmark){
|
switch (landmark){
|
||||||
default:
|
default:
|
||||||
return super.icon();
|
return Icons.STAIRS.get();
|
||||||
|
|
||||||
|
//TODO using a 2x bloated sprite isn't ideal..
|
||||||
|
// but I want them to visually match what's in the game scene
|
||||||
|
case CHASM_FLOOR:
|
||||||
|
Image result = Icons.DEPTH_CHASM.get();
|
||||||
|
result.scale.set(2f);
|
||||||
|
return result;
|
||||||
|
case WATER_FLOOR:
|
||||||
|
result = Icons.DEPTH_WATER.get();
|
||||||
|
result.scale.set(2f);
|
||||||
|
return result;
|
||||||
|
case GRASS_FLOOR:
|
||||||
|
result = Icons.DEPTH_GRASS.get();
|
||||||
|
result.scale.set(2f);
|
||||||
|
return result;
|
||||||
|
case DARK_FLOOR:
|
||||||
|
result = Icons.DEPTH_DARK.get();
|
||||||
|
result.scale.set(2f);
|
||||||
|
return result;
|
||||||
|
case LARGE_FLOOR:
|
||||||
|
result = Icons.DEPTH_LARGE.get();
|
||||||
|
result.scale.set(2f);
|
||||||
|
return result;
|
||||||
|
case TRAPS_FLOOR:
|
||||||
|
result = Icons.DEPTH_TRAPS.get();
|
||||||
|
result.scale.set(2f);
|
||||||
|
return result;
|
||||||
|
case SECRETS_FLOOR:
|
||||||
|
result = Icons.DEPTH_SECRETS.get();
|
||||||
|
result.scale.set(2f);
|
||||||
|
return result;
|
||||||
|
|
||||||
case WELL_OF_HEALTH:
|
case WELL_OF_HEALTH:
|
||||||
return Icons.get(Icons.WELL_HEALTH);
|
return Icons.get(Icons.WELL_HEALTH);
|
||||||
@@ -157,12 +195,30 @@ public class Notes {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String title() {
|
public String title() {
|
||||||
return landmark.title();
|
switch (landmark) {
|
||||||
|
default: landmark.title();
|
||||||
|
case CHASM_FLOOR: return Messages.get(Level.Feeling.class, "chasm_title");
|
||||||
|
case WATER_FLOOR: return Messages.get(Level.Feeling.class, "water_title");
|
||||||
|
case GRASS_FLOOR: return Messages.get(Level.Feeling.class, "grass_title");
|
||||||
|
case DARK_FLOOR: return Messages.get(Level.Feeling.class, "dark_title");
|
||||||
|
case LARGE_FLOOR: return Messages.get(Level.Feeling.class, "large_title");
|
||||||
|
case TRAPS_FLOOR: return Messages.get(Level.Feeling.class, "traps_title");
|
||||||
|
case SECRETS_FLOOR: return Messages.get(Level.Feeling.class, "secrets_title");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String desc() {
|
public String desc() {
|
||||||
return "";
|
switch (landmark) {
|
||||||
|
default: return "";
|
||||||
|
case CHASM_FLOOR: return Messages.get(Level.Feeling.class, "chasm_desc");
|
||||||
|
case WATER_FLOOR: return Messages.get(Level.Feeling.class, "water_desc");
|
||||||
|
case GRASS_FLOOR: return Messages.get(Level.Feeling.class, "grass_desc");
|
||||||
|
case DARK_FLOOR: return Messages.get(Level.Feeling.class, "dark_desc");
|
||||||
|
case LARGE_FLOOR: return Messages.get(Level.Feeling.class, "large_desc");
|
||||||
|
case TRAPS_FLOOR: return Messages.get(Level.Feeling.class, "traps_desc");
|
||||||
|
case SECRETS_FLOOR: return Messages.get(Level.Feeling.class, "secrets_desc");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -121,7 +121,15 @@ public abstract class Level implements Bundlable {
|
|||||||
DARK,
|
DARK,
|
||||||
LARGE,
|
LARGE,
|
||||||
TRAPS,
|
TRAPS,
|
||||||
SECRETS
|
SECRETS;
|
||||||
|
|
||||||
|
public String title(){
|
||||||
|
return Messages.get(this, name()+"_title");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String desc() {
|
||||||
|
return Messages.get(this, name()+"_desc");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int width;
|
protected int width;
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.trinkets.MimicTooth;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Document;
|
import com.shatteredpixel.shatteredpixeldungeon.journal.Document;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Journal;
|
import com.shatteredpixel.shatteredpixeldungeon.journal.Journal;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.journal.Notes;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.RegularLevel;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.RegularLevel;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||||
@@ -545,13 +546,34 @@ public class GameScene extends PixelScene {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (Dungeon.level.feeling) {
|
switch (Dungeon.level.feeling) {
|
||||||
case CHASM: GLog.w(Messages.get(this, "chasm")); break;
|
case CHASM:
|
||||||
case WATER: GLog.w(Messages.get(this, "water")); break;
|
GLog.w(Dungeon.level.feeling.desc());
|
||||||
case GRASS: GLog.w(Messages.get(this, "grass")); break;
|
Notes.add(Notes.Landmark.CHASM_FLOOR);
|
||||||
case DARK: GLog.w(Messages.get(this, "dark")); break;
|
break;
|
||||||
case LARGE: GLog.w(Messages.get(this, "large")); break;
|
case WATER:
|
||||||
case TRAPS: GLog.w(Messages.get(this, "traps")); break;
|
GLog.w(Dungeon.level.feeling.desc());
|
||||||
case SECRETS: GLog.w(Messages.get(this, "secrets")); break;
|
Notes.add(Notes.Landmark.WATER_FLOOR);
|
||||||
|
break;
|
||||||
|
case GRASS:
|
||||||
|
GLog.w(Dungeon.level.feeling.desc());
|
||||||
|
Notes.add(Notes.Landmark.GRASS_FLOOR);
|
||||||
|
break;
|
||||||
|
case DARK:
|
||||||
|
GLog.w(Dungeon.level.feeling.desc());
|
||||||
|
Notes.add(Notes.Landmark.DARK_FLOOR);
|
||||||
|
break;
|
||||||
|
case LARGE:
|
||||||
|
GLog.w(Dungeon.level.feeling.desc());
|
||||||
|
Notes.add(Notes.Landmark.LARGE_FLOOR);
|
||||||
|
break;
|
||||||
|
case TRAPS:
|
||||||
|
GLog.w(Dungeon.level.feeling.desc());
|
||||||
|
Notes.add(Notes.Landmark.TRAPS_FLOOR);
|
||||||
|
break;
|
||||||
|
case SECRETS:
|
||||||
|
GLog.w(Dungeon.level.feeling.desc());
|
||||||
|
Notes.add(Notes.Landmark.SECRETS_FLOOR);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Mob mob : Dungeon.level.mobs) {
|
for (Mob mob : Dungeon.level.mobs) {
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.SPDAction;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.SPDSettings;
|
import com.shatteredpixel.shatteredpixeldungeon.SPDSettings;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Document;
|
import com.shatteredpixel.shatteredpixeldungeon.journal.Document;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
|
||||||
@@ -36,6 +37,7 @@ import com.shatteredpixel.shatteredpixeldungeon.windows.WndGame;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.windows.WndJournal;
|
import com.shatteredpixel.shatteredpixeldungeon.windows.WndJournal;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.windows.WndKeyBindings;
|
import com.shatteredpixel.shatteredpixeldungeon.windows.WndKeyBindings;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.windows.WndStory;
|
import com.shatteredpixel.shatteredpixeldungeon.windows.WndStory;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.windows.WndTitledMessage;
|
||||||
import com.watabou.input.GameAction;
|
import com.watabou.input.GameAction;
|
||||||
import com.watabou.noosa.BitmapText;
|
import com.watabou.noosa.BitmapText;
|
||||||
import com.watabou.noosa.Game;
|
import com.watabou.noosa.Game;
|
||||||
@@ -84,23 +86,26 @@ public class MenuPane extends Component {
|
|||||||
depthButton = new Button(){
|
depthButton = new Button(){
|
||||||
@Override
|
@Override
|
||||||
protected String hoverText() {
|
protected String hoverText() {
|
||||||
switch (Dungeon.level.feeling) {
|
if (Dungeon.level.feeling != Level.Feeling.NONE){
|
||||||
case CHASM: return Messages.get(GameScene.class, "chasm");
|
return Dungeon.level.feeling.desc();
|
||||||
case WATER: return Messages.get(GameScene.class, "water");
|
} else {
|
||||||
case GRASS: return Messages.get(GameScene.class, "grass");
|
return null;
|
||||||
case DARK: return Messages.get(GameScene.class, "dark");
|
|
||||||
case LARGE: return Messages.get(GameScene.class, "large");
|
|
||||||
case TRAPS: return Messages.get(GameScene.class, "traps");
|
|
||||||
case SECRETS: return Messages.get(GameScene.class, "secrets");
|
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onClick() {
|
protected void onClick() {
|
||||||
super.onClick();
|
super.onClick();
|
||||||
//just open journal for now, maybe have it open landmarks after expanding that page?
|
|
||||||
GameScene.show( new WndJournal() );
|
if (Dungeon.level.feeling == Level.Feeling.NONE){
|
||||||
|
GameScene.show(new WndJournal());
|
||||||
|
} else {
|
||||||
|
Image icon = Icons.get(Dungeon.level.feeling);
|
||||||
|
icon.scale.set(2f);
|
||||||
|
GameScene.show(new WndTitledMessage(icon,
|
||||||
|
Dungeon.level.feeling.title(),
|
||||||
|
Dungeon.level.feeling.desc()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
add(depthButton);
|
add(depthButton);
|
||||||
|
|||||||
Reference in New Issue
Block a user