Example #1
0
    bool IDiplomaticRelationManagment.RemoveDiplomaticAbility(DiplomaticAbilityDefinition diplomaticAbilityDefinition)
    {
        if (diplomaticAbilityDefinition == null)
        {
            throw new ArgumentNullException("diplomaticAbilityDefinition");
        }
        Diagnostics.Assert(this.diplomaticAbilities != null);
        int num = 0;

        for (int i = 0; i < this.diplomaticAbilities.Count; i++)
        {
            if (this.diplomaticAbilities[i].Definition.Name == diplomaticAbilityDefinition.Name)
            {
                this.diplomaticAbilities[i].IsActive = false;
                this.diplomaticAbilities.RemoveAt(i);
                num++;
            }
        }
        if (num > 0)
        {
            Diagnostics.Log("Diplomatic relation between empire {0} and empire {1}: Remove ability {2}", new object[]
            {
                this.OwnerEmpireIndex,
                this.OtherEmpireIndex,
                diplomaticAbilityDefinition.Name
            });
            return(true);
        }
        return(false);
    }
Example #2
0
    public void RefreshDiplomaticAbilities()
    {
        IGameService service = Services.GetService <IGameService>();
        global::Game game    = service.Game as global::Game;

        Diagnostics.Assert(game != null);
        int count = this.diplomaticAbilities.Count;

        for (int i = 0; i < count; i++)
        {
            DiplomaticAbilityDefinition definition = this.diplomaticAbilities[i].Definition;
            if (definition != null)
            {
                bool flag = definition.CheckDiplomaticAbilityPrerequisites(game.Empires[this.OwnerEmpireIndex], game.Empires[this.OtherEmpireIndex]) && definition.CheckPrerequisites(game.Empires[this.OwnerEmpireIndex]);
                if (flag != this.diplomaticAbilities[i].IsActive)
                {
                    if (this.diplomaticAbilities[i].IsActive)
                    {
                        this.diplomaticAbilities[i].IsActive = false;
                        this.UpdateEmpireDiplomaticAbilityDescriptor(definition, game.Empires[this.OwnerEmpireIndex], false);
                    }
                    else
                    {
                        this.diplomaticAbilities[i].IsActive = true;
                        this.UpdateEmpireDiplomaticAbilityDescriptor(definition, game.Empires[this.OwnerEmpireIndex], true);
                    }
                }
            }
        }
    }
Example #3
0
 private void UpdateEmpireDiplomaticAbilityDescriptor(DiplomaticAbilityDefinition diplomaticAbilityDefinition, global::Empire empire, bool isAddOperation)
 {
     if (diplomaticAbilityDefinition == null || diplomaticAbilityDefinition.Descriptors == null)
     {
         return;
     }
     for (int i = 0; i < diplomaticAbilityDefinition.Descriptors.Length; i++)
     {
         SimulationDescriptor descriptor = diplomaticAbilityDefinition.Descriptors[i];
         if (isAddOperation)
         {
             empire.AddDescriptor(descriptor, false);
         }
         else
         {
             empire.RemoveDescriptor(descriptor);
         }
     }
     empire.Refresh(false);
 }
Example #4
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;
    }