ScummVM API documentation
arthurchip.h
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  * Additional copyright for this file:
8  * Copyright (C) 1995-1997 Presto Studios, Inc.
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14 
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19 
20  * You should have received a copy of the GNU General Public License
21  * along with this program. If not, see <http://www.gnu.org/licenses/>.
22  *
23  */
24 
25 #ifndef PEGASUS_ITEMS_BIOCHIPS_ARTHURCHIP_H
26 #define PEGASUS_ITEMS_BIOCHIPS_ARTHURCHIP_H
27 
28 #include "pegasus/hotspot.h"
29 #include "pegasus/util.h"
30 #include "pegasus/items/biochips/biochipitem.h"
31 
32 namespace Pegasus {
33 
34 enum ArthurEvent {
35  kArthurLoadedSavedGame,
36  kArthurAttemptedLockedDoor,
37  kArthurAttemptedLockedDoorAgain,
38  kArthurDestroyedInventoryItem,
39  kArthurDisabledAI,
40 
41  kArthurCaldoriaFinishedJoyride,
42  kArthurCaldoriaSelectedStickyBuns,
43  kArthurCaldoriaCreatedCornbread,
44  kArthurCaldoriaDrankOJ,
45  kArthurCaldoriaZoomedToLaundry,
46  kArthurCaldoriaReachedToilet,
47  kArthurCaldoriaReadPaper,
48  kArthurCaldoriaChoseAgencyHairStyle,
49  kArthurCaldoriaSawVacantApartment,
50  kArthurCaldoriaLookThroughTelescope,
51  kArthurCaldoriaRoofDoor,
52  kArthurCaldoriaUsedCardBomb,
53  kArthurCaldoriaBlownDoor,
54  kArthurCaldoriaSawVoiceAnalysis,
55  kArthurCaldoriaStunningSinclair,
56  kArthurCaldoriaSeeRoofBomb,
57  kArthurCaldoriaDisarmedNuke,
58 
59  kArthurTSAEnteredCave,
60  kArthurTSASawAgent3,
61  kArthurTSASawBust,
62  kArthurTSAReachedJunction,
63  kArthurTSAClickedRobot1,
64  kArthurTSAClickedRobot2,
65  kArthurTSAOpenTBPMonitor,
66  kArthurTSASawJourneymanKey,
67  kArthurTSASawBiochips,
68  kArthurTSAUsedPegasus,
69  kArthurTSAConfinedByBaldwin,
70  kArthurTSARedirectedRobots,
71  kArthurTSAUsedTurbolift,
72  kArthurTSASawFirstOpMemMovie,
73  kArthurTSAInPegasusNoVideo,
74  kArthurTSASawBaldwinSayGo,
75  kArthurTSALeaving,
76 
77  kArthurGoToPrehistoric,
78 
79  kArthurPrehistoricReachedJunction,
80  kArthurPrehistoricSawBreaker,
81  kArthurPrehistoricBreakerThrown,
82  kArthurPrehistoricAtCliffEdge,
83  kArthurPrehistoricSawEggs,
84  kArthurPrehistoricZoomedToVault,
85  kArthurPrehistoricAttemptedBridge,
86  kArthurPrehistoricExtendedBridge,
87  kArthurPrehistoricCrossedBridge,
88  kArthurPrehistoricUnlockedVault,
89 
90  kArthurMarsReadyForKiosk,
91  kArthurMarsLookedAtGuards,
92  kArthurMarsZoomedToKeyCard,
93  kArthurMarsTurnedOnTransport,
94  kArthurMarsCantFillMask,
95  kArthurMarsSawWelcomeVideos,
96  kArthurMarsRobotThrownPlayerWithMask,
97  kArthurMarsLeftPodNoCrowBar,
98  kArthurMarsLookAtEmptyTracks,
99  kArthurMarsEnteredReactor,
100  kArthurMarsSawLockedPanel,
101  kArthurMarsSawLockedPanelNoNitrogen,
102  kArthurMarsUsedLiquidNitrogen,
103  kArthurMarsFoundCardBomb,
104  kArthurMarsSolvedReactorGame,
105  kArthurMarsDeactivatedCardBomb,
106  kArthurMarsExitedReactorWithCardBomb,
107  kArthurMarsInAirlockNoOxygen,
108  kArthurMarsMazeReachedJunction,
109  kArthurMarsOxygen50Warning,
110  kArthurMarsOxygen25Warning,
111  kArthurMarsOxygen5Warning,
112  kArthurMarsFoundBuckets,
113  kArthurMarsApproachedBuckets,
114  kArthurMarsEnteredGearRoom,
115  kArthurMarsLookAtGears,
116  kArthurMarsExitedGearRoom,
117  kArthurMarsFoundNoShuttlePresent,
118  kArthurMarsEnteredShuttle,
119  kArthurMarsFoundDeadRobot,
120  kArthurMarsRobotHeadOpen,
121 
122  kArthurWSCRemovedDart,
123  kArthurWSCPoisonedDuringGame,
124  kArthurWSCFailedMolecule,
125  kArthurWSCDesignedAntidote,
126  kArthurWSCSawAresHologram,
127  kArthurWSCLookAtMorphExperiment,
128  kArthurWSCStartMorphExperiment,
129  kArthurWSCSawMorphExperiment,
130  kArthurWSCLeftLabNoKeyOrCanisters,
131  kArthurWSCAtOppositeDoor,
132  kArthurWSCReadyForMap,
133  kArthurWSCAttemptedLockedDoor,
134  kArthurWSCSawSinclairDoor,
135  kArthurWSCSawSinclairDoorNoKey,
136  kArthurWSCAttemptedSinclairDoorNoKey,
137  kArthurWSCZoomedToSnake,
138  kArthurWSCActivatedComputer,
139  kArthurWSCZoomedToSinclairMessages,
140  kArthurWSCPlayedEasterEggMessage,
141  kArthurWSCGotMachineGun,
142  kArthurWSCSeenNerd,
143  kArthurWSCSawBrokenDoor,
144  kArthurWSCSawBrokenDoorNoCrowBar,
145  kArthurWSCUsedCrowBar,
146  kArthurWSCDidPlasmaDodge,
147  kArthurWSCEnteredAuditorium,
148  kArthurWSCSawSinclairLecture,
149  kArthurWSCEnteredPassage,
150  kArthurWSCInPassage,
151  kArthurWSCExitedPassage,
152  kArthurWSCSawCatwalkDoor,
153  kArthurWSCRobotHeadOpen,
154 
155  kArthurNoradAtSecurityMonitor,
156  kArthurNoradSawFillingStation,
157  kArthurNoradSawIntakeWarning,
158  kArthurNoradDidntFillCanisters,
159  kArthurNoradSawUnconsciousOperator,
160  kArthurNoradAttemptedLockedDoor,
161  kArthurNoradAttemptedLockedDoorAgain,
162  kArthurNoradReachedPressureDoor,
163  kArthurNoradSawSubMessage,
164  kArthurNoradSawClawMonitor,
165  kArthurNoradPlayedWithClaw,
166  kArthurNoradEnteredSub,
167  kArthurNoradExitedSub,
168  kArthurNoradApproachedDamagedDoor,
169  kArthurNoradAtRetScanNoBiochip,
170  kArthurNoradStartGlobeGame,
171  kArthurNoradSelectedIncorrectSilo,
172  kArthurNoradFinishedGlobeGame,
173  kArthurNoradThreatenedByRobot,
174  kArthurNoradBeatRobotWithClaw,
175  kArthurNoradRobotHeadOpen,
176 
177  kNumArthurFlags
178 };
179 
180 class ArthurChip : public BiochipItem {
181 public:
182  ArthurChip(const ItemID, const NeighborhoodID, const RoomID, const DirectionConstant);
183  virtual ~ArthurChip();
184 
185  void select();
186 
187  void setUpArthurChip();
188  void activateArthurHotspots();
189  void clickInArthurHotspot(HotSpotID);
190  void playArthurMovie(const Common::Path &);
191  bool playArthurMovieForEvent(const Common::Path &, ArthurEvent event);
192 
193 protected:
194  Hotspot _arthurWisdomHotspot;
195  Hotspot _chattyArthurHotspot;
196  Hotspot _chattyAIHotspot;
197  Hotspot _arthurHeadHotspot;
198  Common::Path _lastArthurMovie;
199 };
200 
201 class ArthurManager : public Common::Singleton<ArthurManager> {
202 public:
203  ArthurManager() { resetArthurState(); }
204 
205  void resetArthurState();
206 
207 protected:
208  friend class Common::Singleton<SingletonBaseType>;
209  friend class ArthurChip;
210 
211 private:
213 };
214 
215 extern ArthurChip *g_arthurChip;
216 
217 } // End of namespace Pegasus
218 
219 #define Arthur (::Pegasus::ArthurManager::instance())
220 
221 #endif
Definition: path.h:52
Definition: arthurchip.h:201
Definition: hotspot.h:85
Definition: arthurchip.h:180
Definition: biochipitem.h:32
Definition: ai_action.h:33
Definition: singleton.h:42