mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-26 20:59:00 +00:00
* Added Game::loop()
* Added WalkingMap::isWalkable() * Renamed remaining _priority identifiers to _z which were left by mistake in the previous commit svn-id: r42546
This commit is contained in:
parent
c420a4fba1
commit
e419110569
@ -155,6 +155,7 @@ int DraciEngine::go() {
|
||||
_mouse->handleEvent(event);
|
||||
}
|
||||
}
|
||||
_game->loop();
|
||||
_anims->drawScene(_screen->getSurface());
|
||||
_screen->copyToScreen();
|
||||
_system->delayMillis(20);
|
||||
|
@ -146,6 +146,17 @@ void Game::init() {
|
||||
_vm->_mouse->setCursorType(kNormalCursor);
|
||||
}
|
||||
|
||||
void Game::loop() {
|
||||
|
||||
if (_currentRoom._mouseOn) {
|
||||
int x = _vm->_mouse->getPosX();
|
||||
int y = _vm->_mouse->getPosY();
|
||||
if (_vm->_mouse->lButtonPressed() && _currentRoom._walkingMap.isWalkable(x, y)) {
|
||||
debugC(4, kDraciLogicDebugLevel, "Walk to x: %d y: %d", x, y);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Game::loadRoom(int roomNum) {
|
||||
|
||||
BAFile *f;
|
||||
@ -427,4 +438,17 @@ GameObject::~GameObject() {
|
||||
delete[] _program._bytecode;
|
||||
}
|
||||
|
||||
bool WalkingMap::isWalkable(int x, int y) {
|
||||
|
||||
// Convert to map pixels
|
||||
x = x / _deltaX;
|
||||
y = y / _deltaY;
|
||||
|
||||
int pixelIndex = _mapWidth * y + x;
|
||||
int byteIndex = pixelIndex / 8;
|
||||
int mapByte = _data[byteIndex];
|
||||
|
||||
return mapByte & (1 << pixelIndex % 8);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -60,6 +60,8 @@ public:
|
||||
|
||||
_realWidth = mapReader.readUint16LE();
|
||||
_realHeight = mapReader.readUint16LE();
|
||||
_deltaX = mapReader.readUint16LE();
|
||||
_deltaY = mapReader.readUint16LE();
|
||||
_mapWidth = mapReader.readUint16LE();
|
||||
_mapHeight = mapReader.readUint16LE();
|
||||
_byteWidth = mapReader.readUint16LE();
|
||||
@ -68,6 +70,7 @@ public:
|
||||
_data = data + mapReader.pos();
|
||||
}
|
||||
|
||||
bool isWalkable(int x, int y);
|
||||
|
||||
private:
|
||||
int _realWidth, _realHeight;
|
||||
@ -137,6 +140,7 @@ public:
|
||||
~Game();
|
||||
|
||||
void init();
|
||||
void loop();
|
||||
|
||||
void changeRoom(uint roomNum);
|
||||
|
||||
@ -186,7 +190,7 @@ private:
|
||||
uint16 *_dialogOffsets;
|
||||
byte *_iconStatus;
|
||||
GameObject *_objects;
|
||||
Room _currentRoom;
|
||||
Room _currentRoom;
|
||||
};
|
||||
|
||||
} // End of namespace Draci
|
||||
|
@ -270,7 +270,7 @@ void Script::load(Common::Queue<int> ¶ms) {
|
||||
|
||||
GameObject *obj = _vm->_game->getObject(objID);
|
||||
|
||||
_vm->_game->loadAnimation(animID, obj->_priority);
|
||||
_vm->_game->loadAnimation(animID, obj->_z);
|
||||
obj->_anims.push_back(animID);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user