1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-04 03:40:14 +00:00

54 Commits

Author SHA1 Message Date
florent.teppe
0d85e7db7d Store: moved all the template specialization to its own heaper file, included where it's needed
in the esm store a function is defined in the cpp file to not rely on the knowledge of store.hpp in the header file
2022-09-05 17:34:22 +02:00
florent.teppe
0a0b301cc4 ESM Store: no more automatic function implementation that suppose a mId member
All the ESM3 store will continue to work the same, used a macro to quickly define the different functions
2022-09-05 17:33:17 +02:00
florent.teppe
db2b4600aa ESM Store: removed a lot of declarations that became useless
the default implementation of the template<> get() threw a reuntime error, when it is a compile time issue
now all the implementations are in the cpp file
2022-09-05 17:32:56 +02:00
florent.teppe
6467e48be8 ESMStore: greatly simplified the store declaration with a macro 2022-09-05 17:32:56 +02:00
florent.teppe
a4c1bff03d ESMStore: no longer necessary to include the type definitions in the header
For now there still needs to declare all the getters, but a macro may make that easier, or an different method entierly
2022-09-05 17:32:56 +02:00
ζeh Matt
cdcf1393fc
Fix increment of dynamic id when player is inserted 2022-08-15 17:06:01 +03:00
ζeh Matt
6abb96250f
Fix using the wrong id for insertStatic 2022-08-15 17:04:37 +03:00
Evil Eye
de51525c76 Allow string_view lookups in MWWorld::Store and get some use out of that 2022-08-09 20:43:14 +02:00
elsid
bef15edf0b
Remove redundant ostream, istream, iostream and sstream includes
* Replace by std::to_string and operator+ where possible.
* Move the code requiring to include <sstream> from .hpp to .cpp files.
2022-07-05 01:41:28 +02:00
elsid
3affe9913f
Limit the number of simultaneously open not actively used content files
Use LRU cache for ESMReaders. When cache capacity is reached close least
recently used ESMReader. Remember the file name if a reader was open. Once the
reader requested again open the file if there is stored name for it. Put
released ESMReader to the back of the free items list. Close ESMReader's from
the front of the free items list.

Cached item can be used only by one client at the same time. If the same item is
requested twice exception is thrown. This should never happen in practice. If
this happens need to fix the client logic.

It's allowed to go over the capacity limit when requesting different readers.
Ideally this should never happen but there will be system error anyway
signalizing about too many open files. Need to fix client logic in this case.

All places that were using a vector of ESMReaders now using the cache. Cache is
local for each use case and there is no need for a thread safety.
2022-06-03 01:29:03 +02:00
Evil Eye
61ea678a96 Implement ignored records 2022-04-16 16:28:39 +02:00
elsid
5156ee94be
Store static id key in lower case 2022-04-08 01:22:48 +02:00
Bo Svensson
213faa6695
restores countRecords optimisations (#3210)
With this PR we restore @elsid 's optimisations of countRecords we have unintentionally discarded in PR #3197. In addition, we give it a more appropriate name and add comments concerning its peculiar background.
2021-11-02 14:46:41 +01:00
Bo Svensson
1329f22186
refactors MWWorld::Store maps (#3197)
With this PR we clean up `MWWorld::Store` maps according to the approach of PR #3184.
2021-10-30 19:27:57 +02:00
Petr Mikheev
47c89567fb Load LuaScriptsCfg from both *.omwscripts and *.omwaddon files. 2021-10-26 21:52:42 +02:00
Evil Eye
86c50ece92 Improve save cleaning 2021-07-12 20:51:13 +02:00
elsid
9938af2289
Use unordered_map for ref count
Reduces ESMStore::countRecords time by 8%.
2021-05-15 18:45:22 +02:00
Evil Eye
cf5a93d712 Also run NPC validation for modified base records 2021-03-23 21:07:57 +01:00
Evil Eye
e79036f4e0 Don't erase the player 2021-03-23 20:43:52 +01:00
Andrei Kortunov
8084a336b5 Replace zeroes and nulls by nullptrs 2020-11-29 11:14:07 +04:00
unknown
073a7f2b2d Comments to explain the arcane workings of Morrowind 2020-07-30 21:39:04 +02:00
Evil Eye
6ad20ec9c7 Mutate base records when adding/removing spells 2020-07-28 08:33:28 +02:00
Evil Eye
040a92c373 implement additem/removeitem for non-unique actors 2020-07-26 11:07:18 +02:00
bzzt
d684f1a78f terrainbased objectpaging
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:27 +02:00
Evil Eye
4d7947d27c Mutate base records when editing AI settings (#2798) 2020-06-02 21:59:37 +02:00
Andrei Kortunov
0937f02598 Get rid of unnecessary string streams 2019-01-07 21:08:16 +04:00
Andrei Kortunov
49ba00a3ec Add NPC validation to esmstore (bug #2772) 2018-06-14 16:48:16 +04:00
Alexander "Ace" Olofsson
b3b55a5842 Explicitly instantiate MWWorld::Store 2015-07-09 19:22:04 +02:00
scrawl
c883a73d30 Several warning fixes 2015-01-23 15:34:47 +01:00
scrawl
c77660ba20 Remove some nonsense code 2015-01-09 01:59:38 +01:00
scrawl
31d28e727f Implement leveled list script functions (Fixes #1546) 2014-12-17 01:24:22 +01:00
scrawl
3270f0e932 Change pathgrid workaround to check for interior cell name 2014-12-11 15:19:48 +01:00
scrawl
4b5f02f644 Remove useless throwing of exception 2014-05-22 15:29:36 +02:00
scrawl
07d9845aa0 Fix a bug in ESMStore code that checks for duplicate record insertions 2014-05-11 00:10:28 +02:00
scrawl
27a05027f4 Fixes #1172: Added basic loading/saving progress bar
The progress is not particularly accurate. It simply uses the current / total number of records written/read as indication. Cell records are currently the largest by far, but there is a good chance that could be optimized using a change tracking system.
2014-04-28 11:29:57 +02:00
Marc Zinnschlag
1c13a9037a save and load dynamic records 2013-12-07 13:17:28 +01:00
Marc Zinnschlag
14eff87339 removed some junk from ESM store 2013-12-06 11:34:24 +01:00
scrawl
d3d6dfbde8 Refactored loading screen
- Add loading progress for data files, global map, terrain
 - Refactored and improved cell loading progress
2013-08-27 15:48:13 +02:00
scrawl
aaa9aba999 Some fixes 2013-05-15 22:38:53 +02:00
scrawl
c41f119ba6 Added new game button 2013-05-15 17:54:18 +02:00
scrawl
40a0969055 Insert records that may not exist in vanilla MW 2013-05-01 12:47:50 +02:00
scrawl
918cdcffc2 Split up components/esm/loadlocks 2013-03-22 05:50:54 +01:00
Mark Siewert
dca8dc4fdb Merge remote-tracking branch 'upstream/master' into multiple_esm_esp
Conflicts:
	apps/openmw/engine.cpp
	apps/openmw/mwworld/cellstore.cpp
	apps/openmw/mwworld/store.hpp
	apps/openmw/mwworld/worldimp.cpp
	apps/openmw/mwworld/worldimp.hpp
	components/esm/esmreader.hpp

- Quick hack: OMW::Engine::prepareEngine only loads translation data for the first master file.
2013-01-25 18:22:01 +01:00
Mark Siewert
a8e02779b2 - Add support for multiple plugins trying to modify the same reference
- Fix a small signed/unsigned warning
2013-01-19 23:33:18 +01:00
lazydev
74ae479780 Cell names localization fix 2012-12-23 23:23:24 +04:00
Mark Siewert
b103426cf0 - Partially reimplement deleting objects defined in a parent esX file.
- Try to reimplement multiple esX files dropping references in the same file.
NOTE: None of these features works. Maybe the code itself does not build. Anyway, after 12 hours of hacking, I am just tired and want to get a snapshot of the code out.
2012-11-25 19:07:16 +01:00
greye
83e758ee50 clean up interfaces 2012-11-08 16:37:57 +04:00
greye
78740306db non-const access to Store<T> from ESMStore 2012-11-08 01:21:54 +04:00
greye
11c0e6382f make ESMStore setting up itself after loading 2012-11-07 15:41:59 +04:00
greye
9f1733a415 move record insertion to ESMStore 2012-11-06 17:51:38 +04:00