mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-16 14:50:17 +00:00
MADS: Moved ScreenObjects into the Game class
This commit is contained in:
parent
66643b3ad6
commit
db017b746d
@ -40,7 +40,7 @@ Game *Game::init(MADSEngine *vm) {
|
||||
}
|
||||
|
||||
Game::Game(MADSEngine *vm): _vm(vm), _surface(nullptr), _objects(vm),
|
||||
_scene(vm), _player(vm) {
|
||||
_scene(vm), _screenObjects(vm), _player(vm) {
|
||||
_sectionNumber = _priorSectionNumber = 0;
|
||||
_difficultyLevel = DIFFICULTY_HARD;
|
||||
_saveSlot = -1;
|
||||
@ -163,8 +163,8 @@ void Game::sectionLoop() {
|
||||
_vm->_dialogs->_defaultPosition = Common::Point(-1, -1);
|
||||
_visitedScenes.add(_scene._nextSceneId);
|
||||
|
||||
_scene._screenObjects._v8333C = true;
|
||||
_scene._screenObjects._v832EC = 0;
|
||||
_screenObjects._v8333C = true;
|
||||
_screenObjects._v832EC = 0;
|
||||
_scene._userInterface._scrollerY = 0;
|
||||
_v3 = -1;
|
||||
|
||||
|
@ -29,6 +29,7 @@
|
||||
#include "mads/game_data.h"
|
||||
#include "mads/inventory.h"
|
||||
#include "mads/player.h"
|
||||
#include "mads/screen.h"
|
||||
|
||||
namespace MADS {
|
||||
|
||||
@ -112,6 +113,7 @@ public:
|
||||
static Game *init(MADSEngine *vm);
|
||||
public:
|
||||
Player _player;
|
||||
ScreenObjects _screenObjects;
|
||||
int _sectionNumber;
|
||||
int _priorSectionNumber;
|
||||
int _currentSectionNumber;
|
||||
|
@ -126,12 +126,12 @@ void DynamicHotspots::refresh() {
|
||||
DynamicHotspot &dh = (*this)[i];
|
||||
|
||||
if ((*this)[i]._active) {
|
||||
switch (_vm->_game->_scene._screenObjects._v832EC) {
|
||||
switch (_vm->_game->_screenObjects._v832EC) {
|
||||
case 0:
|
||||
case 2:
|
||||
_vm->_game->_scene._screenObjects.add(dh._bounds, _vm->_game->_scene._layer,
|
||||
_vm->_game->_screenObjects.add(dh._bounds, _vm->_game->_scene._layer,
|
||||
CAT_12, dh._descId);
|
||||
_vm->_game->_scene._screenObjects._v8333C = true;
|
||||
_vm->_game->_screenObjects._v8333C = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -116,7 +116,7 @@ void InventoryObjects::addToInventory(int objectId) {
|
||||
|
||||
(*this)[objectId]._roomNumber = PLAYER_INVENTORY;
|
||||
|
||||
if (_vm->_game->_v1 == 5 && !_vm->_game->_scene._screenObjects._v832EC) {
|
||||
if (_vm->_game->_v1 == 5 && !_vm->_game->_screenObjects._v832EC) {
|
||||
userInterface.categoryChanged();
|
||||
userInterface.selectObject(userInterface._selectedInvIndex);
|
||||
}
|
||||
@ -137,7 +137,7 @@ void InventoryObjects::removeFromInventory(int objectId, int newScene) {
|
||||
int selectedIndex = userInterface._selectedInvIndex;
|
||||
bool noSelection = selectedIndex < 0;
|
||||
|
||||
if (_vm->_game->_v1 == 5 && !scene._screenObjects._v832EC)
|
||||
if (_vm->_game->_v1 == 5 && !_vm->_game->_screenObjects._v832EC)
|
||||
userInterface.selectObject(-1);
|
||||
|
||||
// Remove the item from the inventory list
|
||||
@ -158,7 +158,7 @@ void InventoryObjects::removeFromInventory(int objectId, int newScene) {
|
||||
newIndex = 0;
|
||||
}
|
||||
|
||||
if (_vm->_game->_v1 == 5 && !scene._screenObjects._v832EC) {
|
||||
if (_vm->_game->_v1 == 5 && !_vm->_game->_screenObjects._v832EC) {
|
||||
userInterface.categoryChanged();
|
||||
userInterface.selectObject(newIndex);
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ namespace MADS {
|
||||
|
||||
Scene::Scene(MADSEngine *vm): _vm(vm), _action(_vm), _depthSurface(vm),
|
||||
_dirtyAreas(_vm), _dynamicHotspots(vm), _kernelMessages(vm),
|
||||
_screenObjects(vm), _sequences(vm), _sprites(vm), _spriteSlots(vm),
|
||||
_sequences(vm), _sprites(vm), _spriteSlots(vm),
|
||||
_textDisplay(vm), _userInterface(vm) {
|
||||
_priorSceneId = 0;
|
||||
_nextSceneId = 0;
|
||||
@ -162,7 +162,7 @@ void Scene::loadScene(int sceneId, const Common::String &prefix, bool palFlag) {
|
||||
_interfaceY = MADS_SCENE_HEIGHT;
|
||||
_spritesCount = _sprites.size();
|
||||
|
||||
_userInterface.setup(_screenObjects._v832EC);
|
||||
_userInterface.setup(_vm->_game->_screenObjects._v832EC);
|
||||
|
||||
warning("TODO: showMouse");
|
||||
|
||||
@ -289,7 +289,7 @@ void Scene::doFrame() {
|
||||
if (_dynamicHotspots._changed)
|
||||
_dynamicHotspots.refresh();
|
||||
|
||||
_screenObjects.check(player._stepEnabled && !_action._startWalkFlag &&
|
||||
_vm->_game->_screenObjects.check(player._stepEnabled && !_action._startWalkFlag &&
|
||||
!_vm->_game->_abortTimers2);
|
||||
}
|
||||
|
||||
@ -331,9 +331,9 @@ void Scene::doFrame() {
|
||||
|
||||
// Cursor update code
|
||||
CursorType cursorId = CURSOR_ARROW;
|
||||
if (_action._v83338 == 1 && !_screenObjects._v7FECA &&
|
||||
_screenObjects._category == CAT_HOTSPOT) {
|
||||
int idx = _screenObjects._selectedObject - _userInterface._screenObjectsCount;
|
||||
if (_action._v83338 == 1 && !_vm->_game->_screenObjects._v7FECA &&
|
||||
_vm->_game->_screenObjects._category == CAT_HOTSPOT) {
|
||||
int idx = _vm->_game->_screenObjects._selectedObject - _userInterface._screenObjectsCount;
|
||||
if (idx >= (int)_hotspots.size()) {
|
||||
idx -= _hotspots.size();
|
||||
_vm->_events->_newCursorId = _dynamicHotspots[idx]._cursor;
|
||||
|
@ -89,7 +89,6 @@ public:
|
||||
Common::String _talkFont;
|
||||
int _textSpacing;
|
||||
Hotspots _hotspots;
|
||||
ScreenObjects _screenObjects;
|
||||
DirtyAreas _dirtyAreas;
|
||||
int _v1;
|
||||
SceneInfo *_sceneInfo;
|
||||
|
@ -30,112 +30,6 @@
|
||||
|
||||
namespace MADS {
|
||||
|
||||
ScreenObject::ScreenObject() {
|
||||
_category = CAT_NONE;
|
||||
_descId = 0;
|
||||
_layer = 0;
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------------*/
|
||||
|
||||
ScreenObjects::ScreenObjects(MADSEngine *vm): _vm(vm) {
|
||||
_v8333C = false;
|
||||
_v832EC = 0;
|
||||
_v7FECA = 0;
|
||||
_v7FED6 = 0;
|
||||
_v8332A = 0;
|
||||
_category = CAT_NONE;
|
||||
_objectIndex = 0;
|
||||
_released = false;
|
||||
}
|
||||
|
||||
void ScreenObjects::add(const Common::Rect &bounds, Layer layer, ScrCategory category, int descId) {
|
||||
assert(size() < 100);
|
||||
|
||||
ScreenObject so;
|
||||
so._bounds = bounds;
|
||||
so._category = category;
|
||||
so._descId = descId;
|
||||
so._layer = layer;
|
||||
|
||||
push_back(so);
|
||||
}
|
||||
|
||||
void ScreenObjects::check(bool scanFlag) {
|
||||
Scene &scene = _vm->_game->_scene;
|
||||
|
||||
if (!_vm->_events->_mouseButtons || _v832EC)
|
||||
_v7FECA = false;
|
||||
|
||||
if ((_vm->_events->_vD6 || _v8332A || _vm->_game->_scene._userInterface._scrollerY || _v8333C) && scanFlag) {
|
||||
scene._userInterface._selectedInvIndex = scanBackwards(_vm->_events->currentPos(), LAYER_GUI);
|
||||
if (scene._userInterface._selectedInvIndex > 0) {
|
||||
_category = (ScrCategory)((*this)[scene._userInterface._selectedInvIndex - 1]._category & 7);
|
||||
_objectIndex = (*this)[scene._userInterface._selectedInvIndex - 1]._descId;
|
||||
}
|
||||
|
||||
// Handling for easy mouse
|
||||
ScrCategory category = scene._userInterface._category;
|
||||
if (_vm->_easyMouse && !_vm->_events->_vD4 && category != _category
|
||||
&& scene._userInterface._category != CAT_NONE) {
|
||||
_released = true;
|
||||
if (category >= CAT_ACTION && category <= CAT_TALK_ENTRY) {
|
||||
scene._userInterface.elementHighlighted();
|
||||
}
|
||||
}
|
||||
|
||||
_released = _vm->_events->_mouseReleased;
|
||||
if (_vm->_events->_vD2 || (_vm->_easyMouse && !_vm->_events->_vD4))
|
||||
scene._userInterface._category = _category;
|
||||
|
||||
if (!_vm->_events->_mouseButtons || _vm->_easyMouse) {
|
||||
if (category >= CAT_ACTION && category <= CAT_TALK_ENTRY) {
|
||||
scene._userInterface.elementHighlighted();
|
||||
}
|
||||
}
|
||||
|
||||
if (_vm->_events->_mouseButtons || (_vm->_easyMouse && scene._action._v83338 > 1
|
||||
&& scene._userInterface._category == CAT_INV_LIST) ||
|
||||
(_vm->_easyMouse && scene._userInterface._category == CAT_HOTSPOT)) {
|
||||
scene._action.checkActionAtMousePos();
|
||||
}
|
||||
|
||||
if (_vm->_events->_mouseReleased) {
|
||||
scene.leftClick();
|
||||
scene._userInterface._category = CAT_NONE;
|
||||
}
|
||||
|
||||
if (_vm->_events->_mouseButtons || _vm->_easyMouse || scene._userInterface._scrollerY)
|
||||
proc1();
|
||||
|
||||
if (_vm->_events->_mouseButtons || _vm->_easyMouse)
|
||||
scene._action.set();
|
||||
|
||||
_v8333C = 0;
|
||||
}
|
||||
|
||||
scene._action.refresh();
|
||||
|
||||
// Loop through image inter list
|
||||
warning("TODO: imageInterList loop");
|
||||
}
|
||||
|
||||
int ScreenObjects::scanBackwards(const Common::Point &pt, int layer) {
|
||||
for (int i = (int)size() - 1; i >= 0; --i) {
|
||||
if ((*this)[i]._bounds.contains(pt) && ((*this)[i]._layer == layer))
|
||||
return i + 1;
|
||||
}
|
||||
|
||||
// Entry not found
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ScreenObjects::proc1() {
|
||||
warning("TODO: ScreenObjects::proc1");
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------------*/
|
||||
|
||||
void SceneNode::load(Common::SeekableReadStream *f) {
|
||||
_walkPos.x = f->readSint16LE();
|
||||
_walkPos.y = f->readSint16LE();
|
||||
|
@ -51,10 +51,6 @@ class SpriteSlot;
|
||||
#define TEXT_DISPLAY_MAX_SIZE 40
|
||||
#define DIRTY_AREAS_SIZE (SPRITE_SLOTS_MAX_SIZE + TEXT_DISPLAY_MAX_SIZE)
|
||||
|
||||
enum Layer {
|
||||
LAYER_GUI = 19
|
||||
};
|
||||
|
||||
class VerbInit {
|
||||
public:
|
||||
int _id;
|
||||
@ -65,49 +61,6 @@ public:
|
||||
VerbInit(int id, int action1, int action2): _id(id), _action1(action1), _action2(action2) {}
|
||||
};
|
||||
|
||||
class ScreenObject {
|
||||
public:
|
||||
Common::Rect _bounds;
|
||||
ScrCategory _category;
|
||||
int _descId;
|
||||
int _layer;
|
||||
|
||||
ScreenObject();
|
||||
};
|
||||
|
||||
class ScreenObjects: public Common::Array<ScreenObject> {
|
||||
private:
|
||||
MADSEngine *_vm;
|
||||
|
||||
int scanBackwards(const Common::Point &pt, int layer);
|
||||
|
||||
void proc1();
|
||||
public:
|
||||
int _v832EC;
|
||||
int _v7FECA;
|
||||
int _v7FED6;
|
||||
int _v8332A;
|
||||
int _v8333C;
|
||||
int _selectedObject;
|
||||
ScrCategory _category;
|
||||
int _objectIndex;
|
||||
bool _released;
|
||||
|
||||
/*
|
||||
* Constructor
|
||||
*/
|
||||
ScreenObjects(MADSEngine *vm);
|
||||
|
||||
/**
|
||||
* Add a new item to the list
|
||||
*/
|
||||
void add(const Common::Rect &bounds, Layer layer, ScrCategory category, int descId);
|
||||
|
||||
/**
|
||||
*/
|
||||
void check(bool scanFlag);
|
||||
};
|
||||
|
||||
class SceneLogic {
|
||||
protected:
|
||||
MADSEngine *_vm;
|
||||
|
@ -243,6 +243,112 @@ void DirtyAreas::reset() {
|
||||
|
||||
/*------------------------------------------------------------------------*/
|
||||
|
||||
ScreenObject::ScreenObject() {
|
||||
_category = CAT_NONE;
|
||||
_descId = 0;
|
||||
_layer = 0;
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------------*/
|
||||
|
||||
ScreenObjects::ScreenObjects(MADSEngine *vm) : _vm(vm) {
|
||||
_v8333C = false;
|
||||
_v832EC = 0;
|
||||
_v7FECA = 0;
|
||||
_v7FED6 = 0;
|
||||
_v8332A = 0;
|
||||
_category = CAT_NONE;
|
||||
_objectIndex = 0;
|
||||
_released = false;
|
||||
}
|
||||
|
||||
void ScreenObjects::add(const Common::Rect &bounds, Layer layer, ScrCategory category, int descId) {
|
||||
assert(size() < 100);
|
||||
|
||||
ScreenObject so;
|
||||
so._bounds = bounds;
|
||||
so._category = category;
|
||||
so._descId = descId;
|
||||
so._layer = layer;
|
||||
|
||||
push_back(so);
|
||||
}
|
||||
|
||||
void ScreenObjects::check(bool scanFlag) {
|
||||
Scene &scene = _vm->_game->_scene;
|
||||
|
||||
if (!_vm->_events->_mouseButtons || _v832EC)
|
||||
_v7FECA = false;
|
||||
|
||||
if ((_vm->_events->_vD6 || _v8332A || _vm->_game->_scene._userInterface._scrollerY || _v8333C) && scanFlag) {
|
||||
scene._userInterface._selectedInvIndex = scanBackwards(_vm->_events->currentPos(), LAYER_GUI);
|
||||
if (scene._userInterface._selectedInvIndex > 0) {
|
||||
_category = (ScrCategory)((*this)[scene._userInterface._selectedInvIndex - 1]._category & 7);
|
||||
_objectIndex = (*this)[scene._userInterface._selectedInvIndex - 1]._descId;
|
||||
}
|
||||
|
||||
// Handling for easy mouse
|
||||
ScrCategory category = scene._userInterface._category;
|
||||
if (_vm->_easyMouse && !_vm->_events->_vD4 && category != _category
|
||||
&& scene._userInterface._category != CAT_NONE) {
|
||||
_released = true;
|
||||
if (category >= CAT_ACTION && category <= CAT_TALK_ENTRY) {
|
||||
scene._userInterface.elementHighlighted();
|
||||
}
|
||||
}
|
||||
|
||||
_released = _vm->_events->_mouseReleased;
|
||||
if (_vm->_events->_vD2 || (_vm->_easyMouse && !_vm->_events->_vD4))
|
||||
scene._userInterface._category = _category;
|
||||
|
||||
if (!_vm->_events->_mouseButtons || _vm->_easyMouse) {
|
||||
if (category >= CAT_ACTION && category <= CAT_TALK_ENTRY) {
|
||||
scene._userInterface.elementHighlighted();
|
||||
}
|
||||
}
|
||||
|
||||
if (_vm->_events->_mouseButtons || (_vm->_easyMouse && scene._action._v83338 > 1
|
||||
&& scene._userInterface._category == CAT_INV_LIST) ||
|
||||
(_vm->_easyMouse && scene._userInterface._category == CAT_HOTSPOT)) {
|
||||
scene._action.checkActionAtMousePos();
|
||||
}
|
||||
|
||||
if (_vm->_events->_mouseReleased) {
|
||||
scene.leftClick();
|
||||
scene._userInterface._category = CAT_NONE;
|
||||
}
|
||||
|
||||
if (_vm->_events->_mouseButtons || _vm->_easyMouse || scene._userInterface._scrollerY)
|
||||
proc1();
|
||||
|
||||
if (_vm->_events->_mouseButtons || _vm->_easyMouse)
|
||||
scene._action.set();
|
||||
|
||||
_v8333C = 0;
|
||||
}
|
||||
|
||||
scene._action.refresh();
|
||||
|
||||
// Loop through image inter list
|
||||
warning("TODO: imageInterList loop");
|
||||
}
|
||||
|
||||
int ScreenObjects::scanBackwards(const Common::Point &pt, int layer) {
|
||||
for (int i = (int)size() - 1; i >= 0; --i) {
|
||||
if ((*this)[i]._bounds.contains(pt) && ((*this)[i]._layer == layer))
|
||||
return i + 1;
|
||||
}
|
||||
|
||||
// Entry not found
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ScreenObjects::proc1() {
|
||||
warning("TODO: ScreenObjects::proc1");
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------------*/
|
||||
|
||||
ScreenSurface::ScreenSurface() {
|
||||
_dataP = nullptr;
|
||||
}
|
||||
|
@ -32,6 +32,16 @@ namespace MADS {
|
||||
#define MADS_SCREEN_WIDTH 320
|
||||
#define MADS_SCREEN_HEIGHT 200
|
||||
|
||||
enum ScrCategory {
|
||||
CAT_NONE = 0, CAT_ACTION = 1, CAT_INV_LIST = 2, CAT_INV_VOCAB = 3,
|
||||
CAT_HOTSPOT = 4, CAT_INV_ANIM = 5, CAT_TALK_ENTRY = 6, CAT_INV_SCROLLER = 7,
|
||||
CAT_12 = 12
|
||||
};
|
||||
|
||||
enum Layer {
|
||||
LAYER_GUI = 19
|
||||
};
|
||||
|
||||
enum ScreenTransition {
|
||||
kTransitionNone = 0,
|
||||
kTransitionFadeIn, kTransitionFadeOutIn,
|
||||
@ -112,6 +122,50 @@ public:
|
||||
void reset();
|
||||
};
|
||||
|
||||
|
||||
class ScreenObject {
|
||||
public:
|
||||
Common::Rect _bounds;
|
||||
ScrCategory _category;
|
||||
int _descId;
|
||||
int _layer;
|
||||
|
||||
ScreenObject();
|
||||
};
|
||||
|
||||
class ScreenObjects : public Common::Array<ScreenObject> {
|
||||
private:
|
||||
MADSEngine *_vm;
|
||||
|
||||
int scanBackwards(const Common::Point &pt, int layer);
|
||||
|
||||
void proc1();
|
||||
public:
|
||||
int _v832EC;
|
||||
int _v7FECA;
|
||||
int _v7FED6;
|
||||
int _v8332A;
|
||||
int _v8333C;
|
||||
int _selectedObject;
|
||||
ScrCategory _category;
|
||||
int _objectIndex;
|
||||
bool _released;
|
||||
|
||||
/*
|
||||
* Constructor
|
||||
*/
|
||||
ScreenObjects(MADSEngine *vm);
|
||||
|
||||
/**
|
||||
* Add a new item to the list
|
||||
*/
|
||||
void add(const Common::Rect &bounds, Layer layer, ScrCategory category, int descId);
|
||||
|
||||
/**
|
||||
*/
|
||||
void check(bool scanFlag);
|
||||
};
|
||||
|
||||
class ScreenSurface : public MSurface {
|
||||
private:
|
||||
/**
|
||||
|
@ -151,7 +151,6 @@ void UISlots::draw(bool updateFlag, bool delFlag) {
|
||||
|
||||
for (uint idx = 0; idx < size(); ++idx) {
|
||||
DirtyArea &dirtyArea = userInterface._dirtyAreas[idx];
|
||||
UISlot &slot = (*this)[idx];
|
||||
|
||||
if (dirtyArea._active && dirtyArea._textActive &&
|
||||
dirtyArea._bounds.width() > 0 && dirtyArea._bounds.height() > 0) {
|
||||
@ -238,7 +237,7 @@ void UserInterface::load(const Common::String &resName) {
|
||||
void UserInterface::setup(int id) {
|
||||
Scene &scene = _vm->_game->_scene;
|
||||
|
||||
if (scene._screenObjects._v832EC != id) {
|
||||
if (_vm->_game->_screenObjects._v832EC != id) {
|
||||
Common::String resName = _vm->_game->_aaName;
|
||||
|
||||
// Strip off any extension
|
||||
@ -256,7 +255,7 @@ void UserInterface::setup(int id) {
|
||||
load(resName);
|
||||
_surface.copyTo(this);
|
||||
}
|
||||
scene._screenObjects._v832EC = id;
|
||||
_vm->_game->_screenObjects._v832EC = id;
|
||||
|
||||
scene._userInterface._uiSlots.clear();
|
||||
scene._userInterface._uiSlots.fullRefresh();
|
||||
@ -279,8 +278,7 @@ void UserInterface::elementHighlighted() {
|
||||
}
|
||||
|
||||
void UserInterface::drawTextElements() {
|
||||
Scene &scene = _vm->_game->_scene;
|
||||
if (scene._screenObjects._v832EC) {
|
||||
if (_vm->_game->_screenObjects._v832EC) {
|
||||
drawTalkList();
|
||||
} else {
|
||||
// Draw the actions
|
||||
@ -406,15 +404,15 @@ void UserInterface::setBounds(const Common::Rect &r) {
|
||||
void UserInterface::loadElements() {
|
||||
Scene &scene = _vm->_game->_scene;
|
||||
Common::Rect bounds;
|
||||
scene._screenObjects.clear();
|
||||
_vm->_game->_screenObjects.clear();
|
||||
|
||||
if (!scene._screenObjects._v832EC) {
|
||||
if (!_vm->_game->_screenObjects._v832EC) {
|
||||
// Set up screen objects for the inventory scroller
|
||||
for (int idx = 1; idx <= 3; ++idx) {
|
||||
getBounds(CAT_INV_SCROLLER, idx, bounds);
|
||||
moveRect(bounds);
|
||||
|
||||
scene._screenObjects.add(bounds, LAYER_GUI, CAT_INV_SCROLLER, idx);
|
||||
_vm->_game->_screenObjects.add(bounds, LAYER_GUI, CAT_INV_SCROLLER, idx);
|
||||
}
|
||||
|
||||
// Set up actions
|
||||
@ -422,7 +420,7 @@ void UserInterface::loadElements() {
|
||||
getBounds(CAT_ACTION, idx, bounds);
|
||||
moveRect(bounds);
|
||||
|
||||
scene._screenObjects.add(bounds, LAYER_GUI, CAT_ACTION, idx);
|
||||
_vm->_game->_screenObjects.add(bounds, LAYER_GUI, CAT_ACTION, idx);
|
||||
}
|
||||
|
||||
// Set up inventory list
|
||||
@ -430,7 +428,7 @@ void UserInterface::loadElements() {
|
||||
getBounds(CAT_INV_LIST, idx, bounds);
|
||||
moveRect(bounds);
|
||||
|
||||
scene._screenObjects.add(bounds, LAYER_GUI, CAT_INV_LIST, idx);
|
||||
_vm->_game->_screenObjects.add(bounds, LAYER_GUI, CAT_INV_LIST, idx);
|
||||
}
|
||||
|
||||
// Set up the inventory vocab list
|
||||
@ -438,28 +436,28 @@ void UserInterface::loadElements() {
|
||||
getBounds(CAT_INV_VOCAB, idx, bounds);
|
||||
moveRect(bounds);
|
||||
|
||||
scene._screenObjects.add(bounds, LAYER_GUI, CAT_INV_VOCAB, idx);
|
||||
_vm->_game->_screenObjects.add(bounds, LAYER_GUI, CAT_INV_VOCAB, idx);
|
||||
}
|
||||
|
||||
// Set up the inventory item picture
|
||||
scene._screenObjects.add(Common::Rect(160, 159, 231, 194), LAYER_GUI,
|
||||
_vm->_game->_screenObjects.add(Common::Rect(160, 159, 231, 194), LAYER_GUI,
|
||||
CAT_INV_ANIM, 0);
|
||||
}
|
||||
|
||||
if (!scene._screenObjects._v832EC || scene._screenObjects._v832EC == 2) {
|
||||
if (!_vm->_game->_screenObjects._v832EC || _vm->_game->_screenObjects._v832EC == 2) {
|
||||
for (int hotspotIdx = scene._hotspots.size() - 1; hotspotIdx >= 0; --hotspotIdx) {
|
||||
Hotspot &hs = scene._hotspots[hotspotIdx];
|
||||
scene._screenObjects.add(hs._bounds, LAYER_GUI, CAT_HOTSPOT, hotspotIdx);
|
||||
_vm->_game->_screenObjects.add(hs._bounds, LAYER_GUI, CAT_HOTSPOT, hotspotIdx);
|
||||
}
|
||||
}
|
||||
|
||||
if (scene._screenObjects._v832EC == 1) {
|
||||
if (_vm->_game->_screenObjects._v832EC == 1) {
|
||||
// setup areas for talk entries
|
||||
for (int idx = 0; idx < 5; ++idx) {
|
||||
getBounds(CAT_TALK_ENTRY, idx, bounds);
|
||||
moveRect(bounds);
|
||||
|
||||
scene._screenObjects.add(bounds, LAYER_GUI, CAT_TALK_ENTRY, idx);
|
||||
_vm->_game->_screenObjects.add(bounds, LAYER_GUI, CAT_TALK_ENTRY, idx);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -585,7 +583,7 @@ void UserInterface::noInventoryAnim() {
|
||||
_invSpritesIndex = -1;
|
||||
}
|
||||
|
||||
if (!scene._screenObjects._v832EC)
|
||||
if (!_vm->_game->_screenObjects._v832EC)
|
||||
refresh();
|
||||
}
|
||||
|
||||
@ -599,7 +597,7 @@ void UserInterface::refresh() {
|
||||
|
||||
void UserInterface::inventoryAnim() {
|
||||
Scene &scene = _vm->_game->_scene;
|
||||
if (scene._screenObjects._v832EC == 1 || scene._screenObjects._v832EC == 2
|
||||
if (_vm->_game->_screenObjects._v832EC == 1 || _vm->_game->_screenObjects._v832EC == 2
|
||||
|| _invSpritesIndex < 0)
|
||||
return;
|
||||
|
||||
|
@ -31,12 +31,6 @@
|
||||
|
||||
namespace MADS {
|
||||
|
||||
enum ScrCategory {
|
||||
CAT_NONE = 0, CAT_ACTION = 1, CAT_INV_LIST = 2, CAT_INV_VOCAB = 3,
|
||||
CAT_HOTSPOT = 4, CAT_INV_ANIM = 5, CAT_TALK_ENTRY = 6, CAT_INV_SCROLLER = 7,
|
||||
CAT_12 = 12
|
||||
};
|
||||
|
||||
class UISlot {
|
||||
public:
|
||||
int _slotType;
|
||||
|
Loading…
Reference in New Issue
Block a user