4 * Riven-Wahrk - a reimplementation of the game Riven, by Cyan
5 * Copyright (C) 2009 Tyler Genter <tylergenter@gmail.com>
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
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.
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
53 // we don't know how many shorts long a handler is, so
54 // we find it for each segment, and save it in a cache.
55 std::map
<int, uint16_t> cmdLength
;
57 Game
*game
; // pointer to Game
59 int findSegmentSize (int offset
);
61 void runSegment (int addr
);
62 void runCmd (uint16_t *cmd
);
66 Handler (uint16_t *cmdListIn
, Game
*gameIn
);
71 uint16_t getLength () { // number of shorts
72 return cmdLength
.find(1)->second
+ 1;
75 Event
getEventType () {
85 std::list
<Handler
> handler
;
89 Script (File
*fileIn
, int start
, Game
*game
);
90 ~Script () { delete cmdList
; }
92 void runHandler (Handler::Event event
);