[Scummvm-cvs-logs] scummvm master -> 528ff10d2bb7bb5d1d43546485861e83b773c1df
dreammaster
dreammaster at scummvm.org
Fri Sep 9 13:22:23 CEST 2011
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
a2a894c5b7 TSAGE: Object display fixes for scene 315
528ff10d2b TSAGE: Implemented inventory image display code and slot scrolling
Commit: a2a894c5b7570e103d4ccf140dcff456b3eaab46
https://github.com/scummvm/scummvm/commit/a2a894c5b7570e103d4ccf140dcff456b3eaab46
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-09-09T04:15:31-07:00
Commit Message:
TSAGE: Object display fixes for scene 315
Changed paths:
engines/tsage/blue_force/blueforce_scenes3.cpp
diff --git a/engines/tsage/blue_force/blueforce_scenes3.cpp b/engines/tsage/blue_force/blueforce_scenes3.cpp
index f52b3b5..7ceb9bd 100644
--- a/engines/tsage/blue_force/blueforce_scenes3.cpp
+++ b/engines/tsage/blue_force/blueforce_scenes3.cpp
@@ -871,7 +871,7 @@ void Scene315::Object2::startAction(CursorType action, Event &event) {
BF_GLOBALS._player.disableControl();
scene->_sceneMode = 3156;
scene->setAction(&scene->_sequenceManager, scene, BF_GLOBALS.getFlag(onDuty) ? 3156 : 3168,
- this, NULL);
+ &BF_GLOBALS._player, this, NULL);
break;
default:
NamedObject::startAction(action, event);
@@ -922,7 +922,7 @@ void Scene315::Action1::signal() {
case 3:
if (scene->_sceneMode == 3169) {
BF_GLOBALS._uiElements.addScore(30);
- BF_INVENTORY._mugshot._sceneNumber = 1;
+ BF_INVENTORY.setObjectScene(INV_MUG_SHOT, 1);
}
remove();
@@ -990,14 +990,16 @@ void Scene315::postInit(SceneObjectList *OwnerList) {
_object3.setup(315, -1, -1, -1, 1, NULL);
}
- if ((BF_GLOBALS._dayNumber == 1) && (BF_GLOBALS._bookmark >= bLauraToParamedics)) {
- _object1.postInit();
- _object1.setVisage(315);
- _object1.setPosition(Common::Point(156, 51));
- _object1.setStrip(4);
- _object1.setFrame(2);
- _object1.fixPriority(82);
- _object1.setup(315, -1, -1, -1, 1, NULL);
+ if (BF_GLOBALS._dayNumber == 1) {
+ if (BF_GLOBALS._bookmark >= bLauraToParamedics) {
+ _object1.postInit();
+ _object1.setVisage(315);
+ _object1.setPosition(Common::Point(156, 51));
+ _object1.setStrip(4);
+ _object1.setFrame(2);
+ _object1.fixPriority(82);
+ _object1.setup(315, -1, -1, -1, 1, NULL);
+ }
} else if ((BF_INVENTORY._daNote._sceneNumber != 1) && (BF_GLOBALS._dayNumber < 3)) {
_object2.postInit();
_object2.setVisage(315);
@@ -1163,8 +1165,8 @@ void Scene315::signal() {
BF_GLOBALS._bookmark = bBookedFrankieEvidence;
_field139C = 0;
BF_GLOBALS.clearFlag(onDuty);
- BF_INVENTORY._ticketBook._sceneNumber = 60;
- BF_INVENTORY._mirandaCard._sceneNumber = 60;
+ BF_INVENTORY.setObjectScene(INV_TICKET_BOOK, 60);
+ BF_INVENTORY.setObjectScene(INV_MIRANDA_CARD, 60);
_sceneMode = 3165;
setAction(&_sequenceManager, this, 3165, &BF_GLOBALS._player, NULL);
}
@@ -1225,7 +1227,7 @@ void Scene315::signal() {
break;
case 3156:
BF_GLOBALS._uiElements.addScore(10);
- BF_INVENTORY._daNote._sceneNumber = 1;
+ BF_INVENTORY.setObjectScene(INV_DA_NOTE, 1);
_object2.remove();
BF_GLOBALS._player.enableControl();
break;
@@ -1236,7 +1238,7 @@ void Scene315::signal() {
case 3158:
BF_GLOBALS._player.enableControl();
BF_GLOBALS._uiElements.addScore(10);
- BF_INVENTORY._forestRap._sceneNumber = 1;
+ BF_INVENTORY.setObjectScene(INV_FOREST_RAP, 1);
break;
case 3159:
if (!BF_GLOBALS.getFlag(fBookedGreenEvidence)) {
Commit: 528ff10d2bb7bb5d1d43546485861e83b773c1df
https://github.com/scummvm/scummvm/commit/528ff10d2bb7bb5d1d43546485861e83b773c1df
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2011-09-09T04:16:32-07:00
Commit Message:
TSAGE: Implemented inventory image display code and slot scrolling
Changed paths:
engines/tsage/blue_force/blueforce_ui.cpp
engines/tsage/blue_force/blueforce_ui.h
engines/tsage/core.cpp
diff --git a/engines/tsage/blue_force/blueforce_ui.cpp b/engines/tsage/blue_force/blueforce_ui.cpp
index f9f5800..8f40d2b 100644
--- a/engines/tsage/blue_force/blueforce_ui.cpp
+++ b/engines/tsage/blue_force/blueforce_ui.cpp
@@ -63,7 +63,7 @@ void UIElement::setEnabled(bool flag) {
void UIQuestion::process(Event &event) {
if (event.eventType == EVENT_BUTTON_DOWN) {
- int currentCursor = GLOBALS._events.getCursor();
+ CursorType currentCursor = GLOBALS._events.getCursor();
GLOBALS._events.hideCursor();
showDescription(currentCursor);
@@ -71,12 +71,13 @@ void UIQuestion::process(Event &event) {
}
}
-void UIQuestion::showDescription(int lineNum) {
- if (lineNum == 8) {
- // Unknown object description
+void UIQuestion::showDescription(CursorType cursor) {
+ if (cursor == INV_FOREST_RAP) {
+ // Forest rap item has a graphical display
+ showItem(5, 1, 1);
} else {
// Display object description
- SceneItem::display2(9001, lineNum);
+ SceneItem::display2(9001, (int)cursor);
}
}
@@ -87,6 +88,29 @@ void UIQuestion::setEnabled(bool flag) {
}
}
+void UIQuestion::showItem(int resNum, int rlbNum, int frameNum) {
+ GfxDialog::setPalette();
+
+ // Get the item to display
+ GfxSurface objImage = surfaceFromRes(resNum, rlbNum, frameNum);
+ Rect imgRect;
+ imgRect.resize(objImage, 0, 0, 100);
+ imgRect.center(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2);
+
+ // Save the area behind where the image will be displayed
+ GfxSurface *savedArea = Surface_getArea(BF_GLOBALS.gfxManager().getSurface(), imgRect);
+
+ // Draw the image
+ BF_GLOBALS.gfxManager().copyFrom(objImage, imgRect);
+
+ // Wait for a press
+ BF_GLOBALS._events.waitForPress();
+
+ // Restore the old area
+ BF_GLOBALS.gfxManager().copyFrom(*savedArea, imgRect);
+ delete savedArea;
+}
+
/*--------------------------------------------------------------------------*/
void UIScore::postInit(SceneObjectList *OwnerList) {
@@ -165,9 +189,28 @@ void UIInventoryScroll::synchronize(Serializer &s) {
}
void UIInventoryScroll::process(Event &event) {
- if (event.eventType == EVENT_BUTTON_DOWN) {
- warning("TODO: UIInventoryScroll::process");
+ switch (event.eventType) {
+ case EVENT_BUTTON_DOWN:
+ // Draw the button as selected
+ toggle(true);
+
+ event.handled = true;
+ break;
+ case EVENT_BUTTON_UP:
+ // Restore unselected version
+ toggle(false);
+
+ // Scroll the inventory as necessary
+ BF_GLOBALS._uiElements.scrollInventory(_isLeft);
event.handled = true;
+ break;
+ }
+}
+
+void UIInventoryScroll::toggle(bool pressed) {
+ if (_enabled) {
+ setFrame(pressed ? (_frameNum + 1) : _frameNum);
+ BF_GLOBALS._uiElements.draw();
}
}
@@ -345,7 +388,7 @@ void UIElements::updateInventory() {
updateInvList();
// Enable scroll buttons if the player has more than four items
- if (_itemCount > 4) {
+ if (_itemList.size() > 4) {
_scrollLeft.setEnabled(true);
_scrollRight.setEnabled(true);
} else {
@@ -354,10 +397,10 @@ void UIElements::updateInventory() {
}
// Handle cropping the slots start within inventory
- int last = (_itemList.size() - 1) / 4 + 1;
+ int lastPage = (_itemList.size() - 1) / 4 + 1;
if (_slotStart < 0)
- _slotStart = last - 1;
- else if (_slotStart > (last - 1))
+ _slotStart = lastPage - 1;
+ else if (_slotStart > (lastPage - 1))
_slotStart = 0;
// Handle refreshing slot graphics
@@ -371,7 +414,7 @@ void UIElements::updateInventory() {
// Check whether the object is in any of the four inventory slots
for (int slotIndex = 0; slotIndex < 4; ++slotIndex) {
- int idx = _slotStart + slotIndex;
+ int idx = _slotStart * 4 + slotIndex;
int objectIdx = (idx < (int)_itemList.size()) ? _itemList[idx] : 0;
if (objectIdx == objIndex) {
@@ -416,6 +459,18 @@ void UIElements::addScore(int amount) {
updateInventory();
}
+/*
+ * Scroll the inventory slots
+ */
+void UIElements::scrollInventory(bool isLeft) {
+ if (isLeft)
+ --_slotStart;
+ else
+ ++_slotStart;
+
+ updateInventory();
+}
+
} // End of namespace BlueForce
} // End of namespace TsAGE
diff --git a/engines/tsage/blue_force/blueforce_ui.h b/engines/tsage/blue_force/blueforce_ui.h
index 8dae914..927e667 100644
--- a/engines/tsage/blue_force/blueforce_ui.h
+++ b/engines/tsage/blue_force/blueforce_ui.h
@@ -25,6 +25,7 @@
#include "common/scummsys.h"
#include "tsage/core.h"
+#include "tsage/graphics.h"
#include "tsage/sound.h"
namespace TsAGE {
@@ -54,7 +55,8 @@ public:
// This class implements the Question mark button
class UIQuestion: public UIElement {
private:
- void showDescription(int lineNum);
+ void showDescription(CursorType item);
+ void showItem(int resNum, int rlbNum, int frameNum);
public:
virtual void process(Event &event);
void setEnabled(bool flag);
@@ -87,6 +89,8 @@ public:
};
class UIInventoryScroll: public UIElement {
+private:
+ void toggle(bool pressed);
public:
bool _isLeft;
@@ -126,7 +130,7 @@ public:
UIInventorySlot _slot1, _slot2, _slot3, _slot4;
UIInventoryScroll _scrollLeft, _scrollRight;
ASound _sound;
- int _itemCount, _slotStart, _scoreValue;
+ int _slotStart, _scoreValue;
bool _active;
Common::Array<int> _itemList;
Visage _cursorVisage;
@@ -138,6 +142,7 @@ public:
void setup(const Common::Point &pt);
void updateInventory();
void addScore(int amount);
+ void scrollInventory(bool isLeft);
};
} // End of namespace BlueForce
diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp
index 85b59b4..78a4cef 100644
--- a/engines/tsage/core.cpp
+++ b/engines/tsage/core.cpp
@@ -2503,7 +2503,12 @@ void AltSceneObject::postInit(SceneObjectList *OwnerList) {
}
void AltSceneObject::draw() {
- SceneObject::draw();
+ Rect destRect = _bounds;
+ destRect.translate(-_globals->_sceneManager._scene->_sceneBounds.left,
+ -_globals->_sceneManager._scene->_sceneBounds.top);
+ Region *priorityRegion = _globals->_sceneManager._scene->_priorities.find(_priority);
+ GfxSurface frame = getFrame();
+ _globals->_gfxManagerInstance.copyFrom(frame, destRect, priorityRegion);
}
/*--------------------------------------------------------------------------*/
More information about the Scummvm-git-logs
mailing list