v0.3.1: overhauled font system, now only uses 2 bitmaps with one used in most cases.

This commit is contained in:
Evan Debenham 2015-07-19 21:40:11 -04:00 committed by Evan Debenham
parent a532a6e9e5
commit f6f10bca2e
14 changed files with 52 additions and 99 deletions

View File

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -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";

View File

@ -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;
@ -56,11 +57,9 @@ public class PixelScene extends Scene {
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() {
@ -101,37 +100,22 @@ public class PixelScene extends Scene {
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);
}
}
@ -152,47 +136,19 @@ public class PixelScene extends Scene {
float pt = size * zoom;
if (pt >= 19) {
if (pt >= 38){
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;
//at this point non integer scale values don't cause visual problems
if (scale < 2.25f)
scale = (int)scale;
}
} else if (pt >= 14) {
scale = pt / 14;
font = font25x;
scale = (int)scale;
font = fontNearest;
scale = pt / 19f;
} 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;

View File

@ -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);
}

View File

@ -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();

View File

@ -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();

View File

@ -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 );

View File

@ -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 );
}

View File

@ -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 );

View File

@ -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 );