aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/slice_animations.h
diff options
context:
space:
mode:
authorThomas Fach-Pedersen2014-06-05 23:49:57 +0200
committerEugene Sandulenko2016-09-29 22:33:37 +0200
commit4b181e4bed3af7b7e32a8d4c9209d81ece366554 (patch)
tree2348a3abea4201c99bd3c869dbf920c4649cb5d6 /engines/bladerunner/slice_animations.h
parentd9453057abff91a30ff4fb427cadc21b5666c350 (diff)
downloadscummvm-rg350-4b181e4bed3af7b7e32a8d4c9209d81ece366554.tar.gz
scummvm-rg350-4b181e4bed3af7b7e32a8d4c9209d81ece366554.tar.bz2
scummvm-rg350-4b181e4bed3af7b7e32a8d4c9209d81ece366554.zip
BLADERUNNER: First pass at slice animation renderer
Z-buffers are not being read from the VQA background yet, so z-buffer handling is faked for now.
Diffstat (limited to 'engines/bladerunner/slice_animations.h')
-rw-r--r--engines/bladerunner/slice_animations.h111
1 files changed, 111 insertions, 0 deletions
diff --git a/engines/bladerunner/slice_animations.h b/engines/bladerunner/slice_animations.h
new file mode 100644
index 0000000000..cc07b570b6
--- /dev/null
+++ b/engines/bladerunner/slice_animations.h
@@ -0,0 +1,111 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef BLADERUNNER_SLICE_ANIMATIONS_H
+#define BLADERUNNER_SLICE_ANIMATIONS_H
+
+#include "common/array.h"
+#include "common/file.h"
+#include "common/str.h"
+#include "common/types.h"
+
+namespace BladeRunner {
+
+class BladeRunnerEngine;
+
+struct SlicePalette {
+ uint16 color[256];
+
+ uint16 &operator[](size_t i) { return color[i]; }
+};
+
+class SliceAnimations {
+ friend class SliceRenderer;
+
+ struct Animation
+ {
+ uint32 frameCount;
+ uint32 frameSize;
+ float fps;
+ float unk0;
+ float unk1;
+ float unk2;
+ float unk3;
+ uint32 offset;
+ };
+
+ struct Page {
+ void *_data;
+ uint32 _lastAccess;
+
+ Page()
+ : _data(nullptr)
+ {}
+ };
+
+ struct PageFile {
+ SliceAnimations *_sliceAnimations;
+ Common::File _file;
+ Common::Array<int32> _pageOffsets;
+
+ PageFile(SliceAnimations *sliceAnimations)
+ : _sliceAnimations(sliceAnimations)
+ {}
+
+ bool open(const Common::String &name);
+ void *loadPage(uint32 page);
+ };
+
+ BladeRunnerEngine *_vm;
+
+ uint32 _timestamp;
+ uint32 _pageSize;
+ uint32 _pageCount;
+ uint32 _paletteCount;
+
+ Common::Array<SlicePalette> _palettes;
+ Common::Array<Animation> _animations;
+ Common::Array<Page> _pages;
+
+ PageFile _coreAnimPageFile;
+ PageFile _framesPageFile;
+
+public:
+ SliceAnimations(BladeRunnerEngine *vm)
+ : _vm(vm),
+ _coreAnimPageFile(this),
+ _framesPageFile(this)
+ {}
+ ~SliceAnimations();
+
+ bool open(const Common::String &name);
+
+ bool openCoreAnim();
+ bool openHDFrames();
+
+ SlicePalette &getPalette(int i) { return _palettes[i]; };
+ void *getFramePtr(uint32 animation, uint32 frame);
+};
+
+} // End of namespace BladeRunner
+
+#endif