bool CFont::LoadFontlist() { CSPList list; if (!list.Load(param.font_dir, "fonts.lst")) { fonts.push_back(new sf::Font()); // Insert an empty font, otherwise ETR will crash return false; } for (CSPList::const_iterator line = list.cbegin(); line != list.cend(); ++line) { std::string fontfile = SPStrN(*line, "file"); std::string name = SPStrN(*line, "name"); int ftidx = LoadFont(name, param.font_dir, fontfile); if (ftidx < 0) { Message("couldn't load font", name); } } return true; }
bool CKeyframe::Load(const std::string& dir, const std::string& filename) { if (loaded && loadedfile == filename) return true; CSPList list; if (list.Load(dir, filename)) { frames.resize(list.size()); std::size_t i = 0; for (CSPList::const_iterator line = list.cbegin(); line != list.cend(); ++line, i++) { frames[i].val[0] = SPFloatN(*line, "time", 0); TVector3d posit = SPVector3d(*line, "pos"); frames[i].val[1] = posit.x; frames[i].val[2] = posit.y; frames[i].val[3] = posit.z; frames[i].val[4] = SPFloatN(*line, "yaw", 0); frames[i].val[5] = SPFloatN(*line, "pitch", 0); frames[i].val[6] = SPFloatN(*line, "roll", 0); frames[i].val[7] = SPFloatN(*line, "neck", 0); frames[i].val[8] = SPFloatN(*line, "head", 0); TVector2d pp = SPVector2d(*line, "sh"); frames[i].val[9] = pp.x; frames[i].val[10] = pp.y; pp = SPVector2d(*line, "arm"); frames[i].val[11] = pp.x; frames[i].val[12] = pp.y; pp = SPVector2d(*line, "hip"); frames[i].val[13] = pp.x; frames[i].val[14] = pp.y; pp = SPVector2d(*line, "knee"); frames[i].val[15] = pp.x; frames[i].val[16] = pp.y; pp = SPVector2d(*line, "ankle"); frames[i].val[17] = pp.x; frames[i].val[18] = pp.y; } loaded = true; loadedfile = filename; return true; } else { Message("keyframe not found:", filename); loaded = false; return false; } }
bool CTexture::LoadTextureList() { FreeTextureList(); CSPList list; if (list.Load(param.tex_dir, "textures.lst")) { for (CSPList::const_iterator line = list.cbegin(); line != list.cend(); ++line) { int id = SPIntN(*line, "id", -1); CommonTex.resize(std::max(CommonTex.size(), (std::size_t)id+1)); std::string texfile = SPStrN(*line, "file"); bool rep = SPBoolN(*line, "repeat", false); if (id >= 0) { CommonTex[id] = new TTexture(); CommonTex[id]->Load(param.tex_dir, texfile, rep); } else Message("wrong texture id in textures.lst"); } } else { Message("failed to load common textures"); return false; } return true; }