From 0f76e19259888f1a5a65160fbaf1dfe8b34b43ac Mon Sep 17 00:00:00 2001 From: dm1sh Date: Thu, 9 Jun 2022 19:55:09 +0300 Subject: [PATCH] Added comments for XMLLayout --- XmlLayout.cpp | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/XmlLayout.cpp b/XmlLayout.cpp index 63a4746..f90beaf 100644 --- a/XmlLayout.cpp +++ b/XmlLayout.cpp @@ -3,47 +3,47 @@ XmlLayout::XmlLayout() : path("") {} bool XmlLayout::openFile(const wxString& openPath) { - if (openPath.IsSameAs(path)) - return true; + if (openPath.IsSameAs(path) && layoutDoc.Load(openPath)) // если открыли ту же карту, что и в прошлый раз и она открывалась + return true; // можно не читать заново - if (!layoutDoc.Load(openPath)) - return false; + if (!layoutDoc.Load(openPath)) // если возникла ошибка при открытии файла + return false; // сообщаем об этом - if (layoutDoc.GetRoot() == nullptr) - return false; + if (layoutDoc.GetRoot() == nullptr) // если не валидный XML + return false; // возвращаем ошибку - return true; + return true; // всё хорошо } Dimensions XmlLayout::getDimensions() { - auto root = layoutDoc.GetRoot(); + auto root = layoutDoc.GetRoot(); // сохраняем в ссылке указатель на корневой элемент XML-документа - lx = wxAtoi(root->GetAttribute("lx")); - ly = wxAtoi(root->GetAttribute("ly")); + lx = wxAtoi(root->GetAttribute("lx")); // считываем минимальный x + ly = wxAtoi(root->GetAttribute("ly")); // считываем минимальный y - return {wxAtoi(root->GetAttribute("layers")), - wxAtoi(root->GetAttribute("ux")) + 2 - lx, - wxAtoi(root->GetAttribute("uy")) + 2 - ly}; + return {wxAtoi(root->GetAttribute("layers")), // считываем глубину карты + wxAtoi(root->GetAttribute("ux")) + 2 - lx, // считываем ширину карты - минимальный x + wxAtoi(root->GetAttribute("uy")) + 2 - ly}; // считываем высоту карты - минимальный y } void XmlLayout::readLayout(TLVec& table) { - wxXmlNode* tilePtr = layoutDoc.GetRoot()->GetChildren(); + wxXmlNode* tilePtr = layoutDoc.GetRoot()->GetChildren(); // получаем первый дочерний элемент корневого XML-элемента - int x = 0, y = 0, l = 1; + int x, y, l; while (tilePtr) { - if (tilePtr->GetName().IsSameAs("tile")) { - x = wxAtoi(tilePtr->GetAttribute("x")) - lx; - y = wxAtoi(tilePtr->GetAttribute("y")) - ly; - l = wxAtoi(tilePtr->GetAttribute("layer")) - 1; + if (tilePtr->GetName().IsSameAs("tile")) { // если это - XML-нода, описывающая позицию камня + x = wxAtoi(tilePtr->GetAttribute("x")) - lx; // считываем позицию по x и сдвигаем влево на минимальную позицию (чтобы всегла самый левый камень был в 0) + y = wxAtoi(tilePtr->GetAttribute("y")) - ly; // считываем позицию по y и сдвигаем вверх на минимальную позицию (чтобы всегла самый верхний камень был в 0) + l = wxAtoi(tilePtr->GetAttribute("layer")) - 1; // считываем координату по оси z (начиная с 0) - table[l][x][y] = FREE; + table[l][x][y] = FREE; // указываем в таблице, что в эту позицию можно поставить камень } - tilePtr = tilePtr->GetNext(); + tilePtr = tilePtr->GetNext(); // получаем новый элемент из связанного списка дочерних элементов рут-XML-ноды } } uint8_t XmlLayout::getTilesNumber() { - return wxAtoi(layoutDoc.GetRoot()->GetAttribute("tiles")); + return wxAtoi(layoutDoc.GetRoot()->GetAttribute("tiles")); // получаем общее количество используемых id (на случай, если программе подсунули карту не с 144 камнями) } \ No newline at end of file