Skip to content

Commit

Permalink
SLUDGE: fix u32string saving error
Browse files Browse the repository at this point in the history
  • Loading branch information
yinsimei authored and sev- committed Jul 13, 2017
1 parent 389bd92 commit 076f841
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 10 deletions.
8 changes: 4 additions & 4 deletions engines/sludge/fonttext.cpp
Expand Up @@ -32,7 +32,7 @@ namespace Sludge {

spriteBank theFont;
int fontHeight = 0, numFontColours, loadedFontNum;
Common::U32String fontOrderString;
UTF8Converter fontOrder;
int16 fontSpace = -1;

uint32 *fontTable = NULL;
Expand All @@ -57,7 +57,7 @@ bool isInFont(char *theText) {
uint32 c = str32[0];

// check if font order contains the utf8 char
return fontOrderString.contains(c);
return fontOrder.getU32String().contains(c);
}

int stringLength(char *theText) {
Expand Down Expand Up @@ -161,14 +161,14 @@ void setFontColour(spritePalette &sP, byte r, byte g, byte b) {
}

bool loadFont(int filenum, const char *charOrder, int h) {
fontOrderString.clear();
fontOrderString = UTF8Converter::convertUtf8ToUtf32(charOrder);
fontOrder.setUTF8String(charOrder);

forgetSpriteBank(theFont);

loadedFontNum = filenum;

// get max value among all utf8 chars
Common::U32String fontOrderString = fontOrder.getU32String();
fontTableSize = 0;
for (uint32 i = 0; i < fontOrderString.size(); ++i) {
uint32 c = fontOrderString[i];
Expand Down
5 changes: 3 additions & 2 deletions engines/sludge/loadsave.cpp
Expand Up @@ -44,6 +44,7 @@
#include "sludge/loadsave.h"
#include "sludge/bg_effects.h"
#include "sludge/thumbnail.h"
#include "sludge/utf8.h"
#include "sludge/CommonCode/version.h"

namespace Sludge {
Expand All @@ -63,7 +64,7 @@ extern personaAnimation *mouseCursorAnim; // In cursor.cpp
extern int mouseCursorFrameNum; // " " "
extern int loadedFontNum, fontHeight, fontTableSize; // In fonttext.cpp
extern int numFontColours; // " " "
extern char *fontOrderString; // " " "
extern UTF8Converter fontOrder; // " " "
extern FILETIME fileTime; // In sludger.cpp
extern int speechMode; // " " "
extern int lightMapNumber; // In backdrop.cpp
Expand Down Expand Up @@ -410,7 +411,7 @@ bool saveGame(char *fname) {
if (fontTableSize > 0) {
fp->writeUint16BE(loadedFontNum);
fp->writeUint16BE(fontHeight);
writeString(fontOrderString, fp);
writeString(fontOrder.getUTF8String(), fp);
}
putSigned(fontSpace, fp);

Expand Down
4 changes: 2 additions & 2 deletions engines/sludge/moreio.cpp
Expand Up @@ -40,8 +40,8 @@ namespace Sludge {

bool allowAnyFilename = true;

void writeString(char *s, Common::WriteStream *stream) {
int a, len = strlen(s);
void writeString(Common::String s, Common::WriteStream *stream) {
int a, len = s.size();
stream->writeUint16BE(len);
for (a = 0; a < len; a++) {
stream->writeByte(s[a] + 1);
Expand Down
2 changes: 1 addition & 1 deletion engines/sludge/moreio.h
Expand Up @@ -30,7 +30,7 @@ float getFloat(Common::SeekableReadStream *stream);
int16 getSigned(Common::SeekableReadStream *stream);

// Write
void writeString(char *s, Common::WriteStream *stream);
void writeString(Common::String s, Common::WriteStream *stream);
void putFloat(float f, Common::WriteStream *stream);
void putSigned(int16 f, Common::WriteStream *stream);

Expand Down
7 changes: 6 additions & 1 deletion engines/sludge/utf8.h
Expand Up @@ -70,7 +70,12 @@ class UTF8Converter {
/**
* get converted U32String
*/
Common::U32String getU32String() { return _str32; };
Common::U32String getU32String() const { return _str32; };

/**
* get origin UTF8String
*/
Common::String getUTF8String() const { return _str; };

/** Convert UTF8 String to UTF32 String
*/
Expand Down

0 comments on commit 076f841

Please sign in to comment.