Fixes#1922 - Adds Flag to ArgumentSpec to support server command arguments like 'kill_npcs --also-pets'
Closes#1922
See merge request veloren/veloren!4261
- Add Content::Key as proxy to Language::try_msg
- Add Content::Attr as proxy to Language::try_attr
- Extend ItemKey::TagExamples so it includes base asset id
- Implement ItemDesc::l10n using new Content variants
- Add all_items_expect() function to grab all items, because
try_all_item_defs() covers only items in asset folder.
Required assets will go in next commit
- Add ItemL10n struct that is similar to ItemImgs except it holds i18n
description and not items. ItemDesc::l10n uses this struct to provide
common_i18n::Content for both names and descriptions.
So far it only used in voxygen, but it can be used by rtsim in
dialogues.
- Introduced new deprecation, ItemKind::Ingredient, because it uses
item.name().
It's not deleted, because it's used in inventory sorting, and our
inventory sorting is, for some reason, server-side.
- Crafting UI also still uses deprecated item.name(), because again,
sorting. It's probably will be easier to handle, because it's UI
sorting and we can use localized names here, but still, it's a thing
to discuss.
- Moved Item::describe() to voxygen/hud/util.
The most important thing to note is we don't want to completely delete
deprecated .name() and .description() along with corresponding fields
in ItemDef because ItemDef is now "public" API, exposed in plugins and I
don't want to break plugins before we actually implement i18n for them.
Otherwise, it would be basically impossible to use items in plugins.
What's left is actually fully implementing ItemDesc::l10n, create
item_l10n.ron and add fallback on current .name() and .description()
implementation.
* use version of shred that has an added SendDispatcher so we can
construct the dispatcher and send it between threads (only State to
remain sendable)
* move closure for adding systems from State::tick to the creation
functions
* this does mean some voxygen systems always run instead of just in the
session state, but that should not cause issues and we can always
configure them to do nothing if needed