Ejemplo n.º 1
0
 public void AddDiplomaticAbility(DiplomaticAbility diplomaticAbility)
 {
     if (diplomaticAbility == null)
     {
         throw new ArgumentNullException("diplomaticAbility");
     }
     if (this.HasAbility(diplomaticAbility.Name))
     {
         return;
     }
     Diagnostics.Assert(this.diplomaticAbilities != null);
     this.diplomaticAbilities.Add(diplomaticAbility);
     diplomaticAbility.IsActive = true;
 }
Ejemplo n.º 2
0
    private bool CheckAbilityPrerequisites(DiplomaticAbility diplomaticAbility, params string[] flags)
    {
        if (diplomaticAbility == null || diplomaticAbility.Definition == null)
        {
            throw new ArgumentNullException();
        }
        if (diplomaticAbility.Definition.DiplomaticPrerequisites == null)
        {
            return(true);
        }
        IGameService service = Services.GetService <IGameService>();
        global::Game game    = service.Game as global::Game;

        return(game == null || game.Empires == null || (diplomaticAbility.Definition.CheckDiplomaticAbilityPrerequisites(game.Empires[this.OwnerEmpireIndex], game.Empires[this.OtherEmpireIndex]) && diplomaticAbility.Definition.CheckPrerequisites(game.Empires[this.OwnerEmpireIndex])));
    }
Ejemplo n.º 3
0
    public int GetAbilityActivationTurn(StaticString abilityName)
    {
        if (StaticString.IsNullOrEmpty(abilityName))
        {
            throw new ArgumentNullException("abilityName");
        }
        Diagnostics.Assert(this.diplomaticAbilities != null);
        DiplomaticAbility diplomaticAbility = this.diplomaticAbilities.Find((DiplomaticAbility match) => match.Name == abilityName);

        if (diplomaticAbility == null)
        {
            return(-1);
        }
        return(diplomaticAbility.ActivationTurn);
    }
Ejemplo n.º 4
0
    public bool HasInactiveAbility(StaticString abilityName)
    {
        if (StaticString.IsNullOrEmpty(abilityName))
        {
            throw new ArgumentNullException("abilityName");
        }
        Diagnostics.Assert(this.diplomaticAbilities != null);
        int count = this.diplomaticAbilities.Count;

        for (int i = 0; i < count; i++)
        {
            DiplomaticAbility diplomaticAbility = this.diplomaticAbilities[i];
            if (diplomaticAbility.Name == abilityName)
            {
                return(!diplomaticAbility.IsActive);
            }
        }
        return(false);
    }
Ejemplo n.º 5
0
    void IDiplomaticRelationManagment.AddDiplomaticAbility(DiplomaticAbilityDefinition diplomaticAbilityDefinition)
    {
        if (diplomaticAbilityDefinition == null)
        {
            throw new ArgumentNullException("diplomaticAbilityDefinition");
        }
        if (this.HasAbility(diplomaticAbilityDefinition.Name))
        {
            return;
        }
        IGameService service = Services.GetService <IGameService>();

        Diagnostics.Assert(service != null);
        global::Game game = service.Game as global::Game;

        Diagnostics.Assert(game != null);
        DiplomaticAbility diplomaticAbility = new DiplomaticAbility(diplomaticAbilityDefinition, game.Turn);

        Diagnostics.Assert(this.diplomaticAbilities != null);
        this.diplomaticAbilities.Add(diplomaticAbility);
        diplomaticAbility.IsActive = true;
    }
Ejemplo n.º 6
0
    public virtual void ReadXml(XmlReader reader)
    {
        int num = reader.ReadVersionAttribute();

        reader.ReadStartElement();
        this.OwnerEmpireIndex = reader.ReadElementString <int>("OwnerEmpireIndex");
        this.OtherEmpireIndex = reader.ReadElementString <int>("OtherEmpireIndex");
        string text = reader.ReadElementString <string>("State");

        if (string.IsNullOrEmpty(text))
        {
            this.State = null;
            Diagnostics.Assert(this.OwnerEmpireIndex == this.OtherEmpireIndex);
        }
        else
        {
            IDatabase <DiplomaticRelationState> database = Databases.GetDatabase <DiplomaticRelationState>(false);
            DiplomaticRelationState             state;
            if (!database.TryGetValue(text, out state))
            {
                Diagnostics.LogError("Can't retrieve diplomatic relation state {0} from database.", new object[]
                {
                    text
                });
            }
            this.State = state;
        }
        this.TurnAtTheBeginningOfTheState = reader.ReadElementString <int>("TurnAtTheBeginningOfTheState");
        int attribute = reader.GetAttribute <int>("Count");

        reader.ReadStartElement("DiplomaticAbilities");
        if (num >= 3)
        {
            for (int i = 0; i < attribute; i++)
            {
                DiplomaticAbility diplomaticAbility = new DiplomaticAbility();
                reader.ReadElementSerializable <DiplomaticAbility>(ref diplomaticAbility);
                ((IDiplomaticRelationManagment)this).AddDiplomaticAbility(diplomaticAbility);
            }
        }
        else
        {
            IDatabase <DiplomaticAbilityDefinition> database2 = Databases.GetDatabase <DiplomaticAbilityDefinition>(false);
            for (int j = 0; j < attribute; j++)
            {
                string text2 = reader.ReadElementString <string>("DiplomaticAbility");
                if (text2 == "PassOverArmies")
                {
                    text2 = DiplomaticAbilityDefinition.PassThroughArmies;
                }
                if (text2 == "VisionAndMapExchange")
                {
                    text2 = DiplomaticAbilityDefinition.VisionExchange;
                }
                DiplomaticAbilityDefinition diplomaticAbilityDefinition;
                if (!database2.TryGetValue(text2, out diplomaticAbilityDefinition))
                {
                    Diagnostics.LogError("Can't retrieve the diplomatic ability {0}.", new object[]
                    {
                        text2
                    });
                }
                ((IDiplomaticRelationManagment)this).AddDiplomaticAbility(diplomaticAbilityDefinition);
            }
        }
        reader.ReadEndElement("DiplomaticAbilities");
        if (num >= 2)
        {
            this.score = new DiplomaticRelationScore(1f, -100f, 100f);
            reader.ReadElementSerializable <DiplomaticRelationScore>(ref this.score);
        }
        IEndTurnService service = Services.GetService <IEndTurnService>();

        this.RelationDuration = (float)(service.Turn - this.TurnAtTheBeginningOfTheState);
    }