[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