22 #ifndef MEDIASTATION_ASSET_H 23 #define MEDIASTATION_ASSET_H 25 #include "common/keyboard.h" 27 #include "mediastation/datafile.h" 28 #include "mediastation/mediascript/eventhandler.h" 29 #include "mediastation/mediascript/scriptconstants.h" 30 #include "mediastation/mediascript/scriptvalue.h" 35 kAssetTypeEmpty = 0x0000,
36 kAssetTypeScreen = 0x0001,
37 kAssetTypeStage = 0x0002,
38 kAssetTypePath = 0x0004,
39 kAssetTypeSound = 0x0005,
40 kAssetTypeTimer = 0x0006,
41 kAssetTypeImage = 0x0007,
42 kAssetTypeHotspot = 0x000b,
43 kAssetTypeSprite = 0x000e,
44 kAssetTypeLKZazu = 0x000f,
45 kAssetTypeLKConstellations = 0x0010,
46 kAssetTypeDocument = 0x0011,
47 kAssetTypeImageSet = 0x001d,
48 kAssetTypeCursor = 0x000c,
49 kAssetTypePrinter = 0x0019,
50 kAssetTypeMovie = 0x0016,
51 kAssetTypePalette = 0x0017,
52 kAssetTypeText = 0x001a,
53 kAssetTypeFont = 0x001b,
54 kAssetTypeCamera = 0x001c,
55 kAssetTypeCanvas = 0x001e,
56 kAssetTypeXsnd = 0x001f,
57 kAssetTypeXsndMidi = 0x0020,
58 kAssetTypeRecorder = 0x0021,
59 kAssetTypeFunction = 0x0069
62 enum AssetHeaderSectionType {
63 kAssetHeaderEmptySection = 0x0000,
64 kAssetHeaderEventHandler = 0x0017,
65 kAssetHeaderStageId = 0x0019,
66 kAssetHeaderAssetId = 0x001a,
67 kAssetHeaderChunkReference = 0x001b,
68 kAssetHeaderMovieAnimationChunkReference = 0x06a4,
69 kAssetHeaderMovieAudioChunkReference = 0x06a5,
70 kAssetHeaderAssetReference = 0x077b,
71 kAssetHeaderBoundingBox = 0x001c,
72 kAssetHeaderMouseActiveArea = 0x001d,
73 kAssetHeaderZIndex = 0x001e,
74 kAssetHeaderStartup = 0x001f,
75 kAssetHeaderTransparency = 0x0020,
76 kAssetHeaderHasOwnSubfile = 0x0021,
77 kAssetHeaderCursorResourceId = 0x0022,
78 kAssetHeaderFrameRate = 0x0024,
79 kAssetHeaderLoadType = 0x0032,
80 kAssetHeaderSoundInfo = 0x0033,
81 kAssetHeaderMovieLoadType = 0x0037,
82 kAssetHeaderSpriteChunkCount = 0x03e8,
83 kAssetHeaderPalette = 0x05aa,
84 kAssetHeaderDissolveFactor = 0x05dc,
85 kAssetHeaderGetOffstageEvents = 0x05dd,
86 kAssetHeaderX = 0x05de,
87 kAssetHeaderY = 0x05df,
90 kAssetHeaderStartPoint = 0x060e,
91 kAssetHeaderEndPoint = 0x060f,
92 kAssetHeaderPathTotalSteps = 0x0610,
93 kAssetHeaderStepRate = 0x0611,
94 kAssetHeaderDuration = 0x0612,
97 kAssetHeaderViewportOrigin = 0x076f,
98 kAssetHeaderLensOpen = 0x0770,
101 kAssetHeaderStageUnk1 = 0x0771,
102 kAssetHeaderCylindricalX = 0x0772,
103 kAssetHeaderCylindricalY = 0x0773,
104 kAssetHeaderAssetName = 0x0bb8,
107 kAssetHeaderEditable = 0x03eb,
108 kAssetHeaderFontId = 0x0258,
109 kAssetHeaderInitialText = 0x0259,
110 kAssetHeaderTextMaxLength = 0x25a,
111 kAssetHeaderTextJustification = 0x025b,
112 kAssetHeaderTextPosition = 0x25f,
113 kAssetHeaderTextUnk1 = 0x262,
114 kAssetHeaderTextUnk2 = 0x263,
115 kAssetHeaderTextCharacterClass = 0x0266,
118 kAssetHeaderSpriteClip = 0x03e9,
119 kAssetHeaderCurrentSpriteClip = 0x03ea
124 Asset(AssetType type) : _type(type) {};
128 virtual void process() {
return; }
133 virtual bool isSpatialActor()
const {
return false; }
135 virtual void initFromParameterStream(
Chunk &chunk);
136 virtual void readParameter(
Chunk &chunk, AssetHeaderSectionType paramType);
140 virtual void readChunk(
Chunk &chunk);
141 virtual void readSubfile(
Subfile &subfile,
Chunk &chunk);
143 void processTimeEventHandlers();
144 void runEventHandlerIfExists(EventType eventType,
const ScriptValue &arg);
145 void runEventHandlerIfExists(EventType eventType);
147 AssetType type()
const {
return _type; }
148 uint id()
const {
return _id; }
149 uint contextId()
const {
return _contextId; }
150 void setId(uint
id) { _id = id; }
151 void setContextId(uint
id) { _contextId = id; }
153 uint32 _chunkReference = 0;
154 uint _assetReference = 0;
157 AssetType _type = kAssetTypeEmpty;
162 uint _lastProcessedTime = 0;
173 virtual void readParameter(
Chunk &chunk, AssetHeaderSectionType paramType)
override;
175 virtual bool isSpatialActor()
const override {
return true; }
176 virtual bool isVisible()
const {
return _isVisible; }
177 virtual Common::Rect getBbox()
const {
return _boundingBox; }
178 int zIndex()
const {
return _zIndex; }
183 double _dissolveFactor = 0.0;
185 bool _isVisible =
false;
186 bool _hasTransparency =
false;
187 bool _getOffstageEvents =
false;
189 void moveTo(int16 x, int16 y);
190 void moveToCentered(int16 x, int16 y);
192 void setZIndex(
int zIndex);
194 virtual void setDissolveFactor(
double dissolveFactor);
195 virtual void invalidateLocalBounds();
196 virtual void invalidateLocalZIndex();