protected void RemoveKnowledge(CulturalKnowledge knowledge) { if (!_knowledges.ContainsKey(knowledge.Id)) { return; } _knowledges.Remove(knowledge.Id); }
public bool HasKnowledge(string id) { CulturalKnowledge knowledge = GetKnowledge(id); if (knowledge != null) { return(true); } return(false); }
protected void AddKnowledge(CulturalKnowledge knowledge) { if (_knowledges.ContainsKey(knowledge.Id)) { return; } World.AddExistingCulturalKnowledgeInfo(knowledge); _knowledges.Add(knowledge.Id, knowledge); }
public override bool Evaluate(CellGroup group) { CulturalKnowledge knowledge = group.Culture.GetKnowledge(KnowledgeId); if (knowledge != null) { return(knowledge.Value >= MinValue); } return(false); }
public void AddKnowledgeToLose(string knowledgeId) { CulturalKnowledge knowledge = null; if (!_knowledges.TryGetValue(knowledgeId, out knowledge)) { Debug.LogWarning("CellCulture: Trying to remove knowledge that is not present: " + knowledgeId); return; } _knowledgesToLose.Add(knowledge as CellCulturalKnowledge); }
public bool TryGetKnowledgeScaledValue(string id, out float scaledValue) { scaledValue = 0; CulturalKnowledge knowledge = GetKnowledge(id); if (knowledge != null) { scaledValue = knowledge.ScaledValue; return(true); } return(false); }
public bool TryGetKnowledgeValue(string id, out int value) { value = 0; CulturalKnowledge knowledge = GetKnowledge(id); if (knowledge != null) { value = knowledge.Value; return(true); } return(false); }
public override void AddPolityProminenceEffect(CulturalKnowledge polityKnowledge, PolityProminence polityProminence, long timeSpan) { AddPolityProminenceEffectInternal(polityKnowledge, polityProminence, timeSpan, TimeEffectConstant); #if DEBUG if (_newValue < MinValueForTribeFormation) { if (Group.GetFactionCores().Count > 0) { Debug.LogWarning("Group with low social organization has faction cores - Id: " + Group.Id + ", _newValue:" + _newValue); } if (Group.WillBecomeFactionCore) { Debug.LogWarning("Group with low social organization will become a faction core - Id: " + Group.Id + ", _newValue:" + _newValue); } } #endif }
public static bool IsAgricultureKnowledge(CulturalKnowledge knowledge) { return(knowledge.Id.Contains(KnowledgeId)); }
public static bool IsSocialOrganizationKnowledge(CulturalKnowledge knowledge) { return(knowledge.Id.Contains(KnowledgeId)); }
public override void AddPolityProminenceEffect(CulturalKnowledge polityKnowledge, PolityProminence polityProminence, long timeSpan) { throw new System.NotImplementedException(); }
public CulturalKnowledge(CulturalKnowledge baseKnowledge) : base(baseKnowledge) { Value = baseKnowledge.Value; }
public override void AddPolityProminenceEffect(CulturalKnowledge polityKnowledge, PolityProminence polityProminence, long timeSpan) { AddPolityProminenceEffectInternal(polityKnowledge, polityProminence, timeSpan, TimeEffectConstant); }
public static bool IsShipbuildingKnowledge(CulturalKnowledge knowledge) { return(knowledge.Id.Contains(KnowledgeId)); }
public PolityCulturalKnowledge(CulturalKnowledge baseKnowledge) : base(baseKnowledge) { Value = 0; // this should be set by calling FinalizeUpdateFromFactions afterwards }
public abstract void AddPolityProminenceEffect(CulturalKnowledge polityKnowledge, PolityProminence polityProminence, long timeSpan);
protected void AddPolityProminenceEffectInternal(CulturalKnowledge polityKnowledge, PolityProminence polityProminence, long timeSpan, float timeEffectFactor) { int rngOffset = RngOffsets.KNOWLEDGE_POLITY_PROMINENCE + InstanceRngOffset + unchecked ((int)polityProminence.PolityId); int targetValue = polityKnowledge.Value; float prominenceEffect = polityProminence.Value; TerrainCell groupCell = Group.Cell; float randomEffect = groupCell.GetNextLocalRandomFloat(rngOffset++); float timeEffect = timeSpan / (float)(timeSpan + timeEffectFactor); int valueDelta = targetValue - _newValue; float d; // _newvalue should have been set correctly either by the constructor or by the Update function int valueChange = (int)MathUtility.MultiplyAndGetDecimals(valueDelta, prominenceEffect * timeEffect * randomEffect, out d); if (d > Group.GetNextLocalRandomFloat(rngOffset++)) { valueChange++; } //#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( // "CellCulturalKnowledge.PolityCulturalProminenceInternal - Group:" + groupId, // "CurrentDate: " + Group.World.CurrentDate + // ", Name: " + Name + // ", timeSpan: " + timeSpan + // ", timeEffectFactor: " + timeEffectFactor + // ", randomEffect: " + randomEffect + // ", Group.PolityProminences.Count: " + Group.PolityProminences.Count + // ", polity Id: " + polityProminence.PolityId + // ", polityProminence.Value: " + prominenceEffect + // ", politySkill.Value: " + targetValue + // ", Value: " + Value + // ", _newValue: " + _newValue + // ", valueChange: " + valueChange + // "", Group.World.CurrentDate); // Manager.RegisterDebugEvent("DebugMessage", debugMessage); // } // } // else if (Manager.TracingData.Priority <= 1) // { // string groupId = "Id:" + Group.Id + "|Long:" + Group.Longitude + "|Lat:" + Group.Latitude; // SaveLoadTest.DebugMessage debugMessage = new SaveLoadTest.DebugMessage( // "CellCulturalKnowledge.PolityCulturalProminenceInternal - Group:" + groupId, // "CurrentDate: " + Group.World.CurrentDate + // "", Group.World.CurrentDate); // Manager.RegisterDebugEvent("DebugMessage", debugMessage); // } // } //#endif _newValue = _newValue + valueChange; }
private void UpdateKnowledges(CellCulture coreCulture, float timeFactor) { //Profiler.BeginSample("Culture - Update Knowledges"); //#if DEBUG // if ((Manager.RegisterDebugEvent != null) && (Manager.TracingData.Priority <= 0)) // { // if (Manager.TracingData.FactionId == Faction.Id) // { // SaveLoadTest.DebugMessage debugMessage = new SaveLoadTest.DebugMessage( // "FactionCulture:Update - Update Knowledges - Faction.Id:" + Faction.Id, // "CurrentDate: " + World.CurrentDate + // ", coreCulture.Group.Id: " + coreCulture.Group.Id + // ", Knowledges.Count: " + Knowledges.Count + // ""); // Manager.RegisterDebugEvent("DebugMessage", debugMessage); // } // } //#endif foreach (CellCulturalKnowledge k in coreCulture.GetKnowledges()) { //Profiler.BeginSample("GetKnowledge"); CulturalKnowledge knowledge = GetKnowledge(k.Id); //Profiler.EndSample(); if (knowledge == null) { //Profiler.BeginSample("new CulturalKnowledge"); knowledge = new CulturalKnowledge(k); AddKnowledge(knowledge); //Profiler.EndSample(); } //Profiler.BeginSample("update knowledge.Value"); float addValue = k.Value * timeFactor; if (addValue < 1) // Always try approaching the core cell knowledge value regardless how small the timeFactor is { if ((knowledge.Value - k.Value) <= -1) { knowledge.Value++; } else if ((knowledge.Value - k.Value) >= 1) { knowledge.Value--; } } else { knowledge.Value = (int)((knowledge.Value * (1f - timeFactor)) + addValue); } //Profiler.EndSample(); } foreach (CulturalKnowledge k in _knowledges.Values) { //Profiler.BeginSample("coreCulture.Skills.ContainsKey"); if (coreCulture.GetKnowledge(k.Id) == null) { k.Value = (int)(k.Value * (1f - timeFactor)); } //Profiler.EndSample(); } //Profiler.EndSample(); }