[Scummvm-cvs-logs] scummvm master -> 7bf0bfb12297f9e867090586baf60aba0b872896

Littleboy littleboy22 at gmail.com
Sat Jul 28 23:52:41 CEST 2012


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

Summary:
7bf0bfb122 LASTEXPRESS: Implement menu egg blinking


Commit: 7bf0bfb12297f9e867090586baf60aba0b872896
    https://github.com/scummvm/scummvm/commit/7bf0bfb12297f9e867090586baf60aba0b872896
Author: Littleboy (littleboy at scummvm.org)
Date: 2012-07-28T14:51:43-07:00

Commit Message:
LASTEXPRESS: Implement menu egg blinking

Changed paths:
    engines/lastexpress/game/inventory.cpp
    engines/lastexpress/game/inventory.h
    engines/lastexpress/game/logic.cpp



diff --git a/engines/lastexpress/game/inventory.cpp b/engines/lastexpress/game/inventory.cpp
index a36553c..52c00ec 100644
--- a/engines/lastexpress/game/inventory.cpp
+++ b/engines/lastexpress/game/inventory.cpp
@@ -28,6 +28,7 @@
 
 #include "lastexpress/game/entities.h"
 #include "lastexpress/game/logic.h"
+#include "lastexpress/game/savegame.h"
 #include "lastexpress/game/scenes.h"
 #include "lastexpress/game/state.h"
 
@@ -45,7 +46,7 @@
 namespace LastExpress {
 
 Inventory::Inventory(LastExpressEngine *engine) : _engine(engine), _selectedItem(kItemNone), _highlightedItemIndex(0), _itemsShown(0),
-	_showingHourGlass(false), _blinkingEgg(false), _blinkingTime(0), _blinkingInterval(_defaultBlinkingInterval), _blinkingBrightness(1),
+	_showingHourGlass(false), _blinkingDirection(1), _blinkingBrightness(0),
 	_useMagnifier(false), _portraitHighlighted(false), _isOpened(false), _eggHightlighted(false), _itemScene(NULL) {
 
 	//_inventoryRect = Common::Rect(0, 0, 32, 32);
@@ -163,13 +164,11 @@ void Inventory::handleMouseEvent(const Common::Event &ev) {
 
 			getMenu()->show(true, kSavegameTypeIndex, 0);
 
-		} else if (ev.type == Common::EVENT_RBUTTONDOWN) {
-			if (getGlobalTimer()) {
-				if (getSoundQueue()->isBuffered("TIMER"))
-					getSoundQueue()->removeFromQueue("TIMER");
+		} else if (ev.type == Common::EVENT_RBUTTONDOWN && getGlobalTimer()) {
+			if (getSoundQueue()->isBuffered("TIMER"))
+				getSoundQueue()->removeFromQueue("TIMER");
 
-				setGlobalTimer(900);
-			}
+			setGlobalTimer(900);
 		}
 	}
 
@@ -181,7 +180,7 @@ void Inventory::handleMouseEvent(const Common::Event &ev) {
 				if (_highlightedItemIndex)
 					drawHighlight(_highlightedItemIndex, true);
 			} else {
-				// The user released the mouse button, we need to update the inventory state (clear hightlight and items)
+				// The user released the mouse button, we need to update the inventory state (clear highlight and items)
 				drawItem((CursorStyle)getProgress().portrait, 0, 0, 1);
 				_engine->getGraphicsManager()->clear(GraphicsManager::kBackgroundInventory, Common::Rect(0, 44, 32, (int16)(40 * _itemsShown + 40)));
 				_isOpened = false;
@@ -227,12 +226,11 @@ void Inventory::handleMouseEvent(const Common::Event &ev) {
 
 				if (getFlags()->mouseLeftPressed) {
 					if (getState()->sceneUseBackup) {
-						if (getState()->sceneBackup2
-						 && getFirstExaminableItem() == _selectedItem) {
-							 SceneIndex sceneIndex = getState()->sceneBackup2;
-							 getState()->sceneBackup2 = kSceneNone;
+						if (getState()->sceneBackup2 && getFirstExaminableItem() == _selectedItem) {
+							SceneIndex sceneIndex = getState()->sceneBackup2;
+							getState()->sceneBackup2 = kSceneNone;
 
-							 getScenes()->loadScene(sceneIndex);
+							getScenes()->loadScene(sceneIndex);
 						}
 					} else {
 						getState()->sceneBackup = getState()->scene;
@@ -622,37 +620,48 @@ void Inventory::drawEgg() const {
 }
 
 // Blinking egg: we need to blink the egg for delta time, with the blinking getting faster until it's always lit.
-void Inventory::drawBlinkingEgg() {
+void Inventory::drawBlinkingEgg(uint ticks) {
+	uint globalTimer = getGlobalTimer();
+	uint timerValue = (getProgress().jacket == kJacketGreen) ? 450 : 225;
 
-	warning("[Inventory::drawBlinkingEgg] Blinking not implemented");
+	if (globalTimer == timerValue || globalTimer == 900) {
+		_blinkingBrightness = 0;
+		_blinkingDirection = 1;
+	}
 
-	//// TODO show egg (with or without mouseover)
+	globalTimer = globalTimer <= ticks ? 0 : globalTimer - ticks;
+	setGlobalTimer(globalTimer);
 
-	//// Play timer sound
-	//if (getGlobalTimer() < 90) {
-	//	if (getGlobalTimer() + ticks >= 90)
-	//		getSound()->playSoundWithSubtitles("TIMER.SND", 50331664, kEntityPlayer);
+	if (getFlags()->flag_0
+	|| (globalTimer % 5) == 0
+	|| (globalTimer <= 500 && (globalTimer % ((globalTimer + 100) / 100)) == 0))
+		blinkEgg();
 
-	//	if (getSoundQueue()->isBuffered("TIMER"))
-	//		setGlobalTimer(0);
-	//}
+	if (globalTimer < 90) {
+		if ((globalTimer + ticks) >= 90)
+			getSound()->playSoundWithSubtitles("TIMER", (SoundFlag)(kFlagType13|kFlagDefault), kEntityPlayer);
 
-	//// Restore egg to standard brightness
-	//if (!getGlobalTimer()) {
-	//
-	//}
+		if (!getSoundQueue()->isBuffered("TIMER"))
+			setGlobalTimer(0);
+	}
 
+	if (globalTimer == 0) {
+		drawItem((CursorStyle)(getMenu()->getGameId() + 39), 608, 448, _menuEggRect.contains(getCoords()) ? 1 : -1);
 
-	//drawItem(608, 448, getMenu()->getGameId() + 39, _blinkingBrightness)
+		askForRedraw();
 
-	//// TODO if delta time > _blinkingInterval, update egg & ask for redraw then adjust blinking time and remaining time
-	//
+		getSaveLoad()->saveGame(kSavegameTypeAuto, kEntityChapters, 0);
+	}
+}
 
-	//// Reset values and stop blinking
-	//if (_blinkingTime == 0)
-	//	blinkEgg(false);
+void Inventory::blinkEgg() {
+	drawItem((CursorStyle)(getMenu()->getGameId() + 39), 608, 448, (_blinkingBrightness == 0) ? -1 : _blinkingBrightness);
 
 	askForRedraw();
+
+	_blinkingBrightness += _blinkingDirection;
+	if (_blinkingBrightness == 0 || _blinkingBrightness == 3)
+		_blinkingDirection = -_blinkingDirection;
 }
 
 void Inventory::drawItem(CursorStyle id, uint16 x, uint16 y, int16 brightnessIndex) const {
diff --git a/engines/lastexpress/game/inventory.h b/engines/lastexpress/game/inventory.h
index 15dd290..b1019a4 100644
--- a/engines/lastexpress/game/inventory.h
+++ b/engines/lastexpress/game/inventory.h
@@ -106,11 +106,10 @@ public:
 
 	// UI Control
 	void show();
-	void blinkEgg(bool enabled);
 	void showHourGlass() const;
 	void setPortrait(InventoryItem item) const;
 	void drawEgg() const;
-	void drawBlinkingEgg();
+	void drawBlinkingEgg(uint ticks = 1);
 
 	// Handle inventory UI events.
 	void handleMouseEvent(const Common::Event &ev);
@@ -133,8 +132,6 @@ public:
 	Common::String toString();
 
 private:
-	static const uint32 _defaultBlinkingInterval = 250; ///< Default blinking interval in ms
-
 	LastExpressEngine *_engine;
 
 	InventoryEntry _entries[32];
@@ -144,9 +141,7 @@ private:
 	uint32 _itemsShown;
 
 	bool _showingHourGlass;
-	bool _blinkingEgg;
-	uint32 _blinkingTime;
-	uint32 _blinkingInterval;
+	int16  _blinkingDirection;
 	uint16 _blinkingBrightness;
 
 	// Flags
@@ -157,8 +152,6 @@ private:
 
 	Scene *_itemScene;
 
-	// Important rects
-	//Common::Rect _inventoryRect;
 	Common::Rect _menuEggRect;
 	Common::Rect _selectedItemRect;
 
@@ -173,6 +166,7 @@ private:
 	bool isItemSceneParameter(InventoryItem item) const;
 
 	void drawItem(CursorStyle id, uint16 x, uint16 y, int16 brighnessIndex = -1) const;
+	void blinkEgg();
 
 	void drawSelectedItem();
 	void clearSelectedItem() const;
diff --git a/engines/lastexpress/game/logic.cpp b/engines/lastexpress/game/logic.cpp
index 795f165..135b7d3 100644
--- a/engines/lastexpress/game/logic.cpp
+++ b/engines/lastexpress/game/logic.cpp
@@ -313,7 +313,7 @@ void Logic::eventTick(const Common::Event &) {
 	//////////////////////////////////////////////////////////////////////////
 	// Draw the blinking egg if needed
 	if (getGlobalTimer() && !getFlags()->shouldDrawEggOrHourGlass)
-		getInventory()->drawBlinkingEgg();
+		getInventory()->drawBlinkingEgg(ticks);
 
 	//////////////////////////////////////////////////////////////////////////
 	// Adjust time and save game if needed






More information about the Scummvm-git-logs mailing list