Project Phalanx
This is a project to create an alternative roster editor that uses BattleScribe-format datafiles.
Our main communication channel beside Issues, PRs and Discussions on GitHub is the #project-phalanx
channel on BSData Discord server.
Please see Wiki for more information.
The following stack of app layers is currently (at least partially) implemented:
EditorServices
namespace) is a heavily WIP layer that manages actual editing of roster, via IRosterOperations which encapsulate roster edit actions.You need one of the following setups:
Phalanx.sln
with it.The main app to run is in src/Phalanx.App
- select this project as startup project in Visual Studio. VSCode has a defined debug configuration.
SourceNode
sThe symbols are the basis of semantic model object graph.
ISymbol
is the root type.IsReference
is true
and ReferencedEntry
points
to the link target.ISymbol
is the top-level symbol interface. All symbols are an ISymbol
IGamesystemNamespaceSymbol
- root symbol, contains all loaded data.
IModuleSymbol
- data module root, most often one file is one module.
ICatalogueSymbol
- contains data: definitions, entries.IRosterSymbol
ICatalogueReferenceSymbol
- references other catalogues from a catalogue.
IResourceDefinitionSymbol
- defines a resource type: publication, cost, profile, characteristic.
IPublicationSymbol
- special resource definition with additional details, like publisher.IEntrySymbol
// contains effects
IResourceEntrySymbol
(can be a group, or group link)ICharacteristicSymbol
ICostSymbol
IProfileSymbol
(can be a link)IRuleSymbol
(can be a link)IContainerEntrySymbol
// contains constraints, resourcesICategoryEntry
(can be a link)IForceEntry
ISelectionEntryContainerSymbol
// contains other SelectionEntry-like stuff
ISelectionEntrySymbol
(can be a link)ISelectionEntryGroupSymbol
(can be a link)ILogicSymbol
IConstraintSymbol
// constraint, contains queryIEffectSymbol
// modifier/modifier group/repeat, contains query and conditionIConditionSymbol
// condition/condition group, contains queryIQuerySymbol
// condition/constaint/repeat "query" partIRosterCostSymbol
// both value and limit (if set)
IEntryInstanceSymbol
// has SourceEntry
IResourceSymbol
IRosterProfileSymbol
IRosterRuleSymbol
IContainerEntryInstanceSymbol
// has custom name, notesICategorySymbol
ISelectionContainerSymbol
// has selections
IForceSymbol
ISelectionSymbol
BattleScribe has some unnatural or unexpected, or just unobvious behavior. Here we try to gather such cases: