1 /* ScummVM - Graphic Adventure Engine 2 * 3 * ScummVM is the legal property of its developers, whose names 4 * are too numerous to list here. Please refer to the COPYRIGHT 5 * file distributed with this source distribution. 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License 9 * as published by the Free Software Foundation; either version 2 10 * of the License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 20 * 21 */ 22 23 #ifndef SUPERNOVA_ROOMS_H 24 #define SUPERNOVA_ROOMS_H 25 26 #include "common/str.h" 27 28 #include "supernova/msn_def.h" 29 #include "supernova/room.h" 30 31 namespace Common { 32 class ReadStream; 33 class WriteStream; 34 } 35 36 namespace Supernova { 37 38 class GameManager1; 39 class SupernovaEngine; 40 41 class Room1: public Room { 42 public: 43 Room1(); 44 protected: 45 GameManager1 *_gm; 46 int _dialogsX[6]; 47 }; 48 49 // Room 0 50 class Intro : public Room1 { 51 public: 52 Intro(SupernovaEngine *vm, GameManager1 *gm); 53 virtual void onEntrance(); 54 55 private: 56 bool animate(int section1, int section2, int duration); 57 bool animate(int section1, int section2, int duration, MessagePosition position, 58 int text); 59 bool animate(int section1, int section2, int section3, int section4, int duration, 60 MessagePosition position, int text); 61 62 void titleScreen(); 63 void titleFadeIn(); 64 void cutscene(); 65 void leaveCutscene(); 66 67 bool _shouldExit; 68 Common::String _introText; 69 }; 70 71 // Spaceship 72 class ShipCorridor : public Room1 { 73 public: 74 ShipCorridor(SupernovaEngine *vm, GameManager1 *gm); 75 76 virtual bool interact(Action verb, Object &obj1, Object &obj2); 77 78 private: 79 }; 80 81 class ShipHall: public Room1 { 82 public: 83 ShipHall(SupernovaEngine *vm, GameManager1 *gm); 84 85 virtual bool interact(Action verb, Object &obj1, Object &obj2); 86 87 private: 88 }; 89 90 class ShipSleepCabin: public Room1 { 91 public: 92 ShipSleepCabin(SupernovaEngine *vm, GameManager1 *gm); 93 94 virtual bool interact(Action verb, Object &obj1, Object &obj2); 95 virtual void animation(); 96 virtual void onEntrance(); 97 98 private: 99 byte _color; 100 }; 101 102 class ShipCockpit : public Room1 { 103 public: 104 ShipCockpit(SupernovaEngine *vm, GameManager1 *gm); 105 106 virtual bool interact(Action verb, Object &obj1, Object &obj2); 107 virtual void animation(); 108 virtual void onEntrance(); 109 110 private: 111 byte _color; 112 }; 113 114 class ShipCabinL1: public Room1 { 115 public: 116 ShipCabinL1(SupernovaEngine *vm, GameManager1 *gm); 117 118 private: 119 }; 120 121 class ShipCabinL2 : public Room1 { 122 public: 123 ShipCabinL2(SupernovaEngine *vm, GameManager1 *gm); 124 125 virtual bool interact(Action verb, Object &obj1, Object &obj2); 126 127 private: 128 }; 129 130 class ShipCabinL3 : public Room1 { 131 public: 132 ShipCabinL3(SupernovaEngine *vm, GameManager1 *gm); 133 134 virtual bool interact(Action verb, Object &obj1, Object &obj2); 135 136 private: 137 }; 138 139 class ShipCabinR1 : public Room1 { 140 public: 141 ShipCabinR1(SupernovaEngine *vm, GameManager1 *gm); 142 143 private: 144 }; 145 146 class ShipCabinR2 : public Room1 { 147 public: 148 ShipCabinR2(SupernovaEngine *vm, GameManager1 *gm); 149 150 private: 151 }; 152 153 class ShipCabinR3 : public Room1 { 154 public: 155 ShipCabinR3(SupernovaEngine *vm, GameManager1 *gm); 156 157 virtual bool interact(Action verb, Object &obj1, Object &obj2); 158 virtual void onEntrance(); 159 160 private: 161 }; 162 163 class ShipCabinBathroom : public Room1 { 164 public: 165 ShipCabinBathroom(SupernovaEngine *vm, GameManager1 *gm); 166 167 private: 168 }; 169 170 class ShipAirlock : public Room1 { 171 public: 172 ShipAirlock(SupernovaEngine *vm, GameManager1 *gm); 173 174 virtual bool interact(Action verb, Object &obj1, Object &obj2); 175 virtual void onEntrance(); 176 177 private: 178 }; 179 180 class ShipHold : public Room1 { 181 public: 182 ShipHold(SupernovaEngine *vm, GameManager1 *gm); 183 184 virtual bool interact(Action verb, Object &obj1, Object &obj2); 185 virtual void onEntrance(); 186 187 private: 188 }; 189 190 class ShipLandingModule : public Room1 { 191 public: 192 ShipLandingModule(SupernovaEngine *vm, GameManager1 *gm); 193 194 virtual bool interact(Action verb, Object &obj1, Object &obj2); 195 196 private: 197 }; 198 199 class ShipGenerator : public Room1 { 200 public: 201 ShipGenerator(SupernovaEngine *vm, GameManager1 *gm); 202 203 virtual bool interact(Action verb, Object &obj1, Object &obj2); 204 205 private: 206 }; 207 208 class ShipOuterSpace : public Room1 { 209 public: 210 ShipOuterSpace(SupernovaEngine *vm, GameManager1 *gm); 211 212 private: 213 }; 214 215 216 // Arsano 217 class ArsanoRocks : public Room1 { 218 public: 219 ArsanoRocks(SupernovaEngine *vm, GameManager1 *gm); 220 221 virtual void onEntrance(); 222 virtual bool interact(Action verb, Object &obj1, Object &obj2); 223 224 private: 225 }; 226 227 class ArsanoCave : public Room1 { 228 public: 229 ArsanoCave(SupernovaEngine *vm, GameManager1 *gm); 230 231 private: 232 }; 233 234 class ArsanoMeetup : public Room1 { 235 public: 236 ArsanoMeetup(SupernovaEngine *vm, GameManager1 *gm); 237 238 virtual void onEntrance(); 239 virtual void animation(); 240 virtual bool interact(Action verb, Object &obj1, Object &obj2); 241 242 private: 243 byte _sign; 244 byte _beacon; 245 }; 246 247 class ArsanoEntrance : public Room1 { 248 public: 249 ArsanoEntrance(SupernovaEngine *vm, GameManager1 *gm); 250 251 virtual bool interact(Action verb, Object &obj1, Object &obj2); 252 virtual void animation(); 253 254 private: 255 int _dialog1[5]; 256 int _dialog2[5]; 257 int _dialog3[5]; 258 byte _eyewitness; 259 }; 260 261 class ArsanoRemaining : public Room1 { 262 public: 263 ArsanoRemaining(SupernovaEngine *vm, GameManager1 *gm); 264 265 virtual void animation(); 266 267 private: 268 bool _chewing; 269 int _i; 270 }; 271 272 class ArsanoRoger : public Room1 { 273 public: 274 ArsanoRoger(SupernovaEngine *vm, GameManager1 *gm); 275 276 virtual void animation(); 277 virtual void onEntrance(); 278 virtual bool interact(Action verb, Object &obj1, Object &obj2); 279 280 private: 281 int _dialog1[4]; 282 byte _eyewitness; 283 byte _hands; 284 }; 285 286 class ArsanoGlider : public Room1 { 287 public: 288 ArsanoGlider(SupernovaEngine *vm, GameManager1 *gm); 289 290 virtual void animation(); 291 virtual bool interact(Action verb, Object &obj1, Object &obj2); 292 293 private: 294 byte _sinus; 295 }; 296 297 class ArsanoMeetup2 : public Room1 { 298 public: 299 ArsanoMeetup2(SupernovaEngine *vm, GameManager1 *gm); 300 301 virtual void onEntrance(); 302 virtual bool interact(Action verb, Object &obj1, Object &obj2); 303 304 void shipStart(); 305 306 private: 307 // TODO: change to 6, fix initialization 308 int _dialog1[2]; 309 int _dialog2[2]; 310 int _dialog3[4]; 311 int _dialog4[3]; 312 }; 313 314 class ArsanoMeetup3 : public Room1 { 315 public: 316 ArsanoMeetup3(SupernovaEngine *vm, GameManager1 *gm); 317 318 virtual bool interact(Action verb, Object &obj1, Object &obj2); 319 320 private: 321 int _dialog2[4]; 322 int _dialog3[2]; 323 }; 324 325 326 // Axacuss 327 class AxacussCell : public Room1 { 328 public: 329 AxacussCell(SupernovaEngine *vm, GameManager1 *gm); 330 331 virtual bool interact(Action verb, Object &obj1, Object &obj2); 332 virtual void animation(); 333 virtual void onEntrance(); 334 335 private: 336 }; 337 338 class AxacussCorridor1 : public Room1 { 339 public: 340 AxacussCorridor1(SupernovaEngine *vm, GameManager1 *gm); 341 342 virtual void onEntrance(); 343 344 private: 345 }; 346 347 class AxacussCorridor2 : public Room1 { 348 public: 349 AxacussCorridor2(SupernovaEngine *vm, GameManager1 *gm); 350 351 virtual void onEntrance(); 352 353 private: 354 }; 355 356 class AxacussCorridor3 : public Room1 { 357 public: 358 AxacussCorridor3(SupernovaEngine *vm, GameManager1 *gm); 359 360 virtual void onEntrance(); 361 362 private: 363 }; 364 365 class AxacussCorridor4 : public Room1 { 366 public: 367 AxacussCorridor4(SupernovaEngine *vm, GameManager1 *gm); 368 369 virtual void onEntrance(); 370 virtual void animation(); 371 virtual bool interact(Action verb, Object &obj1, Object &obj2); 372 373 private: 374 }; 375 376 class AxacussCorridor5 : public Room1 { 377 public: 378 AxacussCorridor5(SupernovaEngine *vm, GameManager1 *gm); 379 380 virtual void onEntrance(); 381 virtual bool interact(Action verb, Object &obj1, Object &obj2); 382 383 private: 384 void stopInteract(int sum); 385 bool handleMoneyDialog(); 386 387 // TODO: Change to 6, or change struct, and fix initialization 388 int _dialog1[2]; 389 int _dialog2[2]; 390 int _dialog3[4]; 391 392 byte _rows[6]; 393 394 }; 395 396 class AxacussCorridor6 : public Room1 { 397 public: 398 AxacussCorridor6(SupernovaEngine *vm, GameManager1 *gm); 399 400 virtual void onEntrance(); 401 virtual bool interact(Action verb, Object &obj1, Object &obj2); 402 403 private: 404 }; 405 406 class AxacussCorridor7 : public Room1 { 407 public: 408 AxacussCorridor7(SupernovaEngine *vm, GameManager1 *gm); 409 410 virtual void onEntrance(); 411 412 private: 413 }; 414 415 class AxacussCorridor8 : public Room1 { 416 public: 417 AxacussCorridor8(SupernovaEngine *vm, GameManager1 *gm); 418 419 virtual void onEntrance(); 420 virtual bool interact(Action verb, Object &obj1, Object &obj2); 421 422 private: 423 }; 424 425 class AxacussCorridor9 : public Room1 { 426 public: 427 AxacussCorridor9(SupernovaEngine *vm, GameManager1 *gm); 428 429 virtual void onEntrance(); 430 virtual bool interact(Action verb, Object &obj1, Object &obj2); 431 432 private: 433 }; 434 435 class AxacussBcorridor : public Room1 { 436 public: 437 AxacussBcorridor(SupernovaEngine *vm, GameManager1 *gm); 438 439 virtual void onEntrance(); 440 virtual bool interact(Action verb, Object &obj1, Object &obj2); 441 442 private: 443 }; 444 445 class AxacussIntersection : public Room1 { 446 public: 447 AxacussIntersection(SupernovaEngine *vm, GameManager1 *gm); 448 449 virtual bool interact(Action verb, Object &obj1, Object &obj2); 450 }; 451 452 class AxacussExit : public Room1 { 453 public: 454 AxacussExit(SupernovaEngine *vm, GameManager1 *gm); 455 456 virtual bool interact(Action verb, Object &obj1, Object &obj2); 457 }; 458 459 class AxacussOffice1 : public Room1 { 460 public: 461 AxacussOffice1(SupernovaEngine *vm, GameManager1 *gm); 462 463 virtual bool interact(Action verb, Object &obj1, Object &obj2); 464 465 private: 466 }; 467 468 class AxacussOffice2 : public Room1 { 469 public: 470 AxacussOffice2(SupernovaEngine *vm, GameManager1 *gm); 471 472 virtual bool interact(Action verb, Object &obj1, Object &obj2); 473 474 private: 475 }; 476 477 class AxacussOffice3 : public Room1 { 478 public: 479 AxacussOffice3(SupernovaEngine *vm, GameManager1 *gm); 480 481 virtual bool interact(Action verb, Object &obj1, Object &obj2); 482 483 private: 484 }; 485 486 class AxacussOffice4 : public Room1 { 487 public: 488 AxacussOffice4(SupernovaEngine *vm, GameManager1 *gm); 489 490 virtual bool interact(Action verb, Object &obj1, Object &obj2); 491 492 private: 493 }; 494 495 class AxacussOffice5 : public Room1 { 496 public: 497 AxacussOffice5(SupernovaEngine *vm, GameManager1 *gm); 498 499 virtual void onEntrance(); 500 virtual bool interact(Action verb, Object &obj1, Object &obj2); 501 502 private: 503 }; 504 505 class AxacussElevator : public Room1 { 506 public: 507 AxacussElevator(SupernovaEngine *vm, GameManager1 *gm); 508 509 virtual bool interact(Action verb, Object &obj1, Object &obj2); 510 511 private: 512 }; 513 514 class AxacussStation : public Room1 { 515 public: 516 AxacussStation(SupernovaEngine *vm, GameManager1 *gm); 517 518 virtual bool interact(Action verb, Object &obj1, Object &obj2); 519 520 private: 521 }; 522 523 class AxacussSign : public Room1 { 524 public: 525 AxacussSign(SupernovaEngine *vm, GameManager1 *gm); 526 527 virtual bool interact(Action verb, Object &obj1, Object &obj2); 528 529 private: 530 }; 531 532 class Outro : public Room1 { 533 public: 534 Outro(SupernovaEngine *vm, GameManager1 *gm); 535 536 virtual void onEntrance(); 537 virtual void animation(); 538 539 private: 540 void animate(int filenumber, int section1, int section2, int duration); 541 void animate(int filenumber, int section1, int section2, int duration, MessagePosition position, 542 const char *text); 543 void animate(int filenumber, int section1, int section2, int section3, int section4, int duration, 544 MessagePosition position, const char *text); 545 546 Common::String _outroText; 547 }; 548 549 } 550 #endif // SUPERNOVA_ROOMS_H 551