blob: 40819316b342a50034221eaa5b65779f9e991deb (
plain) (
tree)
|
|
// BookContent.cpp
#include "Globals.h"
#include "BookContent.h"
#include "json/json.h"
void cBookContent::Clear()
{
m_Author.clear();
m_Title.clear();
m_Pages.clear();
}
bool cBookContent::IsEmpty(void) const
{
return (
m_Author.empty() &&
m_Title.empty() &&
m_Pages.empty()
);
}
void cBookContent::ParseFromNBT(int TagTag, cBookContent & a_BookContent, const cParsedNBT & a_NBT, bool a_SaveAsJson)
{
int AuthorTag = a_NBT.FindChildByName(TagTag, "author");
if ((AuthorTag > 0) && (a_NBT.GetType(AuthorTag) == TAG_String))
{
a_BookContent.SetAuthor(a_NBT.GetString(AuthorTag));
}
int TitleTag = a_NBT.FindChildByName(TagTag, "title");
if ((TitleTag > 0) && (a_NBT.GetType(TitleTag) == TAG_String))
{
a_BookContent.SetTitle(a_NBT.GetString(TitleTag));
}
int PagesTag = a_NBT.FindChildByName(TagTag, "pages");
if ((PagesTag > 0) && (a_NBT.GetType(PagesTag) == TAG_List))
{
for (int PageTag = a_NBT.GetFirstChild(PagesTag); PageTag >= 0; PageTag = a_NBT.GetNextSibling(PageTag))
{
if (a_NBT.GetType(PageTag) == TAG_String)
{
if (a_SaveAsJson)
{
Json::Value Page;
Page["text"] = a_NBT.GetString(PageTag);
a_BookContent.AddPage(Page.toStyledString());
}
else
{
a_BookContent.AddPage(a_NBT.GetString(PageTag));
}
}
}
}
}
void cBookContent::WriteToNBTCompound(const cBookContent & a_BookContent, cFastNBTWriter & a_Writer)
{
if (a_BookContent.IsEmpty())
{
return;
}
if (!a_BookContent.GetAuthor().empty())
{
a_Writer.AddString("author", a_BookContent.GetAuthor());
}
if (!a_BookContent.GetTitle().empty())
{
a_Writer.AddString("title", a_BookContent.GetTitle());
}
a_Writer.BeginList("pages", TAG_String);
for (const auto & Page : a_BookContent.GetPages())
{
a_Writer.AddString("", Page);
}
a_Writer.EndList();
}
|