2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 03:47:43 +00:00

Fix SCAN state saving, clean up MLVL, add support for newer CRasterFont versions

This commit is contained in:
2017-02-08 23:37:00 -08:00
parent 8a5e0ec775
commit 7e4c82a013
6 changed files with 54 additions and 19 deletions

View File

@@ -31,7 +31,7 @@ CRasterFont::CRasterFont(urde::CInputStream& in, urde::IObjectStore& store)
u32 tmp3 = in.readUint32Big();
u32 tmp4 = in.readUint32Big();
std::string name= in.readString();
u32 txtrId = in.readUint32Big();
u32 txtrId = (version == 5 ? in.readUint64Big() : in.readUint32Big());
x30_fontInfo = CFontInfo(tmp1, tmp2, tmp3, tmp4, name.c_str());
x80_texture = store.GetObj({FOURCC('TXTR'), txtrId});
x2c_mode = EColorType(in.readUint32Big());
@@ -46,15 +46,31 @@ CRasterFont::CRasterFont(urde::CInputStream& in, urde::IObjectStore& store)
float startV = in.readFloatBig();
float endU = in.readFloatBig();
float endV = in.readFloatBig();
s32 a = in.readInt32Big();
s32 b = in.readInt32Big();
s32 c = in.readInt32Big();
s32 cellWidth = in.readInt32Big();
s32 cellHeight = in.readInt32Big();
s32 baseline = in.readInt32Big();
s32 kernStart = in.readInt32Big();
s32 layer = 0;
s32 a, b, c, cellWidth, cellHeight, baseline, kernStart;
if (version < 4)
{
a = in.readInt32Big();
b = in.readInt32Big();
c = in.readInt32Big();
cellWidth = in.readInt32Big();
cellHeight = in.readInt32Big();
baseline = in.readInt32Big();
kernStart = in.readInt32Big();
}
else
{
layer = in.readByte();
a = in.readByte();
b = in.readByte();
c = in.readByte();
cellWidth = in.readByte();
cellHeight = in.readByte();
baseline = in.readByte();
kernStart = in.readInt16Big();
}
xc_glyphs.push_back(std::make_pair(chr, CGlyph(a, b, c, startU, startV, endU, endV,
cellWidth, cellHeight, baseline, kernStart)));
cellWidth, cellHeight, baseline, kernStart, layer)));
}
std::sort(xc_glyphs.begin(), xc_glyphs.end(), [=](auto& a, auto& b) -> bool{