[Scummvm-cvs-logs] scummvm master -> 511f833032ffa27045fbf5ab6422f1f6831afcb7
somaen
einarjohants at gmail.com
Wed Feb 6 13:41:30 CET 2013
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
74e32bd332 WINTERMUTE: Privatize a few more members in BaseGame.
09303f6d1a WINTERMUTE: Get rid of BaseImage.h inclusion in BaseGame.
511f833032 WINTERMUTE: Use case-insensitive path-lookup when opening DiskFiles.
Commit: 74e32bd3329b8d7b19d97ddff140fb23b901c2d6
https://github.com/scummvm/scummvm/commit/74e32bd3329b8d7b19d97ddff140fb23b901c2d6
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-02-06T04:40:35-08:00
Commit Message:
WINTERMUTE: Privatize a few more members in BaseGame.
Changed paths:
engines/wintermute/ad/ad_item.cpp
engines/wintermute/ad/ad_object.cpp
engines/wintermute/ad/ad_response_box.cpp
engines/wintermute/ad/ad_scene.cpp
engines/wintermute/base/base_game.h
engines/wintermute/ui/ui_button.cpp
engines/wintermute/ui/ui_edit.cpp
engines/wintermute/ui/ui_text.cpp
diff --git a/engines/wintermute/ad/ad_item.cpp b/engines/wintermute/ad/ad_item.cpp
index 1bd7692..8534956 100644
--- a/engines/wintermute/ad/ad_item.cpp
+++ b/engines/wintermute/ad/ad_item.cpp
@@ -435,7 +435,7 @@ bool AdItem::display(int x, int y) {
}
amountX += _amountOffsetX;
- BaseFont *font = _font ? _font : _gameRef->_systemFont;
+ BaseFont *font = _font ? _font : _gameRef->getSystemFont();
if (font) {
if (_amountString) {
font->drawText((byte *)_amountString, amountX, amountY, width, _amountAlign);
diff --git a/engines/wintermute/ad/ad_object.cpp b/engines/wintermute/ad/ad_object.cpp
index 2dddc6f..a41ed9f 100644
--- a/engines/wintermute/ad/ad_object.cpp
+++ b/engines/wintermute/ad/ad_object.cpp
@@ -907,7 +907,7 @@ void AdObject::talk(const char *text, const char *sound, uint32 duration, const
_sentence->_align = Align;
_sentence->_startTime = _gameRef->_timer;
_sentence->_currentStance = -1;
- _sentence->_font = _font == nullptr ? _gameRef->_systemFont : _font;
+ _sentence->_font = _font == nullptr ? _gameRef->getSystemFont() : _font;
_sentence->_freezable = _freezable;
// try to locate speech file automatically
diff --git a/engines/wintermute/ad/ad_response_box.cpp b/engines/wintermute/ad/ad_response_box.cpp
index c889f56..c891d2a 100644
--- a/engines/wintermute/ad/ad_response_box.cpp
+++ b/engines/wintermute/ad/ad_response_box.cpp
@@ -163,8 +163,8 @@ bool AdResponseBox::createButtons() {
// textual
else {
btn->setText(_responses[i]->_text);
- btn->_font = (_font == nullptr) ? _gameRef->_systemFont : _font;
- btn->_fontHover = (_fontHover == nullptr) ? _gameRef->_systemFont : _fontHover;
+ btn->_font = (_font == nullptr) ? _gameRef->getSystemFont() : _font;
+ btn->_fontHover = (_fontHover == nullptr) ? _gameRef->getSystemFont() : _fontHover;
btn->_fontPress = btn->_fontHover;
btn->_align = _align;
diff --git a/engines/wintermute/ad/ad_scene.cpp b/engines/wintermute/ad/ad_scene.cpp
index f0e26e7..f305c2f 100644
--- a/engines/wintermute/ad/ad_scene.cpp
+++ b/engines/wintermute/ad/ad_scene.cpp
@@ -1138,8 +1138,8 @@ bool AdScene::updateFreeObjects() {
}
- if (_autoScroll && _gameRef->_mainObject != nullptr) {
- scrollToObject(_gameRef->_mainObject);
+ if (_autoScroll && _gameRef->getMainObject() != nullptr) {
+ scrollToObject(_gameRef->getMainObject());
}
@@ -1285,7 +1285,7 @@ void AdScene::scrollTo(int offsetX, int offsetY) {
_targetOffsetTop = MIN(_targetOffsetTop, _height - viewportHeight);
- if (_gameRef->_mainObject && _gameRef->_mainObject->_is3D) {
+ if (_gameRef->getMainObject() && _gameRef->getMainObject()->_is3D) {
if (abs(origOffsetLeft - _targetOffsetLeft) < 5) {
_targetOffsetLeft = origOffsetLeft;
}
diff --git a/engines/wintermute/base/base_game.h b/engines/wintermute/base/base_game.h
index a902727..5666fb8 100644
--- a/engines/wintermute/base/base_game.h
+++ b/engines/wintermute/base/base_game.h
@@ -119,14 +119,15 @@ public:
int _offsetX;
float _offsetPercentX;
float _offsetPercentY;
- BaseObject *_mainObject;
+
+ inline BaseObject *getMainObject() { return _mainObject; }
+ inline BaseFont *getSystemFont() { return _systemFont; }
bool initInput();
bool initLoop();
uint32 _currentTime;
uint32 _deltaTime;
- BaseFont *_systemFont;
- BaseFont *_videoFont;
+
bool initialize1();
bool initialize2();
bool initialize3();
@@ -249,6 +250,9 @@ public:
bool _touchInterface;
bool _constrainedMemory;
protected:
+ BaseFont *_systemFont;
+ BaseFont *_videoFont;
+
BaseSprite *_loadingIcon;
int _loadingIconX;
int _loadingIconY;
@@ -260,6 +264,8 @@ protected:
VideoPlayer *_videoPlayer;
VideoTheoraPlayer *_theoraPlayer;
private:
+ BaseObject *_mainObject;
+
bool _mouseRightDown;
bool _mouseMidlleDown;
bool _settingsRequireAcceleration;
diff --git a/engines/wintermute/ui/ui_button.cpp b/engines/wintermute/ui/ui_button.cpp
index 2c356b2..6ee577f 100644
--- a/engines/wintermute/ui/ui_button.cpp
+++ b/engines/wintermute/ui/ui_button.cpp
@@ -622,15 +622,15 @@ void UIButton::correctSize() {
}
if (_text) {
- int text_height;
+ int textHeight;
if (_font) {
- text_height = _font->getTextHeight((byte *)_text, _width);
+ textHeight = _font->getTextHeight((byte *)_text, _width);
} else {
- text_height = _gameRef->_systemFont->getTextHeight((byte *)_text, _width);
+ textHeight = _gameRef->getSystemFont()->getTextHeight((byte *)_text, _width);
}
- if (text_height > _height) {
- _height = text_height;
+ if (textHeight > _height) {
+ _height = textHeight;
}
}
@@ -717,7 +717,7 @@ bool UIButton::display(int offsetX, int offsetY) {
if (_font) {
font = _font;
} else {
- font = _gameRef->_systemFont;
+ font = _gameRef->getSystemFont();
}
}
diff --git a/engines/wintermute/ui/ui_edit.cpp b/engines/wintermute/ui/ui_edit.cpp
index 7728272..0a2e6f1 100644
--- a/engines/wintermute/ui/ui_edit.cpp
+++ b/engines/wintermute/ui/ui_edit.cpp
@@ -589,7 +589,7 @@ bool UIEdit::display(int offsetX, int offsetY) {
if (_font) {
font = _font;
} else {
- font = _gameRef->_systemFont;
+ font = _gameRef->getSystemFont();
}
if (_fontSelected) {
diff --git a/engines/wintermute/ui/ui_text.cpp b/engines/wintermute/ui/ui_text.cpp
index 5a1bffc..3b5adf0 100644
--- a/engines/wintermute/ui/ui_text.cpp
+++ b/engines/wintermute/ui/ui_text.cpp
@@ -69,7 +69,7 @@ bool UIText::display(int offsetX, int offsetY) {
BaseFont *font = _font;
if (!font) {
- font = _gameRef->_systemFont;
+ font = _gameRef->getSystemFont();
}
if (_back) {
Commit: 09303f6d1a7c32916e14ee5436b7d7f146c26dc5
https://github.com/scummvm/scummvm/commit/09303f6d1a7c32916e14ee5436b7d7f146c26dc5
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-02-06T04:40:36-08:00
Commit Message:
WINTERMUTE: Get rid of BaseImage.h inclusion in BaseGame.
Changed paths:
engines/wintermute/base/base_game.cpp
engines/wintermute/base/gfx/base_image.cpp
engines/wintermute/base/gfx/base_image.h
engines/wintermute/base/gfx/base_renderer.cpp
engines/wintermute/base/gfx/base_renderer.h
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index e02842a..0248c34 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -34,7 +34,6 @@
#include "engines/wintermute/base/base_file_manager.h"
#include "engines/wintermute/base/font/base_font.h"
#include "engines/wintermute/base/font/base_font_storage.h"
-#include "engines/wintermute/base/gfx/base_image.h"
#include "engines/wintermute/base/gfx/base_renderer.h"
#include "engines/wintermute/base/base_keyboard_state.h"
#include "engines/wintermute/base/base_parser.h"
@@ -1577,14 +1576,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
fileNum++;
}
- bool ret = false;
- BaseImage *image = _gameRef->_renderer->takeScreenshot();
- if (image) {
- ret = DID_SUCCEED(image->saveBMPFile(filename));
- delete image;
- } else {
- ret = false;
- }
+ bool ret = _gameRef->_renderer->saveScreenShot(filename);
stack->pushBool(ret);
return STATUS_OK;
@@ -1599,17 +1591,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
int sizeX = stack->pop()->getInt(_renderer->_width);
int sizeY = stack->pop()->getInt(_renderer->_height);
- bool ret = false;
- BaseImage *image = _gameRef->_renderer->takeScreenshot();
- if (image) {
- ret = DID_SUCCEED(image->resize(sizeX, sizeY));
- if (ret) {
- ret = DID_SUCCEED(image->saveBMPFile(filename));
- }
- delete image;
- } else {
- ret = false;
- }
+ bool ret = _gameRef->_renderer->saveScreenShot(filename, sizeX, sizeY);
stack->pushBool(ret);
return STATUS_OK;
diff --git a/engines/wintermute/base/gfx/base_image.cpp b/engines/wintermute/base/gfx/base_image.cpp
index 05037cd..75de951 100644
--- a/engines/wintermute/base/gfx/base_image.cpp
+++ b/engines/wintermute/base/gfx/base_image.cpp
@@ -105,7 +105,7 @@ void BaseImage::copyFrom(const Graphics::Surface *surface) {
}
//////////////////////////////////////////////////////////////////////////
-bool BaseImage::saveBMPFile(const char *filename) const {
+bool BaseImage::saveBMPFile(const Common::String &filename) const {
warning("BaseImage::saveBMPFile - stubbed"); // TODO
return false;
}
diff --git a/engines/wintermute/base/gfx/base_image.h b/engines/wintermute/base/gfx/base_image.h
index 6d01b84..017305e 100644
--- a/engines/wintermute/base/gfx/base_image.h
+++ b/engines/wintermute/base/gfx/base_image.h
@@ -55,7 +55,7 @@ public:
byte getAlphaAt(int x, int y) const;
bool writeBMPToStream(Common::WriteStream *stream) const;
bool resize(int newWidth, int newHeight);
- bool saveBMPFile(const char *filename) const;
+ bool saveBMPFile(const Common::String &filename) const;
bool copyFrom(BaseImage *origImage, int newWidth = 0, int newHeight = 0);
void copyFrom(const Graphics::Surface *surface);
private:
diff --git a/engines/wintermute/base/gfx/base_renderer.cpp b/engines/wintermute/base/gfx/base_renderer.cpp
index 6c230d2..c20881e 100644
--- a/engines/wintermute/base/gfx/base_renderer.cpp
+++ b/engines/wintermute/base/gfx/base_renderer.cpp
@@ -29,6 +29,7 @@
#include "engines/wintermute/base/base_active_rect.h"
#include "engines/wintermute/base/gfx/base_renderer.h"
#include "engines/wintermute/base/gfx/base_surface.h"
+#include "engines/wintermute/base/gfx/base_image.h"
#include "engines/wintermute/base/base_sub_frame.h"
#include "engines/wintermute/base/base_region.h"
#include "engines/wintermute/platform_osystem.h"
@@ -344,6 +345,22 @@ void BaseRenderer::addRectToList(BaseActiveRect *rect) {
_rectList.push_back(rect);
}
+bool BaseRenderer::saveScreenShot(const Common::String &filename, int sizeX, int sizeY) {
+ BaseImage *image = takeScreenshot();
+ if (image) {
+ if (sizeX != 0 && sizeY != 0) {
+ if (!DID_SUCCEED(image->resize(sizeX, sizeY))) {
+ delete image;
+ return false;
+ }
+ }
+ image->saveBMPFile(filename);
+ delete image;
+ return true;
+ }
+ return false;
+}
+
//////////////////////////////////////////////////////////////////////////
bool BaseRenderer::displayIndicator() {
if (!_indicatorDisplay || !_indicatorProgress) {
diff --git a/engines/wintermute/base/gfx/base_renderer.h b/engines/wintermute/base/gfx/base_renderer.h
index 9bc195f..5a24e01 100644
--- a/engines/wintermute/base/gfx/base_renderer.h
+++ b/engines/wintermute/base/gfx/base_renderer.h
@@ -61,6 +61,7 @@ public:
* @return a BaseImage containing the current screen-buffer.
*/
virtual BaseImage *takeScreenshot() = 0;
+ virtual bool saveScreenShot(const Common::String &filename, int sizeX = 0, int sizeY = 0);
virtual bool setViewport(int left, int top, int right, int bottom);
virtual bool setViewport(Rect32 *rect);
virtual Rect32 getViewPort() = 0;
Commit: 511f833032ffa27045fbf5ab6422f1f6831afcb7
https://github.com/scummvm/scummvm/commit/511f833032ffa27045fbf5ab6422f1f6831afcb7
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-02-06T04:40:36-08:00
Commit Message:
WINTERMUTE: Use case-insensitive path-lookup when opening DiskFiles.
Changed paths:
engines/wintermute/base/file/base_disk_file.cpp
diff --git a/engines/wintermute/base/file/base_disk_file.cpp b/engines/wintermute/base/file/base_disk_file.cpp
index 796531e..3c1ecc7 100644
--- a/engines/wintermute/base/file/base_disk_file.cpp
+++ b/engines/wintermute/base/file/base_disk_file.cpp
@@ -39,10 +39,10 @@
namespace Wintermute {
-void correctSlashes(char *fileName) {
- for (size_t i = 0; i < strlen(fileName); i++) {
+void correctSlashes(Common::String &fileName) {
+ for (size_t i = 0; i < fileName.size(); i++) {
if (fileName[i] == '\\') {
- fileName[i] = '/';
+ fileName.setChar('/', i);
}
}
}
@@ -66,6 +66,12 @@ static Common::FSNode getNodeForRelativePath(const Common::String &filename) {
const Common::FSNode gameDataDir(ConfMan.get("path"));
Common::FSNode curNode = gameDataDir;
+ Common::String fixedPath = "";
+ while (!path.empty()) {
+ fixedPath += path.nextToken() + "/";
+ }
+ fixedPath.deleteLastChar();
+
// Parse all path-elements
while (!path.empty()) {
// Get the next path-component by slicing on '\\'
@@ -111,11 +117,12 @@ Common::SeekableReadStream *openDiskFile(const Common::String &filename) {
uint32 prefixSize = 0;
Common::SeekableReadStream *file = nullptr;
Common::String fixedFilename = filename;
+ correctSlashes(fixedFilename);
// Absolute path: TODO: Add specific fallbacks here.
- if (filename.contains(':')) {
- if (filename.hasPrefix("c:\\windows\\fonts\\")) { // East Side Story refers to "c:\windows\fonts\framd.ttf"
- fixedFilename = filename.c_str() + 17;
+ if (fixedFilename.contains(':')) {
+ if (fixedFilename.hasPrefix("c:/windows/fonts/")) { // East Side Story refers to "c:\windows\fonts\framd.ttf"
+ fixedFilename = filename.c_str() + 14;
} else {
error("openDiskFile::Absolute path or invalid filename used in %s", filename.c_str());
}
@@ -125,7 +132,7 @@ Common::SeekableReadStream *openDiskFile(const Common::String &filename) {
SearchMan.listMatchingMembers(files, fixedFilename);
for (Common::ArchiveMemberList::iterator it = files.begin(); it != files.end(); ++it) {
- if ((*it)->getName() == filename) {
+ if ((*it)->getName().equalsIgnoreCase(lastPathComponent(fixedFilename,'/'))) {
file = (*it)->createReadStream();
break;
}
More information about the Scummvm-git-logs
mailing list