add 'config' entry point, pack.shared_file(...) & refactor engine_paths.cpp

This commit is contained in:
MihailRis
2024-10-04 22:40:05 +03:00
parent 85bea6f17d
commit 15342c2df2
7 changed files with 102 additions and 42 deletions
+12 -1
View File
@@ -19,7 +19,8 @@ Content pack identifier requirements:
### Content packs data
Settings and other state that supposed to be saved with a world, must be stored in `world:data/pack_id/`. The path should be retrieved by calling a function:
State that supposed to be saved with a world, must be stored in `world:data/pack_id/`. The path should be retrieved by calling a function:
```lua
local path = pack.data_file(PACK_ID, "file_name")
file.write(path, some_data)
@@ -29,3 +30,13 @@ PACK_ID is an existing variable containing current content-pack name.
Directory `world:data/PACK_ID` will be created on call `pack.data_file(...)`.
#### Shared data
Settings and other data that should be accessible from all worlds where the pack is used should be in
`config:pack_id/`. You can use a special function:
```lua
local path = pack.shared_file(PACK_ID, "file_name")
file.write(path, data)
-- writes data to the file config:PACK_ID/file_name
```
+28 -4
View File
@@ -47,14 +47,38 @@ pack.is_installed(packid: str) -> bool
Check if specified pack is installed in the world
```python
```lua
pack.data_file(packid: str, filename: str) -> str
-- and
pack.shared_file(packid: str, filename: str) -> str
```
Returns data file path like `world:data/packid/filename`
and creates missing directories.
Returns the path to the data file
and creates missing directories in the path.
Use this function when saving pack settings or other data to the world.
- The first option returns: `world:data/packid/filename`
- The second option returns: `config:packid/filename`
Examples:
```lua
file.write(pack.data_file(PACK_ID, "example.txt"), text)
```
For a *containermod* pack, write text to `world:data/containermod/example.txt`.
Use this to store in-world data.
```lua
file.write(pack.shared_file(PACK_ID, "example.txt"), text)
```
For a *containermod* pack, write text to `config:containermod/example.txt`
Use this to store shared data for all worlds.
```python
pack.get_folder(packid: str) -> str
```
Returns the path to the folder of the installed content pack.
Example:
```lua
+15 -2
View File
@@ -19,7 +19,9 @@
### Данные контент-паков
Настройки, состояние, которое нужно сохранять в мире, должны находиться в `world:data/id_пака/`. Путь следует получать через специальную функцию:
#### Данные в мире
Состояние, которое нужно сохранять в мире, должны находиться в `world:data/id_пака/`. Путь следует получать через специальную функцию:
```lua
local path = pack.data_file(PACK_ID, "имя_файла")
file.write(path, данные)
@@ -27,4 +29,15 @@ file.write(path, данные)
```
Здесь PACK_ID является доступной константой, т.е не нужно вписывать имя пака самостоятельно.
Папка `world:data/PACK_ID` будет создана при вызове `pack.data_file`.
Папка `world:data/PACK_ID` будет создана при вызове `pack.data_file`.
#### Общие данные
Настройки и иные данные, что должны быть доступны из всех миров, где используется пак, должны находиться в
`config:id_пака/`. Можно использовать специальную функцию:
```lua
local path = pack.shared_file(PACK_ID, "имя_файла")
file.write(path, данные)
-- запишет данные в файл config:PACK_ID/имя_файла
```
+17 -5
View File
@@ -44,20 +44,32 @@ pack.is_installed(packid: str) -> bool
Проверяет наличие установленного пака в мире
```python
```lua
pack.data_file(packid: str, filename: str) -> str
-- и
pack.shared_file(packid: str, filename: str) -> str
```
Возвращает путь к файлу данных по типу: `world:data/packid/filename`
Возвращает путь к файлу данных
и создает недостающие директории в пути.
Используйте эту функцию при сохранении настроек пака или иных данных в мире.
- Первый вариант возвращает: `world:data/packid/filename`
- Второй вариант возвращает: `config:packid/filename`
Пример:
Примеры:
```lua
file.write(pack.data_file(PACK_ID, "example.txt"), text)
```
Для пака *containermod* запишет текст в файл `world:data/containermod/example.txt`
Для пака *containermod* запишет текст в файл `world:data/containermod/example.txt`.
Используйте для хранения данных в мире.
```lua
file.write(pack.shared_file(PACK_ID, "example.txt"), text)
```
Для пака *containermod* запишет текст в файл `config:containermod/example.txt`
Используйте для хранения данныхm общих для всех миров.
```python
pack.get_folder(packid: str) -> str