void AmazonRoom::reloadRoom() { loadRoom(_vm->_player->_roomNumber); if (_roomFlag != 1) { _vm->_currentMan = _roomFlag; _vm->_currentManOld = _roomFlag; _vm->_manScaleOff = 0; switch (_vm->_currentMan) { case 0: _vm->_player->loadSprites("MAN.LZ"); break; case 2: _vm->_player->loadSprites("JMAN.LZ"); break; case 3: _vm->_player->loadSprites("OVERHEAD.LZ"); _vm->_manScaleOff = 1; break; default: break; } } reloadRoom1(); }
void MainWindow::on_actionDiscardChanges_triggered(){ if(!map.isLoaded())return; QMessageBox msgBox; msgBox.setText(tr("Do you really want to discard your changes on this room?")); msgBox.setStandardButtons(QMessageBox::Yes|QMessageBox::No); if(msgBox.exec()!=QMessageBox::Yes)return; loadRoom(curRoomId); }
void MainWindow::on_listRoom_itemDoubleClicked(QTreeWidgetItem *item) { if(currentFileName==QString::null)return; int roomId=item->data(0,Qt::UserRole).toInt(); if(roomId==-1)return; if(map.isLoaded()){ saveCurrentRoom(); } loadRoom(roomId); }
void HiRes1Engine::showRoom() { _state.curPicture = getCurRoom().curPicture; clearScreen(); loadRoom(_state.room); if (!_state.isDark) { drawPic(getCurRoom().curPicture); drawItems(); } _display->updateHiResScreen(); _messageDelay = false; printString(_roomData.description); _messageDelay = true; }
// TODO move this function to the constructor ? void Scene::loadSceneFromFile(const char* filename){ XMLDocument doc; doc.LoadFile(filename); // Check for errors in the XML if (doc.ErrorID() != 0) { doc.PrintError(); } XMLElement *music = doc.FirstChildElement("scene"); pathMusic = music->FirstChildElement("music")->GetText(); XMLElement *end = doc.FirstChildElement("scene"); if(end->FirstChildElement("end")) this->end = atoi(end->FirstChildElement("end")->GetText()); else this->end = 0; loadModels(doc); loadDialogues(doc); loadLights(doc); loadRoom(doc); }
void AdlEngine_v2::showRoom() { bool redrawPic = false; _state.curPicture = getCurRoom().curPicture; if (_state.room != _roomOnScreen) { loadRoom(_state.room); clearScreen(); if (!_state.isDark) redrawPic = true; } else { if (_state.curPicture != _picOnScreen || _itemRemoved) redrawPic = true; } if (redrawPic) { _roomOnScreen = _state.room; _picOnScreen = _state.curPicture; drawPic(_state.curPicture); _itemRemoved = false; _itemsOnScreen = 0; Common::List<Item>::iterator item; for (item = _state.items.begin(); item != _state.items.end(); ++item) item->isOnScreen = false; } if (!_state.isDark) drawItems(); _display->updateHiResScreen(); printString(_roomData.description); // FIXME: move to main loop? _linesPrinted = 0; }
bool StarTrekEngine::saveOrLoadGameData(Common::SeekableReadStream *in, Common::WriteStream *out, SavegameMetadata *meta) { Common::Serializer ser(in, out); if (ser.isLoading()) { if (_lastGameMode == GAMEMODE_BRIDGE) cleanupBridge(); else // Assume GAMEMODE_AWAYMISSION unloadRoom(); } ser.syncAsUint16LE(_gameMode); // TODO: sub_1d8eb (save) / sub_1d958 (load) (probably bridge / space combat state) Common::String midiFilename = _sound->_loadedMidiFilename; ser.syncString(midiFilename); ser.syncAsSint16LE(_sound->_loopingMidiTrack); if (ser.isLoading()) { if (midiFilename.empty()) _sound->clearAllMidiSlots(); else { _sound->loadMusicFile(midiFilename); _sound->playMidiMusicTracks(_sound->_loopingMidiTrack, _sound->_loopingMidiTrack); } } ser.syncAsUint16LE(_frameIndex); ser.syncAsUint16LE(_mouseControllingShip); // TODO: word_45aa8 // TODO: word_45aaa // TODO: word_45aac // TODO: word_5082e // TODO: dword_519b0 // TODO: word_45ab2 // TODO: word_45ab4 // TODO: word_45ab8 ser.syncString(_missionToLoad); // TODO: word_4b032 // TODO: word_519bc // TODO: word_45c5c // TODO: unk_52afe ser.syncString(_sound->_loopingAudioName); if (ser.isLoading()) { if (!_sound->_loopingAudioName.empty()) _sound->playVoc(_sound->_loopingAudioName); } // TODO: word_45a50 for (int i = 0; i < NUM_OBJECTS; i++) { ser.syncAsByte(_itemList[i].have); } if (_gameMode == GAMEMODE_AWAYMISSION) { ser.syncString(_missionName); ser.syncAsSint16LE(_roomIndex); if (ser.isLoading()) { _gfx->fadeoutScreen(); _txtFilename = "ground"; // This must be done before loading the actor variables, since this clears // them. loadRoom(_missionName, _roomIndex); } ser.syncAsUint32LE(_roomFrameCounter); ser.syncAsUint32LE(_frameIndex); // FIXME: redundant // Serialize the "actor" class for (int i = 0; i < NUM_ACTORS; i++) { Actor *a = &_actorList[i]; ser.syncAsUint16LE(a->spriteDrawn); ser.syncBytes((byte *)a->animFilename, 16); ser.syncAsUint16LE(a->animType); a->sprite.saveLoadWithSerializer(ser); ser.syncBytes((byte *)a->bitmapFilename, 10); a->scale.saveLoadWithSerializer(ser); // Can't save "animFile" (will be reloaded) ser.syncAsUint16LE(a->numAnimFrames); ser.syncAsUint16LE(a->animFrame); ser.syncAsUint32LE(a->frameToStartNextAnim); ser.syncAsSint16LE(a->pos.x); ser.syncAsSint16LE(a->pos.y); ser.syncAsUint16LE(a->field60); ser.syncAsUint16LE(a->field62); ser.syncAsUint16LE(a->triggerActionWhenAnimFinished); ser.syncAsUint16LE(a->finishedAnimActionParam); ser.syncBytes((byte *)a->animationString2, 8); ser.syncAsUint16LE(a->field70); ser.syncAsUint16LE(a->field72); ser.syncAsUint16LE(a->field74); ser.syncAsUint16LE(a->field76); ser.syncAsSint16LE(a->iwSrcPosition); ser.syncAsSint16LE(a->iwDestPosition); a->granularPosX.saveLoadWithSerializer(ser); a->granularPosY.saveLoadWithSerializer(ser); a->speedX.saveLoadWithSerializer(ser); a->speedY.saveLoadWithSerializer(ser); ser.syncAsSint16LE(a->dest.x); ser.syncAsSint16LE(a->dest.y); ser.syncAsUint16LE(a->field90); ser.syncAsByte(a->field92); ser.syncAsByte(a->direction); ser.syncAsUint16LE(a->field94); ser.syncAsUint16LE(a->field96); ser.syncBytes((byte *)a->animationString, 10); ser.syncAsUint16LE(a->fielda2); ser.syncAsUint16LE(a->fielda4); ser.syncAsUint16LE(a->fielda6); } ser.syncString(_mapFilename); // Away mission struct for (int i = 0; i < 8; i++) ser.syncAsSint16LE(_awayMission.timers[i]); ser.syncAsSint16LE(_awayMission.mouseX); ser.syncAsSint16LE(_awayMission.mouseY); for (int i = 0; i < 4; i++) ser.syncAsSint16LE(_awayMission.crewGetupTimers[i]); ser.syncAsByte(_awayMission.disableWalking); ser.syncAsByte(_awayMission.disableInput); ser.syncAsByte(_awayMission.redshirtDead); ser.syncAsByte(_awayMission.activeAction); ser.syncAsByte(_awayMission.activeObject); ser.syncAsByte(_awayMission.passiveObject); ser.syncAsByte(_awayMission.rdfStillDoDefaultAction); ser.syncAsByte(_awayMission.crewDownBitset); for (int i = 0; i < 4; i++) ser.syncAsByte(_awayMission.crewDirectionsAfterWalk[i]); if (_missionName == "DEMON") { _awayMission.demon.saveLoadWithSerializer(ser); _room->_roomVar.demon.saveLoadWithSerializer(ser); } else if (_missionName == "TUG") { _awayMission.tug.saveLoadWithSerializer(ser); _room->_roomVar.tug.saveLoadWithSerializer(ser); } else if (_missionName == "LOVE") { _awayMission.love.saveLoadWithSerializer(ser); _room->_roomVar.love.saveLoadWithSerializer(ser); } else if (_missionName == "MUDD") { _awayMission.mudd.saveLoadWithSerializer(ser); _room->_roomVar.mudd.saveLoadWithSerializer(ser); } else if (_missionName == "FEATHER") { _awayMission.feather.saveLoadWithSerializer(ser); _room->_roomVar.feather.saveLoadWithSerializer(ser); } else if (_missionName == "TRIAL") { _awayMission.trial.saveLoadWithSerializer(ser); _room->_roomVar.trial.saveLoadWithSerializer(ser); } else if (_missionName == "SINS") { _awayMission.sins.saveLoadWithSerializer(ser); _room->_roomVar.sins.saveLoadWithSerializer(ser); } // The action queue if (ser.isLoading()) { _actionQueue = Common::Queue<Action>(); int16 n = 0; ser.syncAsSint16LE(n); for (int i = 0; i < n; i++) { Action a; a.saveLoadWithSerializer(ser); _actionQueue.push(a); } } else { // Saving int16 n = _actionQueue.size(); ser.syncAsSint16LE(n); for (int i = 0; i < n; i++) { Action a = _actionQueue.pop(); a.saveLoadWithSerializer(ser); _actionQueue.push(a); } } // Original game located changes in RDF files and saved them. Since RDF files // aren't modified directly here, that's skipped. ser.syncAsSint16LE(_objectHasWalkPosition); ser.syncAsSint16LE(_objectWalkPosition.x); ser.syncAsSint16LE(_objectWalkPosition.y); for (int i = 0; i < MAX_BUFFERED_WALK_ACTIONS; i++) { _actionOnWalkCompletion[i].saveLoadWithSerializer(ser); ser.syncAsByte(_actionOnWalkCompletionInUse[i]); } ser.syncAsSint16LE(_warpHotspotsActive); } return true; }
void Room::loadRoom(void) { loadRoom(x, z); }