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:
parent
09dbe7686b
commit
acb51d0e72
5 changed files with 18 additions and 7 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -49,6 +49,7 @@ class KIASectionLoad : public KIASectionBase {
|
|||
SaveStateList _saveList;
|
||||
|
||||
int _hoveredLineId;
|
||||
int _displayingLineId;
|
||||
int _newGameEasyLineId;
|
||||
int _newGameMediumLineId;
|
||||
int _newGameHardLineId;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -64,6 +64,7 @@ class KIASectionSave : public KIASectionBase {
|
|||
int _mouseY;
|
||||
|
||||
int _hoveredLineId;
|
||||
int _displayingLineId;
|
||||
int _selectedLineId;
|
||||
int _newSaveLineId;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue