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); }
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; }
/// <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)); }
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(); }
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; } }
public CreationSkillController(SkillManager skillManager, SkillEffectManager skillEffectManager) { this.skillEffectManager = skillEffectManager; this.skillManager = skillManager; }
/// <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)); }
public void Awake() { instance = this; }