// adds to existing amount or sets to amount if not existing public virtual void AddReputation(Faction faction, int reputationAmount, bool notify = true) { //Debug.Log(baseCharacter.gameObject.name + ".CharacterFactionmanager.AddReputation(" + faction.DisplayName + ", " + reputationAmount + ", " + notify + ")"); bool foundReputation = false; foreach (FactionDisposition factionDisposition in DispositionDictionary) { //Debug.Log(gameObject.name + ".PlayerFactionManager.AddReputation(" + realFaction.DisplayName + ", " + reputationAmount + "): checking a disposition in my dictionary"); if (factionDisposition.Faction == faction) { //Debug.Log(baseCharacter.gameObject.name + ".PlayerFactionManager.AddReputation(" + faction.DisplayName + ", " + reputationAmount + ") existing reputation: " + factionDisposition.disposition); factionDisposition.disposition += (float)reputationAmount; foundReputation = true; break; } } if (!foundReputation) { FactionDisposition _factionDisposition = new FactionDisposition(); _factionDisposition.Faction = faction; _factionDisposition.disposition = Faction.RelationWith(baseCharacter, faction) + (float)reputationAmount; DispositionDictionary.Add(_factionDisposition); } if (notify) { NotifyOnReputationChange(); } }
// ignores if exiting, otherwise sets to amount. This allows leaving and re-joining factions without losing reputation with them public virtual void SetReputation(Faction newFaction) { //Debug.Log(gameObject.name + ".PlayerFactionManager.SetReputation(" + newFaction + ")"); foreach (FactionDisposition factionDisposition in MyDispositionDictionary) { if (factionDisposition.MyFaction == newFaction) { return; } } FactionDisposition _factionDisposition = new FactionDisposition(); _factionDisposition.MyFaction = newFaction; _factionDisposition.disposition = Faction.RelationWith(baseCharacter, newFaction); MyDispositionDictionary.Add(_factionDisposition); OnReputationChange(); }
// ignores if existing, otherwise sets to amount. This allows leaving and re-joining factions without losing reputation with them public virtual void SetReputation(Faction newFaction) { //Debug.Log(baseCharacter.gameObject.name + ".CharacterFactionmanager.SetReputation(" + (newFaction == null ? "null" : newFaction.DisplayName) + ")"); foreach (FactionDisposition factionDisposition in DispositionDictionary) { if (factionDisposition.Faction == newFaction) { return; } } FactionDisposition _factionDisposition = new FactionDisposition(); _factionDisposition.Faction = newFaction; _factionDisposition.disposition = Faction.RelationWith(baseCharacter, newFaction); DispositionDictionary.Add(_factionDisposition); NotifyOnReputationChange(); }
// ignores if exiting, otherwise sets to amount. This allows leaving and re-joining factions without losing reputation with them public void SetReputation(string newFactionName) { //Debug.Log(gameObject.name + ".PlayerFactionManager.SetReputation(" + newFaction + ")"); foreach (FactionDisposition factionDisposition in MyDispositionDictionary) { if (factionDisposition.factionName == newFactionName) { return; } } FactionDisposition _factionDisposition = new FactionDisposition(); _factionDisposition.factionName = newFactionName; _factionDisposition.disposition = Faction.RelationWith(baseCharacter, newFactionName); MyDispositionDictionary.Add(_factionDisposition); SystemEventManager.MyInstance.NotifyOnReputationChange(); }
// adds to existing amount or sets to amount if not existing public virtual void AddReputation(Faction faction, int reputationAmount) { //Debug.Log(gameObject.name + ".PlayerFactionManager.AddReputation(" + realFaction.MyName + ", " + reputationAmount + ")"); //bool foundReputation = false; foreach (FactionDisposition factionDisposition in MyDispositionDictionary) { //Debug.Log(gameObject.name + ".PlayerFactionManager.AddReputation(" + realFaction.MyName + ", " + reputationAmount + "): checking a disposition in my dictionary"); if (factionDisposition.MyFaction == faction) { //Debug.Log(gameObject.name + ".PlayerFactionManager.AddReputation(" + realFaction.MyName + ", " + reputationAmount + "): checking a disposition in my dictionary MATCHED: adding reputation"); factionDisposition.disposition += (float)reputationAmount; return; } } FactionDisposition _factionDisposition = new FactionDisposition(); _factionDisposition.MyFaction = faction; _factionDisposition.disposition = Faction.RelationWith(baseCharacter, faction) + (float)reputationAmount; MyDispositionDictionary.Add(_factionDisposition); OnReputationChange(); }
// adds to existing amount or sets to amount if not existing public void AddReputation(string factionName, int reputationAmount) { //Debug.Log(gameObject.name + ".PlayerFactionManager.AddReputation(" + realFaction.MyName + ", " + reputationAmount + ")"); //bool foundReputation = false; foreach (FactionDisposition factionDisposition in MyDispositionDictionary) { //Debug.Log(gameObject.name + ".PlayerFactionManager.AddReputation(" + realFaction.MyName + ", " + reputationAmount + "): checking a disposition in my dictionary"); if (SystemResourceManager.MatchResource(factionDisposition.factionName, factionName)) { //Debug.Log(gameObject.name + ".PlayerFactionManager.AddReputation(" + realFaction.MyName + ", " + reputationAmount + "): checking a disposition in my dictionary MATCHED: adding reputation"); factionDisposition.disposition += (float)reputationAmount; return; } } FactionDisposition _factionDisposition = new FactionDisposition(); _factionDisposition.factionName = factionName; _factionDisposition.disposition = Faction.RelationWith(baseCharacter, factionName) + (float)reputationAmount; MyDispositionDictionary.Add(_factionDisposition); SystemEventManager.MyInstance.NotifyOnReputationChange(); }