Пример #1
0
    override public bool Init(ObjectInitParam param)
    {
        if (!base.Init(param))
        {
            return(false);
        }

        mHomePosition.x = mPosition.x;
        mHomePosition.y = mPosition.y;
        mHomePosition.z = mPosition.z;

        mProperty = new RoleProperty();

        mActionCenter         = new BattleUnitActionCenter(this);
        mSkillContainer       = new BattleUnitSkillContainer();
        mSkillEffectManager   = new SkillEffectManager(this);
        mActiveFlagsContainer = new ActiveFlagsContainer();
        mRandEventContainer   = new BattleUnitRandEventContainer();

        mHitMaterialEffectCdContainer = new HitMaterialEffectCdContainer();

        // 默认透明度为100.
        SetBaseProperty((int)PropertyTypeEnum.PropertyTypeAlpha, 100);

        // 默认硬直抗性为100.
        SetBaseProperty((int)PropertyTypeEnum.PropertyTypeSpasticityResistance, 100);

        SetBaseProperty((int)PropertyTypeEnum.PropertyTypeScale_Rate, 100);

        return(true);
    }
Пример #2
0
 public SkillView(HomeView homeview, SkillManager skillManager, SkillEffectManager skillEffectManager, SkillEffectView skillEffectView)
 {
     this.homeview           = homeview;
     this.skillManager       = skillManager;
     this.skillEffectView    = skillEffectView;
     this.adapter            = new CreationSkillController(skillManager, skillEffectManager);
     homeview.CallSkillView += CreatNewSkillView;
 }
Пример #3
0
    /// <summary>
    /// 添加技能效果.
    /// </summary>
    /// <param name="attackerAttr">添加者的属性</param>
    /// <param name="effectManager">被添加者的技能效果控制器</param>
    /// <param name="type">效果类型</param>
    /// <param name="resID">效果ID</param>
    /// <returns></returns>
    public static ErrorCode StartSkillEffect(AttackerAttr attackerAttr,
                                             SkillEffectManager effectManager,
                                             SkillEffectType type,
                                             uint resID
                                             )
    {
        if (effectManager == null)
        {
            return(ErrorCode.LogicError);
        }

        SkillEffect          effect = null;
        SkillEffectInitParam param  = null;

        switch (type)
        {
        case SkillEffectType.Buff:
            effect = effectManager.FindSkillEffectByPredicate(new SkillUtilities.FindBuffByResource(resID));

            // 存在相同的buff, 进行叠加.
            if (effect != null)
            {
                return((effect as SkillBuff).AddStack());
            }

            // 不存在相同的buff, 创建buff.
            param = new SkillBuffInitParam(effectManager.Owner, attackerAttr, resID);

            // 移除所有与新buff互斥的效果.
            uint mutex = ((SkillBuffInitParam)param).buffResource.mutex;
            if (mutex != uint.MaxValue)
            {
                effectManager.ForEverySkillEffect(new SkillUtilities.KillMutuallyExclusiveSkillBuff(mutex));
            }
            break;

        case SkillEffectType.Impact:
            // 创建impact.
            param = new SkillImpactInitParam(effectManager.Owner, attackerAttr, resID);
            break;

        default:
            ErrorHandler.Parse(ErrorCode.ConfigError, "invalid skilleffect type " + (uint)type);
            break;
        }

        return(effectManager.CreateSkillEffect(param));
    }
Пример #4
0
        static void Main(string[] args)
        {
            Console.SetWindowSize(120, 40);
            GameLoop           game               = new GameLoop();
            HomeView           homeview           = new HomeView();
            SkillEffectManager skillEffectManager = new SkillEffectManager();
            SkillManager       skillManager       = new SkillManager();
            SkillEffectView    skillEffectView    = new SkillEffectView(homeview, skillEffectManager);
            CharacterManager   characterManager   = new CharacterManager();
            SkillView          skillView          = new SkillView(homeview, skillManager, skillEffectManager, skillEffectView);
            CharacterView      characterView      = new CharacterView(characterManager, skillManager, homeview, skillView);
            BattleController   battleController   = new BattleController();
            BattleView         battleView         = new BattleView(homeview, characterView, battleController, characterManager);

            homeview.ShowListFunction();
            Console.ReadKey();
        }
Пример #5
0
    override public void Destroy()
    {
        if (mBattleUintAI != null)
        {
            mBattleUintAI.Destory();
            mBattleUintAI = null;
        }

        if (mActionCenter != null)
        {
            mActionCenter.Destroy();
            mActionCenter = null;
        }

        if (mSkillEffectManager != null)
        {
            SkillDetails.OnSkillEffectOwnerEvent(mSkillEffectManager, SkillEffectOwnerEventDef.OwnerLeaveScene);
            mSkillEffectManager.Destroy();
            mSkillEffectManager = null;
        }

        mActiveFlagsContainer = null;
        mRandEventContainer   = null;

        mHitMaterialEffectCdContainer = null;

        mProperty = null;

        mUIShield = null;

        base.Destroy();



        for (int i = 0; i < mAttachMents.Length; ++i)
        {
            AttachMent attach = mAttachMents[i];
            if (attach != null && attach.visual != null)
            {
                attach.visual.Destroy();
            }
            mAttachMents[i] = null;
        }
    }
Пример #6
0
 public CreationSkillController(SkillManager skillManager, SkillEffectManager skillEffectManager)
 {
     this.skillEffectManager = skillEffectManager;
     this.skillManager       = skillManager;
 }
Пример #7
0
 /// <summary>
 /// 当skilleffect的owner发生事件时, 检查并移除skilleffect.
 /// </summary>
 /// <param name="effectManager"></param>
 /// <param name="ownerEvent"></param>
 public static void OnSkillEffectOwnerEvent(SkillEffectManager effectManager, SkillEffectOwnerEventDef ownerEvent)
 {
     effectManager.ForEverySkillEffect(new SkillUtilities.KillSkillEffectOnOwnerEvent(ownerEvent));
 }
Пример #8
0
 public void Awake()
 {
     instance = this;
 }