v0.3.1: overhauled font system, now only uses 2 bitmaps with one used in most cases.
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
@ -110,11 +110,8 @@ public class Assets {
|
|||
public static final String BUFFS_LARGE = "large_buffs.png";
|
||||
public static final String SPELL_ICONS = "spell_icons.png";
|
||||
|
||||
public static final String FONTS1X = "font1x.png";
|
||||
public static final String FONTS15X = "font15x.png";
|
||||
public static final String FONTS2X = "font2x.png";
|
||||
public static final String FONTS25X = "font25x.png";
|
||||
public static final String FONTS3X = "font3x.png";
|
||||
public static final String PIXELFONT = "pixel_font.png";
|
||||
public static final String FONT = "font.png";
|
||||
|
||||
public static final String THEME = "theme.mp3";
|
||||
public static final String TUNE = "game.mp3";
|
||||
|
|
|
@ -25,6 +25,7 @@ import javax.microedition.khronos.opengles.GL10;
|
|||
import android.opengl.GLES20;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
|
||||
import com.watabou.glwrap.Texture;
|
||||
import com.watabou.input.Touchscreen;
|
||||
import com.watabou.noosa.BitmapText;
|
||||
import com.watabou.noosa.BitmapText.Font;
|
||||
|
@ -53,20 +54,18 @@ public class PixelScene extends Scene {
|
|||
public static int maxDefaultZoom = 0;
|
||||
public static float minZoom;
|
||||
public static float maxZoom;
|
||||
|
||||
|
||||
public static Camera uiCamera;
|
||||
|
||||
public static BitmapText.Font font1x;
|
||||
public static BitmapText.Font font15x;
|
||||
public static BitmapText.Font font2x;
|
||||
public static BitmapText.Font font25x;
|
||||
public static BitmapText.Font font3x;
|
||||
|
||||
|
||||
public static BitmapText.Font pixelFont;
|
||||
public static BitmapText.Font fontLinear;
|
||||
public static BitmapText.Font fontNearest;
|
||||
|
||||
@Override
|
||||
public void create() {
|
||||
|
||||
|
||||
super.create();
|
||||
|
||||
|
||||
GameScene.scene = null;
|
||||
|
||||
float minWidth, minHeight;
|
||||
|
@ -94,56 +93,41 @@ public class PixelScene extends Scene {
|
|||
|
||||
minZoom = 1;
|
||||
maxZoom = defaultZoom * 2;
|
||||
|
||||
|
||||
Camera.reset( new PixelCamera( defaultZoom ) );
|
||||
|
||||
|
||||
float uiZoom = defaultZoom;
|
||||
uiCamera = Camera.createFullscreen( uiZoom );
|
||||
Camera.add( uiCamera );
|
||||
|
||||
if (font1x == null) {
|
||||
|
||||
|
||||
if (pixelFont == null) {
|
||||
|
||||
// 3x5 (6)
|
||||
font1x = Font.colorMarked(
|
||||
BitmapCache.get( Assets.FONTS1X ), 0x00000000, BitmapText.Font.LATIN_FULL );
|
||||
font1x.baseLine = 6;
|
||||
font1x.tracking = -1;
|
||||
|
||||
// 5x8 (10)
|
||||
font15x = Font.colorMarked(
|
||||
BitmapCache.get( Assets.FONTS15X ), 12, 0x00000000, BitmapText.Font.LATIN_FULL );
|
||||
font15x.baseLine = 9;
|
||||
font15x.tracking = -1;
|
||||
|
||||
// 6x10 (12)
|
||||
font2x = Font.colorMarked(
|
||||
BitmapCache.get( Assets.FONTS2X ), 14, 0x00000000, BitmapText.Font.LATIN_FULL );
|
||||
font2x.baseLine = 11;
|
||||
font2x.tracking = -1;
|
||||
|
||||
// 7x12 (15)
|
||||
font25x = Font.colorMarked(
|
||||
BitmapCache.get( Assets.FONTS25X ), 17, 0x00000000, BitmapText.Font.LATIN_FULL );
|
||||
font25x.baseLine = 13;
|
||||
font25x.tracking = -1;
|
||||
|
||||
pixelFont = Font.colorMarked(
|
||||
BitmapCache.get( Assets.PIXELFONT), 0x00000000, BitmapText.Font.LATIN_FULL );
|
||||
pixelFont.baseLine = 6;
|
||||
pixelFont.tracking = -1;
|
||||
|
||||
// 9x15 (18)
|
||||
font3x = Font.colorMarked(
|
||||
BitmapCache.get( Assets.FONTS3X ), 22, 0x00000000, BitmapText.Font.LATIN_FULL );
|
||||
font3x.baseLine = 17;
|
||||
font3x.tracking = -2;
|
||||
fontLinear = Font.colorMarked(
|
||||
BitmapCache.get( Assets.FONT), 22, 0x00000000, BitmapText.Font.LATIN_FULL );
|
||||
fontNearest = Font.colorMarked(
|
||||
BitmapCache.get( "2", Assets.FONT), 22, 0x00000000, BitmapText.Font.LATIN_FULL );
|
||||
fontLinear.baseLine = fontNearest.baseLine = 17;
|
||||
fontLinear.tracking = fontNearest.tracking = -2;
|
||||
fontLinear.texture.filter(Texture.LINEAR, Texture.LINEAR);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
super.destroy();
|
||||
Touchscreen.event.removeAll();
|
||||
}
|
||||
|
||||
|
||||
public static BitmapText.Font font;
|
||||
public static float scale;
|
||||
|
||||
|
||||
public static void chooseFont( float size ) {
|
||||
chooseFont( size, defaultZoom );
|
||||
}
|
||||
|
@ -152,47 +136,19 @@ public class PixelScene extends Scene {
|
|||
|
||||
float pt = size * zoom;
|
||||
|
||||
if (pt >= 19) {
|
||||
|
||||
scale = pt / 19;
|
||||
if (1.5 <= scale && scale < 2) {
|
||||
font = font25x;
|
||||
scale = (int)(pt / 14);
|
||||
} else if (1.25 <= scale && scale < 1.5) {
|
||||
font = font2x;
|
||||
scale = (int)(pt / 12);
|
||||
} else {
|
||||
font = font3x;
|
||||
if (pt >= 38){
|
||||
|
||||
//at this point non integer scale values don't cause visual problems
|
||||
if (scale < 2.25f)
|
||||
scale = (int)scale;
|
||||
}
|
||||
|
||||
} else if (pt >= 14) {
|
||||
font = fontNearest;
|
||||
scale = pt / 19f;
|
||||
|
||||
scale = pt / 14;
|
||||
font = font25x;
|
||||
scale = (int)scale;
|
||||
|
||||
} else if (pt >= 12) {
|
||||
|
||||
scale = pt / 12;
|
||||
font = font2x;
|
||||
scale = (int)scale;
|
||||
|
||||
|
||||
} else if (pt >= 10) {
|
||||
|
||||
scale = pt / 10;
|
||||
font = font15x;
|
||||
scale = (int)scale;
|
||||
|
||||
font = fontLinear;
|
||||
scale = pt / 19f;
|
||||
|
||||
} else {
|
||||
|
||||
font = font1x;
|
||||
scale = Math.max( 1, (int)(pt / 7) );
|
||||
|
||||
font = pixelFont;
|
||||
scale = 1f;
|
||||
}
|
||||
|
||||
scale /= zoom;
|
||||
|
|
|
@ -240,14 +240,14 @@ public class RankingsScene extends PixelScene {
|
|||
shield = new ItemSprite( ItemSpriteSheet.TOMB, null );
|
||||
add( shield );
|
||||
|
||||
position = new BitmapText( PixelScene.font1x );
|
||||
position = new BitmapText( PixelScene.pixelFont);
|
||||
position.alpha(0.8f);
|
||||
add( position );
|
||||
|
||||
desc = createMultiline( 7 );
|
||||
add( desc );
|
||||
|
||||
depth = new BitmapText( PixelScene.font1x );
|
||||
depth = new BitmapText( PixelScene.pixelFont);
|
||||
depth.alpha(0.8f);
|
||||
|
||||
steps = new Image();
|
||||
|
@ -255,7 +255,7 @@ public class RankingsScene extends PixelScene {
|
|||
classIcon = new Image();
|
||||
add( classIcon );
|
||||
|
||||
level = new BitmapText( PixelScene.font1x );
|
||||
level = new BitmapText( PixelScene.pixelFont);
|
||||
level.alpha(0.8f);
|
||||
}
|
||||
|
||||
|
|
|
@ -150,7 +150,7 @@ public class TitleScene extends PixelScene {
|
|||
btnHighscores.setPos( w / 2, btnPlay.top() );
|
||||
}
|
||||
|
||||
BitmapText version = new BitmapText( "v " + Game.version + "", font1x );
|
||||
BitmapText version = new BitmapText( "v " + Game.version + "", pixelFont);
|
||||
version.measure();
|
||||
version.hardlight( 0xCCCCCC );
|
||||
version.x = w - version.width();
|
||||
|
|
|
@ -50,7 +50,7 @@ public class DangerIndicator extends Tag {
|
|||
protected void createChildren() {
|
||||
super.createChildren();
|
||||
|
||||
number = new BitmapText( PixelScene.font1x );
|
||||
number = new BitmapText( PixelScene.pixelFont);
|
||||
add( number );
|
||||
|
||||
icon = Icons.SKULL.get();
|
||||
|
|
|
@ -38,7 +38,7 @@ public class GoldIndicator extends Component {
|
|||
|
||||
@Override
|
||||
protected void createChildren() {
|
||||
tf = new BitmapText( PixelScene.font1x );
|
||||
tf = new BitmapText( PixelScene.pixelFont);
|
||||
tf.hardlight( 0xFFFF00 );
|
||||
add( tf );
|
||||
|
||||
|
|
|
@ -99,13 +99,13 @@ public class ItemSlot extends Button {
|
|||
icon = new ItemSprite();
|
||||
add( icon );
|
||||
|
||||
topLeft = new BitmapText( PixelScene.font1x );
|
||||
topLeft = new BitmapText( PixelScene.pixelFont);
|
||||
add( topLeft );
|
||||
|
||||
topRight = new BitmapText( PixelScene.font1x );
|
||||
topRight = new BitmapText( PixelScene.pixelFont);
|
||||
add( topRight );
|
||||
|
||||
bottomRight = new BitmapText( PixelScene.font1x );
|
||||
bottomRight = new BitmapText( PixelScene.pixelFont);
|
||||
add( bottomRight );
|
||||
}
|
||||
|
||||
|
|
|
@ -104,17 +104,17 @@ public class StatusPane extends Component {
|
|||
exp = new Image( Assets.XP_BAR );
|
||||
add( exp );
|
||||
|
||||
level = new BitmapText( PixelScene.font1x );
|
||||
level = new BitmapText( PixelScene.pixelFont);
|
||||
level.hardlight( 0xFFEBA4 );
|
||||
add( level );
|
||||
|
||||
depth = new BitmapText( Integer.toString( Dungeon.depth ), PixelScene.font1x );
|
||||
depth = new BitmapText( Integer.toString( Dungeon.depth ), PixelScene.pixelFont);
|
||||
depth.hardlight( 0xCACFC2 );
|
||||
depth.measure();
|
||||
add( depth );
|
||||
|
||||
Dungeon.hero.belongings.countIronKeys();
|
||||
keys = new BitmapText( PixelScene.font1x );
|
||||
keys = new BitmapText( PixelScene.pixelFont);
|
||||
keys.hardlight( 0xCACFC2 );
|
||||
add( keys );
|
||||
|
||||
|
|
|
@ -105,7 +105,7 @@ public class WndJournal extends Window {
|
|||
feature = PixelScene.createText( 9 );
|
||||
add( feature );
|
||||
|
||||
depth = new BitmapText( PixelScene.font1x );
|
||||
depth = new BitmapText( PixelScene.pixelFont);
|
||||
add( depth );
|
||||
|
||||
icon = Icons.get( Icons.DEPTH );
|
||||
|
|