[Scummvm-git-logs] scummvm master -> 640e81d62205426139beceeff2b538d7b0fb0149
dreammaster
paulfgilbert at gmail.com
Sun Nov 8 02:51:14 UTC 2020
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:
6b55aa029f GLK: COMPREHEND: Fix some println calls, add more flag constants
27df1fdf49 GLK: COMPREHEND: Implementing no-floodfill drawing mode
640e81d622 GLK: COMPREHEND: Rearrange order of beforeTurn/afterTurn
Commit: 6b55aa029f61f42eea28aacafd7bb410b59cdb19
https://github.com/scummvm/scummvm/commit/6b55aa029f61f42eea28aacafd7bb410b59cdb19
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-11-07T18:50:33-08:00
Commit Message:
GLK: COMPREHEND: Fix some println calls, add more flag constants
Changed paths:
engines/glk/comprehend/game_oo.cpp
engines/glk/comprehend/game_oo.h
diff --git a/engines/glk/comprehend/game_oo.cpp b/engines/glk/comprehend/game_oo.cpp
index b1f68fb565..fc2a85c4df 100644
--- a/engines/glk/comprehend/game_oo.cpp
+++ b/engines/glk/comprehend/game_oo.cpp
@@ -35,6 +35,7 @@ enum OOToposRoomFlag {
enum OOToposFlag {
OO_FLAG_9 = 9,
+ OO_FLAG_13 = 13,
OO_FLAG_22 = 22,
OO_BRIGHT_ROOM = 25,
OO_FLAG_WEARING_GOGGLES = 27,
@@ -42,6 +43,8 @@ enum OOToposFlag {
OO_FLAG_43 = 43,
OO_FLAG_44 = 44,
OO_FLAG_SUFFICIENT_FUEL = 51,
+ OO_FLAG_55 = 55,
+ OO_FLAG_56 = 56,
OO_FLAG_58 = 58,
OO_FLAG_59 = 59,
OO_FLAG_READY_TO_DEPART = 60,
@@ -144,9 +147,9 @@ void OOToposGame::beforeTurn() {
}
bool OOToposGame::afterTurn() {
- if (_flags[55])
+ if (_flags[OO_FLAG_55])
_currentRoom = 55;
- else if (_flags[56])
+ else if (_flags[OO_FLAG_56])
_currentRoom = 54;
return true;
@@ -231,7 +234,7 @@ bool OOToposGame::handle_restart() {
void OOToposGame::randomizeGuardLocation() {
Item *item = get_item(22);
- if (_flags[13] && item->_room != _currentRoom) {
+ if (_flags[OO_FLAG_13] && item->_room != _currentRoom) {
if (getRandomNumber(255) > 128 && (_currentRoom == 3 || _currentRoom == 6))
item->_room = _currentRoom;
}
@@ -241,10 +244,10 @@ void OOToposGame::computerConsole() {
if (_currentRoom == 57) {
if (!_flags[OO_FLAG_9]) {
// Mission Code:
- console_println("281");
+ console_println(_strings2[129].c_str());
} else if (!_flags[OO_FLAG_58]) {
// Welcome back! I was wondering if you would be returning
- console_println("283");
+ console_println(_strings2[131].c_str());
_flags[OO_FLAG_58] = true;
_printComputerMsg = true;
checkShipWorking();
@@ -252,22 +255,22 @@ void OOToposGame::computerConsole() {
checkShipDepart();
} else if (_flags[OO_FLAG_43]) {
// We can reach Mealy Sukas with the fuel we have left
- console_println("28E");
+ console_println(_strings2[142].c_str());
_flags[OO_FLAG_59] = true;
if (_flags[OO_FLAG_44])
// The currency on Mealy Sukas is the 'frod'
- console_println("290");
+ console_println(_strings2[144].c_str());
else
// Without evaluation data as to the current fuel prices
- console_println("28F");
+ console_println(_strings2[143].c_str());
}
}
}
void OOToposGame::computerResponse() {
console_println(_strings2[145].c_str());
- if (_flags[43])
+ if (_flags[OO_FLAG_43])
console_println(_strings2[144].c_str());
else
console_println(_strings2[152].c_str());
diff --git a/engines/glk/comprehend/game_oo.h b/engines/glk/comprehend/game_oo.h
index dbe0fa0423..3c9f606175 100644
--- a/engines/glk/comprehend/game_oo.h
+++ b/engines/glk/comprehend/game_oo.h
@@ -48,7 +48,7 @@ private:
void computerConsole();
/**
- * Handles displaying a cmputer response
+ * Handles displaying a computer response
*/
void computerResponse();
Commit: 27df1fdf4942a7ad353c569288f4d0d1a4875d5b
https://github.com/scummvm/scummvm/commit/27df1fdf4942a7ad353c569288f4d0d1a4875d5b
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-11-07T18:50:33-08:00
Commit Message:
GLK: COMPREHEND: Implementing no-floodfill drawing mode
Changed paths:
engines/glk/comprehend/comprehend.cpp
engines/glk/comprehend/game_oo.cpp
engines/glk/comprehend/game_oo.h
engines/glk/comprehend/pics.cpp
engines/glk/comprehend/pics.h
diff --git a/engines/glk/comprehend/comprehend.cpp b/engines/glk/comprehend/comprehend.cpp
index 7900202a76..882587a29d 100644
--- a/engines/glk/comprehend/comprehend.cpp
+++ b/engines/glk/comprehend/comprehend.cpp
@@ -201,11 +201,16 @@ bool Comprehend::loadLauncherSavegameIfNeeded() {
return false;
}
-
void Comprehend::drawPicture(uint pictureNum) {
- if (_topWindow)
+ if (_topWindow) {
+ // Clear the picture cache before each drawing in OO-Topos. Wearing the goggles
+ // can producing different versions of the same scene, so we can't cache it
+ if (_gameDescription._gameId == "ootopos")
+ _pictures->clear();
+
glk_image_draw_scaled(_topWindow, pictureNum,
20 * SCALE_FACTOR, 0, G_RENDER_WIDTH * SCALE_FACTOR, G_RENDER_HEIGHT * SCALE_FACTOR);
+ }
}
void Comprehend::drawLocationPicture(int pictureNum, bool clearBg) {
diff --git a/engines/glk/comprehend/game_oo.cpp b/engines/glk/comprehend/game_oo.cpp
index fc2a85c4df..4379ae5df5 100644
--- a/engines/glk/comprehend/game_oo.cpp
+++ b/engines/glk/comprehend/game_oo.cpp
@@ -38,11 +38,12 @@ enum OOToposFlag {
OO_FLAG_13 = 13,
OO_FLAG_22 = 22,
OO_BRIGHT_ROOM = 25,
- OO_FLAG_WEARING_GOGGLES = 27,
+ OO_FLAG_WEARING_GOGGLES = 27, // ?
OO_FLAG_FLASHLIGHT_ON = 39,
OO_FLAG_43 = 43,
OO_FLAG_44 = 44,
OO_FLAG_SUFFICIENT_FUEL = 51,
+ OO_FLAG_53 = 53,
OO_FLAG_55 = 55,
OO_FLAG_56 = 56,
OO_FLAG_58 = 58,
@@ -60,7 +61,7 @@ static const GameStrings OO_STRINGS = {
};
OOToposGame::OOToposGame() : ComprehendGameV2(), _restartMode(RESTART_IMMEDIATE),
- _wearingGoggles(false), _lightOn(false), _stringVal1(0), _stringVal2(0),
+ _noFloodfill(UNSET), _lightOn(UNSET), _stringVal1(0), _stringVal2(0),
_printComputerMsg(true), _shipNotWorking(false) {
_gameDataFile = "g0";
@@ -120,6 +121,7 @@ int OOToposGame::roomIsSpecial(unsigned room_index, unsigned *roomDescString) {
}
void OOToposGame::beforeTurn() {
+#if 0
Room *room = &_rooms[_currentRoom];
/*
@@ -141,16 +143,32 @@ void OOToposGame::beforeTurn() {
_wearingGoggles = _flags[OO_FLAG_WEARING_GOGGLES];
_updateFlags |= UPDATE_GRAPHICS | UPDATE_ROOM_DESC;
}
+#endif
+ if (!_flags[OO_FLAG_55] && !_flags[OO_FLAG_56]) {
+ YesNo nff = _flags[OO_FLAG_53] ? YES : NO;
+
+ if (_noFloodfill != nff) {
+ _noFloodfill = nff;
+ _updateFlags |= UPDATE_GRAPHICS | UPDATE_ROOM_DESC;
+
+ if (_noFloodfill == YES)
+ g_comprehend->_drawFlags |= IMAGEF_NO_FLOODFILL;
+ else
+ g_comprehend->_drawFlags &= ~IMAGEF_NO_FLOODFILL;
+ }
+ }
+
// Handle the computer console if in front of it
computerConsole();
}
bool OOToposGame::afterTurn() {
- if (_flags[OO_FLAG_55])
+ if (_flags[OO_FLAG_55]) {
_currentRoom = 55;
- else if (_flags[OO_FLAG_56])
+ } else if (_flags[OO_FLAG_56]) {
_currentRoom = 54;
+ }
return true;
}
@@ -232,6 +250,14 @@ bool OOToposGame::handle_restart() {
return true;
}
+void OOToposGame::synchronizeSave(Common::Serializer &s) {
+ ComprehendGameV2::synchronizeSave(s);
+
+ if (s.isLoading()) {
+ _noFloodfill = UNSET;
+ }
+}
+
void OOToposGame::randomizeGuardLocation() {
Item *item = get_item(22);
if (_flags[OO_FLAG_13] && item->_room != _currentRoom) {
diff --git a/engines/glk/comprehend/game_oo.h b/engines/glk/comprehend/game_oo.h
index 3c9f606175..e3d389d925 100644
--- a/engines/glk/comprehend/game_oo.h
+++ b/engines/glk/comprehend/game_oo.h
@@ -30,10 +30,12 @@ namespace Comprehend {
enum RestartMode { RESTART_IMMEDIATE, RESTART_WITH_MSG, RESTART_WITHOUT_MSG };
+enum YesNo { NO, YES, UNSET };
+
class OOToposGame : public ComprehendGameV2 {
private:
RestartMode _restartMode;
- bool _wearingGoggles, _lightOn;
+ YesNo _noFloodfill, _lightOn;
int _stringVal1, _stringVal2;
bool _printComputerMsg, _shipNotWorking;
@@ -82,6 +84,7 @@ public:
int roomIsSpecial(unsigned room_index, unsigned *room_desc_string) override;
void handleSpecialOpcode(uint8 operand) override;
bool handle_restart() override;
+ void synchronizeSave(Common::Serializer &s) override;
};
} // namespace Comprehend
diff --git a/engines/glk/comprehend/pics.cpp b/engines/glk/comprehend/pics.cpp
index 11ee2aa8fd..894ea669c6 100644
--- a/engines/glk/comprehend/pics.cpp
+++ b/engines/glk/comprehend/pics.cpp
@@ -136,7 +136,8 @@ bool Pics::ImageFile::doImageOp(Pics::ImageContext *ctx) const {
case OPCODE_SET_PEN_COLOR:
debugC(kDebugGraphics, "set_pen_color(%.2x)", opcode);
- ctx->_penColor = ctx->_drawSurface->getPenColor(param);
+ if (!(ctx->_drawFlags & IMAGEF_NO_FLOODFILL))
+ ctx->_penColor = ctx->_drawSurface->getPenColor(param);
break;
case OPCODE_TEXT_CHAR:
@@ -220,7 +221,8 @@ bool Pics::ImageFile::doImageOp(Pics::ImageContext *ctx) const {
debugC(kDebugGraphics, "draw_shape(%d, %d), style=%.2x, fill=%.2x",
a, b, ctx->_shape, ctx->_fillColor);
- ctx->_drawSurface->drawShape(a, b, ctx->_shape, ctx->_fillColor);
+ if (!(ctx->_drawFlags & IMAGEF_NO_FLOODFILL))
+ ctx->_drawSurface->drawShape(a, b, ctx->_shape, ctx->_fillColor);
break;
case OPCODE_DELAY:
diff --git a/engines/glk/comprehend/pics.h b/engines/glk/comprehend/pics.h
index 503296f115..90d3115d38 100644
--- a/engines/glk/comprehend/pics.h
+++ b/engines/glk/comprehend/pics.h
@@ -59,7 +59,7 @@ class Pics : public Common::Archive {
uint16 _textY;
ImageContext(DrawSurface *drawSurface, Graphics::Font *font, uint flags) :
- _drawSurface(drawSurface), _font(font), _drawFlags(0),
+ _drawSurface(drawSurface), _font(font), _drawFlags(flags),
_x(0), _y(0), _penColor(G_COLOR_BLACK), _fillColor(G_COLOR_BLACK),
_shape(SHAPE_CIRCLE_LARGE), _textX(0), _textY(0) {
}
Commit: 640e81d62205426139beceeff2b538d7b0fb0149
https://github.com/scummvm/scummvm/commit/640e81d62205426139beceeff2b538d7b0fb0149
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-11-07T18:50:33-08:00
Commit Message:
GLK: COMPREHEND: Rearrange order of beforeTurn/afterTurn
Changed paths:
engines/glk/comprehend/game.cpp
engines/glk/comprehend/game.h
engines/glk/comprehend/game_cc.cpp
engines/glk/comprehend/game_oo.cpp
engines/glk/comprehend/game_oo.h
engines/glk/comprehend/game_tr.cpp
diff --git a/engines/glk/comprehend/game.cpp b/engines/glk/comprehend/game.cpp
index 0252a4daf8..b4e4136a7e 100644
--- a/engines/glk/comprehend/game.cpp
+++ b/engines/glk/comprehend/game.cpp
@@ -790,18 +790,15 @@ void ComprehendGame::parse_sentence_word_pairs(Sentence *sentence) {
}
void ComprehendGame::doBeforeTurn() {
- // Run the game specific before turn bits
beforeTurn();
- // Run the each turn functions
- eval_function(0, nullptr);
-
if (!_ended)
update();
}
-void ComprehendGame::doAfterTurn() {
- afterTurn();
+void ComprehendGame::beforeTurn() {
+ // Run the each turn functions
+ eval_function(0, nullptr);
}
void ComprehendGame::read_input() {
@@ -846,7 +843,7 @@ void ComprehendGame::read_input() {
handled = handle_sentence(&_sentence);
if (handled)
- doAfterTurn();
+ afterTurn();
/* FIXME - handle the 'before you can continue' case */
if (_inputLine[_inputLineIndex] == '\0')
diff --git a/engines/glk/comprehend/game.h b/engines/glk/comprehend/game.h
index a328277c97..0a1c7483f2 100644
--- a/engines/glk/comprehend/game.h
+++ b/engines/glk/comprehend/game.h
@@ -93,9 +93,8 @@ private:
bool handle_sentence(uint tableNum, Sentence *sentence, Common::Array<byte> &words);
void read_sentence(Sentence *sentence);
void parse_sentence_word_pairs(Sentence *sentence);
- void doBeforeTurn();
- void doAfterTurn();
void read_input();
+ void doBeforeTurn();
protected:
void game_save();
@@ -139,10 +138,8 @@ public:
virtual void beforeGame() {}
virtual void beforePrompt() {}
- virtual void beforeTurn() {}
- virtual bool afterTurn() {
- return false;
- }
+ virtual void beforeTurn();
+ virtual void afterTurn() {}
virtual int roomIsSpecial(unsigned room_index, unsigned *room_desc_string) {
return ROOM_IS_NORMAL;
}
diff --git a/engines/glk/comprehend/game_cc.cpp b/engines/glk/comprehend/game_cc.cpp
index 0bcf7169c5..6eb5d8eeda 100644
--- a/engines/glk/comprehend/game_cc.cpp
+++ b/engines/glk/comprehend/game_cc.cpp
@@ -165,6 +165,8 @@ void CrimsonCrownGame::beforeTurn() {
loadGame();
move_to(_currentRoom);
}
+
+ ComprehendGameV1::beforeTurn();
}
bool CrimsonCrownGame::handle_restart() {
diff --git a/engines/glk/comprehend/game_oo.cpp b/engines/glk/comprehend/game_oo.cpp
index 4379ae5df5..d58aaa7e83 100644
--- a/engines/glk/comprehend/game_oo.cpp
+++ b/engines/glk/comprehend/game_oo.cpp
@@ -144,7 +144,13 @@ void OOToposGame::beforeTurn() {
_updateFlags |= UPDATE_GRAPHICS | UPDATE_ROOM_DESC;
}
#endif
- if (!_flags[OO_FLAG_55] && !_flags[OO_FLAG_56]) {
+ ComprehendGameV2::beforeTurn();
+
+ if (_flags[OO_FLAG_55]) {
+ _currentRoom = 55;
+ } else if (_flags[OO_FLAG_56]) {
+ _currentRoom = 54;
+ } else {
YesNo nff = _flags[OO_FLAG_53] ? YES : NO;
if (_noFloodfill != nff) {
@@ -158,19 +164,12 @@ void OOToposGame::beforeTurn() {
}
}
-
// Handle the computer console if in front of it
computerConsole();
}
-bool OOToposGame::afterTurn() {
- if (_flags[OO_FLAG_55]) {
- _currentRoom = 55;
- } else if (_flags[OO_FLAG_56]) {
- _currentRoom = 54;
- }
-
- return true;
+void OOToposGame::afterTurn() {
+ ComprehendGameV2::afterTurn();
}
void OOToposGame::handleSpecialOpcode(uint8 operand) {
diff --git a/engines/glk/comprehend/game_oo.h b/engines/glk/comprehend/game_oo.h
index e3d389d925..0024ad9e06 100644
--- a/engines/glk/comprehend/game_oo.h
+++ b/engines/glk/comprehend/game_oo.h
@@ -80,7 +80,7 @@ public:
void beforeGame() override;
void beforeTurn() override;
- bool afterTurn() override;
+ void afterTurn() override;
int roomIsSpecial(unsigned room_index, unsigned *room_desc_string) override;
void handleSpecialOpcode(uint8 operand) override;
bool handle_restart() override;
diff --git a/engines/glk/comprehend/game_tr.cpp b/engines/glk/comprehend/game_tr.cpp
index 117ec3700a..28dee3599d 100644
--- a/engines/glk/comprehend/game_tr.cpp
+++ b/engines/glk/comprehend/game_tr.cpp
@@ -145,26 +145,28 @@ int TransylvaniaGame::roomIsSpecial(unsigned room_index,
}
void TransylvaniaGame::beforeTurn() {
+ Room *room;
+
if (!isMonsterInRoom(&WEREWOLF) && !isMonsterInRoom(&VAMPIRE)) {
if (_currentRoom == ROOM_CLAY_HUT) {
Item *blackCat = get_item(ITEM_BLACK_CAT);
if (blackCat->_room == _currentRoom && getRandomNumber(255) >= 128)
console_println(_strings[109].c_str());
- return;
+ goto done;
} else if (_currentRoom == ROOM_FIELD) {
Item *goblin = get_item(ITEM_GOBLIN);
if (goblin->_room == _currentRoom)
console_println(_strings[94 + getRandomNumber(3)].c_str());
- return;
+ goto done;
}
}
if (updateMonster(&WEREWOLF) || updateMonster(&VAMPIRE))
- return;
+ goto done;
- Room *room = &_rooms[_currentRoom];
+ room = &_rooms[_currentRoom];
if ((room->_flags & ROOMFLAG_FOREST) && (_variables[VAR_TURN_COUNT] % 255) >= 4
&& getRandomNumber(255) < 40) {
int stringNum = _miceReleased ? 108 : 107;
@@ -184,6 +186,9 @@ void TransylvaniaGame::beforeTurn() {
get_item(ITEM_VAMPIRE)->_room = 0xff;
}
}
+
+done:
+ ComprehendGameV1::beforeTurn();
}
void TransylvaniaGame::synchronizeSave(Common::Serializer &s) {
More information about the Scummvm-git-logs
mailing list