Wie ich das sehe liegt das Hauptproblem hier:
• Wie unterscheidet die Software zwischen Original-(Regel-)Formel und eigener Erweiterung.
• Wie gibt man einen Helden weiter, der über eigene Formeln verfügt, sodass jeder diesen Helden nutzen kann.
• Wie geht man damit um, wenn zwei Spieler die gleiche Erweiterung (Zauberformel, Talent o.ä.) unterschiedlich hinzugefügt haben.
Mein Vorschlag um das zu lösen wäre es, jedem Vor- und Nachteil, jeder Sonderfertigkeit, jedem Talent und jedem Zauber eine einmalige ID zuzuweisen. Diese ID könnte bei Ulisses-Regel-basierten Dingen einfach folgendes Format haben:
Code: Alles auswählen
ULISSES-XXX-YYY
Bei eigenen Erweiterungen würde das so aussehen:
Code: Alles auswählen
ERWEITERUNG-XXX-ZZZ
Die Definitionen aller bei einem Helden verwendeten nicht-ULISSES-Regeln/Formeln/etc. würden dann in exportierten Helden-XMLs enthalten sein. Da die GUID/UUIDs einmalig sind ergeben sich keine Konflikte mit den importierten Regeln/Formeln/Sonderfertigkeiten von extern – solange die Helden-SW all diese Dinge nicht mehr mit ihrem Namen, sondern nur noch mit ihrer ID handhabt.
Beim Import einer SF/Vorteil/Nachteil/Regel/etc. würde dann deren ID mit der ID in der Helden-SW abgeglichen. Ist die ID identisch würde die Definition davon weggeworfen und die interne Definition verwendet (und beim Import mit einer Ja/Nein-Message darauf hingewiesen). So ergeben sich nie Konflikte. Alternativ kann die Helden-SW auch nachfragen, ob der Held importiert werden soll und die ID(s) seiner Erweiterungen zusammengeführt werden sollen.
Um weiterhin das externe editieren der XML zu ermöglichen sollten entdeckten Erweiterungen ohne GUID/UUID eine solche bei Programmstart zugewiesen werden. Dann kann man einen Erweiterungseintrag extern editieren und dabei einfach sein UUID/GUID-Feld löschen ohne dass das zu Problemen führt.
Beim Editieren einer existierenden Erweiterungs-SF/Vorteil/Zauber/etc. bekäme diese eine NEUE ID und die Helden-SW würde danach fragen ob existierende Helden mit dieser Erweiterung umgestellt werden sollen (verhindert Konflikte mit bereits exportierten Helden).
Eine Erweiterung könnte nur dann gelöscht werden, wenn sie nicht mehr genutzt wird. Eine Liste der Helden, die eine gewisse Erweiterung gerade nutzen wäre sinnvoll, aber nicht zwangsweise notwendig.
Da ich (aus guten Gründen) nicht in den Quellcode der Helden-SW hineinsehen kann kann ich hier natürlich nur eine mögliche Lösung für das Problem, wie ich es sehe postulieren. Es wäre nett, wenn einer der Entwickler trotzdem mal drüber schauen und Rückmeldung geben könnte.
Mit freundlichen Grüßen,
Noiona