mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Moved to do list in README to GitHub issues. TCs are now assumed to be installed locally or in the same place as their base game is said to reside by the Registry.
This commit is contained in:
@@ -15,63 +15,6 @@ The other obvious solution is to cut down on the number of mods that need to be
|
||||
While that's being done, I might as well also make some improvements to other areas of BOSS.
|
||||
|
||||
|
||||
## Idea Notes
|
||||
|
||||
It might be a good idea to download masterlists via a diff, or allow compression somehow, as the Skyrim masterlist is 1.7 MB. Also need to figure out how to do version checks, because currently it scans a web page for the version number, which isn't exactly robust or flexible.
|
||||
|
||||
Unlike v2, v3 will not have a built-in updater/update checker. It's just too much of a headache to code and manage for the payoff it gives, especially since notifications can be sent to users via the masterlist.
|
||||
|
||||
It would be good if Nehrim support could be handled as an offshoot of Oblivion support and the framework generalised so that any TC for any of the supported games could be used. Ideally there would be a list of TCs in the settings file with their relevant data, and these would then be turned into Game instances in the code, and appended to the game list.
|
||||
|
||||
I'm considering using glog to handle logging, should really get that implemented soon and remove all the messy ofstream debug stuff.
|
||||
|
||||
|
||||
## To Do
|
||||
|
||||
- [x] Write new masterlist, userlist, settings file parsers.
|
||||
- [x] Implement per-game handling.
|
||||
- [x] Write API.
|
||||
- [x] Tie together automatic 'simple' sorting with masterlist, userlist data parsing and usage.
|
||||
- [x] Initialisation and finishing routines (read settings file, write log file, etc.).
|
||||
- [x] Remove game detection override.
|
||||
- [x] Include libespm initialisation into Game constructor.
|
||||
- [x] Implement reading of plugin versions from their description field.
|
||||
- [x] Develop UI - main window.
|
||||
- [x] Develop UI - settings window.
|
||||
- [ ] Develop sorting algorithm.
|
||||
- [ ] Work out how to implement masterlist updating and write the code.
|
||||
- [x] Develop UI - metadata editor window.
|
||||
- [x] Develop UI - report viewer.
|
||||
- [x] Error handling.
|
||||
- [ ] Checks for cyclic dependencies and incompatibilities.
|
||||
- [ ] Setting load order.
|
||||
- [ ] Optimisations to load ordering.
|
||||
- [ ] Implement logging.
|
||||
- [x] Add a quick header-only plugin read for use when loading the metadata editor, so that existing Bash Tags can also be displayed.
|
||||
- [x] Make validity checks non-fatal.
|
||||
- [ ] Add a massive "RUN THE GAME LAUNCHER IF YOUR GAME IS NOT DETECTED" message somewhere.
|
||||
- [ ] Generalise Total Conversion support, so that any TC for any of the supported 'base' games can be used with BOSS.
|
||||
- [x] Write XHTML report generator.
|
||||
- [ ] Write report CSS.
|
||||
- [ ] Write report Javascript.
|
||||
- [ ] Double-check ghosted file support.
|
||||
- [x] Add a setting that lets users choose whether to use the viewer window or their own browser when viewing BOSS's report.
|
||||
- [x] Somehow implement filter settings memory for the BOSS report.
|
||||
- [ ] Implement checking of details part of report against previous report.
|
||||
- [x] Either remove the Bash Tag suggestions filter or implement their display in the report as a non-note message type.
|
||||
|
||||
|
||||
## Optimisation
|
||||
|
||||
Some ideas that have yet to be tested or implemented:
|
||||
|
||||
* If no changes have been made to the installed plugins since previous sorting, then the same order could be applied. This would require CRC checks to make sure plugins haven't been edited though, so it's not clear without profiling whether it would improve or worsen performance.
|
||||
* If plugins have only been removed since last sort, the same order could be used, except that some conditions might be evaluated differently in their absence, so again this isn't clear-cut.
|
||||
* If plugins have been added but those plugins contain only new records, then they can be positioned alphabetically at the end without any trouble.
|
||||
* Masterlist updating using the Subversion API to get only diffs of the file. This would require the masterlists to be always hosted in an SVN repository, which reduces flexibility somewhat, and I've always found SVN to be really slow in practice. If the API isn't too complicated, it might be worth a shot though.
|
||||
* Masterlist updating could also just use a straightforward HTTP GET request, and if this method is chosen then the Accept-Encoding header should be sent with appropriate values so that the server can use compression when serving the file. Unfortunately, Google Code doesn't seem to use it, though other sites do.
|
||||
|
||||
|
||||
## Install Structure
|
||||
|
||||
LOOT will be a self-contained installation that can be dropped anywhere. It will have an installer option that also installs some Start menu shortcuts and a Registry entry, but these will not be required for LOOT to function.
|
||||
|
||||
@@ -15,16 +15,11 @@ Masterlist URLs:
|
||||
Fallout 3: http://better-oblivion-sorting-software.googlecode.com/svn/data/boss-fallout/masterlist.yaml
|
||||
Fallout New Vegas: http://better-oblivion-sorting-software.googlecode.com/svn/data/boss-fallout-nv/masterlist.yaml
|
||||
|
||||
|
||||
# Each TC's files get put in a subdirectory of the BOSS folder with name '<base> TC 1 - <master>'.
|
||||
# If registry is left blank, then BOSS must be installed locally for it.
|
||||
# Only real difference between TCs and the original games is for interactions with libespm, libloadorder.
|
||||
Total Conversions:
|
||||
|
||||
- name: Nehrim - At Fate's Edge
|
||||
base: oblivion
|
||||
master: Nehrim.esm
|
||||
registry: Software\Microsoft\Windows\CurrentVersion\Uninstall\Nehrim - At Fate's Edge_is1\InstallLocation
|
||||
folder: Nehrim
|
||||
|
||||
- name: Enderal - The Shards of Order
|
||||
|
||||
+3
-12
@@ -48,11 +48,7 @@ namespace boss {
|
||||
for (size_t i=0,max=tcs.size(); i < max; ++i) {
|
||||
if (!tcs[i]["name"] || !tcs[i]["base"] || !tcs[i]["master"] || !tcs[i]["folder"])
|
||||
continue;
|
||||
|
||||
string registry;
|
||||
if (tcs[i]["registry"])
|
||||
registry = tcs[i]["registry"].as<string>();
|
||||
|
||||
|
||||
Game game;
|
||||
if (boost::iequals(tcs[i]["base"].as<string>(), "oblivion"))
|
||||
game = Game(GAME_TES4);
|
||||
@@ -65,7 +61,7 @@ namespace boss {
|
||||
else
|
||||
continue;
|
||||
|
||||
games.push_back(game.SetAsTC(tcs[i]["name"].as<string>(), tcs[i]["master"].as<string>(), tcs[i]["folder"].as<string>(), registry));
|
||||
games.push_back(game.SetAsTC(tcs[i]["name"].as<string>(), tcs[i]["master"].as<string>(), tcs[i]["folder"].as<string>()));
|
||||
}
|
||||
}
|
||||
return games;
|
||||
@@ -126,17 +122,12 @@ namespace boss {
|
||||
}
|
||||
|
||||
Game& Game::SetAsTC(const std::string& name, const std::string& masterFile,
|
||||
const std::string& bossFolder, const std::string& registry) {
|
||||
const std::string& bossFolder) {
|
||||
|
||||
_name = name;
|
||||
_masterFile = masterFile;
|
||||
bossFolderName = bossFolder;
|
||||
|
||||
if (!registry.empty()) {
|
||||
registryKey = fs::path(registry).parent_path().string();
|
||||
registrySubKey = fs::path(registry).filename().string();
|
||||
}
|
||||
|
||||
isTC = true;
|
||||
|
||||
return *this;
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ namespace boss {
|
||||
Game(const unsigned int baseGameCode);
|
||||
|
||||
Game& SetAsTC(const std::string& name, const std::string& masterFile,
|
||||
const std::string& bossFolder, const std::string& registry);
|
||||
const std::string& bossFolder);
|
||||
Game& Init();
|
||||
|
||||
bool IsInstalled() const;
|
||||
|
||||
Reference in New Issue
Block a user