private static void selectCharacter(HashSet <int> writtenCharacters, CK2Character character, Dictionary <string, HashSet <CK2Character> > charactersToOutput) { if (character == null) { return; } bool bWritten = !(writtenCharacters.Add(character.getID())); if (bWritten) { return; } appendCharToCTO(character, charactersToOutput); CK2Character father = character.getFather(); selectCharacter(writtenCharacters, father, charactersToOutput); List <CK2Character> children = character.getChildren(); if (children != null) { foreach (CK2Character child in children) { selectCharacter(writtenCharacters, child, charactersToOutput); } } CK2Character spouse = character.getSpouse(); selectCharacter(writtenCharacters, spouse, charactersToOutput); }
private static void selectCharacter(HashSet <int> writtenCharacters, StreamWriter writer, CK2Character character) { if (character == null) { return; } bool bWritten = !(writtenCharacters.Add(character.getID())); if (bWritten) { return; } writeCharacter(writer, character); CK2Character father = character.getFather(); selectCharacter(writtenCharacters, writer, father); List <CK2Character> children = character.getChildren(); if (children != null) { foreach (CK2Character child in children) { selectCharacter(writtenCharacters, writer, child); } } CK2Character spouse = character.getSpouse(); selectCharacter(writtenCharacters, writer, spouse); }
public void updateSpouses(CK2Character character, HashSet <int> processed, List <List <string> > esfFamilyTreeStructure) { bool hasChar = !(processed.Add(character.getID())); if (hasChar) { return; } CK2Character spouse = character.getSpouse(); if (character.getSpouse() != null) { CK2Dynasty spouseDynasty = character.getSpouse().getDynasty(); if (spouseDynasty == null) { discoverTree(spouse, fam2Char, esfFamilyTreeStructure); spouseDynasty = this.deriveDynasty(spouse); associatedDynasties.Add(spouseDynasty); updateDynasty(spouseDynasty, spouse, false); updateReligion(spouse, false); updateCulture(spouse, false); } } CK2Character father = character.getFather(); if (father != null) { updateSpouses(father, processed, esfFamilyTreeStructure); } List <CK2Character> children = character.getChildren(); if (children != null) { foreach (CK2Character child in children) { updateSpouses(child, processed, esfFamilyTreeStructure); } } }
private static void writeCharacter(StreamWriter writer, CK2Character character) { CK2Dynasty dynasty = character.getDynasty(); int dynastyID = 0; if (dynasty != null) { dynastyID = dynasty.getID(); } string name = character.getName(); int charID = character.getID(); int dob = character.getBirthDay(); int mob = character.getBirthMonth(); int yob = character.getBirthYear(); writer.WriteLine(charID + " = {"); writer.WriteLine("\tname=\"" + name + "\""); if (dynastyID != 0) { writer.WriteLine("\tdynasty=" + dynastyID); } else { writer.WriteLine("\tdynasty=" + "NONE"); } writer.WriteLine("\treligion=\"" + character.getReligion() + "\""); writer.WriteLine("\tculture=\"" + character.getCulture() + "\""); if (character.getIsMale() == false) { writer.WriteLine("\tfemale=yes"); } if (character.getIsBastard()) { writer.WriteLine("\tadd_trait=\"bastard\""); } if (character.getFather() != null) { writer.WriteLine("\tfather=" + character.getFather().getID()); } writer.WriteLine("\t" + yob + "." + mob + "." + dob + "={"); writer.WriteLine("\t\tbirth=yes"); writer.WriteLine("\t}"); if (character.getSpouse() != null) { DateTime maxBirthDT = maxBirth(character.getBirth(), character.getSpouse().getBirth()); int yom = maxBirthDT.Year; int mom = maxBirthDT.Month + 1; int dom = maxBirthDT.Day + 1; writer.WriteLine("\t" + yom + "." + mom + "." + dom + "={"); writer.WriteLine("\t\tadd_spouse=" + character.getSpouse().getID()); writer.WriteLine("\t}"); } if (character.getAlive() == false) { int dod = character.getDeathDay(); int mod = character.getDeathMonth(); int yod = character.getDeathYear(); writer.WriteLine("\t" + yod + "." + mod + "." + dod + "={"); writer.WriteLine("\t\tdeath=yes"); writer.WriteLine("\t}"); } writer.WriteLine("}"); }