From ScummVM :: Wiki
< Neverhood
Revision as of 03:09, 3 November 2013 by Md5 (talk | contribs) (The largest part of the code organization is done now)
Jump to navigation Jump to search


Some of the TODOs should be done AFTER the whole game logic is implemented else the game disasm and reimplemtation code become even more different (unless I decide it's ok to do it :)

TODOs which can be done any time

  • Cleanup
  • Clean up staticdata structs to look more like the ones in create_neverhood

(e.g. by using template classes etc.) * Or use a common base class and manage all stuff in one single table and cast stuff accordingly


  • Maybe rework organization of files (e.g. put ALL Sprites into one separate file, same with Modules and Scenes)

* This would solve the problem of how to organize stuff which is used several times, and less headers would have to be included * The move special scenes (SmackerScene) into the scenes file

  • Implement game menus
  • Rework sound system (I don't like that SoundResources need to be explicitly initialized in Scene constructors)

* Should be just a handle object which initializes itself * Play routine should fill the handle so it can be stopped/queried later * Basically like ScummVM own sound handles

  • RE and implement yet unknown music/sound stuff
  • Implement clever sprite redrawing code (dirty rectangles, microtiles etc.), only redraw what's neccessary
  • Rework the resource system

* The current system can be simplified a lot * Also resource purging needs to be implemented

  • Maybe merge CollisionMan with Scene (since it's so far never used independently)
  • Give placeholder stuff (e.g. sub?????, _flag??? etc.) better fitting names
  • Use CursorMan for the mouse cursor (instead of using it like a normal sprite)

* This whould make it neccessary to call _system->updateScreen more often else the mouse movement would be choppy

TODOs which are experimental

NOTE: Since they affect the whole game, they really should be only implemented once the full game logic is implemented. These are nothing more than wild ideas for now, any might never be implemented.

  • Use states instead of separate callback methods
  • Try to move more stuff to neverhood.dat
  • Try to use more template functions instead of manually creating functions

(Can be coupled with the above to move parameters to the dat and only use IDs)