public void SetActive(UniquePowerModifierData uniquePowerModifierData)
    {
        // save UPM data
        this.uniquePowerModifierData = uniquePowerModifierData;
        // update current duration left value
        UpdateDurationLeftText();
        // get UPM UI config
        UniquePowerModifierConfig uniquePowerModifierConfig = uniquePowerModifierData.GetUniquePowerModifierConfig();

        // update text button colors
        textButton.NormalColor      = uniquePowerModifierConfig.UniquePowerModifierStausIconUIConfig.statusIconTextNormalColor;
        textButton.HighlightedColor = uniquePowerModifierConfig.UniquePowerModifierStausIconUIConfig.statusIconTextHighlightedColor;
        textButton.PressedColor     = uniquePowerModifierConfig.UniquePowerModifierStausIconUIConfig.statusIconTextPressedColor;
        textButton.DisabledColor    = uniquePowerModifierConfig.UniquePowerModifierStausIconUIConfig.statusIconTextDisabledColor;
        // update text current color
        symbolText.color = textButton.NormalColor;
        // update text symbol
        symbolText.text = uniquePowerModifierConfig.UniquePowerModifierStausIconUIConfig.symbol;
        // update background image color
        backgroundImage.color = uniquePowerModifierConfig.UniquePowerModifierStausIconUIConfig.statusIconBackgroundColor;
        // activate game object
        gameObject.SetActive(true);
        // Start animation
        CoroutineQueueManager.Run(FadeBackground());
    }
 public void OnUniquePowerModifierPowerHasBeenChanged(UniquePowerModifierData uniquePowerModifierData)
 {
     // verify if this is the same as this UPM data
     if (uniquePowerModifierData.UniquePowerModifierID == this.uniquePowerModifierData.UniquePowerModifierID)
     {
         Debug.Log(".. Display on UPM Power change animation");
     }
 }
 public void OnUniquePowerModifierHasBeenTriggeredEvent(UniquePowerModifierData uniquePowerModifierData)
 {
     // verify if this is the same as this UPM data
     if (uniquePowerModifierData.UniquePowerModifierID == this.uniquePowerModifierData.UniquePowerModifierID)
     {
         Debug.Log(".. Display on UPM has been triggered animation");
         // Start animation
         StartCoroutine(FadeBackground());
     }
 }
 public void OnUniquePowerModifierHasBeenRemovedEvent(UniquePowerModifierData uniquePowerModifierData)
 {
     // verify if this is the same as this UPM data
     if (uniquePowerModifierData.UniquePowerModifierID == this.uniquePowerModifierData.UniquePowerModifierID)
     {
         // Remove this UPM status icon
         Debug.Log("Remove this UPM status icon");
         // Do it via coroutine and global queue, to make sure that it is removed after all other animation has finished
         CoroutineQueueManager.Run(RemoveThisStatusIcon());
     }
 }
    //public override void Apply(InventoryItem inventoryItem, PartyUnit dstPartyUnit, UniquePowerModifierConfig uniquePowerModifierConfig, UniquePowerModifierID uniquePowerModifierID)
    //{
    //    throw new System.NotImplementedException();
    //}

    void ValidateTriggerCondition(UniquePowerModifierData uniquePowerModifierData)
    {
        // get unique power modifier config
        UniquePowerModifierConfig uniquePowerModifierConfig = uniquePowerModifierData.GetUniquePowerModifierConfig();

        // validate if condition has been configured correctly
        if (uniquePowerModifierConfig.TriggerCondition != TriggerCondition.NonePassive)
        {
            Debug.LogWarning("Trigger condition should be set to None Passive for this UPM");
        }
    }
 public void OnUniquePowerModifierDurationHasChanged(UniquePowerModifierData uniquePowerModifierData)
 {
     // verify if this is the same as this UPM data
     if (uniquePowerModifierData.UniquePowerModifierID == this.uniquePowerModifierData.UniquePowerModifierID)
     {
         Debug.Log(".. Display on UPM Duration has changed animation");
         // update current duration left value
         UpdateDurationLeftText();
         // display animation
         StartCoroutine(BlinkText(durationLeftText, config.blinkTextDuration, config.blinkTextTransparencyThreshold));
     }
 }
    void Apply(PartyUnit srcPartyUnit, PartyUnit dstPartyUnit, UniquePowerModifierConfig uniquePowerModifierConfig, UniquePowerModifierID uniquePowerModifierID)
    {
        Debug.Log("Applying " + uniquePowerModifierConfig.DisplayName + " DoT " + " from " + srcPartyUnit.UnitName + " to " + dstPartyUnit.UnitName + ", origin is " + uniquePowerModifierID.modifierOrigin);
        // init upm data variable (this is required for game save / restore)
        UniquePowerModifierData uniquePowerModifierData = new UniquePowerModifierData
        {
            // set UPM ID
            UniquePowerModifierID = uniquePowerModifierID,
            // rest upm duration left to max duration
            DurationLeft = uniquePowerModifierConfig.UpmDurationMax,
            // set upm current power based on source unit stats upgrades count
            //CurrentPower = uniquePowerModifierConfig.GetUpmCurrentPower(srcPartyUnit.StatsUpgradesCount)
            CurrentPower = uniquePowerModifierConfig.GetUpmEffectivePower(srcPartyUnit)
        };

        // Apply UPM to the unit
        ApplyUPMData(uniquePowerModifierData, dstPartyUnit, uniquePowerModifierConfig, uniquePowerModifierID);
        //// find upm with the same modifier in the list of upms on destination party unit
        //UniquePowerModifierData sameUPM = dstPartyUnit.AppliedUniquePowerModifiersData.Find(e => (e.UniquePowerModifierID == uniquePowerModifierID));
        //// verify if the same UPM has already been found or applied (not null)
        //if (sameUPM != null)
        //{
        //    // verify if duration is not max already
        //    if (sameUPM.DurationLeft != uniquePowerModifierConfig.UpmDurationMax)
        //    {
        //        // reset existing UPM duration to max
        //        sameUPM.DurationLeft = uniquePowerModifierConfig.UpmDurationMax;
        //        // raise an event
        //        //uniquePowerModifierDurationHasBeenResetToMaxEvent.Raise(sameUPM);
        //        Events.DurationHasBeenResetToMaxEvent.Raise(sameUPM);
        //    }
        //    // verify if power is different
        //    if (sameUPM.CurrentPower != upmData.CurrentPower)
        //    {
        //        // reset its power to current power (in case power of source party unit has changed over time)
        //        sameUPM.CurrentPower = upmData.CurrentPower;
        //        // raise an event
        //        //uniquePowerModifierPowerHasBeenChangedEvent.Raise(sameUPM);
        //        Events.PowerHasBeenChangedEvent.Raise(sameUPM);
        //    }
        //}
        //else
        //{
        //    // add new upm data to the list of upms on the destination unit
        //    dstPartyUnit.AppliedUniquePowerModifiersData.Add(upmData);
        //    // raise an event
        //    //uniquePowerModifierDataHasBeenAddedEvent.Raise(dstPartyUnit.gameObject);
        //    Events.DataHasBeenAddedEvent.Raise(dstPartyUnit.gameObject);
        //}
    }
    //public override void Apply(InventoryItem inventoryItem, PartyUnit dstPartyUnit, UniquePowerModifierConfig uniquePowerModifierConfig, UniquePowerModifierID uniquePowerModifierID)
    //{
    //    throw new System.NotImplementedException();
    //}

    public override void Trigger(PartyUnit dstPartyUnit, UniquePowerModifierData uniquePowerModifierData)
    {
        Debug.Log("Trigger " + uniquePowerModifierData.GetOriginDisplayName() + " UPM");
        // Apply DoT (UPM) current power as damage to destination unit
        dstPartyUnit.UnitHealthCurr += uniquePowerModifierData.CurrentPower; // current power is negative if it is damage dealing ability
        // Decrement DoT current duration
        uniquePowerModifierData.DurationLeft -= 1;
        // note: order is important. Trigger should be last, because it may also remove UPM status icon
        // Trigger on duration changed event
        //uniquePowerModifierDurationHasChangedEvent.Raise(uniquePowerModifierData);
        Events.DurationHasChangedEvent.Raise(uniquePowerModifierData);
        // Trigger on UPM has been triggered
        //uniquePowerModifierHasBeenTriggeredEvent.Raise(uniquePowerModifierData);
        Events.HasBeenTriggeredEvent.Raise(uniquePowerModifierData);
    }
 public override void Trigger(PartyUnit dstPartyUnit, UniquePowerModifierData uniquePowerModifierData)
 {
     Debug.Log("Trigger " + uniquePowerModifierData.GetOriginDisplayName() + " UPM");
     // .. just in case
     ValidateTriggerCondition(uniquePowerModifierData);
     // Decrement current duration
     uniquePowerModifierData.DurationLeft -= 1;
     // note: order is important. Trigger should be last, because it may also remove UPM status icon
     // Trigger on duration changed event
     //uniquePowerModifierDurationHasChangedEvent.Raise(uniquePowerModifierData);
     Events.DurationHasChangedEvent.Raise(uniquePowerModifierData);
     // Trigger on UPM has been triggered
     //uniquePowerModifierHasBeenTriggeredEvent.Raise(uniquePowerModifierData);
     Events.HasBeenTriggeredEvent.Raise(uniquePowerModifierData);
 }
    void Apply(InventoryItem inventoryItem, PartyUnit dstPartyUnit, UniquePowerModifierConfig uniquePowerModifierConfig, UniquePowerModifierID uniquePowerModifierID)
    {
        Debug.LogWarning("Applying " + uniquePowerModifierConfig.DisplayName + " from " + inventoryItem.ItemName + " to " + dstPartyUnit.UnitName + ", origin is " + uniquePowerModifierID.modifierOrigin);
        // init upm data variable (this is required for Trigger)
        UniquePowerModifierData uniquePowerModifierData = new UniquePowerModifierData
        {
            // set UPM ID
            UniquePowerModifierID = uniquePowerModifierID,
            // rest upm duration left to max duration
            DurationLeft = uniquePowerModifierConfig.UpmDurationMax,
            // set upm current power based on source unit stats upgrades count
            //CurrentPower = uniquePowerModifierConfig.GetUpmCurrentPower(srcPartyUnit.StatsUpgradesCount)
            CurrentPower = uniquePowerModifierConfig.GetUpmEffectivePower(inventoryItem)
        };

        // Apply UPM to the unit
        ApplyUPMData(uniquePowerModifierData, dstPartyUnit, uniquePowerModifierConfig, uniquePowerModifierID);
    }
Exemple #11
0
 public void OnUniquePowerModifierDataHasBeenAdded(PartyUnit partyUnit)
 {
     // verify if this is the same party unit
     if (partyUnit == LPartyUnit)
     {
         Debug.Log("Add new UPM");
         // get added UPM (get last UPM from the list)
         UniquePowerModifierData uniquePowerModifierData = partyUnit.AppliedUniquePowerModifiersData[partyUnit.AppliedUniquePowerModifiersData.Count - 1];
         // verify if UPM has status icon config
         if (!(uniquePowerModifierData.GetUniquePowerModifierConfig().UniquePowerModifierStausIconUIConfig is UniquePowerModifierStatusIconNoneUIConfig))
         {
             // init parent transform
             Transform upmStatusIconParent;
             // get upm alignment
             UniquePowerModifierAlignment uniquePowerModifierAlignment = uniquePowerModifierData.GetUniquePowerModifierConfig().UniquePowerModifierStausIconUIConfig.uniquePowerModifierAlignment;
             // verify if UPM is buff or debuff
             if (uniquePowerModifierAlignment == UniquePowerModifierAlignment.Left)
             {
                 upmStatusIconParent = upmBuffsParentTranform;
             }
             else if (uniquePowerModifierAlignment == UniquePowerModifierAlignment.Right)
             {
                 upmStatusIconParent = upmDebuffsParentTranform;
             }
             else if (uniquePowerModifierAlignment == UniquePowerModifierAlignment.None)
             {
                 upmStatusIconParent = upmBuffsParentTranform;
                 Debug.LogWarning("UPM Status Icon UI Config should have alignment set. Falling back to positive alignment");
             }
             else
             {
                 Debug.LogError("Unhandled condition");
                 // exit without creating UPM status icon
                 return;
             }
             // create UI for added UPM based on UPM config
             UniquePowerModifierStatusIcon uniquePowerModifierStatusIcon = Instantiate(uniquePowerModifierStatusIconTemplate.gameObject, upmStatusIconParent).GetComponent <UniquePowerModifierStatusIcon>();
             // activate new UPM
             uniquePowerModifierStatusIcon.SetActive(uniquePowerModifierData);
         }
     }
 }
    void ApplyUPMData(UniquePowerModifierData uniquePowerModifierData, PartyUnit dstPartyUnit, UniquePowerModifierConfig uniquePowerModifierConfig, UniquePowerModifierID uniquePowerModifierID)
    {
        // .. just in case
        ValidateTriggerCondition(uniquePowerModifierData);
        // find upm with the same modifier in the list of upms on destination party unit
        UniquePowerModifierData sameUPM = dstPartyUnit.AppliedUniquePowerModifiersData.Find(e => (e.UniquePowerModifierID == uniquePowerModifierID));

        // verify if the same UPM has already been found or applied (not null)
        if (sameUPM != null)
        {
            // verify if duration is not max already
            if (sameUPM.DurationLeft != uniquePowerModifierConfig.UpmDurationMax)
            {
                // reset existing UPM duration to max
                sameUPM.DurationLeft = uniquePowerModifierConfig.UpmDurationMax;
                // raise an event
                //uniquePowerModifierDurationHasBeenResetToMaxEvent.Raise(sameUPM);
                Events.DurationHasBeenResetToMaxEvent.Raise(sameUPM);
            }
            // verify if power is different
            if (sameUPM.CurrentPower != uniquePowerModifierData.CurrentPower)
            {
                // reset its power to current power (in case power of source party unit has changed over time)
                sameUPM.CurrentPower = uniquePowerModifierData.CurrentPower;
                // raise an event
                //uniquePowerModifierPowerHasBeenChangedEvent.Raise(sameUPM);
                Events.PowerHasBeenChangedEvent.Raise(sameUPM);
            }
        }
        else
        {
            // add new upm data to the list of upms on the destination unit
            dstPartyUnit.AppliedUniquePowerModifiersData.Add(uniquePowerModifierData);
            // raise an event
            //uniquePowerModifierDataHasBeenAddedEvent.Raise(dstPartyUnit.gameObject);
            Events.DataHasBeenAddedEvent.Raise(dstPartyUnit.gameObject);
        }
    }
    void Apply(PartyUnit srcPartyUnit, PartyUnit dstPartyUnit, UniquePowerModifierConfig uniquePowerModifierConfig, UniquePowerModifierID uniquePowerModifierID)
    {
        Debug.LogWarning("Applying " + uniquePowerModifierConfig.DisplayName + " from " + srcPartyUnit.UnitName + " to " + dstPartyUnit.UnitName + ", origin is " + uniquePowerModifierID.modifierOrigin);
        // init upm data variable (this is required for Trigger)
        UniquePowerModifierData uniquePowerModifierData = new UniquePowerModifierData
        {
            // set UPM ID
            UniquePowerModifierID = uniquePowerModifierID,
            // rest upm duration left to max duration
            DurationLeft = uniquePowerModifierConfig.UpmDurationMax,
            // set upm current power based on source unit stats upgrades count
            //CurrentPower = uniquePowerModifierConfig.GetUpmCurrentPower(srcPartyUnit.StatsUpgradesCount)
            CurrentPower = uniquePowerModifierConfig.GetUpmEffectivePower(srcPartyUnit)
        };

        // validate if it is really instant UPM (max duration) is 0
        // .. idea: do it in editor with warning highlight
        if (uniquePowerModifierConfig.UpmDurationMax != 0)
        {
            Debug.LogWarning("UpmDurationMax should be 0");
        }
        // instantly trigger UPM
        Trigger(dstPartyUnit, uniquePowerModifierData);
    }
Exemple #14
0
 public override void Trigger(PartyUnit dstPartyUnit, UniquePowerModifierData uniquePowerModifierData)
 {
     // This type of UPM is calculated automatically based on UPMs inheritance and propagation
 }
 // not used
 public override void Trigger(PartyUnit dstPartyUnit, UniquePowerModifierData uniquePowerModifierData)
 {
     throw new NotImplementedException();
 }
Exemple #16
0
    //public void Apply(InventoryItem inventoryItem, PartyUnit dstPartyUnit, UniquePowerModifierID uniquePowerModifierID)
    //{
    //    UniquePowerModifier.Apply(inventoryItem, dstPartyUnit, this, uniquePowerModifierID);
    //}

    public void Trigger(PartyUnit dstPartyUnit, UniquePowerModifierData uniquePowerModifierData)
    {
        UniquePowerModifier.Trigger(dstPartyUnit, uniquePowerModifierData);
    }
 public override void Trigger(PartyUnit dstPartyUnit, UniquePowerModifierData uniquePowerModifierData)
 {
     Debug.Log("Trigger " + uniquePowerModifierData.GetOriginDisplayName() + " UPM");
     // Apply upm current power to destination unit
     dstPartyUnit.UnitHealthCurr += uniquePowerModifierData.CurrentPower; // current power is negative if it is damage dealing ability
 }
 public abstract void Trigger(PartyUnit dstPartyUnit, UniquePowerModifierData uniquePowerModifierData);