From 6ddedc955a5d04efda9b462154ccac2df4f8966a Mon Sep 17 00:00:00 2001 From: johndoe123 Date: Sat, 12 Jan 2013 00:19:20 +0000 Subject: NEVERHOOD: Merge TextSurface into FontSurface --- engines/neverhood/graphics.cpp | 82 ++++++++++++++++++++++------------------ engines/neverhood/graphics.h | 27 ++++--------- engines/neverhood/menumodule.cpp | 48 +++++++++++------------ engines/neverhood/menumodule.h | 16 ++++---- engines/neverhood/module1000.cpp | 22 +---------- engines/neverhood/module1000.h | 1 - engines/neverhood/module2200.cpp | 19 ++-------- engines/neverhood/module2200.h | 1 - 8 files changed, 88 insertions(+), 128 deletions(-) (limited to 'engines') diff --git a/engines/neverhood/graphics.cpp b/engines/neverhood/graphics.cpp index 3b456a574f..1c3769dc65 100644 --- a/engines/neverhood/graphics.cpp +++ b/engines/neverhood/graphics.cpp @@ -150,62 +150,70 @@ void ShadowSurface::draw() { // FontSurface -FontSurface::FontSurface(NeverhoodEngine *vm, NPointArray &tracking, uint16 numRows, byte firstChar, uint16 charWidth, uint16 charHeight) - : BaseSurface(vm, 0, charWidth * 16, charHeight * numRows), _tracking(tracking), _numRows(numRows), _firstChar(firstChar), - _charWidth(charWidth), _charHeight(charHeight) { -} +FontSurface::FontSurface(NeverhoodEngine *vm, NPointArray *tracking, uint charsPerRow, uint16 numRows, byte firstChar, uint16 charWidth, uint16 charHeight) + : BaseSurface(vm, 0, charWidth * charsPerRow, charHeight * numRows), _charsPerRow(charsPerRow), _numRows(numRows), + _firstChar(firstChar), _charWidth(charWidth), _charHeight(charHeight), _tracking(NULL) { + + _tracking = new NPointArray(); + *_tracking = *tracking; -void FontSurface::drawChar(BaseSurface *destSurface, int16 x, int16 y, byte chr) { - NDrawRect sourceRect; - chr -= _firstChar; - sourceRect.x = (chr % 16) * _charWidth; - sourceRect.y = (chr / 16) * _charHeight; - sourceRect.width = _charWidth; - sourceRect.height = _charHeight; - destSurface->copyFrom(_surface, x, y, sourceRect, true); } -void FontSurface::drawString(BaseSurface *destSurface, int16 x, int16 y, const byte *string) { - for (; *string != 0; string++) { - drawChar(destSurface, x, y, *string); - x += _tracking[*string - _firstChar].x; - } +FontSurface::FontSurface(NeverhoodEngine *vm, uint32 fileHash, uint charsPerRow, uint16 numRows, byte firstChar, uint16 charWidth, uint16 charHeight) + : BaseSurface(vm, 0, charWidth * charsPerRow, charHeight * numRows), _charsPerRow(charsPerRow), _numRows(numRows), + _firstChar(firstChar), _charWidth(charWidth), _charHeight(charHeight), _tracking(NULL) { + + SpriteResource fontSpriteResource(_vm); + fontSpriteResource.load2(fileHash); + drawSpriteResourceEx(fontSpriteResource, false, false, 0, 0); } -// TextSurface - -TextSurface::TextSurface(NeverhoodEngine *vm, uint32 fileHash, uint16 numRows, uint charCount, - byte firstChar, uint16 charWidth, uint16 charHeight) - : BaseSurface(vm, 0, charWidth * charCount, charHeight * numRows), - _numRows(numRows), _firstChar(firstChar), _charWidth(charWidth), _charHeight(charHeight), - _fileHash(fileHash), _charCount(charCount) { - - SpriteResource spriteResource(_vm); - spriteResource.load2(_fileHash); - drawSpriteResourceEx(spriteResource, false, false, 0, 0); +FontSurface::~FontSurface() { + delete _tracking; } -void TextSurface::drawChar(BaseSurface *destSurface, int16 x, int16 y, byte chr) { +void FontSurface::drawChar(BaseSurface *destSurface, int16 x, int16 y, byte chr) { NDrawRect sourceRect; chr -= _firstChar; - sourceRect.x = (chr % _charCount) * _charWidth; - sourceRect.y = (chr / _charCount) * _charHeight; + sourceRect.x = (chr % _charsPerRow) * _charWidth; + sourceRect.y = (chr / _charsPerRow) * _charHeight; sourceRect.width = _charWidth; sourceRect.height = _charHeight; destSurface->copyFrom(_surface, x, y, sourceRect, true); } -void TextSurface::drawString(BaseSurface *destSurface, int16 x, int16 y, const byte *string, int stringLen) { - for (; stringLen > 0; stringLen--, string++) { +void FontSurface::drawString(BaseSurface *destSurface, int16 x, int16 y, const byte *string, int stringLen) { + + if (stringLen < 0) + stringLen = strlen((const char*)string); + + for (; stringLen > 0; --stringLen, ++string) { drawChar(destSurface, x, y, *string); - x += _charWidth; + x += _tracking ? (*_tracking)[*string - _firstChar].x : _charWidth; } + } -int16 TextSurface::getStringWidth(const byte *string, int stringLen) { +int16 FontSurface::getStringWidth(const byte *string, int stringLen) { return string ? stringLen * _charWidth : 0; } +FontSurface *FontSurface::createFontSurface(NeverhoodEngine *vm, uint32 fileHash) { + FontSurface *fontSurface; + DataResource fontData(vm); + SpriteResource fontSprite(vm); + fontData.load(calcHash("asRecFont")); + uint16 numRows = fontData.getPoint(calcHash("meNumRows")).x; + uint16 firstChar = fontData.getPoint(calcHash("meFirstChar")).x; + uint16 charWidth = fontData.getPoint(calcHash("meCharWidth")).x; + uint16 charHeight = fontData.getPoint(calcHash("meCharHeight")).x; + NPointArray *tracking = fontData.getPointArray(calcHash("meTracking")); + fontSprite.load2(fileHash); + fontSurface = new FontSurface(vm, tracking, 16, numRows, firstChar, charWidth, charHeight); + fontSurface->drawSpriteResourceEx(fontSprite, false, false, 0, 0); + return fontSurface; +} + // Misc enum BitmapFlags { @@ -338,8 +346,8 @@ void unpackSpriteNormal(const byte *source, int width, int height, byte *dest, i } int calcDistance(int16 x1, int16 y1, int16 x2, int16 y2) { - int16 deltaX = ABS(x1 - x2); - int16 deltaY = ABS(y1 - y2); + const int16 deltaX = ABS(x1 - x2); + const int16 deltaY = ABS(y1 - y2); return sqrt((double)(deltaX * deltaX + deltaY * deltaY)); } diff --git a/engines/neverhood/graphics.h b/engines/neverhood/graphics.h index 65d25c04ce..a900cea10f 100644 --- a/engines/neverhood/graphics.h +++ b/engines/neverhood/graphics.h @@ -81,8 +81,6 @@ class AnimResource; class SpriteResource; class MouseCursorResource; -// NOTE: "Restore" methods aren't need in the reimplementation as they're DirectDraw-specific - class BaseSurface { public: BaseSurface(NeverhoodEngine *vm, int priority, int16 width, int16 height); @@ -131,33 +129,22 @@ protected: class FontSurface : public BaseSurface { public: - FontSurface(NeverhoodEngine *vm, NPointArray &tracking, uint16 numRows, byte firstChar, uint16 charWidth, uint16 charHeight); - void drawChar(BaseSurface *destSurface, int16 x, int16 y, byte chr); - void drawString(BaseSurface *destSurface, int16 x, int16 y, const byte *string); -protected: - NPointArray _tracking; - uint16 _numRows; - byte _firstChar; - uint16 _charWidth; - uint16 _charHeight; -}; - -class TextSurface : public BaseSurface { -public: - TextSurface(NeverhoodEngine *vm, uint32 fileHash, uint16 numRows, uint charCount, - byte firstChar, uint16 charWidth, uint16 charHeight); + FontSurface(NeverhoodEngine *vm, NPointArray *tracking, uint charsPerRow, uint16 numRows, byte firstChar, uint16 charWidth, uint16 charHeight); + FontSurface(NeverhoodEngine *vm, uint32 fileHash, uint charsPerRow, uint16 numRows, byte firstChar, uint16 charWidth, uint16 charHeight); + virtual ~FontSurface(); void drawChar(BaseSurface *destSurface, int16 x, int16 y, byte chr); - void drawString(BaseSurface *destSurface, int16 x, int16 y, const byte *string, int stringLen); + void drawString(BaseSurface *destSurface, int16 x, int16 y, const byte *string, int stringLen = -1); int16 getStringWidth(const byte *string, int stringLen); uint16 getCharWidth() const { return _charWidth; } uint16 getCharHeight() const { return _charHeight; } + static FontSurface *createFontSurface(NeverhoodEngine *vm, uint32 fileHash); protected: + uint _charsPerRow; uint16 _numRows; byte _firstChar; uint16 _charWidth; uint16 _charHeight; - uint32 _fileHash; - uint _charCount; + NPointArray *_tracking; }; // Misc diff --git a/engines/neverhood/menumodule.cpp b/engines/neverhood/menumodule.cpp index a1489fc78b..726ab91b8c 100644 --- a/engines/neverhood/menumodule.cpp +++ b/engines/neverhood/menumodule.cpp @@ -458,9 +458,9 @@ uint32 Widget::handleMessage(int messageNum, const MessageParam ¶m, Entity * TextLabelWidget::TextLabelWidget(NeverhoodEngine *vm, int16 x, int16 y, int16 itemID, WidgetScene *parentScene, int baseObjectPriority, int baseSurfacePriority, - const byte *string, int stringLen, BaseSurface *drawSurface, int16 tx, int16 ty, TextSurface *textSurface) + const byte *string, int stringLen, BaseSurface *drawSurface, int16 tx, int16 ty, FontSurface *fontSurface) : Widget(vm, x, y, itemID, parentScene, baseObjectPriority, baseSurfacePriority), - _string(string), _stringLen(stringLen), _drawSurface(drawSurface), _tx(tx), _ty(ty), _textSurface(textSurface) { + _string(string), _stringLen(stringLen), _drawSurface(drawSurface), _tx(tx), _ty(ty), _fontSurface(fontSurface) { } @@ -470,15 +470,15 @@ void TextLabelWidget::addSprite() { } int16 TextLabelWidget::getWidth() { - return _textSurface->getStringWidth(_string, _stringLen); + return _fontSurface->getStringWidth(_string, _stringLen); } int16 TextLabelWidget::getHeight() { - return _textSurface->getCharHeight(); + return _fontSurface->getCharHeight(); } void TextLabelWidget::drawString(int maxStringLength) { - _textSurface->drawString(_drawSurface, _x, _y, _string, MIN(_stringLen, maxStringLength)); + _fontSurface->drawString(_drawSurface, _x, _y, _string, MIN(_stringLen, maxStringLength)); _collisionBoundsOffset.set(_tx, _ty, getWidth(), getHeight()); updateBounds(); } @@ -499,14 +499,14 @@ void TextLabelWidget::setString(const byte *string, int stringLen) { } TextEditWidget::TextEditWidget(NeverhoodEngine *vm, int16 x, int16 y, int16 itemID, WidgetScene *parentScene, - int baseObjectPriority, int baseSurfacePriority, int maxStringLength, TextSurface *textSurface, + int baseObjectPriority, int baseSurfacePriority, int maxStringLength, FontSurface *fontSurface, uint32 fileHash, const NRect &rect) : Widget(vm, x, y, itemID, parentScene, baseObjectPriority, baseSurfacePriority), - _maxStringLength(maxStringLength), _textSurface(textSurface), _fileHash(fileHash), _rect(rect), + _maxStringLength(maxStringLength), _fontSurface(fontSurface), _fileHash(fileHash), _rect(rect), _cursorSurface(NULL), _cursorTicks(0), _cursorPos(0), _cursorFileHash(0), _cursorWidth(0), _cursorHeight(0), _modified(false) { - _maxVisibleChars = (_rect.x2 - _rect.x1) / _textSurface->getCharWidth(); + _maxVisibleChars = (_rect.x2 - _rect.x1) / _fontSurface->getCharWidth(); _cursorPos = 0; SetUpdateHandler(&TextEditWidget::update); @@ -526,8 +526,8 @@ void TextEditWidget::onClick() { if (_entryString.size() == 1) _cursorPos = 0; else { - int newCursorPos = mousePos.x / _textSurface->getCharWidth(); - if (mousePos.x % _textSurface->getCharWidth() > _textSurface->getCharWidth() / 2 && newCursorPos <= (int)_entryString.size())//### + int newCursorPos = mousePos.x / _fontSurface->getCharWidth(); + if (mousePos.x % _fontSurface->getCharWidth() > _fontSurface->getCharWidth() / 2 && newCursorPos <= (int)_entryString.size())//### ++newCursorPos; _cursorPos = MIN((int)_entryString.size(), newCursorPos); } @@ -546,9 +546,9 @@ void TextEditWidget::addSprite() { _parentScene->addSprite(this); _parentScene->addCollisionSprite(this); _surface->setVisible(true); - _textLabelWidget = new TextLabelWidget(_vm, _rect.x1, _rect.y1 + (_rect.y2 - _rect.y1 + 1 - _textSurface->getCharHeight()) / 2, + _textLabelWidget = new TextLabelWidget(_vm, _rect.x1, _rect.y1 + (_rect.y2 - _rect.y1 + 1 - _fontSurface->getCharHeight()) / 2, 0, _parentScene, _baseObjectPriority + 1, _baseSurfacePriority + 1, - (const byte*)_entryString.c_str(), _entryString.size(), _surface, _x, _y, _textSurface); + (const byte*)_entryString.c_str(), _entryString.size(), _surface, _x, _y, _fontSurface); _textLabelWidget->addSprite(); cursorSpriteResource.load2(_cursorFileHash); _cursorSurface = new BaseSurface(_vm, 0, cursorSpriteResource.getDimensions().width, cursorSpriteResource.getDimensions().height); @@ -576,7 +576,7 @@ void TextEditWidget::setCursor(uint32 cursorFileHash, int16 cursorWidth, int16 c void TextEditWidget::drawCursor() { if (_cursorSurface->getVisible() && _cursorPos >= 0 && _cursorPos <= _maxVisibleChars) { NDrawRect sourceRect(0, 0, _cursorWidth, _cursorHeight); - _surface->copyFrom(_cursorSurface->getSurface(), _rect.x1 + _cursorPos * _textSurface->getCharWidth(), + _surface->copyFrom(_cursorSurface->getSurface(), _rect.x1 + _cursorPos * _fontSurface->getCharWidth(), _rect.y1 + (_rect.y2 - _cursorHeight - _rect.y1 + 1) / 2, sourceRect, true); } else _cursorSurface->setVisible(false); @@ -677,13 +677,13 @@ uint32 TextEditWidget::handleMessage(int messageNum, const MessageParam ¶m, SavegameListBox::SavegameListBox(NeverhoodEngine *vm, int16 x, int16 y, int16 itemID, WidgetScene *parentScene, int baseObjectPriority, int baseSurfacePriority, - StringArray *savegameList, TextSurface *textSurface, uint32 bgFileHash, const NRect &rect) + StringArray *savegameList, FontSurface *fontSurface, uint32 bgFileHash, const NRect &rect) : Widget(vm, x, y, itemID, parentScene, baseObjectPriority, baseSurfacePriority), - _savegameList(savegameList), _textSurface(textSurface), _bgFileHash(bgFileHash), _rect(rect), + _savegameList(savegameList), _fontSurface(fontSurface), _bgFileHash(bgFileHash), _rect(rect), _maxStringLength(0), _firstVisibleItem(0), _lastVisibleItem(0), _currIndex(0) { - _maxVisibleItemsCount = (_rect.y2 - _rect.y1) / _textSurface->getCharHeight(); - _maxStringLength = (_rect.x2 - _rect.x1) / _textSurface->getCharWidth(); + _maxVisibleItemsCount = (_rect.y2 - _rect.y1) / _fontSurface->getCharHeight(); + _maxStringLength = (_rect.x2 - _rect.x1) / _fontSurface->getCharWidth(); } void SavegameListBox::onClick() { @@ -692,7 +692,7 @@ void SavegameListBox::onClick() { mousePos.y -= _y + _rect.y1; if (mousePos.x >= 0 && mousePos.x <= _rect.x2 - _rect.x1 && mousePos.y >= 0 && mousePos.y <= _rect.y2 - _rect.y1) { - int newIndex = _firstVisibleItem + mousePos.y / _textSurface->getCharHeight(); + int newIndex = _firstVisibleItem + mousePos.y / _fontSurface->getCharHeight(); if (newIndex <= _lastVisibleItem) { _currIndex = newIndex; refresh(); @@ -723,7 +723,7 @@ void SavegameListBox::buildItems() { const byte *string = (const byte*)savegameList[i].c_str(); int stringLen = (int)savegameList[i].size(); TextLabelWidget *label = new TextLabelWidget(_vm, itemX, itemY, i, _parentScene, _baseObjectPriority + 1, - _baseSurfacePriority + 1, string, MIN(stringLen, _maxStringLength), _surface, _x, _y, _textSurface); + _baseSurfacePriority + 1, string, MIN(stringLen, _maxStringLength), _surface, _x, _y, _fontSurface); label->addSprite(); _textLabelItems.push_back(label); } @@ -733,7 +733,7 @@ void SavegameListBox::drawItems() { for (int i = 0; i < (int)_textLabelItems.size(); ++i) { TextLabelWidget *label = _textLabelItems[i]; if (i >= _firstVisibleItem && i < _lastVisibleItem) { - label->setY(_rect.y1 + (i - _firstVisibleItem) * _textSurface->getCharHeight()); + label->setY(_rect.y1 + (i - _firstVisibleItem) * _fontSurface->getCharHeight()); label->updateBounds(); label->drawString(_maxStringLength); } else @@ -805,7 +805,7 @@ SaveGameMenu::SaveGameMenu(NeverhoodEngine *vm, Module *parentModule, StringArra static const NRect kTextEditRect(0, 0, 377, 17); static const NRect kMouseRect(50, 47, 427, 64); - _textSurface = new TextSurface(_vm, 0x2328121A, 7, 32, 32, 11, 17); + _fontSurface = new FontSurface(_vm, 0x2328121A, 32, 7, 32, 11, 17); setBackground(0x30084E25); setPalette(0x30084E25); @@ -814,11 +814,11 @@ SaveGameMenu::SaveGameMenu(NeverhoodEngine *vm, Module *parentModule, StringArra insertStaticSprite(0x1301A7EA, 200); _listBox = new SavegameListBox(_vm, 60, 142, 69/*ItemID*/, this, 1000, 1000, - _savegameList, _textSurface, 0x1115A223, kListBoxRect); + _savegameList, _fontSurface, 0x1115A223, kListBoxRect); _listBox->addSprite(); _textEditWidget = new TextEditWidget(_vm, 50, 47, 70/*ItemID*/, this, 1000, 1000, 29, - _textSurface, 0x3510A868, kTextEditRect); + _fontSurface, 0x3510A868, kTextEditRect); _textEditWidget->setCursor(0x8290AC20, 2, 13); _textEditWidget->addSprite(); setCurrWidget(_textEditWidget); @@ -835,7 +835,7 @@ SaveGameMenu::SaveGameMenu(NeverhoodEngine *vm, Module *parentModule, StringArra } SaveGameMenu::~SaveGameMenu() { - delete _textSurface; + delete _fontSurface; } void SaveGameMenu::handleEvent(int16 itemID, int eventType) { diff --git a/engines/neverhood/menumodule.h b/engines/neverhood/menumodule.h index 0f45795ab9..51c32aa878 100644 --- a/engines/neverhood/menumodule.h +++ b/engines/neverhood/menumodule.h @@ -123,7 +123,7 @@ class TextLabelWidget : public Widget { public: TextLabelWidget(NeverhoodEngine *vm, int16 x, int16 y, int16 itemID, WidgetScene *parentScene, int baseObjectPriority, int baseSurfacePriority, - const byte *string, int stringLen, BaseSurface *drawSurface, int16 tx, int16 ty, TextSurface *textSurface); + const byte *string, int stringLen, BaseSurface *drawSurface, int16 tx, int16 ty, FontSurface *fontSurface); virtual void onClick(); virtual void addSprite(); virtual int16 getWidth(); @@ -131,11 +131,11 @@ public: void drawString(int maxStringLength); void clear(); void setString(const byte *string, int stringLen); - TextSurface *getTextSurface() const { return _textSurface; } + FontSurface *getFontSurface() const { return _fontSurface; } protected: BaseSurface *_drawSurface; int16 _tx, _ty; - TextSurface *_textSurface; + FontSurface *_fontSurface; const byte *_string; int _stringLen; }; @@ -143,7 +143,7 @@ protected: class TextEditWidget : public Widget { public: TextEditWidget(NeverhoodEngine *vm, int16 x, int16 y, int16 itemID, WidgetScene *parentScene, - int baseObjectPriority, int baseSurfacePriority, int maxStringLength, TextSurface *textSurface, + int baseObjectPriority, int baseSurfacePriority, int maxStringLength, FontSurface *fontSurface, uint32 fileHash, const NRect &rect); ~TextEditWidget(); virtual void onClick(); @@ -167,7 +167,7 @@ protected: int _cursorPos; int _cursorTicks; Common::String _entryString; - TextSurface *_textSurface; + FontSurface *_fontSurface; TextLabelWidget *_textLabelWidget; BaseSurface *_cursorSurface; uint32 _cursorFileHash; @@ -181,7 +181,7 @@ class SavegameListBox : public Widget { public: SavegameListBox(NeverhoodEngine *vm, int16 x, int16 y, int16 itemID, WidgetScene *parentScene, int baseObjectPriority, int baseSurfacePriority, - StringArray *savegameList, TextSurface *textSurface, uint32 bgFileHash, const NRect &rect); + StringArray *savegameList, FontSurface *fontSurface, uint32 bgFileHash, const NRect &rect); virtual void onClick(); virtual void addSprite(); void buildItems(); @@ -200,7 +200,7 @@ protected: int _firstVisibleItem; int _lastVisibleItem; StringArray *_savegameList; - TextSurface *_textSurface; + FontSurface *_fontSurface; uint _currIndex; int _maxVisibleItemsCount; }; @@ -212,7 +212,7 @@ public: virtual void handleEvent(int16 itemID, int eventType); protected: StringArray *_savegameList; - TextSurface *_textSurface; + FontSurface *_fontSurface; SavegameListBox *_listBox; TextEditWidget *_textEditWidget; Common::String _savegameDescription; diff --git a/engines/neverhood/module1000.cpp b/engines/neverhood/module1000.cpp index 7033cafdc9..44bb778645 100644 --- a/engines/neverhood/module1000.cpp +++ b/engines/neverhood/module1000.cpp @@ -1580,7 +1580,7 @@ void Scene1005::drawTextToBackground() { const char *textStart, *textEnd; int16 y = 36; uint32 textIndex = getTextIndex(); - FontSurface *fontSurface = createFontSurface(); + FontSurface *fontSurface = FontSurface::createFontSurface(_vm, getGlobalVar(V_ENTRANCE_OPEN) ? 0x283CE401 : 0xC6604282); textResource.load(0x80283101); textStart = textResource.getString(textIndex, textEnd); while (textStart < textEnd) { @@ -1591,26 +1591,6 @@ void Scene1005::drawTextToBackground() { delete fontSurface; } -FontSurface *Scene1005::createFontSurface() { - FontSurface *fontSurface; - DataResource fontData(_vm); - SpriteResource fontSprite(_vm); - fontData.load(calcHash("asRecFont")); - uint16 numRows = fontData.getPoint(calcHash("meNumRows")).x; - uint16 firstChar = fontData.getPoint(calcHash("meFirstChar")).x; - uint16 charWidth = fontData.getPoint(calcHash("meCharWidth")).x; - uint16 charHeight = fontData.getPoint(calcHash("meCharHeight")).x; - NPointArray *tracking = fontData.getPointArray(calcHash("meTracking")); - fontSurface = new FontSurface(_vm, *tracking, numRows, firstChar, charWidth, charHeight); - if (getGlobalVar(V_ENTRANCE_OPEN)) { - fontSprite.load2(0x283CE401); - } else { - fontSprite.load2(0xC6604282); - } - fontSurface->drawSpriteResourceEx(fontSprite, false, false, 0, 0); - return fontSurface; -} - uint32 Scene1005::getTextIndex() { uint32 textIndex; textIndex = getTextIndex1(); diff --git a/engines/neverhood/module1000.h b/engines/neverhood/module1000.h index 6f73326c61..32228a20e7 100644 --- a/engines/neverhood/module1000.h +++ b/engines/neverhood/module1000.h @@ -289,7 +289,6 @@ public: protected: uint32 handleMessage(int messageNum, const MessageParam ¶m, Entity *sender); void drawTextToBackground(); - FontSurface *createFontSurface(); uint32 getTextIndex(); uint32 getTextIndex1(); uint32 getTextIndex2(); diff --git a/engines/neverhood/module2200.cpp b/engines/neverhood/module2200.cpp index 889af37852..6448955934 100644 --- a/engines/neverhood/module2200.cpp +++ b/engines/neverhood/module2200.cpp @@ -2135,8 +2135,9 @@ Scene2208::Scene2208(NeverhoodEngine *vm, Module *parentModule, int which) setPalette(0x08100289); addEntity(_palette); insertPuzzleMouse(0x0028D089, 40, 600); - - createFontSurface(); + + _fontSurface = FontSurface::createFontSurface(_vm, 0x0800090C); + _backgroundSurface = new BaseSurface(_vm, 0, 640, 480); spriteResource.load2(0x08100289); _backgroundSurface->drawSpriteResourceEx(spriteResource, false, false, 0, 0); @@ -2232,20 +2233,6 @@ uint32 Scene2208::handleMessage(int messageNum, const MessageParam ¶m, Entit return messageResult; } -void Scene2208::createFontSurface() { - DataResource fontData(_vm); - SpriteResource spriteResource(_vm); - fontData.load(calcHash("asRecFont")); - uint16 numRows = fontData.getPoint(calcHash("meNumRows")).x; - uint16 firstChar = fontData.getPoint(calcHash("meFirstChar")).x; - uint16 charWidth = fontData.getPoint(calcHash("meCharWidth")).x; - uint16 charHeight = fontData.getPoint(calcHash("meCharHeight")).x; - NPointArray *tracking = fontData.getPointArray(calcHash("meTracking")); - spriteResource.load2(0x0800090C); - _fontSurface = new FontSurface(_vm, *tracking, numRows, firstChar, charWidth, charHeight); - _fontSurface->drawSpriteResourceEx(spriteResource, false, false, 0, 0); -} - void Scene2208::drawRow(int16 rowIndex) { NDrawRect sourceRect; int16 y = (rowIndex * 48) % 528; diff --git a/engines/neverhood/module2200.h b/engines/neverhood/module2200.h index 34be267645..30cc681b40 100644 --- a/engines/neverhood/module2200.h +++ b/engines/neverhood/module2200.h @@ -336,7 +336,6 @@ protected: Common::Array _strings; void update(); uint32 handleMessage(int messageNum, const MessageParam ¶m, Entity *sender); - void createFontSurface(); void drawRow(int16 rowIndex); }; -- cgit v1.2.3