Difference between revisions of "Lastexpress/TODO"

From ScummVM :: Wiki
Jump to navigation Jump to search
m (Added another stuck character)
m (Add more information on the sound filtering)
 
(14 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== TODOs ==
== TODOs ==


* Finish implementation of AI logic
===Logic===
* Add savegame support
* Review logic code for all entities
* Correct rendering of cursors
** Review shared logic functions
* Add support for demo
** Review chapter logic functions (each chapter uses a set of functions + shared functions)
* Convert NIS animations to use event handler & sound&scene managers
* Cleanup MACRO usage


* Finish inventory support
===Savegame support===
** Add blinking menu icon
** Fix regression in inventory UI code


* Finish graphic manager
* Add support for original savegame format (the game data is compressed, the headers are not)
** Add graphic transitions
* Add support for importing existing savegames (the demo uses a savegame to initialize the logic and we have to treat it as a data file)
** Add support for luminosity adjustement
* Prefix savegame filenames with the game id
** Add dirty-rects handling


* Finish implementation of combat
** Objectify Fight class


* Finish Sound manager
===Demo support===
** Add subtitle handling
** Add sound filters
** Finish implementation of audio queue


* For bug reporting (at least in the early stages), it might be nice if there was a "Who's Who" of the Last Express cast. There are a lot of characters, and it isn't always obvious what their names are.
* Add support in the logic/menu (needs to be initialized to a specific time)
* Add support in entity/actions handling (differences need to be investigated)
* Add support for the promotional slide-show
 
 
===Inventory support===
 
* Add blinking menu icon
* Fix regression in inventory UI code (in progress)
 
 
===Graphics===
* Add graphic transitions
* Add support for luminosity adjustement
** Add luminosity table
** Check if all graphics are concerned by the luminosity adjustement
** Support adjusting luminosity on the fly in the graphics manager
* Add dirty-rects handling
** Classes implementing Drawable need to return a Common::Rect when drawing. Some need to be updated (they return an empty rect right now).
** The GraphicsManager class needs to be updated to store each surface dirty rects and merge those when doing the update.
** The previous frame dirty rects should also be stored in case we want to be able to redraw everything when getting clear background calls.
* Correct rendering black color for cursors (see magnifier cursor)
* Convert NIS animations to use sound&scene managers
* Fix subtitle debug output on Linux
 
===Combat sequences===
* <s>Objectify Fight class</s>
 
 
===Sound===
* Rewrite sound timer
** <s>Implement sound filters</s>
** Implement remaining sound queue/cache logic
** Allow switching of filter function on the fly (can change between playback of each audio sample)
* Add subtitle handling
* Add option to disable subtitles
* Finish implementation of audio queue
* Implement sound looping function (train/steam sounds?)
* Fix improper triggering of actions on sound end (visible when trying to open/knock on doors)
* Rewrite NIS animations to use the audio queue (currently outputs directly with a hardcoded filter id)
* Rewrite filter handling -- reported by eriktorbjorn/clone2727
** The filter id should be set for each block (it used to be reset and caused blocks to be dropped)


== Known issues ==
== Known issues ==


''Feel free to add a short description of your issue. This will help a lot when debugging AI & shared logic code''
''Feel free to add a short description of your issue. This will help a lot when debugging AI & shared logic code. You can consult the [[Lastexpress/Characters|list of characters]] to help you identify the name of a certain character.''


===Chapter 1===
===Chapter 1===


* Francois never gets out of his compartment properly and keep blinking just outside the door
* Alexei eats way too fast in the restaurant. This also happens with Mertens&Coudert when standing up and several other characters. This seems to be due to a wrong time interval calculation for certain frames.
* Alexei eats way too fast in the restaurant
* Pascale never stops talking to August in the restaurant
* Characters sometimes get stuck in an animation cycle. Examples:
* Anna can be seen entering a compartment in the green car (hers is in the red car)
* Verges appears walking when looking at doors
* Characters sometimes get stuck in an animation cycle.
** Mertens can get stuck if he sees you trying to open the wrong compartment door.  
** Mertens can get stuck if he sees you trying to open the wrong compartment door.  
** The conductor in the blue suit can get stuck at Mertens's seat. Merten was standing up when the conductor was approaching. The conductor never got past him, and Mertens remained standing. Seems to happen if I wait long enough near Mertens's seat.
** Verges can get stuck at Mertens's seat. Merten was standing up when the conductor was approaching. The conductor never got past him, and Mertens remained standing. Seems to happen if I wait long enough near Mertens's seat.
** The young boy got stuck outside a compartment, flickering. I don't know how that happened.
** <s>Francois gets stuck outside his compartment, flickering. He is supposed to get out and start running in the corridor.</s>
** The arab man stays on the corridor after knocking on one of his companions' doors
** Mahmud stays on the corridor after knocking on one of his companions' doors


===Chapter 2===
===Chapter 2===
Line 47: Line 82:


===Chapter 5===
===Chapter 5===
===Graphical glitches===
{| class="wikitable" border="1"
|-
| [[File:lastexpress-overlap.png|200px|thumb]]
| To catch this, walk really quickly to the end of the sleeping car. If you don't stop to talk to anyone, you should be able to catch Anna opening the door.
|-
|}

Latest revision as of 05:12, 28 July 2012

TODOs

Logic

  • Review logic code for all entities
    • Review shared logic functions
    • Review chapter logic functions (each chapter uses a set of functions + shared functions)
  • Cleanup MACRO usage

Savegame support

  • Add support for original savegame format (the game data is compressed, the headers are not)
  • Add support for importing existing savegames (the demo uses a savegame to initialize the logic and we have to treat it as a data file)
  • Prefix savegame filenames with the game id


Demo support

  • Add support in the logic/menu (needs to be initialized to a specific time)
  • Add support in entity/actions handling (differences need to be investigated)
  • Add support for the promotional slide-show


Inventory support

  • Add blinking menu icon
  • Fix regression in inventory UI code (in progress)


Graphics

  • Add graphic transitions
  • Add support for luminosity adjustement
    • Add luminosity table
    • Check if all graphics are concerned by the luminosity adjustement
    • Support adjusting luminosity on the fly in the graphics manager
  • Add dirty-rects handling
    • Classes implementing Drawable need to return a Common::Rect when drawing. Some need to be updated (they return an empty rect right now).
    • The GraphicsManager class needs to be updated to store each surface dirty rects and merge those when doing the update.
    • The previous frame dirty rects should also be stored in case we want to be able to redraw everything when getting clear background calls.
  • Correct rendering black color for cursors (see magnifier cursor)
  • Convert NIS animations to use sound&scene managers
  • Fix subtitle debug output on Linux

Combat sequences

  • Objectify Fight class


Sound

  • Rewrite sound timer
    • Implement sound filters
    • Implement remaining sound queue/cache logic
    • Allow switching of filter function on the fly (can change between playback of each audio sample)
  • Add subtitle handling
  • Add option to disable subtitles
  • Finish implementation of audio queue
  • Implement sound looping function (train/steam sounds?)
  • Fix improper triggering of actions on sound end (visible when trying to open/knock on doors)
  • Rewrite NIS animations to use the audio queue (currently outputs directly with a hardcoded filter id)
  • Rewrite filter handling -- reported by eriktorbjorn/clone2727
    • The filter id should be set for each block (it used to be reset and caused blocks to be dropped)

Known issues

Feel free to add a short description of your issue. This will help a lot when debugging AI & shared logic code. You can consult the list of characters to help you identify the name of a certain character.

Chapter 1

  • Alexei eats way too fast in the restaurant. This also happens with Mertens&Coudert when standing up and several other characters. This seems to be due to a wrong time interval calculation for certain frames.
  • Pascale never stops talking to August in the restaurant
  • Anna can be seen entering a compartment in the green car (hers is in the red car)
  • Verges appears walking when looking at doors
  • Characters sometimes get stuck in an animation cycle.
    • Mertens can get stuck if he sees you trying to open the wrong compartment door.
    • Verges can get stuck at Mertens's seat. Merten was standing up when the conductor was approaching. The conductor never got past him, and Mertens remained standing. Seems to happen if I wait long enough near Mertens's seat.
    • Francois gets stuck outside his compartment, flickering. He is supposed to get out and start running in the corridor.
    • Mahmud stays on the corridor after knocking on one of his companions' doors

Chapter 2

Chapter 3

Chapter 4

Chapter 5

Graphical glitches

Lastexpress-overlap.png
To catch this, walk really quickly to the end of the sleeping car. If you don't stop to talk to anyone, you should be able to catch Anna opening the door.