Beispiel #1
0
    private void AttemptApplyEffect(Unit target, UnitEffect effect)
    {
        //Make copy
        UnitEffect copy = MakeCopy(effect, target);

        MDebug.Log("^effectsAttempt Apply \n" + copy.ToString() + "  by " + copy.Instigator);

        if (CanApplyEffect(target, copy) && target.GetComponent <Unit_EffectManager>().ApplyEffect(copy))
        {
            TurnSystem.Instance.OnGlobalTurn += copy.OnGlobalTurn;

            if (VFX_Applied != null)
            {
                VFX_Applied.Init(target.currentTile.gameObject);
            }


            if (TickOnApply)
            {
                copy.EffectTick();
            }
        }
        else
        {
            Destroy(copy.gameObject);
        }
    }
Beispiel #2
0
    /// <summary>
    /// clones itself to the target
    /// </summary>
    /// <param name="target"></param>
    public override UnitEffect MakeCopy(UnitEffect origin, Unit host)
    {
        UnitEffect_ModifyStat _cc_modstat = base.MakeCopy(origin, host) as UnitEffect_ModifyStat;

        _cc_modstat._baked = _cc_modstat.GetBaked();
        return(_cc_modstat);
    }
    /// <summary>
    /// clones itself to the target
    /// </summary>
    /// <param name="target"></param>
    public override UnitEffect MakeCopy(UnitEffect origin, Unit host)
    {
        UnitEffect_GainAdrenaline _cc_adr = base.MakeCopy(origin, host) as UnitEffect_GainAdrenaline;

        _cc_adr.baked_adrenaline = Constants.GetGainedAdrenaline(host.Stats, Rolls);

        return(_cc_adr);
    }
Beispiel #4
0
    public bool ApplyEffect(UnitEffect effect)
    {
        if (!m_Unit.IsDead() && AddEffect(effect))
        {
            return(true);
        }

        return(false);
    }
Beispiel #5
0
 void SpawnEffectAppliedNotification(UnitEffect effect)
 {
     if (!effect.ShowApplyNotification)
     {
         return;
     }
     EventNotification.SpawnEffectNotification(EffectNotifactionPrefab, EffectNotificationsContainer, effect, effect.GetShortHandle() + " applied");
     EnableUnitUI();
 }
Beispiel #6
0
    public void SetDamage(Unit instigator, Unit target, UnitEffect effect)
    {
        //  MDebug.Log("assad");
        gameObject.SetActive(true);

        effect.SetPreview(this, target);

        GetComponent <UI_WorldPos>().SetWorldPosObject(target.transform);
    }
Beispiel #7
0
    UI_EffectItemView MakeNewView(UnitEffect item, Transform target)
    {
        //   MDebug.Log(item.Unique_ID);
        UI_EffectItemView view1 = Instantiate(Prefab).GetComponent <UI_EffectItemView>();

        view1.SetEffect(item);
        view1.transform.SetParent(target, false);
        return(view1);
    }
Beispiel #8
0
    /// <summary>
    /// clones itself to the target
    /// </summary>
    /// <param name="target"></param>
    public override UnitEffect MakeCopy(UnitEffect origin, Unit host)
    {
        UnitEffect_Damage _cc = base.MakeCopy(origin, host) as UnitEffect_Damage;

        _cc.baked_damage = UnityEngine.Random.Range(GetMin(), GetMax() + 1);


        return(_cc);
    }
Beispiel #9
0
    void SpawnEffectExpiredNotification(UnitEffect effect)
    {
        if (!effect.ShowRemoveNotification)
        {
            return;
        }

        EventNotification.SpawnEffectNotification(EffectNotifactionPrefab, EffectNotificationsContainer, effect, effect.GetShortHandle() + " removed");
        EnableUnitUI();
    }
Beispiel #10
0
    public virtual UnitEffect MakeCopy(UnitEffect origin, Unit host)
    {
        UnitEffect _cc = origin.gameObject.Instantiate(host.transform, true).GetComponent <UnitEffect>();

        _cc.Instigator  = Instigator;
        _cc.name        = Unique_ID + "_copy";
        _cc.Effect_Host = host;
        _cc.isCopy      = true;

        return(_cc);
    }
Beispiel #11
0
 private void dgEffects_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (dgEffects.SelectedItem is UnitEffect)
     {
         UnitEffect effect = (UnitEffect)dgEffects.SelectedItem;
         if (effect.ModelRepresentation is ModelVisual3D)
         {
             // manipulator.Bind(effect.ModelRepresentation);
             contentHolder.Content = effect;
         }
     }
 }
Beispiel #12
0
    protected override List <UnitEffect> GetEffects()
    {
        List <UnitEffect> effects = GetRegularEffects();

        UnitEffect intBonus = GetIntBonus();

        if (intBonus != null)
        {
            effects.Add(intBonus);
        }
        return(effects);
    }
Beispiel #13
0
    void OnEffectExpired(UnitEffect effect)
    {
        if (OnEffectRemoved != null)
        {
            OnEffectRemoved(effect);
        }

        effect.OnEffectExpired -= OnEffectRemoved;
        effect.OnEffectTick    -= OnEffectTick;
        effect.OnEffectExpired -= OnEffectExpired;
        MDebug.Log("^effects EFFECT EXPIRED " + effect.ToString());
        ActiveEffects.Remove(effect);
    }
Beispiel #14
0
    public bool AddEffect(UnitEffect new_effect)
    {
        if (ActiveEffects == null)
        {
            ActiveEffects = new List <UnitEffect>();
        }


        if (!ActiveEffects.Contains(new_effect))
        {
            if (new_effect.ReplaceEffect)
            {
                UnitEffect duplicate_on_unit = GetEffect(new_effect.Unique_ID);
                if (duplicate_on_unit != null)
                {
                    int duplicate_duration = duplicate_on_unit.GetTicksAlive();
                    new_effect.SetDurationAlive(duplicate_duration);
                    new_effect.MaxDuration = duplicate_duration + new_effect.GetMaxDuration();

                    ;                    MDebug.Log("^effects Removing Duplicate " + duplicate_on_unit.ToString());
                    ActiveEffects.Remove(duplicate_on_unit);
                    Destroy(duplicate_on_unit);
                }
            }

            ActiveEffects.Add(new_effect);
            MDebug.Log("^effects Added Effect to " + m_Unit.GetID() + " \n" + new_effect.ToString());
            new_effect.OnEffectTick += OnEffectTick;

            //MDebug.Log(" EFFECT_ADDED " + new_effect.GetShortHandle());
            new_effect.OnEffectExpired += OnEffectExpired;

            if (OnEffectAdded != null)
            {
                OnEffectAdded(new_effect);
            }
            return(true);
        }
        else
        {
            MDebug.Log("^effects Already has this effect");
        }

        MDebug.Log("^effects COULD NOT ADD EFFECT " + new_effect.ToString());
        return(false);
    }
Beispiel #15
0
    /** 特效播放完毕 */
    public void effectPlayOver(UnitEffect effect)
    {
        int id = effect.id;

        int num = _effectNumDic.get(id);

        if (num <= 0)
        {
            Ctrl.throwError("出错,effect数目小于0");
            return;
        }

        _effectNumDic.put(id, --num);

        _effectList.removeObj(effect);

        effect.dispose();
        GameC.pool.unitEffectPool.back(effect);

        //场景特效
        if (_unit.type == UnitType.SceneEffect)
        {
            SceneEffectIdentityData iData = _data.getSceneEffectIdentity();

            if (iData.signedEffectID > 0)
            {
                if (id == iData.signedEffectID)
                {
                    sceneEffectOver();
                }
            }
            else
            {
                SceneEffectConfig config = SceneEffectConfig.get(iData.id);

                if (config.effectID > 0)
                {
                    sceneEffectOver();
                }
            }
        }
    }
Beispiel #16
0
    public void SetEffect(UnitEffect effect)
    {
        Description.text = effect.GetToolTipText();

        if (effect.EffectBonus > 1)
        {
            //   Description.color = UI_AdrenalineRushController.ADR_Color;
        }

        if (effect.GetMaxDuration() > 0)
        {
            DurationTF.text = effect.GetDurationLeft().ToString();
            DurationIcon.gameObject.SetActive(true);
        }
        else
        {
            //DurationIcon.gameObject.SetActive(false);
            DurationTF.text = "instant";
        }
    }
Beispiel #17
0
        public override void effectLoadOver(UnitEffect effect)
        {
            if (!_g23)
            {
                _m23 = instance.Type.GetMethod("effectLoadOver", 1);
                _g23 = true;
            }

            if (_m23 != null && !_b23)
            {
                _b23   = true;
                _p1[0] = effect;
                appdomain.Invoke(_m23, instance, _p1);
                _p1[0] = null;
                _b23   = false;
            }
            else
            {
                base.effectLoadOver(effect);
            }
        }
Beispiel #18
0
    private void toAddEffect(EffectConfig config)
    {
        int num = _effectNumDic.addValue(config.id, 1);

        //超了
        if (config.plusMax > 0 && num > config.plusMax)
        {
            return;
        }

        UnitEffect effect = GameC.pool.unitEffectPool.getOne();

        effect.setConfig(config);
        effect.setScene(_scene);
        effect.bindUnit(_unit);

        _effectList.add(effect);

        //开始
        effect.init();
    }
Beispiel #19
0
    public override void dispose()
    {
        if (_config.effectID > 0)
        {
            //绑自己的
            if (BaseC.constlist.bulletCast_isSelfHit(_levelConfig.castType))
            {
                _unit.show.removeEffect(_config.effectID);
            }
            else
            {
                if (_effect != null)
                {
                    _effect.dispose();
                    GameC.pool.unitEffectPool.back(_effect);
                    _effect = null;
                }
            }
        }

        base.dispose();
    }
Beispiel #20
0
 private void viewPort_KeyUp(object sender, KeyEventArgs e)
 {
     if (e.Key == Key.Delete)
     {
         //Delete the selected item from the list (if any)
         if (tabProps.IsSelected)
         {
             UnitBinDrawSlot selectedItem = dgProps.SelectedItem as UnitBinDrawSlot;
             viewPort.Children.Remove(selectedItem.ModelRepresentation);
             foreach (ObservableList <UnitBinDrawSlot> slotList in UnitFileEntry.UnitBinDrawSlots)
             {
                 slotList.Remove(selectedItem);
             }
         }
         if (tabEffects.IsSelected)
         {
             UnitEffect selectedItem = dgEffects.SelectedItem as UnitEffect;
             viewPort.Children.Remove(selectedItem.ModelRepresentation);
             UnitFileEntry.UnitEffects.Remove(selectedItem);
         }
         if (tabLights.IsSelected)
         {
             UnitLight selectedItem = lbLights.SelectedItem as UnitLight;
             viewPort.Children.Remove(selectedItem.ModelRepresentation);
             UnitFileEntry.UnitLights.Remove(selectedItem);
         }
         if (tabDecals.IsSelected)
         {
             UnitDecal selectedItem = dgDecals.SelectedItem as UnitDecal;
             viewPort.Children.Remove(selectedItem.ModelRepresentation);
             foreach (ObservableList <UnitDecal> slotList in UnitFileEntry.UnitBinDecals)
             {
                 slotList.Remove(selectedItem);
             }
         }
     }
 }
Beispiel #21
0
    public override void init()
    {
        base.init();

        if (_config.effectID > 0)
        {
            //绑自己的
            if (BaseC.constlist.bulletCast_isSelfHit(_levelConfig.castType))
            {
                _unit.show.addEffect(_config.effectID);
            }
            else
            {
                EffectConfig config = EffectConfig.get(_config.effectID);

                _effect = GameC.pool.unitEffectPool.getOne();
                _effect.setConfig(config);
                _effect.setScene(_scene);
                _effect.bindBullet(_bullet);

                _effect.init();
            }
        }
    }
Beispiel #22
0
    public void SetEffect(UnitEffect new_effect)
    {
        UI_ActionBar_Button_ColorSetting setting = UI_ActionBar_Button_ColorSetting.GetInstance();


        ColorSettingToolTipItem color = new_effect.EffectBonus > 1 ? setting.TT_EFF_Bonus_Active : setting.TT_EFF_Bonus_Inactive;

        BG.sprite = new_effect.TargetMode == UnitEffect.TargetModes.Owner ? Target_Owner : Target_Target;

        m_effect = new_effect;


        if (new_effect.Icon != null)
        {
            Icon.sprite = new_effect.Icon;
            Icon.color  = color.Icon;
        }


        Text.text  = new_effect.GetShortHandle();
        Text.color = color.Text;

        BG.color = color.Background;
    }
Beispiel #23
0
 void OnEffectUpdated(UnitEffect eff)
 {
     UpdateViews(GetDisplayableEffects(effects.ActiveEffects));
 }
Beispiel #24
0
 /**********************************************************************************/
 // функция добавления новых эффектов
 //
 /**********************************************************************************/
 public void SetEffect(UnitEffect.EFFECT_TYPE effectSlot, UnitEffect effect)
 {
     m_effects[effectSlot] = effect;
 }
Beispiel #25
0
    public virtual void init()
    {
        (attackDataPool = new ObjectPool <AttackData>(() => { return(new AttackData()); })).setEnable(CommonSetting.sceneLogicUsePool);

        (_fightDataLogicPool = new ObjectPool <UnitFightDataLogic>(() =>
        {
            UnitFightDataLogic logic = GameC.factory.createUnitFightDataLogic();
            logic.construct();
            return(logic);
        })).setEnable(CommonSetting.sceneLogicUsePool);

        _unitPoolDic = new ObjectPool <Unit> [UnitType.size];

        for (int i = 0; i < UnitType.size; ++i)
        {
            (_unitPoolDic[i] = createUnitPool(i)).setEnable(CommonSetting.sceneLogicUsePool);
        }

        (bulletPool = new ObjectPool <Bullet>(() =>
        {
            Bullet bullet = GameC.factory.createBullet();
            bullet.construct();
            return(bullet);
        })).setEnable(CommonSetting.sceneLogicUsePool);

        (unitEffectPool = new ObjectPool <UnitEffect>(() =>
        {
            UnitEffect effect = GameC.factory.createUnitEffect();
            effect.construct();
            return(effect);
        })).setEnable(CommonSetting.sceneLogicUsePool);

        (rolePool = new ObjectPool <Role>(() =>
        {
            Role role = GameC.factory.createRole();
            role.construct();
            return(role);
        })).setEnable(CommonSetting.sceneLogicUsePool);

        buffDataPool.setEnable(CommonSetting.sceneLogicUsePool);
        buffIntervalActionDataPool.setEnable(CommonSetting.sceneLogicUsePool);

        //logic
        _itemDataPool = new ObjectPool <ItemData> [ItemType.size];

        for (int i = 0; i < _itemDataPool.Length; ++i)
        {
            (_itemDataPool[i] = createItemDataPool(i)).setEnable(CommonSetting.logicUsePool);
        }

        TaskTypeConfig typeConfig;

        _taskDataPool = new ObjectPool <TaskData> [QuestType.size];
        (_taskDataPool[0] = createTaskDataPool(0)).setEnable(CommonSetting.logicUsePool);

        for (int i = 0; i < _taskDataPool.Length; ++i)
        {
            if ((typeConfig = TaskTypeConfig.get(i)) != null && typeConfig.needCustomTask)
            {
                (_taskDataPool[i] = createTaskDataPool(i)).setEnable(CommonSetting.logicUsePool);
            }
        }

        petUseLogicPool.setEnable(CommonSetting.logicUsePool);
    }
Beispiel #26
0
 /** 回收子弹 */
 public void releaseUnitEffect(UnitEffect effect)
 {
     unitEffectPool.back(effect);
 }
Beispiel #27
0
 Transform GetTransform(UnitEffect _for)
 {
     return(this.transform);
 }
Beispiel #28
0
 void SpawnEffectTickNotification(UnitEffect effect)
 {
     EventNotification.SpawnEffectNotification(EffectNotifactionPrefab, EffectNotificationsContainer, effect);
     EnableUnitUI();
 }
Beispiel #29
0
 /** 特效加载完毕 */
 public virtual void effectLoadOver(UnitEffect effect)
 {
 }
Beispiel #30
0
 protected virtual bool CanApplyEffect(Unit target, UnitEffect effect)
 {
     return(!target.IsDead());
 }