public Faction(string type, Polity polity, CellGroup coreGroup, float influence, Faction parentFaction = null) { World = polity.World; LastUpdateDate = World.CurrentDate; long idOffset = 0; if (parentFaction != null) { idOffset = parentFaction.Id + 1; } PolityId = polity.Id; Polity = polity; CoreGroup = coreGroup; CoreGroupId = coreGroup.Id; long id = GenerateUniqueIdentifier(World.CurrentDate, 100L, idOffset); Info = new FactionInfo(type, id, this); Culture = new FactionCulture(this); CoreGroup.AddFactionCore(this); Influence = influence; GenerateName(parentFaction); IsInitialized = false; }
public void MigrateToNewCoreGroup() { CoreGroup.RemoveFactionCore(this); CoreGroup = NewCoreGroup; CoreGroupId = NewCoreGroup.Id; CoreGroup.AddFactionCore(this); if (IsDominant) { Polity.SetCoreGroup(CoreGroup); } }