OpenMW
Todo List
Member anonymous_namespace{journalwindow.cpp}::JournalWindowImpl::open ()
Wiping the whole book layout each time the journal is opened is probably too costly for a large journal (eg 300+ pages). There should be a way to keep the existing layout and append new entries to the end of it. However, that still leaves the problem of having to add links to previously unknown, but now known topics, so we maybe need to find another way to speed things up.
Class btKinematicClosestNotMeRayResultCallback
Interact with dynamic objects, Ride kinematicly animated platforms properly Support ducking
Member Compiler::FileParser::parseKeyword (int keyword, const TokenLoc &loc, Scanner &scanner)
allow this workaround to be disabled for newer scripts
Member Compiler::FileParser::parseName (const std::string &name, const TokenLoc &loc, Scanner &scanner)
allow this workaround to be disabled for newer scripts
Member Compiler::LineParser::parseName (const std::string &name, const TokenLoc &loc, Scanner &scanner)
add option to make re-declared local variables an error
Member Compiler::Scanner::scanName (char c, std::string &name)
add an option to disable the following hack. Also, find out who is responsible for allowing it in the first place and meet up with that person in a dark alley.
Member Compiler::ScriptParser::parseKeyword (int keyword, const TokenLoc &loc, Scanner &scanner)
add an option to disable this nonsense
Member CSMDoc::Document::reportMessage (const QString &message, int type)
find a better way to get these messages to the user.
Member CSMDoc::WriteCollectionStage< CollectionT >::perform (int stage, std::vector< std::string > &messages)

make endianess agnostic (change ESMWriter interface?)

write record with delete flag

Member CSMDoc::WriteDialogueCollectionStage::perform (int stage, std::vector< std::string > &messages)

wrote record with delete flag

make endianess agnostic (change ESMWriter interface?)

wrote record with delete flag

make endianess agnostic (change ESMWriter interface?)

Member CSMDoc::WriteHeaderStage::perform (int stage, std::vector< std::string > &messages)
refine dependency list (at least remove redundant dependencies)
Member CSMFilter::TextNode::test (const CSMWorld::IdTable &table, int row, const std::map< int, int > &columns) const
make pattern syntax configurable
Member CSMSettings::UserSettings::loadSettings (const QString &fileName)

Multi-valued settings are not fully implemented. Setting values

loaded in later files will always overwrite previously loaded values.

Member CSMTools::BirthsignCheckStage::perform (int stage, std::vector< std::string > &messages)

test if the texture exists

check data members that can't be edited in the table view

Member CSMTools::FactionCheckStage::perform (int stage, std::vector< std::string > &messages)
check data members that can't be edited in the table view
Member CSMTools::RaceCheckStage::performPerRecord (int stage, std::vector< std::string > &messages)
check data members that can't be edited in the table view
Member CSMTools::RegionCheckStage::perform (int stage, std::vector< std::string > &messages)

test that the ID in mSleeplist exists

check data members that can't be edited in the table view

Member CSMTools::SoundCheckStage::perform (int stage, std::vector< std::string > &messages)
check, if the sound file exists
Member CSMTools::SpellCheckStage::perform (int stage, std::vector< std::string > &messages)
check data members that can't be edited in the table view
Member CSMWorld::Data::loadFile (const boost::filesystem::path &path, bool base, bool project)

set encoding properly, once config implementation has been fixed.

handle info records

handle info records

report deletion of non-existing record

INFO record without matching DIAL record -> report to user

throw an exception instead, once all records are implemented or maybe report error and continue?

Member CSMWorld::IdCollection< ESXRecordT, IdAccessorT >::load (ESM::ESMReader &reader, bool base)
report the problem to the user
Member CSMWorld::InfoCollection::load (ESM::ESMReader &reader, bool base, const ESM::Dialogue &dialogue)
report the problem to the user
Class CSMWorld::MapColourColumn< ESXRecordT >
QColor is a GUI class and should not be in model. Need to think of an alternative solution.
Member CSMWorld::MapColourColumn< ESXRecordT >::MapColourColumn ()
Replace Display_Integer with something that displays the colour value more directly.
Member CSMWorld::RefCollection::load (ESM::ESMReader &reader, int cellIndex, bool base)
handle deleted and moved references
Member CSMWorld::RefIdCollection::load (ESM::ESMReader &reader, bool base, UniversalId::Type type)
report the problem to the user
Member CSMWorld::RefIdDataContainer< RecordT >::save (int index, ESM::ESMWriter &writer) const

make endianess agnostic (change ESMWriter interface?)

write record with delete flag

Member CSMWorld::RegionMap::data (const QModelIndex &index, int role=Qt::DisplayRole) const
GUI class in non-GUI code. Needs to be addressed eventually.
Member CSVDoc::AdjusterWidget::setName (const QString &name, bool addon)
add an user setting to make this an error.
Member CSVDoc::Operation::Operation (int type, QWidget *parent)

Add a cancel button or a pop up menu with a cancel item

assign different progress bar colours to allow the user to distinguish easily between operation types

Member CSVDoc::Operations::Operations ()
make widget height fixed (exactly the height required to display all operations)
Member CSVDoc::StartupDialogue::createButtons ()
add icons
Member CSVDoc::StartupDialogue::StartupDialogue ()
remove this label once loading and saving are fully implemented
Member CSVDoc::SubView::SubView (const CSMWorld::UniversalId &id)
add a button to the title bar that clones this sub view
Member CSVDoc::View::addSubView (const CSMWorld::UniversalId &id)

add an user setting for limiting the number of sub views per top level view. Automatically open a new top level view if this number is exceeded

if the sub view limit setting is one, the sub view title bar should be hidden and the text in the main title bar adjusted accordingly

add an user setting to reuse sub views (on a per document basis or on a per top level view basis)

Member CSVFilter::EditWidget::textChanged (const QString &text)
improve error reporting; mark only the faulty part
Member CSVFilter::FilterCreator::FilterCreator (CSMWorld::Data &data, QUndoStack &undoStack, const CSMWorld::UniversalId &id)
re-enable for OpenMW 1.1
Class CSVSettings::AbstractPage

Scripted implementation of settings should eliminate the need

derive page classes.

AbstractPage should be replaced with a general page construction class.

Class CSVSettings::SettingWidget< QListWidget >
Not fully implemented. Only widget supporting multi-valued settings
Member CSVWorld::DialogueSubView::DialogueSubView (const CSMWorld::UniversalId &id, CSMDoc::Document &document, bool createAndDelete)

configure widget properly (range)

configure widget properly (range, format?)

Member CSVWorld::IdTypeDelegate::updateEditorSetting (const QString &settingName, const QString &settingValue)
make the setting key a member variable, that is initialised from a constructor argument
Member CSVWorld::SceneSubView::SceneSubView (const CSMWorld::UniversalId &id, CSMDoc::Document &document)
replace with rendering widget
Member CSVWorld::ScriptHighlighter::ScriptHighlighter (const CSMWorld::Data &data, QTextDocument *parent)
replace this with user settings
Member CSVWorld::Table::contextMenuEvent (QContextMenuEvent *event)

add menu items for select all and clear selection

Reverting temporarily disabled on tables that support reordering, because revert logic currently can not handle reordering.

allow reordering of multiple rows

Member ESM::GameSetting::getInt () const
remove the get* functions (redundant, since mValue has equivalent functions now).
Member ESM::Land::isDataLoaded (int flags)
reimplement this
Member ESM::Land::loadData (int flags)
remove memory allocation when only defaults needed
Member MWBase::WindowManager::getDialogueWindow ()=0
investigate, if we really need to expose every single lousy UI element to the outside world
Member MWBase::WindowManager::getPlayerSkillValues ()=0
get rid of this stuff. Move it to the respective UI element classes, if needed.
Member MWBase::World::disable (const MWWorld::Ptr &ptr)=0
disable reference in the OGRE scene
Member MWBase::World::enable (const MWWorld::Ptr &ptr)=0
enable reference in the OGRE scene
Member MWBase::World::getAnimation (const MWWorld::Ptr &ptr)=0
Probably shouldn't be here
Member MWBase::World::playVideo (const std::string &name, bool allowSkipping)=0
this does not belong here
Member MWClass::Creature::getArmorRating (const MWWorld::Ptr &ptr) const
add Shield magic effect magnitude here, controlled by a GMST (Vanilla vs MCP behaviour)
Member MWClass::Creature::getSpeed (const MWWorld::Ptr &ptr) const
what about the rest?
Member MWClass::Creature::hasToolTip (const MWWorld::Ptr &ptr) const
We don't want tooltips for Creatures in combat mode.
Member MWClass::Door::activate (const MWWorld::Ptr &ptr, const MWWorld::Ptr &actor) const
remove this if clause once ActionTeleport can also support other actors
Member MWClass::Light::canBeEquipped (const MWWorld::Ptr &ptr, const MWWorld::Ptr &npc) const
the 2h check is repeated many times; put it in a function
Member MWClass::Npc::hasToolTip (const MWWorld::Ptr &ptr) const
We don't want tooltips for NPCs in combat mode.
Member MWDialogue::JournalEntry::idFromIndex (const std::string &topic, int index)
cleanup info structure
Member MWDialogue::Quest::addEntry (const JournalEntry &entry)
cleanup info structure
Member MWGui::BookTextParser::parseFont (std::string tag)
Member MWGui::ItemView::update ()
performance improvement: don't create/destroy all the widgets everytime the container window changes size, only reposition them
Member MWGui::JournalViewModelImpl::TopicEntryImpl::getText () const
defines are not replaced (PCName etc). should probably be done elsewhere though since we need the actor
Member MWGui::JournalViewModelImpl::toUtf8Span (std::string const &str)
replace this nasty BS
Member MWGui::JournalViewModelImpl::visitQuestNames (bool active_only, boost::function< void(QuestId, Utf8Span)> visitor) const
quest.getName() is broken? returns empty string
Member MWGui::MagicSelectionDialog::open ()
lots of copy&pasted code from SpellWindow
Member MWGui::PickpocketItemModel::removeItem (const ItemStack &item, size_t count)
check if player is detected
Member MWGui::WindowManager::getDialogueWindow ()
investigate, if we really need to expose every single lousy UI element to the outside world
Member MWGui::WindowManager::getPlayerSkillValues ()
get rid of this stuff. Move it to the respective UI element classes, if needed.
Member MWGui::WindowManager::mPlayerName
get rid of this stuff. Move it to the respective UI element classes, if needed.
Member MWGui::WindowManager::setValue (int parSkill, const MWMechanics::Stat< float > &value)
Don't use the skill enum as a parameter type (we will have to drop it anyway, once we allow custom skills.
Member MWInput::InputManager::clearAllBindings (ICS::Control *control)
add joysticks here once they are added
Member MWInput::InputManager::rest ()
check if resting is currently allowed (enemies nearby?)
Member MWMechanics::NpcStats::increaseSkill (int skillIndex, const ESM::Class &class_, bool preserveProgress)
check if character is the player, if levelling is ever implemented for NPCs
Member MWRender::CharacterPreview::setup ()
Read the fallback values from INIImporter (Inventory:Directional*)
Member MWRender::RenderingManager::cellAdded (MWWorld::CellStore *store)
this function should be removed later. Instead the rendering subsystems should track when rebatching is needed and update automatically at the end of each frame.
Member MWRender::RenderingManager::moveObject (const MWWorld::Ptr &ptr, const Ogre::Vector3 &position)
move this to the rendering-subsystems
Member MWRender::RippleSimulation::addImpulses ()
it should be more efficient to render all emitters at once
Member MWRender::SkyManager::setLightningEnabled (bool enabled)
Member MWRender::SkyManager::update (float duration)
improve this
Member MWWorld::Cells::Cells (const MWWorld::ESMStore &store, std::vector< ESM::ESMReader > &reader)
pass the dynamic part of the ESMStore isntead (once it is written) of the whole world
Member MWWorld::ContainerStore::addInitialItem (const std::string &id, const std::string &owner, int count, unsigned char failChance=0, bool topLevel=true)
implement item restocking (indicated by negative count)
Member MWWorld::ESMStore::iterator
replace with SharedIterator<StoreBase>
Member MWWorld::ESMStore::load (ESM::ESMReader &esm, Loading::Listener *listener)
Move this to somewhere else. ESMReader?
Member MWWorld::IndexedStore< T >::load (ESM::ESMReader &esm)
refine loading order
Member MWWorld::PhysicsSystem::castRay (float mouseX, float mouseY)

make this distance (ray length) configurable

make this distance (ray length) configurable

Member MWWorld::Player::setAutoMove (bool enable)
constness
Member MWWorld::Scene::loadCell (CellStore *cell, Loading::Listener *loadingListener)
rescale depending on the state of a new GMST
Member MWWorld::World::canPlaceObject (float cursorX, float cursorY)
also check if the wanted position is on a flat surface, and not e.g. against a vertical wall!
Member MWWorld::World::copyObjectToCell (const Ptr &ptr, CellStore &cell, const ESM::Position &pos, bool adjustPos=true)
add searching correct cell for position specified
Member MWWorld::World::getAnimation (const MWWorld::Ptr &ptr)
Probably shouldn't be here
Member MWWorld::World::isSwimming (const MWWorld::Ptr &object) const
add check ifActor() - only actors can swim
Member MWWorld::World::playVideo (const std::string &name, bool allowSkipping)
this does not belong here
Member MWWorld::World::processDoors (float duration)
should use convexSweepTest here
Member Nif::NiSkinInstance::post (NIFFile *nif)
move to the write cpp file
Member NifBullet::ManualBulletShapeLoader::handleNode (btTriangleMesh *mesh, Nif::Node const *node, int flags, bool isCollisionNode, bool raycasting, bool isMarker)
don't do this in the editor
Member NifOgre::NIFObjectLoader::createObjects (const std::string &name, const std::string &group, Ogre::SceneNode *sceneNode, const Nif::Node *node, ObjectScenePtr scene, int flags, int animflags, int partflags)
don't do this in the editor
Member OpenDialog::OpenDialog (QWidget *parent=0)
move config to Editor class and add command line options.
Member Terrain::QuadTreeNode::update (const Ogre::Vector3 &cameraPos, Loading::Listener *loadingListener)
implement error metrics or some other means of not using arbitrary values (general quality needs to be user configurable as well)
Member Terrain::Storage::getMinMaxHeights (float size, const Ogre::Vector2 &center, float &min, float &max)
investigate if min/max heights should be stored at load time in ESM::Land instead