diff options
| -rw-r--r-- | engines/supernova/msn_def.h | 186 | ||||
| -rw-r--r-- | engines/supernova/supernova.cpp | 18 | 
2 files changed, 117 insertions, 87 deletions
| diff --git a/engines/supernova/msn_def.h b/engines/supernova/msn_def.h index 1b854f0853..1bd81ddc0f 100644 --- a/engines/supernova/msn_def.h +++ b/engines/supernova/msn_def.h @@ -19,93 +19,6 @@ const int kRoomsChap2 =  9;  const int kRoomsChap3 = 21;  const int kRoomsNum = kRoomsChap0 + kRoomsChap1 + kRoomsChap2 + kRoomsChap3; -enum ObjectType { -	NULLTYPE    =      0, -	TAKE        =      1, -	OPEN        =      2, -	OPENED      =      4, -	CLOSED      =      8, -	EXIT        =     16, -	PRESS       =     32, -	COMBINABLE  =     64, -	CARRIED     =    128, -	UNNECESSARY =    256, -	WORN        =    512, -	TALK        =   1024, -	OCCUPIED    =   2048, -	CAUGHT      =   4096 -}; - -enum Action { -	ACTION_WALK, -	ACTION_LOOK, -	ACTION_TAKE, -	ACTION_OPEN, -	ACTION_CLOSE, -	ACTION_PRESS, -	ACTION_PULL, -	ACTION_USE, -	ACTION_TALK, -	ACTION_GIVE -}; - -enum RoomID { -	INTRO,CORRIDOR,HALL,SLEEP,COCKPIT,AIRLOCK, -	HOLD,LANDINGMODULE,GENERATOR,OUTSIDE, -	CABIN_R1,CABIN_R2,CABIN_R3,CABIN_L1,CABIN_L3,CABIN_L2,BATHROOM, - -	ROCKS,CAVE,MEETUP,ENTRANCE,REST,ROGER,GLIDER,MEETUP2,MEETUP3, - -	CELL,CORRIDOR1,CORRIDOR2,CORRIDOR3,CORRIDOR4,CORRIDOR5,CORRIDOR6,CORRIDOR7,CORRIDOR8,CORRIDOR9, -	BCORRIDOR,GUARD,GUARD3,OFFICE_L1,OFFICE_L2,OFFICE_R1,OFFICE_R2,OFFICE_L, -	ELEVATOR,STATION,SIGN,NULLROOM -}; - -enum ObjectID { -	NULLOBJECT, -	KEYCARD,KNIFE,WATCH, -	SOCKET, -	BUTTON,HATCH1, -	BUTTON1,BUTTON2,MANOMETER,SUIT,HELMET,LIFESUPPORT, -	SCRAP_LK,OUTERHATCH_TOP,GENERATOR_TOP,TERMINALSTRIP,LANDINGMOD_OUTERHATCH, -	HOLD_WIRE, -	LANDINGMOD_BUTTON,LANDINGMOD_SOCKET,LANDINGMOD_WIRE,LANDINGMOD_HATCH,LANDINGMOD_MONITOR, -	KEYBOARD, -	KEYCARD2,OUTERHATCH,GENERATOR_WIRE,TRAP,SHORT_WIRE,CLIP, -	VOLTMETER,LADDER,GENERATOR_ROPE, -	KITCHEN_HATCH,SLEEP_SLOT, -	MONITOR,INSTRUMENTS, -	COMPUTER,CABINS,CABIN, -	SLOT_K1,SLOT_K2,SLOT_K3,SLOT_K4, -	SHELF1,SHELF2,SHELF3,SHELF4, -	ROPE,BOOK,DISCMAN,CHESS, -	SLOT_KL1,SLOT_KL2,SLOT_KL3,SLOT_KL4, -	SHELF_L1,SHELF_L2,SHELF_L3,SHELF_L4, -	PISTOL,BOOK2,SPOOL, -	RECORD,TURNTABLE,TURNTABLE_BUTTON,WIRE,WIRE2,PLUG, -	PEN, -	BATHROOM_DOOR,BATHROOM_EXIT,SHOWER,TOILET, - -	STONE, -	SPACESHIPS,SPACESHIP,STAR,DOOR,MEETUP_SIGN, -	PORTER,BATHROOM_BUTTON,BATHROOM_SIGN,KITCHEN_SIGN,CAR_SLOT, -	ARS_BATHROOM,COINS,SCHNUCK,EGG,PILL,PILL_HULL,STAIRCASE, -	MEETUP_EXIT, -	ROGER_W,WALLET,KEYCARD_R,CUP, -	GLIDER_BUTTON1,GLIDER_BUTTON2,GLIDER_BUTTON3,GLIDER_BUTTON4,GLIDER_SLOT,GLIDER_BUTTONS, -	GLIDER_DISPLAY,GLIDER_INSTRUMENTS,GLIDER_KEYCARD, -	UFO, - -	CELL_BUTTON,CELL_TABLE,CELL_WIRE,TRAY,CELL_DOOR,MAGNET, -	NEWSPAPER,TABLE, -	PILLAR1,PILLAR2,DOOR1,DOOR2,DOOR3,DOOR4, -	GUARDIAN,LAMP, -	MASTERKEYCARD,PAINTING,MONEY,LOCKER,LETTER, -	JUNGLE,SLOT,STATION_SIGN, - -	TICKETS -}; -  enum MessagePosition {  	kMessageNormal,  	kMessageLeft, @@ -370,6 +283,97 @@ const byte initVGAPalette[768] = {      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00  }; +enum ObjectType { +	NULLTYPE    =      0, +	TAKE        =      1, +	OPEN        =      2, +	OPENED      =      4, +	CLOSED      =      8, +	EXIT        =     16, +	PRESS       =     32, +	COMBINABLE  =     64, +	CARRIED     =    128, +	UNNECESSARY =    256, +	WORN        =    512, +	TALK        =   1024, +	OCCUPIED    =   2048, +	CAUGHT      =   4096 +}; + +enum Action { +	ACTION_WALK, +	ACTION_LOOK, +	ACTION_TAKE, +	ACTION_OPEN, +	ACTION_CLOSE, +	ACTION_PRESS, +	ACTION_PULL, +	ACTION_USE, +	ACTION_TALK, +	ACTION_GIVE +}; + +enum RoomID { +	INTRO,CORRIDOR,HALL,SLEEP,COCKPIT,AIRLOCK, +	HOLD,LANDINGMODULE,GENERATOR,OUTSIDE, +	CABIN_R1,CABIN_R2,CABIN_R3,CABIN_L1,CABIN_L3,CABIN_L2,BATHROOM, + +	ROCKS,CAVE,MEETUP,ENTRANCE,REST,ROGER,GLIDER,MEETUP2,MEETUP3, + +	CELL,CORRIDOR1,CORRIDOR2,CORRIDOR3,CORRIDOR4,CORRIDOR5,CORRIDOR6,CORRIDOR7,CORRIDOR8,CORRIDOR9, +	BCORRIDOR,GUARD,GUARD3,OFFICE_L1,OFFICE_L2,OFFICE_R1,OFFICE_R2,OFFICE_L, +	ELEVATOR,STATION,SIGN,NULLROOM +}; + +enum ObjectID { +	NULLOBJECT, +	KEYCARD,KNIFE,WATCH, +	SOCKET, +	BUTTON,HATCH1, +	BUTTON1,BUTTON2,MANOMETER,SUIT,HELMET,LIFESUPPORT, +	SCRAP_LK,OUTERHATCH_TOP,GENERATOR_TOP,TERMINALSTRIP,LANDINGMOD_OUTERHATCH, +	HOLD_WIRE, +	LANDINGMOD_BUTTON,LANDINGMOD_SOCKET,LANDINGMOD_WIRE,LANDINGMOD_HATCH,LANDINGMOD_MONITOR, +	KEYBOARD, +	KEYCARD2,OUTERHATCH,GENERATOR_WIRE,TRAP,SHORT_WIRE,CLIP, +	VOLTMETER,LADDER,GENERATOR_ROPE, +	KITCHEN_HATCH,SLEEP_SLOT, +	MONITOR,INSTRUMENTS, +	COMPUTER,CABINS,CABIN, +	SLOT_K1,SLOT_K2,SLOT_K3,SLOT_K4, +	SHELF1,SHELF2,SHELF3,SHELF4, +	ROPE,BOOK,DISCMAN,CHESS, +	SLOT_KL1,SLOT_KL2,SLOT_KL3,SLOT_KL4, +	SHELF_L1,SHELF_L2,SHELF_L3,SHELF_L4, +	PISTOL,BOOK2,SPOOL, +	RECORD,TURNTABLE,TURNTABLE_BUTTON,WIRE,WIRE2,PLUG, +	PEN, +	BATHROOM_DOOR,BATHROOM_EXIT,SHOWER,TOILET, + +	STONE, +	SPACESHIPS,SPACESHIP,STAR,DOOR,MEETUP_SIGN, +	PORTER,BATHROOM_BUTTON,BATHROOM_SIGN,KITCHEN_SIGN,CAR_SLOT, +	ARS_BATHROOM,COINS,SCHNUCK,EGG,PILL,PILL_HULL,STAIRCASE, +	MEETUP_EXIT, +	ROGER_W,WALLET,KEYCARD_R,CUP, +	GLIDER_BUTTON1,GLIDER_BUTTON2,GLIDER_BUTTON3,GLIDER_BUTTON4,GLIDER_SLOT,GLIDER_BUTTONS, +	GLIDER_DISPLAY,GLIDER_INSTRUMENTS,GLIDER_KEYCARD, +	UFO, + +	CELL_BUTTON,CELL_TABLE,CELL_WIRE,TRAY,CELL_DOOR,MAGNET, +	NEWSPAPER,TABLE, +	PILLAR1,PILLAR2,DOOR1,DOOR2,DOOR3,DOOR4, +	GUARDIAN,LAMP, +	MASTERKEYCARD,PAINTING,MONEY,LOCKER,LETTER, +	JUNGLE,SLOT,STATION_SIGN, + +	TICKETS +}; + +ObjectType operator|(ObjectType a, ObjectType b); +ObjectType operator^(ObjectType a, ObjectType b); +ObjectType &operator|=(ObjectType &a, ObjectType b); +ObjectType &operator^=(ObjectType &a, ObjectType b);  struct Object {  	static const char *const defaultDescription; @@ -398,6 +402,14 @@ struct Object {  	    , _direction(direction)  	{} +	void setProperty(ObjectType type) { +		_type |= type; +	} + +	void disableProperty(ObjectType type) { +		_type ^= type; +	} +  	const char *_name;  	const char *_description;  	ObjectID _id; diff --git a/engines/supernova/supernova.cpp b/engines/supernova/supernova.cpp index 602f69fc1a..47c782d347 100644 --- a/engines/supernova/supernova.cpp +++ b/engines/supernova/supernova.cpp @@ -42,6 +42,24 @@  namespace Supernova { +const char *const Object::defaultDescription = "Es ist nichts Besonderes daran."; + +ObjectType operator|(ObjectType a, ObjectType b) { +	return static_cast<ObjectType>(+a | +b); +} + +ObjectType operator^(ObjectType a, ObjectType b) { +	return static_cast<ObjectType>(+a ^ +b); +} + +ObjectType &operator|=(ObjectType &a, ObjectType b) { +	return a = a | b; +} + +ObjectType &operator^=(ObjectType &a, ObjectType b) { +	return a = a ^ b; +} +  SupernovaEngine::SupernovaEngine(OSystem *syst)  	: Engine(syst)  	, _console(NULL) | 
