1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* 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 3 of the License, or
* (at your option) 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 ULTIMA4_CORE_CONFIG_H
#define ULTIMA4_CORE_CONFIG_H
#include "ultima/shared/conf/xml_tree.h"
#include "ultima/shared/conf/xml_node.h"
#include "ultima/shared/std/containers.h"
namespace Ultima {
namespace Ultima4 {
/* info for loading city data from *.ult and *.tlk */
#define CITY_HEIGHT 32
#define CITY_WIDTH 32
#define CITY_MAX_PERSONS 32
/* info for loading area data from *.con */
#define CON_HEIGHT 11
#define CON_WIDTH 11
/* info for loading dungeon map data from *.dng */
#define DNG_HEIGHT 8
#define DNG_WIDTH 8
/* info for loading image data from shapes.ega */
#define N_TILES 256
#define TILE_WIDTH (2 * CHAR_WIDTH)
#define TILE_HEIGHT (2 * CHAR_HEIGHT)
/* info for loading image data from charset.ega */
#define CHAR_WIDTH 8
#define CHAR_HEIGHT 8
/* some character defines */
#define CHARSET_ANKH '\0'
#define CHARSET_REDDOT '\01'
#define CHARSET_SDOOR '\02'
#define CHARSET_WALL '\03'
#define CHARSET_LADDER_UPDOWN '\04'
#define CHARSET_LADDER_DOWN '\05'
#define CHARSET_LADDER_UP '\06'
#define CHARSET_BULLET '\010'
#define CHARSET_COPYRIGHT '\011'
#define CHARSET_REGISTERED '\012'
#define CHARSET_MALE '\013'
#define CHARSET_FEMALE '\014'
#define CHARSET_HORIZBAR '\015'
#define CHARSET_ROOM '\016'
#define CHARSET_ORB '\017'
#define CHARSET_PROMPT '\020'
#define CHARSET_FLOOR '\022'
/* map viewport size (in tiles) */
#define VIEWPORT_W 11
#define VIEWPORT_H 11
/* screen border size (in pixels) */
#define BORDER_WIDTH 8
#define BORDER_HEIGHT 8
/* text area (in character units) */
#define TEXT_AREA_X 24
#define TEXT_AREA_Y 12
#define TEXT_AREA_W 16
#define TEXT_AREA_H 12
/* moons/moongates */
#define MOON_PHASES 24
#define MOON_SECONDS_PER_PHASE 4
#define MOON_CHAR 20
/* wind */
#define WIND_AREA_X 7
#define WIND_AREA_Y 23
#define WIND_AREA_W 10
#define WIND_AREA_H 1
#define WIND_SECONDS_PER_PHASE 1
class ConfigElement;
/**
* Singleton class that manages the XML configuration tree.
*/
class Config {
private:
static Config *_instance;
Shared::XMLTree _doc;
public:
static const Config *getInstance() {
return _instance;
}
public:
Config();
~Config();
ConfigElement getElement(const Common::String &name) const;
static Std::vector<Common::String> getGames();
static void setGame(const Common::String &name);
};
/**
* A single configuration element in the config tree. Right now, a
* thin wrapper around the XML DOM element.
*/
class ConfigElement {
private:
const Shared::XMLNode *_node;
Common::String _name;
public:
ConfigElement(const Shared::XMLNode *xmlNode);
ConfigElement(const ConfigElement &e);
ConfigElement();
~ConfigElement();
ConfigElement &operator=(const ConfigElement &e);
const Common::String getName() const {
return _name;
}
bool exists(const Common::String &name) const;
Common::String getString(const Common::String &name) const;
int getInt(const Common::String &name, int defaultValue = 0) const;
bool getBool(const Common::String &name) const;
int getEnum(const Common::String &name, const char *const enumValues[]) const;
Std::vector<ConfigElement> getChildren() const;
const Shared::XMLNode *getNode() const {
return _node;
}
};
} // End of namespace Ultima4
} // End of namespace Ultima
#endif
|