{"id":11,"date":"2012-05-19T19:41:34","date_gmt":"2012-05-19T19:41:34","guid":{"rendered":"https:\/\/blogs.scummvm.org\/upthorn\/?p=11"},"modified":"2022-05-21T19:42:00","modified_gmt":"2022-05-21T19:42:00","slug":"pseudocomposition","status":"publish","type":"post","link":"https:\/\/blogs.scummvm.org\/upthorn\/2012\/05\/19\/pseudocomposition\/","title":{"rendered":"PseudoComposition"},"content":{"rendered":"<p>In order to familiarize myself with file interfaces and general saving\/loading practices in ScummVM, I have been working on implementing standard saving\/loading for the Composer engine, beginning by generating a list of what needs to be saved, and some pseudocode for how to reinitialize the objects from the stored data.<\/p>\n<p>My notes on this follow:<\/p>\n<blockquote><p>save:<br \/>\nComposerEngine:<\/p>\n<p>save to savefile:<\/p>\n<ul>\n<li>RandomSource* _rnd,<\/li>\n<li>uint32 _currentTime,<\/li>\n<li>uint32 _lastTime,<\/li>\n<li>bool _needsUpdate,<\/li>\n<li>List&lt;Sprite&gt; _sprites,<\/li>\n<li>String _bookGroup,<\/li>\n<li>List&lt;Library&gt; _Libraries,<\/li>\n<li>Array&lt;PendingPageChange&gt; _pendingPageChanges,<\/li>\n<li>Array&lt;uint16&gt; _stack,<\/li>\n<li>Array&lt;uint16&gt; _vars,<\/li>\n<li>List&lt;Oldscript *&gt; _oldScripts,<\/li>\n<li>Array&lt;QueuedScript&gt; _queuedScripts,<\/li>\n<li>bool _mouseEnabled,<\/li>\n<li>bool _mouseVisible,<\/li>\n<li>uint16 _mouseSpriteId<\/li>\n<\/ul>\n<p>RandomSource: uint32 getSeed()<br \/>\nList&lt;T&gt;: uint32 size(), T *ConstIterator begin() .. end()<br \/>\nSprite: uint16 _id<br \/>\nLibrary: uint16 _id<br \/>\nArray&lt;T&gt;: uint32 size(), T *ConstIterator begin() .. end()<br \/>\nPendingPageChange: uint16 _pageId, bool _remove<br \/>\nOldScript: uint16 _id, uint32 _currDelay<br \/>\nQueuedScript: uint32 _baseTime, uint32 _duration, uint32 _count, uint16 _scriptId<\/p>\n<p>load:<br \/>\nComposerEngine:<br \/>\nfilename = (find book.ini), _bookIni.loadFromFile(filename)<\/p>\n<p>load from savefile:<\/p>\n<ul>\n<li>RandomSource* _rnd,<\/li>\n<li>uint32 _currentTime,<\/li>\n<li>uint32 _lastTime,<\/li>\n<li>bool _needsUpdate,<\/li>\n<li>List&lt;Sprite&gt; _sprites,<\/li>\n<li>String _bookGroup,<\/li>\n<li>List&lt;Library&gt; _Libraries,<\/li>\n<li>Array&lt;PendingPageChange&gt; _pendingPageChanges,<\/li>\n<li>Array&lt;uint16&gt; _stack,<\/li>\n<li>Array&lt;uint16&gt; _vars,<\/li>\n<li>List&lt;Oldscript *&gt; _oldScripts,<\/li>\n<li>Array&lt;QueuedScript&gt; _queuedScripts,<\/li>\n<li>bool _mouseEnabled,<\/li>\n<li>bool _mouseVisible,<\/li>\n<li>uint16 _mouseSpriteId<\/li>\n<\/ul>\n<p>RandomSource: setSeed(uint32)<br \/>\nList&lt;T&gt;: uint32 num, for (i = 0 .. num) (T, push_back(T))<br \/>\nSprite: uint16 _id, initSprite(Sprite)<br \/>\nLibrary: uint16 _id, LoadLibrary(_id)<br \/>\nArray&lt;T&gt;: uint32 num, for (i = 0 .. num) (T, push_back(T))<br \/>\nPendingPageChange: uint16 _pageId, bool _remove, if (!_remove) LoadLibrary(_pageId)<br \/>\nOldScript: uint16 id, uint32 _currDelay, OldScript(id,getResource(ID_SCRP, id))<br \/>\nQueuedScript: uint32 _baseTime, uint32 _duration, uint32 _count, uint16 _scriptId<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>In order to familiarize myself with file interfaces and general saving\/loading practices in ScummVM, I have been working on implementing standard saving\/loading for the Composer engine, beginning by generating a list of what needs to be saved, and some pseudocode for how to reinitialize the objects from the stored data. My notes on this follow: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-11","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.scummvm.org\/upthorn\/wp-json\/wp\/v2\/posts\/11","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.scummvm.org\/upthorn\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.scummvm.org\/upthorn\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/upthorn\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/upthorn\/wp-json\/wp\/v2\/comments?post=11"}],"version-history":[{"count":1,"href":"https:\/\/blogs.scummvm.org\/upthorn\/wp-json\/wp\/v2\/posts\/11\/revisions"}],"predecessor-version":[{"id":12,"href":"https:\/\/blogs.scummvm.org\/upthorn\/wp-json\/wp\/v2\/posts\/11\/revisions\/12"}],"wp:attachment":[{"href":"https:\/\/blogs.scummvm.org\/upthorn\/wp-json\/wp\/v2\/media?parent=11"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/upthorn\/wp-json\/wp\/v2\/categories?post=11"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/upthorn\/wp-json\/wp\/v2\/tags?post=11"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}