Files
2026-02-02 04:50:13 +01:00

147 lines
3.5 KiB
C++

/* 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 ULTIMA8_GAMES_GAMEDATA_H
#define ULTIMA8_GAMES_GAMEDATA_H
#include "ultima/shared/std/containers.h"
#include "ultima/shared/std/string.h"
#include "ultima/ultima8/gfx/frame_id.h"
namespace Ultima {
namespace Ultima8 {
class RawArchive;
class MainShapeArchive;
class FontShapeArchive;
class GumpShapeArchive;
class ShapeArchive;
class Usecode;
class MapGlob;
class Shape;
class MusicFlex;
class WpnOvlayDat;
class NPCDat;
class CombatDat;
class FireType;
class ShapeFrame;
class WeaselDat;
class SoundFlex;
class SpeechFlex;
struct GameInfo;
class GameData {
public:
GameData(GameInfo *gameinfo);
~GameData();
static GameData *get_instance() {
return _gameData;
}
void loadU8Data();
void loadRemorseData();
void setupFontOverrides();
Usecode *getMainUsecode() const {
return _mainUsecode;
}
MainShapeArchive *getMainShapes() const {
return _mainShapes;
}
RawArchive *getFixed() const {
return _fixed;
}
MapGlob *getGlob(uint32 glob) const;
FontShapeArchive *getFonts() const {
return _fonts;
}
GumpShapeArchive *getGumps() const {
return _gumps;
}
Shape *getMouse() const {
return _mouse;
}
MusicFlex *getMusic() const {
return _music;
}
WpnOvlayDat *getWeaponOverlay() const {
return _weaponOverlay;
}
SoundFlex *getSoundFlex() const {
return _soundFlex;
}
SpeechFlex *getSpeechFlex(uint32 shapenum);
ShapeArchive *getShapeFlex(uint16 flexId) const;
Shape *getShape(FrameID frameid) const;
const ShapeFrame *getFrame(FrameID frameid) const;
const NPCDat *getNPCData(uint16 entry) const;
const NPCDat *getNPCDataForShape(uint16 shapeno) const;
const CombatDat *getCombatDat(uint16 entry) const;
const FireType *getFireType(uint16 type) const;
const WeaselDat *getWeaselDat(uint16 level) const;
Std::string translate(const Std::string &text);
FrameID translate(FrameID frame);
enum ShapeFlexId {
OTHER = 0,
MAINSHAPES = 1,
GUMPS = 2
};
private:
void loadTranslation();
void setupTTFOverrides(const char *category, bool SJIS);
void setupJPOverrides();
RawArchive *_fixed;
MainShapeArchive *_mainShapes;
Usecode *_mainUsecode;
Std::vector<MapGlob *> _globs;
FontShapeArchive *_fonts;
GumpShapeArchive *_gumps;
Shape *_mouse;
MusicFlex *_music;
WpnOvlayDat *_weaponOverlay;
Std::vector<NPCDat *> _npcTable;
Std::vector<CombatDat *> _combatData;
Std::vector<WeaselDat *> _weaselData;
SoundFlex *_soundFlex;
Std::vector<SpeechFlex **> _speech;
GameInfo *_gameInfo;
static GameData *_gameData;
};
#define _TL_(x) (GameData::get_instance()->translate(x))
#define _TL_SHP_(x) (GameData::get_instance()->translate(x))
} // End of namespace Ultima8
} // End of namespace Ultima
#endif