public void RemoveRelationship(Faction faction) { if (!_relationships.ContainsKey(faction.Id)) { throw new System.Exception("(id: " + Id + ") relationship not present: " + faction.Id); } FactionRelationship relationship = _relationships[faction.Id]; Relationships.Remove(relationship); _relationships.Remove(faction.Id); }
public void SetRelationship(Faction faction, float value) { value = Mathf.Clamp01(value); if (!_relationships.ContainsKey(faction.Id)) { FactionRelationship relationship = new FactionRelationship(faction, value); _relationships.Add(faction.Id, relationship); Relationships.Add(relationship); } else { _relationships[faction.Id].Value = value; } }
public void Register(Faction otherF, FactionRelationship fRel) { register[otherF] = fRel; otherF.register[this] = fRel; }
public IEnumerable <Faction> GetAllFactions(FactionRelationship filter) { return(register.Keys.Where(k => register[k] == filter)); }
public void GenerateFactionRelationships() { foreach (Faction faction in factions) { foreach (Faction f in factions) { if (f == faction) { continue; } FactionRelationship relation = new FactionRelationship(f); switch (faction.factionName) { case "Pirates": if (f.factionName == "Inter-Planetary Peace Organization") { relation.RelationState = FactionRelationship.FactionRelationState.Neutral; relation.relationshipRating = 50; relation.informationModifier = 40; relation.tradeModifier = 50; } else { relation.RelationState = FactionRelationship.FactionRelationState.Hostile; relation.relationshipRating = 25; relation.informationModifier = 25; relation.tradeModifier = 0; } faction.relationships.Add(relation); break; case "Inter-Planetary Peace Organization": if (f.Nationality == Faction.FactionNationality.Multinational) { relation.RelationState = FactionRelationship.FactionRelationState.Friendly; relation.relationshipRating = 75; relation.informationModifier = 60; relation.tradeModifier = 60; } else { relation.RelationState = FactionRelationship.FactionRelationState.Neutral; relation.relationshipRating = 50; relation.informationModifier = 40; relation.tradeModifier = 50; } faction.relationships.Add(relation); break; default: if (f.factionName == "Pirates") { relation.RelationState = FactionRelationship.FactionRelationState.Hostile; relation.relationshipRating = 25; relation.informationModifier = 25; relation.tradeModifier = 0; faction.relationships.Add(relation); break; } if (faction.Nationality == Faction.FactionNationality.Multinational) { if (f.factionName == "Inter-Planetary Peace Organization") { relation.RelationState = FactionRelationship.FactionRelationState.Friendly; relation.relationshipRating = 75; relation.informationModifier = 60; relation.tradeModifier = 60; } else { relation.RelationState = FactionRelationship.FactionRelationState.Neutral; relation.relationshipRating = 50; relation.informationModifier = 40; relation.tradeModifier = 50; } } else if (faction.Nationality != Faction.FactionNationality.Multinational) { if (f.Nationality != faction.Nationality) { relation.RelationState = FactionRelationship.FactionRelationState.Neutral; relation.relationshipRating = 40; relation.informationModifier = 15; relation.tradeModifier = 30; } else { relation.RelationState = FactionRelationship.FactionRelationState.Friendly; relation.relationshipRating = 75; relation.informationModifier = 60; relation.tradeModifier = 60; } } faction.relationships.Add(relation); break; } } } }