public static async ETVoid Execute(this ActiveSkillComponent self, string skillId) { ActiveSkillData activeSkillData = Game.Scene.GetComponent <SkillConfigComponent>().GetActiveSkill(skillId); SkillHelper.ExecuteSkillParams excuteSkillParams = new SkillHelper.ExecuteSkillParams(); excuteSkillParams.skillId = skillId; excuteSkillParams.source = self.GetParent <Unit>(); excuteSkillParams.skillLevel = 1; self.currUsingSkillId = skillId; //TODO: 暂时先直接取消之前的行动 self.cancelToken?.Cancel(); Game.EventSystem.Run(EventIdType.CancelPreAction, self.GetParent <Unit>()); CharacterStateComponent characterStateComponent = self.GetParent <Unit>().GetComponent <CharacterStateComponent>(); characterStateComponent.Set(SpecialStateType.NotInControl, true); self.cancelToken = new CancellationTokenSource(); excuteSkillParams.cancelToken = self.cancelToken; await SkillHelper.ExecuteActiveSkill(excuteSkillParams); self.cancelToken = null; characterStateComponent.Set(SpecialStateType.NotInControl, false); self.currUsingSkillId = string.Empty; }
public static bool CheckCanUse(this ActiveSkillComponent self, string skillId) { if (self.usingSkill || !self.skillList.ContainsKey(skillId) || !SkillHelper.CheckIfSkillCanUse(skillId, self.GetParent <Unit>())) { return(false); } return(true); }
public static BaseSkill_AppendedData GetSkillAppendedData(this ActiveSkillComponent self, string skillId) { if (self.skillList.TryGetValue(skillId, out var data)) { return(data); } else { return(null); } }
public static void LoadAssets(Unit unit) { EffectCacheComponent effectCacheComponent = Game.Scene.GetComponent <EffectCacheComponent>(); AudioCacheComponent audioCacheComponent = Game.Scene.GetComponent <AudioCacheComponent>(); //加载和缓存特效资源 ActiveSkillComponent skillComponent = unit.GetComponent <ActiveSkillComponent>(); AddEffectCache(effectCacheComponent, audioCacheComponent, skillComponent); //TODO: 添加被动技能的 }
public static void RemoveSkill(this ActiveSkillComponent self, string skillId) { if (!self.skillList.ContainsKey(skillId)) { return; } if (skillId == self.Skill_NormalAttack) { return; } self.skillList.Remove(skillId); }
protected override void Run(ETModel.Session session, M2C_InputResult_UseSkill_Dir message) { Unit unit = ETModel.Game.Scene.GetComponent <UnitComponent>().Get(message.Id); ActiveSkillComponent activeSkillComponent = unit.GetComponent <ActiveSkillComponent>(); if (unit == UnitComponent.Instance.MyUnit) { activeSkillComponent.tcs?.SetResult(message.Success); return; } if (message.Success) { if (!SkillHelper.tempData.ContainsKey((unit, message.PipelineSignal))) { SkillHelper.tempData[(unit, message.PipelineSignal)] = new Dictionary <Type, IBufferValue>();
public static void AddSkill(this ActiveSkillComponent self, string skillId) { ActiveSkillData activeSkillData = Game.Scene.GetComponent <SkillConfigComponent>().GetActiveSkill(skillId); if (activeSkillData.isNormalAttack) { self.Skill_NormalAttack = skillId; } if (!self.skillList.ContainsKey(skillId)) { self.skillList.Add(skillId, new BaseSkill_AppendedData() { level = 1 }); } }
//中断可能正在执行的技能 public static void Interrupt(this ActiveSkillComponent self, TypeOfInterruption type) { //TODO: 根据当前使用技能允许的可打断类型判定打断是否可以成功 CharacterStateComponent characterStateComponent = self.GetParent <Unit>().GetComponent <CharacterStateComponent>(); if (characterStateComponent.Get(SpecialStateType.UnStoppable)) { return; // 霸体状态,打断失败 } self.cancelToken?.Cancel(); self.cancelToken = null; M2C_InterruptSkill m2c = new M2C_InterruptSkill(); m2c.Frame = Game.Scene.GetComponent <UnitStateMgrComponent>().currFrame; m2c.Id = self.GetParent <Unit>().Id; ETHotfix.MessageHelper.Broadcast(m2c); }
public static void LoadAssets(DungeonComponent dungeonCom) { EffectCacheComponent effectCacheComponent = Game.Scene.GetComponent <EffectCacheComponent>(); AudioCacheComponent audioCacheComponent = Game.Scene.GetComponent <AudioCacheComponent>(); //加载和缓存特效资源 foreach (var unit in dungeonCom.playerTeam) { ActiveSkillComponent skillComponent = unit.GetComponent <ActiveSkillComponent>(); AddEffectCache(effectCacheComponent, audioCacheComponent, skillComponent); //TODO: 添加被动技能的 } foreach (var unit in dungeonCom.enemyTeam) { ActiveSkillComponent skillComponent = unit.GetComponent <ActiveSkillComponent>(); AddEffectCache(effectCacheComponent, audioCacheComponent, skillComponent); } }
/// <summary> /// Allows the game to perform any initialization it needs to before starting to run. /// This is where it can query for any required services and load any non-graphic /// related content. Calling base.Initialize will enumerate through any components /// and initialize them as well. /// </summary> protected override void Initialize() { AggregateFactory = new AggregateFactory(this); WeaponFactory = new WeaponFactory(this); DoorFactory = new DoorFactory(this); RoomFactory = new RoomFactory(this); CollectableFactory = new CollectibleFactory(this); WallFactory = new WallFactory(this); EnemyFactory = new EnemyFactory(this); SkillEntityFactory = new SkillEntityFactory(this); NPCFactory = new NPCFactory(this); // Initialize Components PlayerComponent = new PlayerComponent(); LocalComponent = new LocalComponent(); RemoteComponent = new RemoteComponent(); PositionComponent = new PositionComponent(); MovementComponent = new MovementComponent(); MovementSpriteComponent = new MovementSpriteComponent(); SpriteComponent = new SpriteComponent(); DoorComponent = new DoorComponent(); RoomComponent = new RoomComponent(); HUDSpriteComponent = new HUDSpriteComponent(); HUDComponent = new HUDComponent(); InventoryComponent = new InventoryComponent(); InventorySpriteComponent = new InventorySpriteComponent(); ContinueNewGameScreen = new ContinueNewGameScreen(graphics, this); EquipmentComponent = new EquipmentComponent(); WeaponComponent = new WeaponComponent(); BulletComponent = new BulletComponent(); PlayerInfoComponent = new PlayerInfoComponent(); WeaponSpriteComponent = new WeaponSpriteComponent(); StatsComponent = new StatsComponent(); EnemyAIComponent = new EnemyAIComponent(); NpcAIComponent = new NpcAIComponent(); CollectibleComponent = new CollectibleComponent(); CollisionComponent = new CollisionComponent(); TriggerComponent = new TriggerComponent(); EnemyComponent = new EnemyComponent(); NPCComponent = new NPCComponent(); //QuestComponent = new QuestComponent(); LevelManager = new LevelManager(this); SpriteAnimationComponent = new SpriteAnimationComponent(); SkillProjectileComponent = new SkillProjectileComponent(); SkillAoEComponent = new SkillAoEComponent(); SkillDeployableComponent = new SkillDeployableComponent(); SoundComponent = new SoundComponent(); ActorTextComponent = new ActorTextComponent(); TurretComponent = new TurretComponent(); TrapComponent = new TrapComponent(); ExplodingDroidComponent = new ExplodingDroidComponent(); HealingStationComponent = new HealingStationComponent(); PortableShieldComponent = new PortableShieldComponent(); PortableStoreComponent = new PortableStoreComponent(); ActiveSkillComponent = new ActiveSkillComponent(); PlayerSkillInfoComponent = new PlayerSkillInfoComponent(); Quests = new List<Quest>(); #region Initialize Effect Components AgroDropComponent = new AgroDropComponent(); AgroGainComponent = new AgroGainComponent(); BuffComponent = new BuffComponent(); ChanceToSucceedComponent = new ChanceToSucceedComponent(); ChangeVisibilityComponent = new ChangeVisibilityComponent(); CoolDownComponent = new CoolDownComponent(); DamageOverTimeComponent = new DamageOverTimeComponent(); DirectDamageComponent = new DirectDamageComponent(); DirectHealComponent = new DirectHealComponent(); FearComponent = new FearComponent(); HealOverTimeComponent = new HealOverTimeComponent(); InstantEffectComponent = new InstantEffectComponent(); KnockBackComponent = new KnockBackComponent(); TargetedKnockBackComponent = new TargetedKnockBackComponent(); ReduceAgroRangeComponent = new ReduceAgroRangeComponent(); ResurrectComponent = new ResurrectComponent(); StunComponent = new StunComponent(); TimedEffectComponent = new TimedEffectComponent(); EnslaveComponent = new EnslaveComponent(); CloakComponent = new CloakComponent(); #endregion base.Initialize(); }
/// <summary> /// Allows the game to perform any initialization it needs to before starting to run. /// This is where it can query for any required services and load any non-graphic /// related content. Calling base.Initialize will enumerate through any components /// and initialize them as well. /// </summary> protected override void Initialize() { AggregateFactory = new AggregateFactory(this); WeaponFactory = new WeaponFactory(this); DoorFactory = new DoorFactory(this); RoomFactory = new RoomFactory(this); CollectableFactory = new CollectibleFactory(this); WallFactory = new WallFactory(this); EnemyFactory = new EnemyFactory(this); SkillEntityFactory = new SkillEntityFactory(this); NPCFactory = new NPCFactory(this); // Initialize Components PlayerComponent = new PlayerComponent(); LocalComponent = new LocalComponent(); RemoteComponent = new RemoteComponent(); PositionComponent = new PositionComponent(); MovementComponent = new MovementComponent(); MovementSpriteComponent = new MovementSpriteComponent(); SpriteComponent = new SpriteComponent(); DoorComponent = new DoorComponent(); RoomComponent = new RoomComponent(); HUDSpriteComponent = new HUDSpriteComponent(); HUDComponent = new HUDComponent(); InventoryComponent = new InventoryComponent(); InventorySpriteComponent = new InventorySpriteComponent(); ContinueNewGameScreen = new ContinueNewGameScreen(graphics, this); EquipmentComponent = new EquipmentComponent(); WeaponComponent = new WeaponComponent(); BulletComponent = new BulletComponent(); PlayerInfoComponent = new PlayerInfoComponent(); WeaponSpriteComponent = new WeaponSpriteComponent(); StatsComponent = new StatsComponent(); EnemyAIComponent = new EnemyAIComponent(); NpcAIComponent = new NpcAIComponent(); CollectibleComponent = new CollectibleComponent(); CollisionComponent = new CollisionComponent(); TriggerComponent = new TriggerComponent(); EnemyComponent = new EnemyComponent(); NPCComponent = new NPCComponent(); //QuestComponent = new QuestComponent(); LevelManager = new LevelManager(this); SpriteAnimationComponent = new SpriteAnimationComponent(); SkillProjectileComponent = new SkillProjectileComponent(); SkillAoEComponent = new SkillAoEComponent(); SkillDeployableComponent = new SkillDeployableComponent(); SoundComponent = new SoundComponent(); ActorTextComponent = new ActorTextComponent(); TurretComponent = new TurretComponent(); TrapComponent = new TrapComponent(); ExplodingDroidComponent = new ExplodingDroidComponent(); HealingStationComponent = new HealingStationComponent(); PortableShieldComponent = new PortableShieldComponent(); PortableStoreComponent = new PortableStoreComponent(); ActiveSkillComponent = new ActiveSkillComponent(); PlayerSkillInfoComponent = new PlayerSkillInfoComponent(); MatchingPuzzleComponent = new MatchingPuzzleComponent(); pI = new PlayerInfo(); Quests = new List <Quest>(); #region Initialize Effect Components AgroDropComponent = new AgroDropComponent(); AgroGainComponent = new AgroGainComponent(); BuffComponent = new BuffComponent(); ChanceToSucceedComponent = new ChanceToSucceedComponent(); ChangeVisibilityComponent = new ChangeVisibilityComponent(); CoolDownComponent = new CoolDownComponent(); DamageOverTimeComponent = new DamageOverTimeComponent(); DirectDamageComponent = new DirectDamageComponent(); DirectHealComponent = new DirectHealComponent(); FearComponent = new FearComponent(); HealOverTimeComponent = new HealOverTimeComponent(); PsiOrFatigueRegenComponent = new PsiOrFatigueRegenComponent(); InstantEffectComponent = new InstantEffectComponent(); KnockBackComponent = new KnockBackComponent(); TargetedKnockBackComponent = new TargetedKnockBackComponent(); ReduceAgroRangeComponent = new ReduceAgroRangeComponent(); ResurrectComponent = new ResurrectComponent(); StunComponent = new StunComponent(); TimedEffectComponent = new TimedEffectComponent(); EnslaveComponent = new EnslaveComponent(); CloakComponent = new CloakComponent(); #endregion base.Initialize(); }
static void AddEffectCache(EffectCacheComponent effectCacheComponent, AudioCacheComponent audioCacheComponent, ActiveSkillComponent skillComponent) { foreach (var skill in skillComponent.skillList) { ActiveSkillData skillData = Game.Scene.GetComponent <SkillConfigComponent>().GetActiveSkill(skill.Key); Game.Scene.GetComponent <ResourcesComponent>().LoadBundle(skillData.skillAssetsABName.StringToAB()); GameObject skillAssetsPrefabGo = Game.Scene.GetComponent <ResourcesComponent>().GetAsset(skillData.skillAssetsABName.StringToAB(), skillData.skillAssetsABName) as GameObject; var buffList = skillData.GetAllBuffs(BuffIdType.EmitObj, BuffIdType.HitEffect, BuffIdType.PlayEffect, BuffIdType.PlaySound, BuffIdType.AddBuff); if (buffList.Count > 0) { //循环检测每一个Buff,看是否是播放特效的,如果是,那就找到对应的Buff 缓存起来 foreach (var buff in buffList) { AddEffectCache(effectCacheComponent, buff, skillAssetsPrefabGo); AddAudioCache(audioCacheComponent, buff, skillAssetsPrefabGo); if (buff.GetBuffIdType() == BuffIdType.AddBuff) { Buff_AddBuff buff_AddBuffOnSkillEnd = (Buff_AddBuff)buff; if (buff_AddBuffOnSkillEnd.buffGroup.buffList == null) { continue; } foreach (var buff_onSkillEnd in buff_AddBuffOnSkillEnd.buffGroup.buffList) { AddEffectCache(effectCacheComponent, buff_onSkillEnd, skillAssetsPrefabGo); AddAudioCache(audioCacheComponent, buff_onSkillEnd, skillAssetsPrefabGo); } } } } } }
public void Awake() { hotKeyToSkill = new Dictionary <string, HotKeyState>(); parent = GetParent <Unit>(); ActiveSkillComponent = parent.GetComponent <ActiveSkillComponent>(); }