public void PostUpdatePolityCulturalProminence(PolityProminence polityProminence) { PolityCulture polityCulture = polityProminence.Polity.Culture; if (Group.HighestPolityProminence == null) { throw new System.Exception("HighestPolityProminence is null"); } if (((Language == null) || (polityProminence.Value >= Group.HighestPolityProminence.Value)) && (Language != polityCulture.Language)) { Language = polityCulture.Language; SetLanguageUpdateCells(); } }
public void UpdatePolityCulturalProminence(PolityProminence polityProminence, long timeSpan) { PolityCulture polityCulture = polityProminence.Polity.Culture; foreach (CulturalPreference polityPreference in polityCulture.GetPreferences()) { CellCulturalPreference cellPreference = GetAcquiredPreferenceOrToAcquire(polityPreference.Id); if (cellPreference == null) { cellPreference = CellCulturalPreference.CreateCellInstance(Group, polityPreference, 0); AddPreferenceToAcquire(cellPreference); } cellPreference.AddPolityProminenceEffect(polityPreference, polityProminence, timeSpan); } foreach (CulturalActivity polityActivity in polityCulture.GetActivities()) { CellCulturalActivity cellActivity = GetPerformedActivityOrToPerform(polityActivity.Id); if (cellActivity == null) { cellActivity = CellCulturalActivity.CreateCellInstance(Group, polityActivity, 0); AddActivityToPerform(cellActivity); } cellActivity.AddPolityProminenceEffect(polityActivity, polityProminence, timeSpan); } foreach (CulturalSkill politySkill in polityCulture.GetSkills()) { CellCulturalSkill cellSkill = GetLearnedSkillOrToLearn(politySkill.Id); if (cellSkill == null) { cellSkill = CellCulturalSkill.CreateCellInstance(Group, politySkill, 0); AddSkillToLearn(cellSkill); } cellSkill.AddPolityProminenceEffect(politySkill, polityProminence, timeSpan); } foreach (CulturalKnowledge polityKnowledge in polityCulture.GetKnowledges()) { //#if DEBUG // if (Manager.RegisterDebugEvent != null) // { // if (Manager.TracingData.Priority <= 0) // { // if (Group.Id == Manager.TracingData.GroupId) // { // string groupId = "Id:" + Group.Id + "|Long:" + Group.Longitude + "|Lat:" + Group.Latitude; // SaveLoadTest.DebugMessage debugMessage = new SaveLoadTest.DebugMessage( // "CellCulture.UpdatePolityCulturalProminence - Group:" + groupId, // "CurrentDate: " + Group.World.CurrentDate + // ", polityCulture.Polity.Id: " + polityCulture.Polity.Id + // ", polityKnowledge.Name: " + polityKnowledge.Name + // "", Group.World.CurrentDate); // Manager.RegisterDebugEvent("DebugMessage", debugMessage); // } // } // } //#endif CellCulturalKnowledge cellKnowledge = TryAddKnowledgeToLearn(polityKnowledge.Id, 0); cellKnowledge.AddPolityProminenceEffect(polityKnowledge, polityProminence, timeSpan); } foreach (Discovery polityDiscovery in polityCulture.Discoveries.Values) { AddDiscoveryToFind(polityDiscovery); } }