ACCESS: Fix freeing player sprites when the scene changes
This commit is contained in:
parent
5870b18e17
commit
4e5eb04e47
5 changed files with 12 additions and 13 deletions
|
@ -293,9 +293,6 @@ void AnimationManager::freeAnimationData() {
|
|||
}
|
||||
|
||||
void AnimationManager::clearTimers() {
|
||||
for (uint i = 0; i < _animationTimers.size(); ++i)
|
||||
delete _animationTimers[i];
|
||||
|
||||
_animationTimers.clear();
|
||||
}
|
||||
|
||||
|
|
|
@ -155,8 +155,7 @@ void Player::load() {
|
|||
}
|
||||
|
||||
void Player::loadSprites(const Common::String &name) {
|
||||
delete _playerSprites1;
|
||||
_playerSprites = nullptr;
|
||||
freeSprites();
|
||||
|
||||
const byte *data = _vm->_files->loadFile(name);
|
||||
_playerSprites1 = new SpriteResource(_vm, data, _vm->_files->_filesize,
|
||||
|
@ -164,7 +163,8 @@ void Player::loadSprites(const Common::String &name) {
|
|||
}
|
||||
|
||||
void Player::freeSprites() {
|
||||
delete _playerSprites;
|
||||
delete _playerSprites1;
|
||||
_playerSprites1 = nullptr;
|
||||
_playerSprites = nullptr;
|
||||
}
|
||||
|
||||
|
|
|
@ -88,17 +88,17 @@ void Room::doRoom() {
|
|||
doCommands();
|
||||
|
||||
// DOROOMFLASHBACK jump point
|
||||
if (_function == 1) {
|
||||
if (_function == FN_CLEAR1) {
|
||||
clearRoom();
|
||||
break;
|
||||
} else if (_function == 2) {
|
||||
} else if (_function == FN_CLEAR2) {
|
||||
clearRoom();
|
||||
return;
|
||||
} else if (_function == 3) {
|
||||
} else if (_function == FN_RELOAD) {
|
||||
reloadRoom1();
|
||||
reloadFlag = true;
|
||||
break;
|
||||
} else if (_function == 4) {
|
||||
} else if (_function == FN_BREAK) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -108,7 +108,7 @@ void Room::doRoom() {
|
|||
_function = 0;
|
||||
roomLoop();
|
||||
|
||||
if (_function == 1) {
|
||||
if (_function == FN_CLEAR1) {
|
||||
clearRoom();
|
||||
break;
|
||||
} else {
|
||||
|
@ -122,7 +122,7 @@ void Room::doRoom() {
|
|||
_function = 0;
|
||||
roomLoop();
|
||||
|
||||
if (_function == 1) {
|
||||
if (_function == FN_CLEAR1) {
|
||||
clearRoom();
|
||||
break;
|
||||
} else {
|
||||
|
|
|
@ -58,6 +58,8 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
enum Function { FN_NONE = 0, FN_CLEAR1 = 1, FN_CLEAR2 = 2, FN_RELOAD = 3, FN_BREAK = 4 };
|
||||
|
||||
class Room: public Manager {
|
||||
private:
|
||||
void roomLoop();
|
||||
|
|
|
@ -303,7 +303,7 @@ void Scripts::cmdNewRoom() {
|
|||
if (roomNumber != CURRENT_ROOM)
|
||||
_vm->_player->_roomNumber = roomNumber;
|
||||
|
||||
_vm->_room->_function = 1;
|
||||
_vm->_room->_function = FN_CLEAR1;
|
||||
_vm->freeChar();
|
||||
_vm->_converseMode = 0;
|
||||
cmdRetPos();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue