[Scummvm-git-logs] scummvm master -> 762ef9c0554a04cf3fac8cd1798a6842e1effb4b
sev-
noreply at scummvm.org
Sat Dec 3 23:04:59 UTC 2022
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:
84f8a744d1 SKY: Keep reference to vm in text class.
a9ac476ae1 SKY: Move chinese font to member field from static
762ef9c055 SKY: Alloc more place for quit text to account for bigger Chinese fonts
Commit: 84f8a744d12f8400e2995f6b38dea906a74bc05e
https://github.com/scummvm/scummvm/commit/84f8a744d12f8400e2995f6b38dea906a74bc05e
Author: Vladimir Serbinenko (phcoder at gmail.com)
Date: 2022-12-04T00:04:54+01:00
Commit Message:
SKY: Keep reference to vm in text class.
This allows to decrease amount of static fields
Changed paths:
engines/sky/sky.cpp
engines/sky/text.cpp
engines/sky/text.h
diff --git a/engines/sky/sky.cpp b/engines/sky/sky.cpp
index eaa55404fa4..21dc7595610 100644
--- a/engines/sky/sky.cpp
+++ b/engines/sky/sky.cpp
@@ -433,7 +433,7 @@ Common::Error SkyEngine::init() {
_systemVars->gameSpeed = 80;
_skyCompact = new SkyCompact();
- _skyText = new Text(_skyDisk, _skyCompact);
+ _skyText = new Text(this, _skyDisk, _skyCompact);
_skyMouse = new Mouse(_system, _skyDisk, _skyCompact);
_skyScreen = new Screen(_system, _skyDisk, _skyCompact);
diff --git a/engines/sky/text.cpp b/engines/sky/text.cpp
index a1fe2ed8df6..2c40432016e 100644
--- a/engines/sky/text.cpp
+++ b/engines/sky/text.cpp
@@ -43,10 +43,7 @@ namespace Sky {
#define CHAR_SET_HEADER 128
#define MAX_NO_LINES 10
-Text::Text(Disk *skyDisk, SkyCompact *skyCompact) {
- _skyDisk = skyDisk;
- _skyCompact = skyCompact;
-
+Text::Text(SkyEngine *vm, Disk *skyDisk, SkyCompact *skyCompact) : _skyDisk(skyDisk), _skyCompact(skyCompact), _vm(vm) {
initHuffTree();
_mainCharacterSet.addr = _skyDisk->loadFile(CHAR_SET_FILE);
diff --git a/engines/sky/text.h b/engines/sky/text.h
index 716313ad3df..d1312e07cc3 100644
--- a/engines/sky/text.h
+++ b/engines/sky/text.h
@@ -24,6 +24,7 @@
#include "common/scummsys.h"
+#include "sky/sky.h"
namespace Sky {
@@ -46,7 +47,7 @@ struct PatchMessage {
class Text {
public:
- Text(Disk *skyDisk, SkyCompact *skyCompact);
+ Text(SkyEngine *vm, Disk *skyDisk, SkyCompact *skyCompact);
~Text();
struct DisplayedText displayText(uint32 textNum, uint8 *dest, bool center, uint16 pixelWidth, uint8 color);
struct DisplayedText displayText(char *textPtr, uint32 bufLen, uint8 *dest, bool center, uint16 pixelWidth, uint8 color);
@@ -72,6 +73,7 @@ private:
Disk *_skyDisk;
SkyCompact *_skyCompact;
+ SkyEngine *_vm;
const HuffTree *_huffTree;
Commit: a9ac476ae1e56cdbf68ecc5fac5f114eaaee78b7
https://github.com/scummvm/scummvm/commit/a9ac476ae1e56cdbf68ecc5fac5f114eaaee78b7
Author: Vladimir Serbinenko (phcoder at gmail.com)
Date: 2022-12-04T00:04:54+01:00
Commit Message:
SKY: Move chinese font to member field from static
Changed paths:
engines/sky/sky.cpp
engines/sky/sky.h
engines/sky/text.cpp
diff --git a/engines/sky/sky.cpp b/engines/sky/sky.cpp
index 21dc7595610..88819b7801b 100644
--- a/engines/sky/sky.cpp
+++ b/engines/sky/sky.cpp
@@ -72,10 +72,6 @@ namespace Sky {
void *SkyEngine::_itemList[300];
SystemVars *SkyEngine::_systemVars = nullptr;
const char *SkyEngine::shortcutsKeymapId = "sky-shortcuts";
-uint32 SkyEngine::_chineseTraditionalOffsets[8];
-char *SkyEngine::_chineseTraditionalBlock;
-Common::Array<SkyEngine::ChineseTraditionalGlyph> SkyEngine::_chineseTraditionalFont;
-Common::Array<int> SkyEngine::_chineseTraditionalIndex;
SkyEngine::SkyEngine(OSystem *syst)
: Engine(syst), _fastMode(0), _debugger(0) {
diff --git a/engines/sky/sky.h b/engines/sky/sky.h
index 2606dadf98d..ec6054deb22 100644
--- a/engines/sky/sky.h
+++ b/engines/sky/sky.h
@@ -110,8 +110,6 @@ public:
static void *_itemList[300];
static SystemVars *_systemVars;
static const char *shortcutsKeymapId;
- static uint32 _chineseTraditionalOffsets[8];
- static char *_chineseTraditionalBlock;
static const int kChineseTraditionalWidth = 16;
static const int kChineseTraditionalHeight = 15;
struct ChineseTraditionalGlyph {
@@ -120,8 +118,11 @@ public:
void makeOutline();
};
- static Common::Array<ChineseTraditionalGlyph> _chineseTraditionalFont;
- static Common::Array<int> _chineseTraditionalIndex;
+
+ uint32 _chineseTraditionalOffsets[8];
+ char *_chineseTraditionalBlock;
+ Common::Array<ChineseTraditionalGlyph> _chineseTraditionalFont;
+ Common::Array<int> _chineseTraditionalIndex;
protected:
// Engine APIs
diff --git a/engines/sky/text.cpp b/engines/sky/text.cpp
index 2c40432016e..de3fa48926c 100644
--- a/engines/sky/text.cpp
+++ b/engines/sky/text.cpp
@@ -119,8 +119,8 @@ void Text::getText(uint32 textNr) { //load text #"textNr" into textBuffer
uint32 sectionNo = (textNr & 0x0F000) >> 12;
if (SkyEngine::_systemVars->language == SKY_CHINESE_TRADITIONAL) {
- uint32 sectionOffset = SkyEngine::_chineseTraditionalOffsets[sectionNo];
- const char *ptr = SkyEngine::_chineseTraditionalBlock + sectionOffset;
+ uint32 sectionOffset = _vm->_chineseTraditionalOffsets[sectionNo];
+ const char *ptr = _vm->_chineseTraditionalBlock + sectionOffset;
uint nrInBlock = textNr & 0xFFF;
if (sectionNo != 7)
nrInBlock--;
@@ -386,13 +386,13 @@ DisplayedText Text::displayText(char *textPtr, uint32 bufLen, uint8 *dest, bool
}
void Text::makeChineseGameCharacter(uint16 textChar, uint8 *charSetPtr, uint8 *&dest, uint8 color, uint16 bufPitch) {
- int glyphIdx = SkyEngine::_chineseTraditionalIndex[textChar & 0x7fff];
+ int glyphIdx = _vm->_chineseTraditionalIndex[textChar & 0x7fff];
if (glyphIdx < 0) {
makeGameCharacter('?' - 0x20, charSetPtr, dest, color, bufPitch);
return;
}
- const SkyEngine::ChineseTraditionalGlyph& glyph = SkyEngine::_chineseTraditionalFont[glyphIdx];
+ const SkyEngine::ChineseTraditionalGlyph& glyph = _vm->_chineseTraditionalFont[glyphIdx];
for (int y = 0; y < SkyEngine::kChineseTraditionalHeight; y++) {
uint8 *cur = dest + y * bufPitch;
Commit: 762ef9c0554a04cf3fac8cd1798a6842e1effb4b
https://github.com/scummvm/scummvm/commit/762ef9c0554a04cf3fac8cd1798a6842e1effb4b
Author: Vladimir Serbinenko (phcoder at gmail.com)
Date: 2022-12-04T00:04:54+01:00
Commit Message:
SKY: Alloc more place for quit text to account for bigger Chinese fonts
It doesn't really use Chinese characters but the font subsystem
pre-memsets the whole buffer.
Changed paths:
engines/sky/control.cpp
diff --git a/engines/sky/control.cpp b/engines/sky/control.cpp
index cd555b899e9..de19396c04b 100644
--- a/engines/sky/control.cpp
+++ b/engines/sky/control.cpp
@@ -1610,8 +1610,8 @@ void Control::delay(unsigned int amount) {
void Control::showGameQuitMsg() {
_skyText->fnSetFont(0);
- uint8 *textBuf1 = (uint8 *)malloc(GAME_SCREEN_WIDTH * 14 + sizeof(DataFileHeader));
- uint8 *textBuf2 = (uint8 *)malloc(GAME_SCREEN_WIDTH * 14 + sizeof(DataFileHeader));
+ uint8 *textBuf1 = (uint8 *)malloc(GAME_SCREEN_WIDTH * 18 + sizeof(DataFileHeader));
+ uint8 *textBuf2 = (uint8 *)malloc(GAME_SCREEN_WIDTH * 18 + sizeof(DataFileHeader));
uint8 *screenData;
if (_skyScreen->sequenceRunning())
_skyScreen->stopSequence();
More information about the Scummvm-git-logs
mailing list