[Scummvm-git-logs] scummvm master -> 3740acdd7d147d7d2dd985d080cc526fb5a8638d

bluegr noreply at scummvm.org
Tue Apr 5 19:33:14 UTC 2022


This automated email contains information about 8 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
93a55e98f7 CHEWY: Cleanup and bugfix for getText()
27bcf4f6a9 CHEWY: Remove unused code
f5962f1c4c CHEWY: Make text offsets a bit more readable
8823e9b61d CHEWY: Check again if text entries are active
ca2c8a972e CHEWY: Remove superfluous text header
37fcade196 CHEWY: Use a single handle for the text file
1e6e9b07c9 CHEWY: Refactor ATDS initialization
3740acdd7d CHEWY: Cleanup


Commit: 93a55e98f75e4f3cf10d4c43eb52d2e7a6ad1c46
    https://github.com/scummvm/scummvm/commit/93a55e98f75e4f3cf10d4c43eb52d2e7a6ad1c46
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-04-05T22:32:46+03:00

Commit Message:
CHEWY: Cleanup and bugfix for getText()

Changed paths:
    engines/chewy/text.cpp
    engines/chewy/text.h


diff --git a/engines/chewy/text.cpp b/engines/chewy/text.cpp
index 980be182942..3c20cc66054 100644
--- a/engines/chewy/text.cpp
+++ b/engines/chewy/text.cpp
@@ -82,21 +82,30 @@ TextEntryList *Text::getDialog(uint chunk, uint entry) {
 }
 
 TextEntry *Text::getText(uint chunk, uint entry, int type) {
+	bool isText = false;
+	bool isAutoDialog = false;
+	bool isInvDesc = false;
+
 	switch (type) {
 	case AAD_DATA:
-		chunk += AAD_TAP_OFF;
+		chunk += kADSTextMax + kATSTextMax;
+		isAutoDialog = true;
 		break;
 	case ATS_DATA:
-		chunk += ATS_TAP_OFF;
+		chunk += kADSTextMax;
+		isText = true;
 		break;
 	case ADS_DATA:
-		chunk += ADS_TAP_OFF;
+		// No change - chunk starts from 0
 		break;
 	case INV_USE_DATA:
-		chunk += USE_TAP_OFF;
+	case INV_USE_DEF:
+		chunk += kADSTextMax + kATSTextMax + kAADTextMax + kINVTextMax;
+		isInvDesc = true;
 		break;
 	case INV_ATS_DATA:
-		chunk += INV_TAP_OFF;
+		chunk += kADSTextMax + kATSTextMax + kAADTextMax;
+		isInvDesc = true;
 		break;
 	}
 
@@ -104,9 +113,6 @@ TextEntry *Text::getText(uint chunk, uint entry, int type) {
 		error("getText(): Invalid chunk number requested, %d (min %d)", chunk, kADSTextMax);
 
 	TextEntry *d = new TextEntry();
-	const bool isText = (chunk >= kADSTextMax && chunk < kADSTextMax + kATSTextMax);
-	const bool isAutoDialog = (chunk >= kADSTextMax + kATSTextMax && chunk < kADSTextMax + kATSTextMax + kAADTextMax);
-	const bool isInvDesc = (chunk >= kADSTextMax + kATSTextMax + kAADTextMax && chunk < kADSTextMax + kATSTextMax + kAADTextMax + kINVTextMax);
 
 	byte *data = getChunkData(chunk);
 	byte *ptr = data;
diff --git a/engines/chewy/text.h b/engines/chewy/text.h
index 41d4913a352..cfbbf59934a 100644
--- a/engines/chewy/text.h
+++ b/engines/chewy/text.h
@@ -40,8 +40,8 @@ enum MaxTextTypes {
 	kADSTextMax = 500, //   0 - 499
 	kATSTextMax = 100, // 500 - 599
 	kAADTextMax = 100, // 600 - 699
-	kINVTextMax = 100, // 700 - 799
-	kUSETextMax = 100  // 800 - 899
+	kINVTextMax = 140, // 700 - 849
+	kUSETextMax =  60  // 850 - 899
 };
 
 /**


Commit: 27bcf4f6a9ce633d9ef974dff884c02d4f07ed3b
    https://github.com/scummvm/scummvm/commit/27bcf4f6a9ce633d9ef974dff884c02d4f07ed3b
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-04-05T22:32:46+03:00

Commit Message:
CHEWY: Remove unused code

Changed paths:
    engines/chewy/atds.cpp
    engines/chewy/atds.h


diff --git a/engines/chewy/atds.cpp b/engines/chewy/atds.cpp
index 905f7d68b40..ef7812cca01 100644
--- a/engines/chewy/atds.cpp
+++ b/engines/chewy/atds.cpp
@@ -374,19 +374,6 @@ void Atdsys::set_handle(const char *fname, int16 mode, Common::Stream *handle, i
 	}
 }
 
-void Atdsys::open_handle(const char *fname, int16 mode) {
-	_atdsMem[mode] = atds_adr(fname, 0, 20000);
-
-	Common::File *f = new Common::File();
-	f->open(fname);
-	if (f->isOpen()) {
-		close_handle(mode);
-		_atdsHandle[mode] = f;
-	} else {
-		error("Error reading from %s", fname);
-	}
-}
-
 void Atdsys::close_handle(int16 mode) {
 	Common::Stream *stream = _atdsHandle[mode];
 	if (stream) {
diff --git a/engines/chewy/atds.h b/engines/chewy/atds.h
index 9a2c84a554b..d13ad864894 100644
--- a/engines/chewy/atds.h
+++ b/engines/chewy/atds.h
@@ -42,11 +42,7 @@ namespace Chewy {
 
 #define MAX_HANDLE 8
 #define AAD_HANDLE 0
-#define ATS_HANDLE 1
 #define ADS_HANDLE 2
-#define INV_USE_HANDLE 4
-#define INV_ATS_HANDLE 6
-#define ATDS_HANDLE 7
 
 #define MAX_STR_SPLIT 10
 
@@ -249,7 +245,6 @@ public:
 
 	Common::Stream *pool_handle(const char *fname);
 	void set_handle(const char *fname, int16 mode, Common::Stream *handle, int16 chunkStart, int16 chunkNr);
-	void open_handle(const char *fname, int16 mode);
 	void close_handle(int16 mode);
 	void crypt(char *txt, uint32 size);
 	bool start_ats(int16 txtNr, int16 txtMode, int16 color, int16 mode, int16 *vocNr);


Commit: f5962f1c4c2c079b26f8e28f2330f4e49a3f01ea
    https://github.com/scummvm/scummvm/commit/f5962f1c4c2c079b26f8e28f2330f4e49a3f01ea
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-04-05T22:32:47+03:00

Commit Message:
CHEWY: Make text offsets a bit more readable

Changed paths:
    engines/chewy/defines.h


diff --git a/engines/chewy/defines.h b/engines/chewy/defines.h
index b50a682dbad..5b3d44262b8 100644
--- a/engines/chewy/defines.h
+++ b/engines/chewy/defines.h
@@ -34,10 +34,10 @@ namespace Chewy {
 #define USE_TAP_MAX 140
 
 #define ADS_TAP_OFF 0
-#define ATS_TAP_OFF ADS_TAP_MAX
-#define AAD_TAP_OFF ATS_TAP_OFF+ATS_TAP_MAX
-#define INV_TAP_OFF AAD_TAP_OFF+AAD_TAP_MAX
-#define USE_TAP_OFF INV_TAP_OFF+INV_TAP_MAX
+#define ATS_TAP_OFF ADS_TAP_MAX	// 500
+#define AAD_TAP_OFF ATS_TAP_OFF+ATS_TAP_MAX	// 500 + 100
+#define INV_TAP_OFF AAD_TAP_OFF+AAD_TAP_MAX	// 500 + 100 + 100
+#define USE_TAP_OFF INV_TAP_OFF+INV_TAP_MAX	// 500 + 100 + 100 + 140
 
 #define SCREEN_WIDTH 320
 #define SCREEN_HEIGHT 200


Commit: 8823e9b61d64c24522e7a8cfb1177df83c6d30eb
    https://github.com/scummvm/scummvm/commit/8823e9b61d64c24522e7a8cfb1177df83c6d30eb
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-04-05T22:32:47+03:00

Commit Message:
CHEWY: Check again if text entries are active

This was not handled in the new text code

Changed paths:
    engines/chewy/atds.cpp


diff --git a/engines/chewy/atds.cpp b/engines/chewy/atds.cpp
index ef7812cca01..e2cf9e2356a 100644
--- a/engines/chewy/atds.cpp
+++ b/engines/chewy/atds.cpp
@@ -1300,11 +1300,17 @@ uint32 Atdsys::getAtdsStreamSize() const {
 }
 
 Common::StringArray Atdsys::getTextArray(uint dialogNum, uint entryNum, int type) {
-	return _text->getTextArray(dialogNum, entryNum, type);
+	if (!getControlBit(entryNum, ATS_ACTIVE_BIT))
+		return _text->getTextArray(dialogNum, entryNum, type);
+	else
+		return Common::StringArray();
 }
 
 Common::String Atdsys::getTextEntry(uint dialogNum, uint entryNum, int type) {
-	return _text->getTextEntry(dialogNum, entryNum, type);
+	if (!getControlBit(entryNum, ATS_ACTIVE_BIT))
+		return _text->getTextEntry(dialogNum, entryNum, type);
+	else
+		return Common::String();
 }
 
 } // namespace Chewy


Commit: ca2c8a972e74edb17b94b51f15e63b75f7f5f7de
    https://github.com/scummvm/scummvm/commit/ca2c8a972e74edb17b94b51f15e63b75f7f5f7de
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-04-05T22:32:48+03:00

Commit Message:
CHEWY: Remove superfluous text header

Changed paths:
    engines/chewy/atds.cpp
    engines/chewy/atds.h


diff --git a/engines/chewy/atds.cpp b/engines/chewy/atds.cpp
index e2cf9e2356a..768907ad706 100644
--- a/engines/chewy/atds.cpp
+++ b/engines/chewy/atds.cpp
@@ -75,12 +75,6 @@ bool AdsTxtHeader::load(const void *src) {
 	return true;
 }
 
-bool AtsStrHeader::load(Common::SeekableReadStream *src) {
-	_vocNr = src->readUint16LE();
-	return true;
-}
-
-
 Atdsys::Atdsys() {
 	SplitStringInit init_ssi = { nullptr, 0, 0, 220, 4, SPLIT_CENTER };
 	_aadv._dialog = false;
@@ -484,7 +478,7 @@ bool Atdsys::start_ats(int16 txtNr, int16 txtMode, int16 color, int16 mode, int1
 			while (*ptr++ != ATDS_END_TEXT)
 				++_atsv._txtLen;
 
-			*vocNr = _atsv._strHeader._vocNr - ATDS_VOC_OFFSET;
+			*vocNr = _atsv.vocNum - ATDS_VOC_OFFSET;
 
 			if ((byte)*_atsv._ptr == 248) {
 				// Special code for no message to display
@@ -731,16 +725,14 @@ void Atdsys::ats_search_nr(int16 txtNr, char **str) {
 			*str = start_str + 2 + AtsTxtHeader::SIZE();
 
 			if (_atsv._txtMode) {
-				Common::MemoryReadStream rs2((const byte *)*str,
-					AtsStrHeader::SIZE());
-				_atsv._strHeader.load(&rs2);
+				_atsv.vocNum = READ_LE_UINT16(str);
 			}
 
-			*str += AtsStrHeader::SIZE();
+			*str += 2;	// voc number
 			break;
 		}
 
-		start_str += 2 + AtsTxtHeader::SIZE() + AtsStrHeader::SIZE();
+		start_str += 2 + AtsTxtHeader::SIZE() + 2;	// txt header + voc number
 
 		// Need to iterate over the following string to next entry
 		bool done2 = false;
@@ -777,12 +769,10 @@ void Atdsys::ats_search_str(int16 *nr, uint8 *status, uint8 controlByte, char **
 			} else if (*tmp_str == ATDS_END_TEXT) {
 				endLoop = true;
 				*str = start_str;
-				start_str -= AtsStrHeader::SIZE();
+				start_str -= 2;	// voc number
 
 				if (_atsv._txtMode != TXT_MARK_NAME) {
-					Common::MemoryReadStream rs((const byte *)start_str,
-						AtsStrHeader::SIZE());
-					_atsv._strHeader.load(&rs);
+					_atsv.vocNum = READ_LE_UINT16(start_str);
 				}
 
 				if (tmp_str[1] != ATDS_END) {
@@ -800,16 +790,14 @@ void Atdsys::ats_search_str(int16 *nr, uint8 *status, uint8 controlByte, char **
 					*nr = 0;
 					*status = count;
 					*str = start_str;
-					start_str -= AtsStrHeader::SIZE();
+					start_str -= 2; // voc number
 
 					if (_atsv._txtMode != TXT_MARK_NAME) {
-						Common::MemoryReadStream rs((const byte *)start_str,
-							AtsStrHeader::SIZE());
-						_atsv._strHeader.load(&rs);
+						_atsv.vocNum = READ_LE_UINT16(start_str);
 					}
 				} else {
 					++count;
-					tmp_str += AtsStrHeader::SIZE() + 2;
+					tmp_str += 2 + 2;	// voc number + 2
 					start_str = tmp_str + 1;
 				}
 			} else if (*tmp_str == ATDS_END ||
diff --git a/engines/chewy/atds.h b/engines/chewy/atds.h
index d13ad864894..53c12582ac4 100644
--- a/engines/chewy/atds.h
+++ b/engines/chewy/atds.h
@@ -176,13 +176,6 @@ struct AdsNextBlk {
 	int16 _endNr;
 };
 
-struct AtsStrHeader {
-	uint16 _vocNr = 0;
-
-	bool load(Common::SeekableReadStream *src);
-	static constexpr int SIZE() { return 2; }
-};
-
 struct AtsTxtHeader {
 	uint16 _txtNr = 0;
 	int16 _aMov = 0;
@@ -194,7 +187,7 @@ struct AtsTxtHeader {
 
 struct AtsVar {
 	AtsTxtHeader _txtHeader;
-	AtsStrHeader _strHeader;
+	uint16 vocNum;
 	char *_ptr;
 	int16 _delayCount;
 	int16 _silentCount;


Commit: 37fcade196dbf84bfb6b47514b9211ca78e5f3c9
    https://github.com/scummvm/scummvm/commit/37fcade196dbf84bfb6b47514b9211ca78e5f3c9
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-04-05T22:32:48+03:00

Commit Message:
CHEWY: Use a single handle for the text file

Changed paths:
    engines/chewy/atds.cpp
    engines/chewy/atds.h
    engines/chewy/inits.cpp


diff --git a/engines/chewy/atds.cpp b/engines/chewy/atds.cpp
index 768907ad706..f9a380ce160 100644
--- a/engines/chewy/atds.cpp
+++ b/engines/chewy/atds.cpp
@@ -109,8 +109,12 @@ Atdsys::Atdsys() {
 }
 
 Atdsys::~Atdsys() {
+	close_handle();
+
 	for (int16 i = 0; i < MAX_HANDLE; i++) {
-		close_handle(i);
+		if (_atdsMem[i])
+			free(_atdsMem[i]);
+		_atdsMem[i] = nullptr;	
 	}
 
 	if (_invUseMem)
@@ -326,19 +330,20 @@ Common::Stream *Atdsys::pool_handle(const char *fname) {
 	Common::File *f = new Common::File();
 	f->open(fname);
 	if (f->isOpen()) {
-		_atdsHandle[ATDS_HANDLE] = f;
+		_atdsHandle = f;
 	} else {
 		error("Error reading from %s", fname);
 	}
 	return f;
 }
 
-void Atdsys::set_handle(const char *fname, int16 mode, Common::Stream *handle, int16 chunkStart, int16 chunkNr) {
-	Common::SeekableReadStream *rs = dynamic_cast<Common::SeekableReadStream *>(handle);
+void Atdsys::set_handle(const char *fname, int16 mode, int16 chunkStart, int16 chunkNr) {
+	Common::SeekableReadStream *rs = dynamic_cast<Common::SeekableReadStream *>(_atdsHandle);
 	ChunkHead Ch;
 	char *tmp_adr = atds_adr(fname, chunkStart, chunkNr);
 	if (rs) {
-		_atdsHandle[mode] = rs;
+		if (_atdsMem[mode])
+			free(_atdsMem[mode]);
 		_atdsMem[mode] = tmp_adr;
 		_atdsPoolOff[mode] = chunkStart;
 		switch (mode) {
@@ -368,21 +373,11 @@ void Atdsys::set_handle(const char *fname, int16 mode, Common::Stream *handle, i
 	}
 }
 
-void Atdsys::close_handle(int16 mode) {
-	Common::Stream *stream = _atdsHandle[mode];
-	if (stream) {
-		delete _atdsHandle[mode];
-		_atdsHandle[mode] = nullptr;
-
-		for (int i = 0; i < MAX_HANDLE; ++i) {
-			if (_atdsHandle[i] == stream)
-				_atdsHandle[i] = nullptr;
-		}
+void Atdsys::close_handle() {
+	if (_atdsHandle) {
+		delete _atdsHandle;
+		_atdsHandle = nullptr;
 	}
-
-	if (_atdsMem[mode])
-		free(_atdsMem[mode]);
-	_atdsMem[mode] = nullptr;
 }
 
 char *Atdsys::atds_adr(const char *fname, int16 chunkStart, int16 chunkNr) {
@@ -399,7 +394,7 @@ void Atdsys::load_atds(int16 chunkNr, int16 mode) {
 	char *txt_adr = _atdsMem[mode];
 
 	ChunkHead Ch;
-	Common::SeekableReadStream *stream = dynamic_cast<Common::SeekableReadStream *>(_atdsHandle[mode]);
+	Common::SeekableReadStream *stream = dynamic_cast<Common::SeekableReadStream *>(_atdsHandle);
 
 	if (stream && txt_adr) {
 		_G(mem)->file->selectPoolItem(stream, chunkNr + _atdsPoolOff[mode]);
diff --git a/engines/chewy/atds.h b/engines/chewy/atds.h
index 53c12582ac4..4a2d27a65bf 100644
--- a/engines/chewy/atds.h
+++ b/engines/chewy/atds.h
@@ -237,8 +237,8 @@ public:
 	void load_atds(int16 chunkNr, int16 mode);
 
 	Common::Stream *pool_handle(const char *fname);
-	void set_handle(const char *fname, int16 mode, Common::Stream *handle, int16 chunkStart, int16 chunkNr);
-	void close_handle(int16 mode);
+	void set_handle(const char *fname, int16 mode, int16 chunkStart, int16 chunkNr);
+	void close_handle();
 	void crypt(char *txt, uint32 size);
 	bool start_ats(int16 txtNr, int16 txtMode, int16 color, int16 mode, int16 *vocNr);
 	void stop_ats();
@@ -291,7 +291,7 @@ private:
 	int16 get_delay(int16 txt_len);
 	void initItemUseWith();
 
-	Common::Stream *_atdsHandle[MAX_HANDLE] = { nullptr };
+	Common::Stream *_atdsHandle = nullptr;
 	char *_atdsMem[MAX_HANDLE] = { nullptr };
 	int16 _atdsPoolOff[MAX_HANDLE] = { 0 };
 	char *_atsMem = nullptr;
diff --git a/engines/chewy/inits.cpp b/engines/chewy/inits.cpp
index 8869e7505e0..04bed3ff6fa 100644
--- a/engines/chewy/inits.cpp
+++ b/engines/chewy/inits.cpp
@@ -165,20 +165,15 @@ void init_room() {
 
 void init_atds() {
 	// Close any prior handles
-	_G(atds)->close_handle(AAD_DATA);
-	_G(atds)->close_handle(ATS_DATA);
-	_G(atds)->close_handle(ADS_DATA);
-	_G(atds)->close_handle(INV_USE_DATA);
-	_G(atds)->close_handle(INV_ATS_DATA);
-	_G(atds)->close_handle(ATDS_HANDLE);
+	_G(atds)->close_handle();
 
 	// New set up
-	Common::Stream *handle = _G(atds)->pool_handle(ATDS_TXT);
-	_G(atds)->set_handle(ATDS_TXT, ATS_DATA, handle, ATS_TAP_OFF, ATS_TAP_MAX);
-	_G(atds)->set_handle(ATDS_TXT, INV_ATS_DATA, handle, INV_TAP_OFF, INV_TAP_MAX);
-	_G(atds)->set_handle(ATDS_TXT, AAD_DATA, handle, AAD_TAP_OFF, AAD_TAP_MAX);
-	_G(atds)->set_handle(ATDS_TXT, ADS_DATA, handle, ADS_TAP_OFF, ADS_TAP_MAX);
-	_G(atds)->set_handle(ATDS_TXT, INV_USE_DATA, handle, USE_TAP_OFF, USE_TAP_MAX);
+	_G(atds)->pool_handle(ATDS_TXT);
+	_G(atds)->set_handle(ATDS_TXT, ATS_DATA, ATS_TAP_OFF, ATS_TAP_MAX);
+	_G(atds)->set_handle(ATDS_TXT, INV_ATS_DATA, INV_TAP_OFF, INV_TAP_MAX);
+	_G(atds)->set_handle(ATDS_TXT, AAD_DATA, AAD_TAP_OFF, AAD_TAP_MAX);
+	_G(atds)->set_handle(ATDS_TXT, ADS_DATA, ADS_TAP_OFF, ADS_TAP_MAX);
+	_G(atds)->set_handle(ATDS_TXT, INV_USE_DATA, USE_TAP_OFF, USE_TAP_MAX);
 	_G(gameState).AadSilent = 10;
 	_G(gameState).DelaySpeed = 5;
 	_G(spieler_vector)[P_CHEWY].Delay = _G(gameState).DelaySpeed;


Commit: 1e6e9b07c92bf17d8a97fd88e55948906f33537f
    https://github.com/scummvm/scummvm/commit/1e6e9b07c92bf17d8a97fd88e55948906f33537f
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-04-05T22:32:49+03:00

Commit Message:
CHEWY: Refactor ATDS initialization

Changed paths:
    engines/chewy/atds.cpp
    engines/chewy/atds.h
    engines/chewy/globals.h
    engines/chewy/inits.cpp


diff --git a/engines/chewy/atds.cpp b/engines/chewy/atds.cpp
index f9a380ce160..37506b91b61 100644
--- a/engines/chewy/atds.cpp
+++ b/engines/chewy/atds.cpp
@@ -105,11 +105,15 @@ Atdsys::Atdsys() {
 	_adsnb._endNr = 0;
 	_adsStackPtr = 0;
 
+	init();
 	initItemUseWith();
 }
 
 Atdsys::~Atdsys() {
-	close_handle();
+	if (_atdsHandle) {
+		delete _atdsHandle;
+		_atdsHandle = nullptr;
+	}
 
 	for (int16 i = 0; i < MAX_HANDLE; i++) {
 		if (_atdsMem[i])
@@ -123,6 +127,26 @@ Atdsys::~Atdsys() {
 	delete _dialogResource;
 }
 
+void Atdsys::init() {
+	_atdsHandle = new Common::File();
+	_atdsHandle->open(ATDS_TXT);
+	if (!_atdsHandle->isOpen()) {
+		error("Error opening %s", ATDS_TXT);
+	}
+
+	set_handle(ATDS_TXT, ATS_DATA, ATS_TAP_OFF, ATS_TAP_MAX);
+	set_handle(ATDS_TXT, INV_ATS_DATA, INV_TAP_OFF, INV_TAP_MAX);
+	set_handle(ATDS_TXT, AAD_DATA, AAD_TAP_OFF, AAD_TAP_MAX);
+	set_handle(ATDS_TXT, ADS_DATA, ADS_TAP_OFF, ADS_TAP_MAX);
+	set_handle(ATDS_TXT, INV_USE_DATA, USE_TAP_OFF, USE_TAP_MAX);
+	_G(gameState).AadSilent = 10;
+	_G(gameState).DelaySpeed = 5;
+	_G(spieler_vector)
+	[P_CHEWY].Delay = _G(gameState).DelaySpeed;
+	set_delay(&_G(gameState).DelaySpeed, _G(gameState).AadSilent);
+	set_string_end_func(&atdsStringStart);
+}
+
 void Atdsys::initItemUseWith() {
 	int16 objA, objB, txtNum;
 
@@ -326,39 +350,27 @@ void Atdsys::set_split_win(int16 nr, int16 x, int16 y) {
 	_ssi[nr]._y = y;
 }
 
-Common::Stream *Atdsys::pool_handle(const char *fname) {
-	Common::File *f = new Common::File();
-	f->open(fname);
-	if (f->isOpen()) {
-		_atdsHandle = f;
-	} else {
-		error("Error reading from %s", fname);
-	}
-	return f;
-}
-
 void Atdsys::set_handle(const char *fname, int16 mode, int16 chunkStart, int16 chunkNr) {
-	Common::SeekableReadStream *rs = dynamic_cast<Common::SeekableReadStream *>(_atdsHandle);
 	ChunkHead Ch;
 	char *tmp_adr = atds_adr(fname, chunkStart, chunkNr);
-	if (rs) {
+	if (_atdsHandle) {
 		if (_atdsMem[mode])
 			free(_atdsMem[mode]);
 		_atdsMem[mode] = tmp_adr;
 		_atdsPoolOff[mode] = chunkStart;
 		switch (mode) {
 		case INV_USE_DATA:
-			_G(mem)->file->selectPoolItem(rs, _atdsPoolOff[mode]);
-			rs->seek(-ChunkHead::SIZE(), SEEK_CUR);
+			_G(mem)->file->selectPoolItem(_atdsHandle, _atdsPoolOff[mode]);
+			_atdsHandle->seek(-ChunkHead::SIZE(), SEEK_CUR);
 
-			if (!Ch.load(rs)) {
+			if (!Ch.load(_atdsHandle)) {
 				error("Error reading from %s", fname);
 			} else {
 				free(_invUseMem);
 				_invUseMem = (char *)MALLOC(Ch.size + 3l);
 
 				if (Ch.size) {
-					if (!rs->read(_invUseMem, Ch.size)) {
+					if (!_atdsHandle->read(_invUseMem, Ch.size)) {
 						error("Error reading from %s", fname);
 					} else {
 						crypt(_invUseMem, Ch.size);
@@ -373,13 +385,6 @@ void Atdsys::set_handle(const char *fname, int16 mode, int16 chunkStart, int16 c
 	}
 }
 
-void Atdsys::close_handle() {
-	if (_atdsHandle) {
-		delete _atdsHandle;
-		_atdsHandle = nullptr;
-	}
-}
-
 char *Atdsys::atds_adr(const char *fname, int16 chunkStart, int16 chunkNr) {
 	char *tmp_adr = nullptr;
 	uint32 size = _G(mem)->file->getPoolSize(fname, chunkStart, chunkNr);
@@ -394,16 +399,14 @@ void Atdsys::load_atds(int16 chunkNr, int16 mode) {
 	char *txt_adr = _atdsMem[mode];
 
 	ChunkHead Ch;
-	Common::SeekableReadStream *stream = dynamic_cast<Common::SeekableReadStream *>(_atdsHandle);
-
-	if (stream && txt_adr) {
-		_G(mem)->file->selectPoolItem(stream, chunkNr + _atdsPoolOff[mode]);
-		stream->seek(-ChunkHead::SIZE(), SEEK_CUR);
-		if (!Ch.load(stream)) {
+	if (_atdsHandle && txt_adr) {
+		_G(mem)->file->selectPoolItem(_atdsHandle, chunkNr + _atdsPoolOff[mode]);
+		_atdsHandle->seek(-ChunkHead::SIZE(), SEEK_CUR);
+		if (!Ch.load(_atdsHandle)) {
 			error("load_atds error");
 		} else {
 			if (Ch.size) {
-				if (stream->read(txt_adr, Ch.size) != Ch.size) {
+				if (_atdsHandle->read(txt_adr, Ch.size) != Ch.size) {
 					error("load_atds error");
 				} else {
 					crypt(txt_adr, Ch.size);
diff --git a/engines/chewy/atds.h b/engines/chewy/atds.h
index 4a2d27a65bf..d38cb0d6985 100644
--- a/engines/chewy/atds.h
+++ b/engines/chewy/atds.h
@@ -236,9 +236,7 @@ public:
 	char *atds_adr(const char *fname, int16 chunkStart, int16 chunkNr);
 	void load_atds(int16 chunkNr, int16 mode);
 
-	Common::Stream *pool_handle(const char *fname);
 	void set_handle(const char *fname, int16 mode, int16 chunkStart, int16 chunkNr);
-	void close_handle();
 	void crypt(char *txt, uint32 size);
 	bool start_ats(int16 txtNr, int16 txtMode, int16 color, int16 mode, int16 *vocNr);
 	void stop_ats();
@@ -288,10 +286,11 @@ public:
 	Common::String getTextEntry(uint dialogNum, uint entryNum, int type);
 
 private:
+	void init();
 	int16 get_delay(int16 txt_len);
 	void initItemUseWith();
-
-	Common::Stream *_atdsHandle = nullptr;
+	
+	Common::File *_atdsHandle = nullptr;
 	char *_atdsMem[MAX_HANDLE] = { nullptr };
 	int16 _atdsPoolOff[MAX_HANDLE] = { 0 };
 	char *_atsMem = nullptr;
diff --git a/engines/chewy/globals.h b/engines/chewy/globals.h
index 56c51714919..1f17bd72361 100644
--- a/engines/chewy/globals.h
+++ b/engines/chewy/globals.h
@@ -358,8 +358,6 @@ void show_intro();
 void register_cutscene(int cutsceneNum);
 void getCutscenes(Common::Array<int> &cutscenes);
 
-void init_atds();
-
 void init_room();
 
 void buildMenu(int16 x, int16 y, int16 xNr, int16 yNr, int16 col, int16 mode);
diff --git a/engines/chewy/inits.cpp b/engines/chewy/inits.cpp
index 04bed3ff6fa..da8a2a30de1 100644
--- a/engines/chewy/inits.cpp
+++ b/engines/chewy/inits.cpp
@@ -138,7 +138,6 @@ void var_init() {
 
 	_G(gpkt).Vorschub = _G(spieler_mi)[P_CHEWY].Vorschub;
 	init_room();
-	init_atds();
 	_G(gameState).FramesPerSecond = 7;
 	_G(currentSong) = -1;
 	_G(SetUpScreenFunc) = nullptr;
@@ -163,24 +162,6 @@ void init_room() {
 	_G(room)->open_handle(EPISODE1_GEP, R_GEP_DATA);
 }
 
-void init_atds() {
-	// Close any prior handles
-	_G(atds)->close_handle();
-
-	// New set up
-	_G(atds)->pool_handle(ATDS_TXT);
-	_G(atds)->set_handle(ATDS_TXT, ATS_DATA, ATS_TAP_OFF, ATS_TAP_MAX);
-	_G(atds)->set_handle(ATDS_TXT, INV_ATS_DATA, INV_TAP_OFF, INV_TAP_MAX);
-	_G(atds)->set_handle(ATDS_TXT, AAD_DATA, AAD_TAP_OFF, AAD_TAP_MAX);
-	_G(atds)->set_handle(ATDS_TXT, ADS_DATA, ADS_TAP_OFF, ADS_TAP_MAX);
-	_G(atds)->set_handle(ATDS_TXT, INV_USE_DATA, USE_TAP_OFF, USE_TAP_MAX);
-	_G(gameState).AadSilent = 10;
-	_G(gameState).DelaySpeed = 5;
-	_G(spieler_vector)[P_CHEWY].Delay = _G(gameState).DelaySpeed;
-	_G(atds)->set_delay(&_G(gameState).DelaySpeed, _G(gameState).AadSilent);
-	_G(atds)->set_string_end_func(&atdsStringStart);
-}
-
 void new_game() {
 	_G(gameState).clear();
 


Commit: 3740acdd7d147d7d2dd985d080cc526fb5a8638d
    https://github.com/scummvm/scummvm/commit/3740acdd7d147d7d2dd985d080cc526fb5a8638d
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-04-05T22:32:49+03:00

Commit Message:
CHEWY: Cleanup

Changed paths:
    engines/chewy/atds.cpp
    engines/chewy/atds.h
    engines/chewy/data.cpp
    engines/chewy/data.h


diff --git a/engines/chewy/atds.cpp b/engines/chewy/atds.cpp
index 37506b91b61..21f7deb9c76 100644
--- a/engines/chewy/atds.cpp
+++ b/engines/chewy/atds.cpp
@@ -110,10 +110,8 @@ Atdsys::Atdsys() {
 }
 
 Atdsys::~Atdsys() {
-	if (_atdsHandle) {
-		delete _atdsHandle;
-		_atdsHandle = nullptr;
-	}
+	delete _atdsHandle;
+	_atdsHandle = nullptr;
 
 	for (int16 i = 0; i < MAX_HANDLE; i++) {
 		if (_atdsMem[i])
@@ -141,8 +139,7 @@ void Atdsys::init() {
 	set_handle(ATDS_TXT, INV_USE_DATA, USE_TAP_OFF, USE_TAP_MAX);
 	_G(gameState).AadSilent = 10;
 	_G(gameState).DelaySpeed = 5;
-	_G(spieler_vector)
-	[P_CHEWY].Delay = _G(gameState).DelaySpeed;
+	_G(spieler_vector)[P_CHEWY].Delay = _G(gameState).DelaySpeed;
 	set_delay(&_G(gameState).DelaySpeed, _G(gameState).AadSilent);
 	set_string_end_func(&atdsStringStart);
 }
@@ -352,49 +349,37 @@ void Atdsys::set_split_win(int16 nr, int16 x, int16 y) {
 
 void Atdsys::set_handle(const char *fname, int16 mode, int16 chunkStart, int16 chunkNr) {
 	ChunkHead Ch;
-	char *tmp_adr = atds_adr(fname, chunkStart, chunkNr);
-	if (_atdsHandle) {
-		if (_atdsMem[mode])
-			free(_atdsMem[mode]);
-		_atdsMem[mode] = tmp_adr;
-		_atdsPoolOff[mode] = chunkStart;
-		switch (mode) {
-		case INV_USE_DATA:
-			_G(mem)->file->selectPoolItem(_atdsHandle, _atdsPoolOff[mode]);
-			_atdsHandle->seek(-ChunkHead::SIZE(), SEEK_CUR);
-
-			if (!Ch.load(_atdsHandle)) {
+	uint32 size = _G(mem)->file->getPoolSize(fname, chunkStart, chunkNr);
+	char *tmp_adr = size ? (char *)MALLOC(size + 3) : nullptr;
+
+	if (_atdsMem[mode])
+		free(_atdsMem[mode]);
+	_atdsMem[mode] = tmp_adr;
+	_atdsPoolOff[mode] = chunkStart;
+
+	if (mode == INV_USE_DATA) {
+		_G(mem)->file->selectPoolItem(_atdsHandle, _atdsPoolOff[mode]);
+		_atdsHandle->seek(-ChunkHead::SIZE(), SEEK_CUR);
+
+		if (!Ch.load(_atdsHandle))
+			error("Error reading from %s", fname);
+
+		free(_invUseMem);
+		_invUseMem = (char *)MALLOC(Ch.size + 3l);
+
+		if (Ch.size) {
+			if (!_atdsHandle->read(_invUseMem, Ch.size)) {
 				error("Error reading from %s", fname);
 			} else {
-				free(_invUseMem);
-				_invUseMem = (char *)MALLOC(Ch.size + 3l);
-
-				if (Ch.size) {
-					if (!_atdsHandle->read(_invUseMem, Ch.size)) {
-						error("Error reading from %s", fname);
-					} else {
-						crypt(_invUseMem, Ch.size);
-					}
-				}
-				_invUseMem[Ch.size] = (char)BLOCKENDE;
-				_invUseMem[Ch.size + 1] = (char)BLOCKENDE;
-				_invUseMem[Ch.size + 2] = (char)BLOCKENDE;
+				crypt(_invUseMem, Ch.size);
 			}
-			break;
 		}
+		_invUseMem[Ch.size] = (char)BLOCKENDE;
+		_invUseMem[Ch.size + 1] = (char)BLOCKENDE;
+		_invUseMem[Ch.size + 2] = (char)BLOCKENDE;
 	}
 }
 
-char *Atdsys::atds_adr(const char *fname, int16 chunkStart, int16 chunkNr) {
-	char *tmp_adr = nullptr;
-	uint32 size = _G(mem)->file->getPoolSize(fname, chunkStart, chunkNr);
-	if (size) {
-		tmp_adr = (char *)MALLOC(size + 3);
-	}
-
-	return tmp_adr;
-}
-
 void Atdsys::load_atds(int16 chunkNr, int16 mode) {
 	char *txt_adr = _atdsMem[mode];
 
diff --git a/engines/chewy/atds.h b/engines/chewy/atds.h
index d38cb0d6985..ec29adeb0d3 100644
--- a/engines/chewy/atds.h
+++ b/engines/chewy/atds.h
@@ -233,7 +233,6 @@ public:
 	SplitStringRet *split_string(SplitStringInit *ssi);
 	void calc_txt_win(SplitStringInit *ssi);
 	void str_null2leer(char *strStart, char *strEnd);
-	char *atds_adr(const char *fname, int16 chunkStart, int16 chunkNr);
 	void load_atds(int16 chunkNr, int16 mode);
 
 	void set_handle(const char *fname, int16 mode, int16 chunkStart, int16 chunkNr);
diff --git a/engines/chewy/data.cpp b/engines/chewy/data.cpp
index 60b598f1b01..5d6aaa7f2c7 100644
--- a/engines/chewy/data.cpp
+++ b/engines/chewy/data.cpp
@@ -27,32 +27,22 @@
 
 namespace Chewy {
 
-Data::Data() {
-}
-
-Data::~Data() {
-}
-
-uint16 Data::selectPoolItem(Common::Stream *stream, uint16 nr) {
-	Common::SeekableReadStream *rs = dynamic_cast<Common::SeekableReadStream *>(stream);
-
-	if (rs) {
-		rs->seek(0, SEEK_SET);
+void Data::selectPoolItem(Common::File *stream, uint16 nr) {
+	if (stream) {
+		stream->seek(0, SEEK_SET);
 		NewPhead ph;
-		if (!ph.load(rs))
+		if (!ph.load(stream))
 			error("selectPoolItem error");
 
 		if (!strncmp(ph._id, "NGS", 3)) {
 			if (nr >= ph._poolNr)
 				nr = ph._poolNr - 1;
 
-			rs->seek(-(int)((ph._poolNr - nr) * sizeof(uint32)), SEEK_END);
-			uint32 tmp1 = rs->readUint32LE();
-			rs->seek(tmp1, SEEK_SET);
+			stream->seek(-(int)((ph._poolNr - nr) * sizeof(uint32)), SEEK_END);
+			uint32 tmp1 = stream->readUint32LE();
+			stream->seek(tmp1, SEEK_SET);
 		}
 	}
-
-	return nr;
 }
 
 uint32 Data::getPoolSize(const char *filename, int16 chunkStart, int16 chunkNr) {
diff --git a/engines/chewy/data.h b/engines/chewy/data.h
index ebc62326144..372233d04f8 100644
--- a/engines/chewy/data.h
+++ b/engines/chewy/data.h
@@ -23,15 +23,16 @@
 #define CHEWY_DATA_H
 
 #include "chewy/chewy.h"
+#include "common/file.h"
 
 namespace Chewy {
 
 class Data {
 public:
-	Data();
-	~Data();
+	Data() {}
+	~Data() {}
 
-	uint16 selectPoolItem(Common::Stream *stream, uint16 nr);
+	void selectPoolItem(Common::File *stream, uint16 nr);
 	uint32 getPoolSize(const char *filename, int16 chunkStart, int16 chunkNr);
 };
 




More information about the Scummvm-git-logs mailing list