public async Task <Polity> AddPolity(Polity polity) { var pt = _dbContext.polities.Add(polity); await _dbContext.SaveChangesAsync(); return(pt.Entity); }
public static void LeaderPreventsSplit(Clan splitClan, Clan dominantClan, Tribe tribe, long eventId) { float charismaFactor = splitClan.CurrentLeader.Charisma / 10f; float wisdomFactor = splitClan.CurrentLeader.Wisdom / 15f; float attributesFactor = Mathf.Max(charismaFactor, wisdomFactor); attributesFactor = Mathf.Clamp(attributesFactor, 0.5f, 2f); int rngOffset = RngOffsets.TRIBE_SPLITTING_EVENT_TRIBE_LEADER_PREVENTS_MODIFY_ATTRIBUTE; // Influence float randomFactor = dominantClan.GetNextLocalRandomFloat(rngOffset++); float influencePercentChange = (BaseMaxInfluencePercentChange - BaseMinInfluencePercentChange) * randomFactor + BaseMinInfluencePercentChange; influencePercentChange /= attributesFactor; Polity.TransferInfluence(dominantClan, splitClan, influencePercentChange); // Relationship randomFactor = dominantClan.GetNextLocalRandomFloat(rngOffset++); float relationshipPercentChange = (BaseMaxRelationshipPercentChange - BaseMinRelationshipPercentChange) * randomFactor + BaseMinRelationshipPercentChange; relationshipPercentChange *= attributesFactor; float newValue = MathUtility.IncreaseByPercent(dominantClan.GetRelationshipValue(splitClan), relationshipPercentChange); Faction.SetRelationship(dominantClan, splitClan, newValue); // Updates LeaderPreventsSplit_notifySplitClan(splitClan, dominantClan, tribe, eventId); }
public virtual void Reset(long newTriggerDate) { OriginalPolity = Faction.Polity; OriginalPolityId = OriginalPolity.Id; Reset(newTriggerDate, GenerateUniqueIdentifier(Faction, newTriggerDate, TypeId)); }
public virtual void FinalizeLoad() { Name.World = World; Name.FinalizeLoad(); CoreGroup = World.GetGroup(CoreGroupId); Polity = World.GetPolity(PolityId); if (Polity == null) { throw new System.Exception("Missing Polity with Id " + PolityId); } Culture.World = World; Culture.Faction = this; Culture.FinalizeLoad(); foreach (FactionRelationship relationship in Relationships) { _relationships.Add(relationship.Id, relationship); relationship.Faction = World.GetFaction(relationship.Id); if (relationship.Faction == null) { throw new System.Exception("Faction is null, Id: " + relationship.Id); } } GenerateEventsFromData(); }
public FactionEvent(Faction faction, long triggerDate, long eventTypeId) : base(faction.World, triggerDate, GenerateUniqueIdentifier(faction, triggerDate, eventTypeId), eventTypeId) { Faction = faction; FactionId = Faction.Id; OriginalPolity = faction.Polity; OriginalPolityId = OriginalPolity.Id; // #if DEBUG // if ((Manager.RegisterDebugEvent != null) && (Manager.TracingData.Priority <= 0)) { // string factionId = "Id: " + faction.Id; // // SaveLoadTest.DebugMessage debugMessage = new SaveLoadTest.DebugMessage("FactionEvent - Faction: " + factionId, "TriggerDate: " + TriggerDate); // // Manager.RegisterDebugEvent ("DebugMessage", debugMessage); // } // #endif //#if DEBUG // if ((Id == 160349336613603015L) || (Id == 160349354613603010L)) // { // Debug.LogWarning("Generating Event Id: " + Id + ". Faction Id: " + faction.Id + // ", current date: " + World.CurrentDate + ", loaded world: " + Manager.Debug_IsLoadedWorld); // } //#endif }
public override bool IsStillValid() { if (!base.IsStillValid()) { return(false); } if (Faction == null) { return(false); } if (!Faction.StillPresent) { return(false); } Polity polity = World.GetPolity(Faction.PolityId); if (polity == null) { Debug.LogError("FactionEvent: Polity with Id:" + Faction.PolityId + " not found"); } return(true); }
protected static void GenerateEffectsString_TransferInfluence( Faction sourceFaction, Faction targetFaction, Polity polity, float minPercentChange, float maxPercentChange, out string effectStringSourceFaction, out string effectStringTargetFaction) { float charismaFactor = sourceFaction.CurrentLeader.Charisma / 10f; float wisdomFactor = sourceFaction.CurrentLeader.Wisdom / 15f; float attributesFactor = Mathf.Max(charismaFactor, wisdomFactor); attributesFactor = Mathf.Clamp(attributesFactor, 0.5f, 2f); float modMinPercentChange = minPercentChange / attributesFactor; float modMaxPercentChange = maxPercentChange / attributesFactor; float oldSourceInfluenceValue = sourceFaction.Influence; float minSourceValChange = oldSourceInfluenceValue * (1f - modMinPercentChange); float maxSourceValChange = oldSourceInfluenceValue * (1f - modMaxPercentChange); float oldTargetInfluenceValue = targetFaction.Influence; float minTargetValChange = oldTargetInfluenceValue + oldSourceInfluenceValue - minSourceValChange; float maxTargetValChange = oldTargetInfluenceValue + oldSourceInfluenceValue - maxSourceValChange; effectStringSourceFaction = sourceFaction.GetNameAndTypeStringBold().FirstLetterToUpper() + ": influence within the " + polity.GetNameAndTypeStringBold() + " (" + oldSourceInfluenceValue.ToString("P") + ") decreases to: " + minSourceValChange.ToString("P") + " - " + maxSourceValChange.ToString("P"); effectStringTargetFaction = targetFaction.GetNameAndTypeStringBold().FirstLetterToUpper() + ": influence within the " + polity.GetNameAndTypeStringBold() + " (" + oldTargetInfluenceValue.ToString("P") + ") increases to: " + minTargetValChange.ToString("P") + " - " + maxTargetValChange.ToString("P"); }
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; }
private void TryGenerateEventMessage() { DiscoveryEventMessage eventMessage = null; World world = Group.World; TerrainCell cell = Group.Cell; if (!world.HasEventMessage(_discovery.UId)) { eventMessage = new DiscoveryEventMessage(_discovery, cell, _discovery.UId, TriggerDate); world.AddEventMessage(eventMessage); } if (cell.EncompassingTerritory != null) { Polity encompassingPolity = cell.EncompassingTerritory.Polity; if (!encompassingPolity.HasEventMessage(_discovery.UId)) { if (eventMessage == null) { eventMessage = new DiscoveryEventMessage(_discovery, cell, _discovery.UId, TriggerDate); } encompassingPolity.AddEventMessage(eventMessage); } } }
public PolityContact(Polity polity, int initialGroupCount = 0) { Polity = polity; Id = polity.Id; GroupCount = initialGroupCount; }
public FactionEvent(Faction faction, FactionEventData data) : base(faction.World, data, GenerateUniqueIdentifier(faction, data.TriggerDate, data.TypeId)) { Faction = faction; FactionId = Faction.Id; OriginalPolityId = data.OriginalPolityId; OriginalPolity = World.GetPolity(OriginalPolityId); }
public PolityEvent(Polity polity, PolityEventData data) : base(polity.World, data, GenerateUniqueIdentifier(polity, data.TriggerDate, data.TypeId)) { Polity = polity; PolityId = Polity.Id; OriginalDominantFactionId = data.OriginalDominantFactionId; OriginalDominantFaction = World.GetFaction(OriginalDominantFactionId); }
public PolityProminence(CellGroup group, Polity polity, float value, bool isMigratingGroup = false) { Group = group; //_isMigratingGroup = isMigratingGroup; Set(polity, value); }
public override void FinalizeLoad() { base.FinalizeLoad(); TargetGroup = World.GetGroup(TargetGroupId); Polity = World.GetPolity(PolityId); Group.PolityExpansionEvent = this; }
public static long GenerateUniqueIdentifier(Polity polity, long triggerDate, long eventTypeId) { if (triggerDate >= World.MaxSupportedDate) { Debug.LogWarning("PolityEvent.GenerateUniqueIdentifier - 'triggerDate' is greater than " + World.MaxSupportedDate + " (triggerDate = " + triggerDate + ")"); } return((triggerDate * 1000000000L) + ((polity.Id % 1000000L) * 1000L) + eventTypeId); }
public void Set(Polity polity, float value) { PolityId = polity.Id; Polity = polity; Value = MathUtility.RoundToSixDecimals(value); NewValue = Value; AdministrativeCost = 0; }
public void Set(PolityProminence polityProminence) { PolityId = polityProminence.PolityId; Polity = polityProminence.Polity; Value = polityProminence.Value; NewValue = Value; AdministrativeCost = 0; }
protected static string GenerateResultEffectsString_DecreasePreference(Polity polity, string preferenceId) { Faction dominantFaction = polity.DominantFaction; CulturalPreference preference = dominantFaction.Culture.GetPreference(preferenceId); return(polity.GetNameAndTypeStringBold().FirstLetterToUpper() + ": " + dominantFaction.GetNameAndTypeStringBold().AddPossApos() + " preference decreases to: " + preference.Value.ToString("0.00")); }
public void Reset(Polity polity, CellGroup targetGroup, long triggerDate) { TargetGroup = targetGroup; TargetGroupId = TargetGroup.Id; Polity = polity; PolityId = Polity.Id; Reset(triggerDate); }
public Tribe(Clan triggerClan, Polity parentPolity) : base(PolityTypeStr, triggerClan.CoreGroup, triggerClan.Id) { triggerClan.ChangePolity(this, triggerClan.Influence); SwitchCellProminences(parentPolity, triggerClan); GenerateName(); // Debug.Log ("New tribe '" + Name + "' from tribe '" + parentPolity.Name + "' with total transfered influence = " + transferedInfluence); }
protected static string GenerateResultEffectsString_DecreaseRelationship(Polity polity, Polity targetPolity) { Faction dominantFaction = polity.DominantFaction; Faction targetdominantFaction = targetPolity.DominantFaction; float value = dominantFaction.GetRelationshipValue(targetdominantFaction); return(polity.GetNameAndTypeStringBold().FirstLetterToUpper() + ": " + dominantFaction.GetNameAndTypeStringBold().AddPossApos() + " relationship with " + targetdominantFaction.GetNameAndTypeWithPolityStringBold() + " decreases to: " + value.ToString("0.00")); }
public PolityInfo(string type, long id, Polity polity) { Id = id; FormationDate = polity.World.CurrentDate; Polity = polity; SetType(type); }
public PolityProminenceCluster(PolityProminence startProminence) { Id = startProminence.Id; Polity = startProminence.Polity; #if DEBUG CreationDate = Polity.World.CurrentDate; #endif AddProminence(startProminence); }
public override void FinalizeLoad() { base.FinalizeLoad(); Polity = World.GetPolity(PolityId); OriginalDominantFaction = World.GetFaction(OriginalDominantFactionId); if (Polity == null) { Debug.LogError("PolityEvent: Polity with Id:" + PolityId + " not found"); } }
public override void FinalizeLoad() { base.FinalizeLoad(); Faction = World.GetFaction(FactionId); OriginalPolity = World.GetPolity(OriginalPolityId); if (Faction == null) { Debug.LogError("FactionEvent: Faction with Id:" + FactionId + " not found"); } }
public ExpandPolityProminenceEvent(CellGroup group, Polity polity, CellGroup targetGroup, long triggerDate) : base(group, triggerDate, ExpandPolityProminenceEventId) { Polity = polity; PolityId = polity.Id; TargetGroup = targetGroup; TargetGroupId = TargetGroup.Id; DoNotSerialize = true; }
public void AddFocusedPolity(Polity polity) { FocusedPolityPanelScript focusedPolityPanel = GameObject.Instantiate(FocusedPolityPanelPrefab) as FocusedPolityPanelScript; focusedPolityPanel.Set(polity); focusedPolityPanel.transform.SetParent(transform); focusedPolityPanel.transform.localScale = Vector3.one; focusedPolityPanel.SetVisible(true); _activePanels.Add(focusedPolityPanel); }
public void Set(Polity polity) { Polity = polity; PolityText.text = polity.Name.Text + " " + polity.Type; UnsetFocusButton.onClick.RemoveAllListeners(); UnsetFocusButton.onClick.AddListener(() => { Manager.UnsetFocusOnPolity(polity); }); }
public void ChangePolity(Polity targetPolity, float targetInfluence) { if ((targetPolity == null) || (!targetPolity.StillPresent)) { throw new System.Exception("target Polity is null or not Present"); } Polity.RemoveFaction(this); Polity = targetPolity; PolityId = Polity.Id; Influence = targetInfluence; targetPolity.AddFaction(this); }
protected static void Effect_TransferInfluence(Faction sourceFaction, Faction targetFaction, float minPercentChange, float maxPercentChange, int rngOffset) { float charismaFactor = sourceFaction.CurrentLeader.Charisma / 10f; float wisdomFactor = sourceFaction.CurrentLeader.Wisdom / 15f; float attributesFactor = Mathf.Max(charismaFactor, wisdomFactor); attributesFactor = Mathf.Clamp(attributesFactor, 0.5f, 2f); float randomFactor = sourceFaction.GetNextLocalRandomFloat(rngOffset); float influencePercentChange = (maxPercentChange - minPercentChange) * randomFactor + minPercentChange; influencePercentChange /= attributesFactor; Polity.TransferInfluence(sourceFaction, targetFaction, influencePercentChange); }