BLADERUNNER: Savagame names fixes

It was not possible to change the name of exisitng savegame
Saves were read too ofter just for over-drawing the thumbnail
This commit is contained in:
Peter Kohaut 2019-03-09 21:03:43 +01:00
parent 09dbe7686b
commit acb51d0e72
5 changed files with 18 additions and 7 deletions

View file

@ -241,9 +241,10 @@ bool SaveFileReadStream::readBool() {
}
Common::String SaveFileReadStream::readStringSz(uint sz) {
char *buf = new char[sz];
char *buf = new char[sz + 1];
read(buf, sz);
Common::String result(buf, sz);
buf[sz] = 0;
Common::String result(buf);
delete[] buf;
return result;
}

View file

@ -47,6 +47,7 @@ KIASectionLoad::KIASectionLoad(BladeRunnerEngine *vm) : KIASectionBase(vm) {
_timeLeft = 0;
_hoveredLineId = -1;
_displayingLineId = -1;
_newGameEasyLineId = -1;
_newGameMediumLineId = -1;
_newGameHardLineId = -1;
@ -102,23 +103,25 @@ void KIASectionLoad::draw(Graphics::Surface &surface){
int selectedLineId = _scrollBox->getSelectedLineData();
if (_hoveredLineId != selectedLineId) {
if (selectedLineId >= 0 && selectedLineId < (int)_saveList.size()) {
if (selectedLineId >= 0 && selectedLineId < (int)_saveList.size() && _displayingLineId != selectedLineId) {
if (_timeLeft == 0) {
SaveStateDescriptor desc = SaveFileManager::queryMetaInfos(_vm->getTargetName(), selectedLineId);
const Graphics::Surface *thumbnail = desc.getThumbnail();
if (thumbnail != nullptr) {
_vm->_kia->playImage(*thumbnail);
_displayingLineId = selectedLineId;
}
}
} else {
_vm->_kia->playerReset();
_timeLeft = 800;
_displayingLineId = -1;
}
_hoveredLineId = selectedLineId;
}
uint32 now = _vm->_time->currentSystem();
if (selectedLineId >= 0 && selectedLineId < (int)_saveList.size()) {
if (selectedLineId >= 0 && selectedLineId < (int)_saveList.size() && _displayingLineId != selectedLineId) {
if (_timeLeft) {
uint32 timeDiff = now - _timeLast;
if (timeDiff >= _timeLeft) {
@ -126,6 +129,7 @@ void KIASectionLoad::draw(Graphics::Surface &surface){
const Graphics::Surface *thumbnail = desc.getThumbnail();
if (thumbnail != nullptr) {
_vm->_kia->playImage(*thumbnail);
_displayingLineId = selectedLineId;
}
} else {
_timeLeft -= timeDiff;

View file

@ -49,6 +49,7 @@ class KIASectionLoad : public KIASectionBase {
SaveStateList _saveList;
int _hoveredLineId;
int _displayingLineId;
int _newGameEasyLineId;
int _newGameMediumLineId;
int _newGameHardLineId;

View file

@ -62,8 +62,9 @@ KIASectionSave::KIASectionSave(BladeRunnerEngine *vm) : KIASectionBase(vm) {
_mouseX = 0;
_mouseY = 0;
_selectedLineId = -1;
_hoveredLineId = -1;
_displayingLineId = -1;
_selectedLineId = -1;
_newSaveLineId = -1;
}
@ -182,23 +183,25 @@ void KIASectionSave::draw(Graphics::Surface &surface){
int selectedLineId = _scrollBox->getSelectedLineData();
if (selectedLineId != _hoveredLineId) {
if (selectedLineId >= 0 && selectedLineId < (int)_saveList.size()) {
if (selectedLineId >= 0 && selectedLineId < (int)_saveList.size() && _displayingLineId != selectedLineId) {
if (_timeLeft == 0) {
SaveStateDescriptor desc = SaveFileManager::queryMetaInfos(_vm->getTargetName(), selectedLineId);
const Graphics::Surface *thumbnail = desc.getThumbnail();
if (thumbnail != nullptr) {
_vm->_kia->playImage(*thumbnail);
_displayingLineId = selectedLineId;
}
}
} else {
_vm->_kia->playerReset();
_timeLeft = 800;
_displayingLineId = -1;
}
_hoveredLineId = selectedLineId;
}
uint32 now = _vm->_time->currentSystem();
if (selectedLineId >= 0 && selectedLineId < (int)_saveList.size()) {
if (selectedLineId >= 0 && selectedLineId < (int)_saveList.size() && _displayingLineId != selectedLineId) {
if (_timeLeft) {
uint32 timeDiff = now - _timeLast;
if (timeDiff >= _timeLeft) {
@ -206,6 +209,7 @@ void KIASectionSave::draw(Graphics::Surface &surface){
const Graphics::Surface *thumbnail = desc.getThumbnail();
if (thumbnail != nullptr) {
_vm->_kia->playImage(*thumbnail);
_displayingLineId = selectedLineId;
}
} else {
_timeLeft -= timeDiff;

View file

@ -64,6 +64,7 @@ class KIASectionSave : public KIASectionBase {
int _mouseY;
int _hoveredLineId;
int _displayingLineId;
int _selectedLineId;
int _newSaveLineId;