FrameIT
|
Organizes (insertion/ deletion / etc. operations) and sepperates Fact spaces. Keeps track of insertion/ deletion actions for undo and redo. More...
Classes | |
class | GlobalFactDictionary |
struct | meta |
Each Fact entry in MyFactSpace has a corresponding meta entry in MetaInf. The meta struct is a collection of meta-variables. <seealsocref="PruneWorkflow"/> More... | |
struct | stepnote |
Keeps track of insertion/ deletion/ etc. operations for undo and redo More... | |
Public Member Functions | |
FactRecorder () | |
Only used by JsonConverter to initiate empty instance. More... | |
void | Dispose () |
FactRecorder (bool invoke=false) | |
Standard Constructor for empty, ready to use FactRecorder More... | |
bool | TryGetFact (string URI, out Fact found) |
Exposes Dictionary<TKey, TValue>.TryGetValue(TKey, out TValue) of MyFactSpace More... | |
meta | GetFactMeta (string id) |
Exposes contens of MetaInf
| |
stepnote | GetWorkflow (int index) |
Exposes contens of Workflow More... | |
bool | ContainsKey (string id) |
wrappes MyFactSpace.ContainsKey(id ) More... | |
bool | ContainsLabel (string label) |
Looks up if there is a label Fact.GetLabel in MyFactSpace.Values More... | |
string | Add (Fact value, out bool exists, bool samestep, Gadget gadget, string scroll_label, bool isImmutable=false, bool force=false) |
Call this to Add a Fact to this instance. More... | |
bool | Remove (Fact value, bool samestep, Gadget gadget, bool deleteSolutionFact=false) |
Call this to Remove a Fact from this instance. If other Facts depend on value Remove(/, true )will be called recursively/ cascadingly. More... | |
bool | Remove (string key, bool samestep, Gadget gadget, bool deleteImmutables=false) |
bool | safe_dependencies (string key, out List< string > dependencies) |
searches recursively for Facts where Fact.getDependentFactIds includes key / found dependencies More... | |
void | undo () |
Undoes an entire step or last softreset . No Fact will be actually added, removed or deleted; only its visablity and meta.active changes.
More... | |
void | redo () |
Redoes an entire step . No Fact will be actually added, removed or deleted; only its visablity and meta.active changes.
More... | |
void | Clear () |
Resets to "factory conditions". Neither deletes Facts nor invokes CommunicationEvents.RemoveFactEvent More... | |
void | hardreset (bool invoke_event=true) |
Resets to "factory conditions". deletes Facts and invokes CommunicationEvents.RemoveFactEvent iff invoke_event && invoke. More... | |
void | softreset () |
Undoes all worksteps (since marker) and sets soft_resetted to true . More... | |
void | fastforward () |
Redoes all worksteps (from marker onwards) and sets soft_resetted to false . More... | |
void | Draw (bool draw_all=false) |
Call this after assigning a stored instance in an empty world, that was not drawn. Redoes/ draws everything from marker = 0 to draw_all ? worksteps : backlog More... | |
void | Undraw (bool force_invoke=false) |
Undraws everything by invoking CommunicationEvents.RemoveFactEvent, that is meta.active, but does not change that satus. More... | |
bool | DynamiclySolved (SolutionRecorder MinimalSolution, out List< List< string > > MissingElements, out List< List< string > > Solutions) |
Used to check wether this satisfies the constrains of an Solution. Only meta.active are accounted for. More... | |
IEnumerable< Gadget > | GetUsedGadgets () |
int | GetNumberOfGadgets () |
IEnumerable< string > | GetUsedScrolls () |
int | GetNumberOfScrolls () |
int | GetNumberOfFacts () |
![]() | |
virtual string | _IJGetName (string name) |
virtual List< Directories > | _IJGetHierarchie (List< Directories > hierarchie_base) |
virtual bool | _IJGetRawObject (out T payload, string path) |
virtual T | _IJPreProcess (T payload) |
virtual T | _IJPostProcess (T payload) |
bool | store (List< Directories > hierarchie, string name, bool use_install_folder=false, bool overwrite=true, bool deep_store=true) |
bool | store_children (List< Directories > hierarchie, string name, bool use_install_folder=false, bool overwrite=true, bool deep_store=true) |
Static Public Member Functions | |
static T | ReInitializeFactOrganizer< T > (T source, bool invoke, out Dictionary< string, string > old_to_new) |
Used to parse read-in FactRecorder by JsonReader and make Fact.Id conform. Also poppulates OldToNewURI More... | |
static bool | FindEquivalent (IReadOnlyDictionary< string, Fact > FactSpace, Fact search, out string found_key, out Fact found_value, out bool exact, bool allow_exact=true) |
![]() | |
static bool | store (List< Directories > hierarchie, string name, T payload, bool use_install_folder=false, bool overwrite=true, bool deep_store=true) |
static bool | store_children (List< Directories > hierarchie, string name, T payload, bool use_install_folder=false, bool overwrite=true, bool deep_store=true) |
static bool | load_children (List< Directories > hierarchie, string name, ref T raw_payload, bool use_install_folder=false, bool deep_load=true, bool post_process=true) |
static bool | load (List< Directories > hierarchie, string name, out T payload, bool use_install_folder=false, bool deep_load=true, bool post_process=true) |
static T | postprocess (T payload) |
static T | preprocess (T payload) |
static void | delete_children (List< Directories > hierarchie, string name, bool use_install_folder=false, int skip_last_children=0) |
static bool | delete (List< Directories > hierarchie, string name, bool use_install_folder=false) |
Public Attributes | |
bool | invoke |
If set to true , Remove(string, bool) and Add(Fact, out bool, bool) will invoke CommunicationEvents.RemoveFactEvent and CommunicationEvents.AddFactEvent respectively. More... | |
Protected Attributes | |
List< string > | ImmutableFacts = new() |
Contains Immutable Fact.Ids; e.g: From a SolutionRecorder which are being exposed to the Player. More... | |
Dictionary< Gadget,(int first_occurrence, int last_occurrence)> | GadgetWorkflowDict = new() |
Dictionary< int, Gadget > | WorkflowGadgetDict = new() { { -1, null } } |
Dictionary< string, meta > | MetaInf = new() |
List< stepnote > | Workflow = new() |
Keeps track of insertion/ deletion/ etc. operations for undo and redo More... | |
int | marker = 0 |
Notes position in Workflow for undo and redo; the pointed to element is non-acitve More... | |
int | worksteps = 0 |
Backlock logic redundant - for convinience. Keeps track of number of steps in Workflow. One step can consist of multiple operations.
| |
int | backlog = 0 |
Backlock logic redundant - for convinience. Keeps track of number of steps in Workflow, which are not set active. One step can consist of multiple operations.
| |
bool | soft_resetted = false |
Set to true if recently been resetted. More... | |
Package Attributes | |
int | MaxLabelId = 0 |
Keeps track of maximum Fact.LabelId for Fact.generateLabel. More... | |
SortedSet< int > | UnusedLabelIds = new() |
Stores unused Fact.LabelId for Fact.generateLabel, wich were freed in Fact.freeAutoLabel for later reuse to keep naming space compact. More... | |
Properties | |
IReadOnlyDictionary< string, Fact > | MyFactSpace [get] |
static IReadOnlyDictionary< string, Fact > | AllFacts [get] |
Fact | this[string id] [get] |
wrappes MyFactSpace[id ]
| |
string | name = null [getset] |
For store(string, List<Directories>, bool, bool) and load(ref FactRecorder, bool, string, List<Directories>, bool, out Dictionary<string, string>) More... | |
string | path = null [getset] |
For store(string, List<Directories>, bool, bool) and load(ref FactRecorder, bool, string, List<Directories>, bool, out Dictionary<string, string>) More... | |
![]() | |
string | name [getset] |
string | path [getset] |
Private Member Functions | |
void | WorkflowAdd (stepnote note) |
prunes & adds note to Workflow; Invokes Events More... | |
void | PruneWorkflow (stepnote not_me) |
set current (displayed) state in stone, a.k.a. delete non meta.active Facts for good; resets un-redo parameters More... | |
void | yeetusdeletus (List< string > deletereverse, bool samestep, Gadget gadget) |
Turns every Fact in deletereverse (in reverse order) inactive, as it would be removed, but without checking for (recursive) dependencies. More... | |
void | reversestep (int pos, bool samestep=false) |
reverses any entire step; adds process to Workflow! More... | |
FactRecorder IJSONsavable< FactRecorder >. | _IJPostProcess (FactRecorder raw_payload) |
FactRecorder IJSONsavable< FactRecorder >. | _IJPreProcess (FactRecorder payload) |
void | InvokeFactEvent (bool creation, string Id) |
Updates MetaInf, Fact.GetLabel and invokes CommunicationEvents (latter iff invoke is set) More... | |
Static Private Member Functions | |
static | FactRecorder () |
Private Attributes | |
IReadOnlyDictionary< string, Fact > | JsonFactSpace = null |
Additional Inherited Members | |
![]() | |
static readonly IJSONsavable< T > | Instance |
static readonly FieldInfo[] | JsonSaveableFields |
static readonly FieldInfo[] | JsonAutoPreProcessFields |
static readonly FieldInfo[] | JsonAutoPostProcessFields |
static readonly FieldInfo[] | JsonSeperateFields |
![]() | |
static List< Directories > | hierarchie |
Organizes (insertion/ deletion / etc. operations) and sepperates Fact spaces. Keeps track of insertion/ deletion actions for undo and redo.
|
staticprivate |
FactRecorder.FactRecorder | ( | ) |
Only used by JsonConverter to initiate empty instance.
FactRecorder.FactRecorder | ( | bool | invoke = false | ) |
Standard Constructor for empty, ready to use FactRecorder
invoke | sets invoke. |
|
private |
|
private |
string FactRecorder.Add | ( | Fact | value, |
out bool | exists, | ||
bool | samestep, | ||
Gadget | gadget, | ||
string | scroll_label, | ||
bool | isImmutable = false , |
||
bool | force = false |
||
) |
Call this to Add a Fact to this instance.
Warning: If return_value != value .Id, value will be deleted for good to reduce ressource usage!
value | to be added |
exists | true iff value already exists (may be inactive before opreation) |
samestep | set true if Fact creation happens as a subsequent/ consequent step of multiple Fact creations and/or deletions, and you whish that these are affected by a single undo/ redo step |
gadget | the Gadgetused to create this Fact or null |
scroll_label | the Scrollused to create this Fact or null |
isImmutable | will eneable delete protection, will BE recorded in ImmutableFacts, will NOT be recorded in Workflow |
void FactRecorder.Clear | ( | ) |
Resets to "factory conditions". Neither deletes Facts nor invokes CommunicationEvents.RemoveFactEvent
bool FactRecorder.ContainsKey | ( | string | id | ) |
bool FactRecorder.ContainsLabel | ( | string | label | ) |
Looks up if there is a label Fact.GetLabel in MyFactSpace.Values
label | supposed Fact.GetLabel to be checked |
true
iff MyFactSpace conatains a Value
Fact, where Fact.GetLabel == label .void FactRecorder.Dispose | ( | ) |
void FactRecorder.Draw | ( | bool | draw_all = false | ) |
Call this after assigning a stored instance in an empty world, that was not drawn. Redoes/ draws everything from marker = 0 to draw_all ? worksteps : backlog
Does not invoke softreset or undo in any way and thus may trigger Exceptions or undefined behaviour if any Fact in MyFactSpace is already drawn.
bool FactRecorder.DynamiclySolved | ( | SolutionRecorder | MinimalSolution, |
out List< List< string > > | MissingElements, | ||
out List< List< string > > | Solutions | ||
) |
Used to check wether this satisfies the constrains of an Solution. Only meta.active are accounted for.
MinimalSolution | describes constrains |
MissingElements | elements which were not found in SolutionRecorder.ValidationSet in a format reflecting that of SolutionRecorder.ValidationSet |
Solutions | elements which were found in SolutionRecorder.ValidationSet in a format reflecting that of SolutionRecorder.ValidationSet |
true
iff all constrains set by MinimalSolution are metvoid FactRecorder.fastforward | ( | ) |
Redoes all worksteps (from marker onwards) and sets soft_resetted to false
.
|
static |
meta FactRecorder.GetFactMeta | ( | string | id | ) |
int FactRecorder.GetNumberOfFacts | ( | ) |
int FactRecorder.GetNumberOfGadgets | ( | ) |
int FactRecorder.GetNumberOfScrolls | ( | ) |
IEnumerable< Gadget > FactRecorder.GetUsedGadgets | ( | ) |
IEnumerable< string > FactRecorder.GetUsedScrolls | ( | ) |
stepnote FactRecorder.GetWorkflow | ( | int | index | ) |
void FactRecorder.hardreset | ( | bool | invoke_event = true | ) |
Resets to "factory conditions". deletes Facts and invokes CommunicationEvents.RemoveFactEvent iff invoke_event && invoke.
invoke_event | if set to true and invoke set to true will invoke CommunicationEvents.RemoveFactEvent |
|
private |
Updates MetaInf, Fact.GetLabel and invokes CommunicationEvents (latter iff invoke is set)
|
private |
set current (displayed) state in stone, a.k.a. delete non meta.active Facts for good; resets un-redo parameters
void FactRecorder.redo | ( | ) |
|
static |
Used to parse read-in FactRecorder by JsonReader and make Fact.Id conform. Also poppulates OldToNewURI
target | to be parsed into, will be overwritten. If invoke = true , target should be StageStatic.stage.factState, outherwise InvokeFactEvent(bool, string) will cause Exceptions when it invokes Events of CommunicationEvents |
source | instance to be parsed |
invoke | see invoke |
old_to_new | Generated to map Key outdated Fact.Ids to corresponding Value updatated Fact.Ids. |
T | : | FactRecorder | |
T | : | new() |
bool FactRecorder.Remove | ( | Fact | value, |
bool | samestep, | ||
Gadget | gadget, | ||
bool | deleteSolutionFact = false |
||
) |
Call this to Remove a Fact from this instance. If other Facts depend on value Remove(/, true
)will be called recursively/ cascadingly.
this will not delete a Fact, but sets it inactive for later deletion when pruned.
value | to be removed |
samestep | set true if Fact deletion happens as a subsequent/ consequent step of multiple Fact creations and/or deletions, and you whish that these are affected by a single undo/ redo step |
gadget | the Gadgetused to delete value or null |
deleteSolutionFact | can overwrite protection from Facts imported from a SolutionRecorder |
true
iff value .Id was found.bool FactRecorder.Remove | ( | string | key, |
bool | samestep, | ||
Gadget | gadget, | ||
bool | deleteImmutables = false |
||
) |
this will not delete a Fact, but sets it inactive for later deletion when pruned.
key | to be removed |
samestep | set true if Fact deletion happens as a subsequent/ consequent step of multiple Fact creations and/or deletions, and you whish that these are affected by a single undo/ redo step |
gadget | the Gadgetused to delete value or null |
deleteImmutables | can overwrite protection from Facts in ImmutableFacts |
true
iff value was found.
|
private |
reverses any entire step; adds process to Workflow!
Warning: unused therefore untested and unmaintained.
pos | position after steptail-end of the step to be reversed |
samestep | see yeetusdeletus(List<string>, bool).samestep |
bool FactRecorder.safe_dependencies | ( | string | key, |
out List< string > | dependencies | ||
) |
void FactRecorder.softreset | ( | ) |
Undoes all worksteps (since marker) and sets soft_resetted to true
.
bool FactRecorder.TryGetFact | ( | string | URI, |
out Fact | found | ||
) |
Exposes Dictionary<TKey, TValue>.TryGetValue(TKey, out TValue) of MyFactSpace
void FactRecorder.undo | ( | ) |
void FactRecorder.Undraw | ( | bool | force_invoke = false | ) |
Undraws everything by invoking CommunicationEvents.RemoveFactEvent, that is meta.active, but does not change that satus.
force_invoke | if set true , invokes CommunicationEvents.RemoveFactEvent for every Fact regardles of meta.active status or invoke |
|
private |
prunes & adds note to Workflow; Invokes Events
note | to be added |
|
private |
Turns every Fact in deletereverse (in reverse order) inactive, as it would be removed, but without checking for (recursive) dependencies.
deletereverse | to be removed, but without checking for (recursive) dependencies |
samestep | see Remove(string, bool).samestep. Only applies to last (first iteration) element of deletereverse ; for everything else samestep will be set to true . |
|
protected |
|
protected |
|
protected |
Contains Immutable Fact.Ids; e.g: From a SolutionRecorder which are being exposed to the Player.
Will NOT be recorded in Workflow!
bool FactRecorder.invoke |
If set to true
, Remove(string, bool) and Add(Fact, out bool, bool) will invoke CommunicationEvents.RemoveFactEvent and CommunicationEvents.AddFactEvent respectively.
|
private |
|
protected |
|
package |
Keeps track of maximum Fact.LabelId for Fact.generateLabel.
|
protected |
Set to true
if recently been resetted.
|
package |
Stores unused Fact.LabelId for Fact.generateLabel, wich were freed in Fact.freeAutoLabel for later reuse to keep naming space compact.
|
protected |
|
protected |
|
protected |
|
getset |
For store(string, List<Directories>, bool, bool) and load(ref FactRecorder, bool, string, List<Directories>, bool, out Dictionary<string, string>)
|
getset |
For store(string, List<Directories>, bool, bool) and load(ref FactRecorder, bool, string, List<Directories>, bool, out Dictionary<string, string>)
|
get |
wrappes MyFactSpace[id ]
id | a Fact.Id in MyFactSpace |
MyFactSpace[id ]