Beispiel #1
0
    private bool IsSpellAlreadyCasted(SpellDefinitionTooltipData spellDefinitionTooltipData, ref bool isThisSpellActive)
    {
        Contender firstAlliedContenderFromEmpireWithUnits = spellDefinitionTooltipData.Encounter.GetFirstAlliedContenderFromEmpireWithUnits(spellDefinitionTooltipData.Empire);

        foreach (SpellDefinition spellDefinition in this.spellDefinitionDatabase)
        {
            if (DepartmentOfTheTreasury.CheckConstructiblePrerequisites(spellDefinitionTooltipData.Empire, spellDefinition, new string[]
            {
                ConstructionFlags.Prerequisite
            }))
            {
                for (int i = 0; i < spellDefinition.SpellBattleActions.Length; i++)
                {
                    StaticString       name = spellDefinition.SpellBattleActions[i].BattleActionUserDefinitionReference.Name;
                    BattleAction.State state;
                    if (firstAlliedContenderFromEmpireWithUnits.TryGetBattleActionUserState(name, out state) && state != BattleAction.State.Available)
                    {
                        isThisSpellActive = (spellDefinition.Name == spellDefinitionTooltipData.SpellDefinition.Name);
                        return(true);
                    }
                }
            }
        }
        return(false);
    }
Beispiel #2
0
    protected override IEnumerator OnShow(params object[] parameters)
    {
        SpellDefinitionTooltipData spellDefinitionTooltipData = null;

        if (this.context is SpellDefinitionTooltipData)
        {
            spellDefinitionTooltipData = (this.context as SpellDefinitionTooltipData);
        }
        this.Title.Text = string.Empty;
        if (spellDefinitionTooltipData != null)
        {
            if (!this.IsInTargeting(spellDefinitionTooltipData))
            {
                this.Title.Text = AgeLocalizer.Instance.LocalizeString("%SpellWaitForTargetingPhase");
            }
            else if (ELCPUtilities.SpellUsage_HasSpellBeenUsed(spellDefinitionTooltipData.Encounter.GUID, spellDefinitionTooltipData.Empire.Index, spellDefinitionTooltipData.SpellDefinition.Name))
            {
                this.Title.Text = AgeLocalizer.Instance.LocalizeString("%SpellActive");
            }
            else
            {
                bool flag = false;
                if (this.IsSpellAlreadyCasted(spellDefinitionTooltipData, ref flag))
                {
                    if (flag)
                    {
                        this.Title.Text = AgeLocalizer.Instance.LocalizeString("%SpellActive");
                    }
                    else
                    {
                        this.Title.Text = AgeLocalizer.Instance.LocalizeString("%SpellWaitForEndOfCurrentSpell");
                    }
                }
                else
                {
                    this.Title.Text = AgeLocalizer.Instance.LocalizeString("%SpellClickToCast");
                }
            }
        }
        yield return(base.OnShow(parameters));

        yield break;
    }
Beispiel #3
0
 private bool IsInTargeting(SpellDefinitionTooltipData spellDefinitionTooltipData)
 {
     return(spellDefinitionTooltipData.Encounter.EncounterState == EncounterState.BattleIsInProgress && spellDefinitionTooltipData.Encounter.IsInTargetingPhase());
 }