summaryrefslogtreecommitdiff
path: root/src/resources/db
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-09-13 19:27:47 +0300
committerAndrei Karas <akaras@inbox.ru>2016-09-13 19:27:47 +0300
commit331d1d0989acccf5247d34561d0c962f7a64adc2 (patch)
tree7b60f9e6242763b0fd810ac3270f32fe7866ad2c /src/resources/db
parentdca3de26978bf0a9d7ac9df8524c90b85f8920da (diff)
downloadmv-331d1d0989acccf5247d34561d0c962f7a64adc2.tar.gz
mv-331d1d0989acccf5247d34561d0c962f7a64adc2.tar.bz2
mv-331d1d0989acccf5247d34561d0c962f7a64adc2.tar.xz
mv-331d1d0989acccf5247d34561d0c962f7a64adc2.zip
Add basic support for networkdb.
Diffstat (limited to 'src/resources/db')
-rw-r--r--src/resources/db/networkdb.cpp65
-rw-r--r--src/resources/db/networkdb.h48
2 files changed, 113 insertions, 0 deletions
diff --git a/src/resources/db/networkdb.cpp b/src/resources/db/networkdb.cpp
new file mode 100644
index 000000000..afab56af3
--- /dev/null
+++ b/src/resources/db/networkdb.cpp
@@ -0,0 +1,65 @@
+/*
+ * The ManaPlus Client
+ * Copyright (C) 2011-2016 The ManaPlus Developers
+ *
+ * This file is part of The ManaPlus Client.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "resources/db/networkdb.h"
+
+#include "configuration.h"
+
+#include "utils/xmlutils.h"
+
+#include "resources/beingcommon.h"
+
+#include "debug.h"
+
+namespace
+{
+ bool mLoaded = false;
+ NetworkInfos mInPackets;
+} // namespace
+
+void NetworkDb::load()
+{
+ if (mLoaded)
+ unload();
+
+ loadXmlFile(paths.getStringValue("networkFile"), SkipError_false);
+ loadXmlFile(paths.getStringValue("networkPatchFile"), SkipError_true);
+ loadXmlDir("networkPatchDir", loadXmlFile);
+ mLoaded = true;
+}
+
+void NetworkDb::loadXmlFile(const std::string &fileName,
+ const SkipError skipError)
+{
+ readXmlIntMap(fileName,
+ "network",
+ "inpackets",
+ "fakepacket",
+ "id",
+ "len",
+ mInPackets,
+ skipError);
+}
+
+void NetworkDb::unload()
+{
+ mInPackets.clear();
+ mLoaded = false;
+}
diff --git a/src/resources/db/networkdb.h b/src/resources/db/networkdb.h
new file mode 100644
index 000000000..822925fa0
--- /dev/null
+++ b/src/resources/db/networkdb.h
@@ -0,0 +1,48 @@
+/*
+ * The ManaPlus Client
+ * Copyright (C) 2011-2016 The ManaPlus Developers
+ *
+ * This file is part of The ManaPlus Client.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef RESOURCES_DB_NETWORKDB_H
+#define RESOURCES_DB_NETWORKDB_H
+
+#include "enums/simpletypes/skiperror.h"
+
+#include <map>
+#include <string>
+
+typedef std::map<int32_t, int32_t> NetworkInfos;
+typedef NetworkInfos::const_iterator NetworkInfosIter;
+
+namespace NetworkDb
+{
+ /**
+ * Loads the chars data.
+ */
+ void load();
+
+ void loadXmlFile(const std::string &fileName,
+ const SkipError skipError);
+
+ /**
+ * Clear the chars data
+ */
+ void unload();
+} // namespace NetworkDb
+
+#endif // RESOURCES_DB_NETWORKDB_H