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;
        }
    }
Exemplo n.º 3
0
 public void Register(Faction otherF, FactionRelationship fRel)
 {
     register[otherF]      = fRel;
     otherF.register[this] = fRel;
 }
Exemplo n.º 4
0
 public IEnumerable <Faction> GetAllFactions(FactionRelationship filter)
 {
     return(register.Keys.Where(k => register[k] == filter));
 }
Exemplo n.º 5
0
    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;
                }
            }
        }
    }