Bläddra i källkod

Updated font prototype so spacing is correctly loaded and used.

Eiyeron Fulmincendii 9 år sedan
förälder
incheckning
569a2157dd
4 ändrade filer med 7 tillägg och 4 borttagningar
  1. BIN
      data/out.wrf
  2. 2 1
      src/map/StateMap.cpp
  3. 4 3
      src/render/Font.cpp
  4. 1 0
      src/render/Font.h

BIN
data/out.wrf


+ 2 - 1
src/map/StateMap.cpp

@@ -47,6 +47,7 @@ void StateMap::print_haeccity(const char *str, unsigned x, unsigned y,
     for (unsigned i = 0; str[i] && x < 320; i++)
     {
         unsigned char c = str[i];
+        if(c == 32) {x += txt.space_width; continue;}
         // printf("%c = %d\n", c, c);
         if (must_tint)
             putchar_haeccity_tint(c, x, y, col);
@@ -59,7 +60,7 @@ void StateMap::print_haeccity(const char *str, unsigned x, unsigned y,
 // TODO : We definitely need a Resource Manager
 StateMap::StateMap(int x, int y, Map &map)
     : camera(x, y), map(map), data("data/out.wrf"),
-      tex_haeccity(data.get("t_haecci")), txt(tex_haeccity, data.get("f_haecci"))
+      tex_haeccity(data.get("t_haeccity")), txt(tex_haeccity, data.get("f_haeccity"))
 {
 }
 

+ 4 - 3
src/render/Font.cpp

@@ -8,7 +8,7 @@ using WalrusRPG::Font::CharacterParameters;
 using WalrusRPG::Graphics::Texture;
 
 Font::Font(Texture& font_tex, WalrusRPG::PIAF::File font_config)
-	: font_tex(font_tex)
+	: baseline(0), space_width(1), font_tex(font_tex)
 {
 	const uint8_t* ptr = font_config.get();
 	// TODO : parse file
@@ -26,10 +26,11 @@ Font::Font(Texture& font_tex, WalrusRPG::PIAF::File font_config)
 		// printf("Bad checksum : %x != %x\n", expected_checksum, calculated_checksum);
 	}
 
-	baseline = read_big_endian_value<uint8_t>(&ptr[8]);
+	baseline = read_big_endian_value<uint8_t>(&ptr[12]);
+	space_width = read_big_endian_value<uint32_t>(&ptr[20]);
 	for (int i = 0; i < 256; ++i)
 	{
-		const uint8_t* current_char = ptr + 16 + (6*sizeof(uint16_t))*i;
+		const uint8_t* current_char = ptr + 24 + (6*sizeof(uint16_t))*i;
 		chars[i].dimensions.x = read_big_endian_value<int16_t>(current_char);
 		chars[i].dimensions.y = read_big_endian_value<int16_t>(current_char+2);
 		chars[i].dimensions.width = read_big_endian_value<uint16_t>(current_char+4);

+ 1 - 0
src/render/Font.h

@@ -23,6 +23,7 @@ namespace WalrusRPG
 
 		public:
 		 uint8_t baseline;
+		 uint8_t space_width;
 		 CharacterParameters chars[256];
 		 WalrusRPG::Graphics::Texture& font_tex;