mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-02 17:03:13 +00:00
SUPERNOVA2: Finish taxistand, add taxi
This commit is contained in:
parent
43393fc29f
commit
800e41ddd2
@ -81,9 +81,9 @@ enum Action {
|
||||
|
||||
enum RoomId {
|
||||
INTRO,AIRPORT,TAXISTAND,STREET,GAMES,CABIN,KIOSK,
|
||||
KPALAST,CASHBOX,CITY1,CITY2,ELEVATOR,APARTMENT,SHIP,
|
||||
CULTURE_PALACE,CASHBOX,CITY1,CITY2,ELEVATOR,APARTMENT,SHIP,
|
||||
|
||||
PYRAMID,PYRGANG,UPSTAIRS1,DOWNSTAIRS1,
|
||||
PYRAMID,PYR_ENTRANCE,UPSTAIRS1,DOWNSTAIRS1,
|
||||
BOTTOM_RIGHT_DOOR,BOTTOM_LEFT_DOOR,UPSTAIRS2,DOWNSTAIRS2,
|
||||
UPPER_DOOR,PUZZLE_FRONT,PUZZLE_BEHIND,
|
||||
FORMULA1_F,FORMULA1_N,FORMULA2_F,FORMULA2_N,TOMATO_F,TOMATO_N,
|
||||
@ -162,7 +162,7 @@ kString160, kString161, kString162, kString163, kString164,
|
||||
kString165, kString166, kString167, kString168, kString169,
|
||||
kString170, kString171, kString172, kString173, kString174,
|
||||
kString175, kString176, kString177, kStringDefaultDescription, kString179,
|
||||
kString180, kString181, kString182, kString183, kString184,
|
||||
kString180, kString181, kStringEmpty, kStringWalletOpen, kString184,
|
||||
kString185, kString186, kString187, kString188, kString189,
|
||||
kString190, kString191, kString192, kString193, kString194,
|
||||
kString195, kString196, kString197, kString198, kString199,
|
||||
|
@ -563,7 +563,7 @@ void TaxiStand::animation() {
|
||||
|
||||
bool TaxiStand::interact(Action verb, Object &obj1, Object &obj2) {
|
||||
if (verb == ACTION_WALK && obj1._id == TAXI && isSectionVisible(6))
|
||||
;//taxi
|
||||
_gm->taxi();
|
||||
else if ((verb == ACTION_WALK || verb == ACTION_OPEN) && obj1._id == DOOR)
|
||||
_vm->renderMessage(obj1._description);
|
||||
else
|
||||
|
@ -180,6 +180,7 @@ void GameManager::initState() {
|
||||
_timePaused = false;
|
||||
_messageDuration = 0;
|
||||
_animationTimer = 0;
|
||||
_taxi_possibility = 4;
|
||||
|
||||
_currentSentence = -1;
|
||||
for (int i = 0 ; i < 6 ; ++i) {
|
||||
@ -187,9 +188,12 @@ void GameManager::initState() {
|
||||
_texts[i] = kNoString;
|
||||
_rows[i] = 0;
|
||||
_rowsStart[i] = 0;
|
||||
_dials[i] = 1;
|
||||
}
|
||||
|
||||
_prevImgId = 0;
|
||||
|
||||
_state._money = 20;
|
||||
}
|
||||
|
||||
void GameManager::initRooms() {
|
||||
@ -543,6 +547,11 @@ void GameManager::drawMapExits() {
|
||||
}
|
||||
}
|
||||
|
||||
void GameManager::takeMoney(int amount) {
|
||||
_state._money += amount;
|
||||
_vm->setGameString(kStringMoney, Common::String::format("%d Xa", _state._money));
|
||||
}
|
||||
|
||||
void GameManager::drawStatus() {
|
||||
int index = static_cast<int>(_inputVerb);
|
||||
_vm->renderBox(0, 140, 320, 9, kColorWhite25);
|
||||
@ -835,7 +844,28 @@ int GameManager::invertSection(int section) {
|
||||
}
|
||||
|
||||
bool GameManager::genericInteract(Action verb, Object &obj1, Object &obj2) {
|
||||
return false;
|
||||
if (verb == ACTION_OPEN && obj1._id == WALLET) {
|
||||
if (_rooms[TAXISTAND]->getObject(4)->_type & CARRIED)
|
||||
_vm->renderMessage(kStringEmpty);
|
||||
else {
|
||||
_vm->renderMessage(kStringWalletOpen);
|
||||
takeObject(*_rooms[TAXISTAND]->getObject(4));
|
||||
takeObject(*_rooms[TAXISTAND]->getObject(5));
|
||||
takeMoney(1);
|
||||
}
|
||||
} else if (verb == ACTION_PRESS && obj1._id == TRANSMITTER) {
|
||||
if (_currentRoom == _rooms[TAXISTAND]) {
|
||||
if (_currentRoom->getObject(0)->_type != EXIT) {
|
||||
_vm->renderImage(5);
|
||||
wait(3);
|
||||
_vm->renderImage(6);
|
||||
_currentRoom->getObject(0)->_type = EXIT;
|
||||
drawMapExits();
|
||||
}
|
||||
}
|
||||
} else
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void GameManager::handleInput() {
|
||||
@ -966,5 +996,35 @@ void GameManager::executeRoom() {
|
||||
_currentRoom->onEntrance();
|
||||
}
|
||||
}
|
||||
void GameManager::taxi() {
|
||||
static StringId dest[] = {
|
||||
kStringAirport,
|
||||
kStringDowntown,
|
||||
kStringCulturePalace,
|
||||
kStringEarth,
|
||||
kStringPrivateApartment,
|
||||
kStringLeaveTaxi
|
||||
};
|
||||
|
||||
static StringId answers[] = {
|
||||
kStringPay,
|
||||
kStringLeaveTaxi
|
||||
};
|
||||
|
||||
Room *previousRoom = _currentRoom;
|
||||
_currentRoom = _rooms[INTRO];
|
||||
_vm->setCurrentImage(4);
|
||||
_vm->renderImage(0);
|
||||
_vm->renderImage(1);
|
||||
_vm->renderImage(2);
|
||||
|
||||
int possibility = _taxi_possibility;
|
||||
|
||||
if (previousRoom == _rooms[AIRPORT]) possibility += 1;
|
||||
else if (previousRoom == _rooms[STREET]) possibility += 2;
|
||||
else if (previousRoom == _rooms[CULTURE_PALACE]) possibility += 4;
|
||||
debug("%d", dialog(6, _dials, dest, 1));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -34,6 +34,7 @@ namespace Supernova2 {
|
||||
const int32 kMaxTimerValue = 0x7FFFFFFF;
|
||||
|
||||
struct GameState {
|
||||
int16 _money;
|
||||
};
|
||||
|
||||
class Inventory {
|
||||
@ -146,6 +147,8 @@ public:
|
||||
StringId _texts[6];
|
||||
byte _rows[6];
|
||||
byte _rowsStart[6];
|
||||
byte _dials[6];
|
||||
int _taxi_possibility;
|
||||
|
||||
void takeObject(Object &obj);
|
||||
void setObjectNull(Object *&obj);
|
||||
@ -179,6 +182,8 @@ public:
|
||||
void reply(StringId textId, int aus1, int aus2);
|
||||
void reply(const char *text, int aus1, int aus2);
|
||||
void mousePosDialog(int x, int y);
|
||||
void takeMoney(int amount);
|
||||
void taxi();
|
||||
|
||||
private:
|
||||
int _prevImgId;
|
||||
|
Loading…
x
Reference in New Issue
Block a user