227
edits
Line 5: | Line 5: | ||
== Character Relations Graph == | == Character Relations Graph == | ||
'''Note''': This model may not be projectable to the current model in use | |||
The idea presented here tries to represent character relations completely text based without the help of any images which contain graphs. | |||
Instead of trying to generate a simple view over the complete dataset, this approach will use many simple views. | |||
The basic idea is to take each type of relation (family, enemy of, ally of, etc.) and create one view for each for a global overall view. | |||
In addition a local view is provided to show relations in detail. | |||
The local view is simply a cursor which points to an entity for which information of itself will be shown and in addition to that the nearest neighbours. | |||
When the user clicks on one of the neighbours the cursor will move to that entity. | |||
For this to be user friendly mouse scrolling needs to minimized. | |||
=== Prerequisites === | |||
'''Needs to be reworked: One model/view for all either too simple to represent all cases or too complex to display => One model/view for each relation type''' | |||
<pre>class Anime_CharacterCharacter_Relations { | |||
int AId; | |||
Anime_CharacterCharacter_Relation[] Relations; | |||
} | |||
class Anime_CharacterCharacter_Relation { | |||
Anime_CharacterCharacter_Relation_Type Type; | |||
ConnectedGraph[] Graphs; | |||
} | |||
class Anime_CharacterCharacter_Relation_Type { | |||
Label Name; | |||
EdgeInfoControl[] AllowedEdges; | |||
} | |||
class ConnectedGraph { | |||
Label Name; //For something like clubs/organisations/etc. | |||
Entity[] Entities; //Graph Structure Info | |||
Tuple<EdgeInfoControl, Relation>[] Relations; //Graph Structure Info | |||
} | |||
class Relation { //Edge | |||
EdgeInfo Info; //Informational purposes only! | |||
Entity A, B; //A is Start and B is end Vertex if graph is directed | |||
} | |||
class EdgeInfo { | |||
Label Start, Middle, End; | |||
} | |||
class EdgeInfoControl : EdgeInfo { | |||
bool IsWeakLink, IsDirected; | |||
} | |||
class Entity {//Vertex | |||
//Informational Data | |||
} | |||
class Label { | |||
string Text; | |||
Bitmap Image; | |||
}</pre> | |||
''Text needs to be updated to sync with the classes above'' | |||
* Anime_CharacterCharacter_Relations holds all information necessary for Character-Character of an Anime. | |||
* Each Character-Character Relation Type (family of, enemy of, etc.) is represented by Anime_CharacterCharacter_Relation, where Anime_CharacterCharacter_Relation_Type sets restrictions. | |||
* Anime_CharacterCharacter_Relation_Type contains the info whether the graphs are directed or undirected, a label (e.g. Family) and specifies the allowed edges for the graphs. | |||
* Anime_CharacterCharacter_Relation contains in addition to the type, a list of graphs (ConnectedGraph) which are required to be connected (i.e. every vertex is reachable from every vertex). <br/> If a Character-Character Relation cannot represented by a single Connected Graph it is split into several ConnectedGraphs until the condition is satisfied. | |||
* ConnectedGraph contains the graph structure (vertices, edges) and a label which serves as a header for the graph (i.e. Organisation). <br/> The Relations field contains all edges in addition to its type which must be contained in the associated Anime_CharacterCharacter_Relation_Type.AllowedEdges | |||
* Relation simply defines an edge in the graph which can contain additional information which only serves informational purposes. | |||
Add abstraction, i.e. allow subclasses for each Relationtype to allow special behaviours for views. | |||
=== Presets === | |||
==== Family Relation Preset ==== | |||
; Definition | |||
: Label: (Family, FamilyIcon) | |||
: IsDirected: Yes | |||
;Edges (IsWeakLink, IsDirected, StartLabel, MiddleLabel, EndLabel) | |||
:Undefined: (Yes, No, false, "", "", "") | |||
:Parents: (Husband, Wife) //Samesex Parents? | |||
===== View ===== | |||
Aim: Each connected graph shows to each other unrelated families | |||
Possibility1: Special Relation, Container with Parents as Header and Children as Content => Recursive display | |||
Possibility2: Simple edges describing Parent-Child Relations => May result in a lot of edges | |||
Adoption: | |||
==== Mentor Relation Preset ==== | |||
e.g. Marimite | |||
==== Posession Relation Preset ==== | |||
e.g. Pokemon | |||
== Character Relations based on episode range == | == Character Relations based on episode range == | ||
== User - Object Set - Analysis (Snippets of Wisdom) == | == User - Object Set - Analysis (Snippets of Wisdom) == |
edits