Example #1
0
        public void Damage(int damage, Element element)
        {
            if (!requiredElement.Contains(element) && requiredElement.Count > 0)
            {
                return;
            }

            bool died = false;

            if (useHealthVariable)
            {
                healthVariable.health -= damage;

                if (healthVariable.health <= 0)
                {
                    Debug.Log("We died");
                    died = true;
                }
            }
            else
            {
                health -= damage;

                if (health <= 0)
                {
                    died = true;
                }
            }

            if (died)
            {
                if (deathClip)
                {
                    GameObject  audioSourceObject = new GameObject(gameObject.name + "_sound_death");
                    AudioSource audioSource       = audioSourceObject.AddComponent <AudioSource>();
                    audioSource.PlayOneShot(deathClip);
                }

                if (deathParticlesPrefab)
                {
                    Instantiate(deathParticlesPrefab, transform.position, transform.rotation);
                }

                deathHandler = GetComponent <IDeathHandler>();

                if (deathHandler != null)
                {
                    deathHandler.IHandleDeath();
                    return;
                }

                Destroy(gameObject);
            }

            if (hitAudioSource)
            {
                hitAudioSource.Play();
            }
        }
Example #2
0
 public ReceiveDamageSystem(IContext <GameEntity> context, IDeathHandler deathHandler, IUiFacade uiFacade,
                            IAggressionTriggerer aggressionTriggerer, IPositionEffectPresenter positionEffectPresenter) : base(context)
 {
     _deathHandler            = deathHandler;
     _uiFacade                = uiFacade;
     _aggressionTriggerer     = aggressionTriggerer;
     _positionEffectPresenter = positionEffectPresenter;
 }
Example #3
0
 public AttackAction(ActorData actorData, ActorData attackedActor, float energyCost, IActionEffectFactory actionEffectFactory,
                     IRandomNumberGenerator rng, IDeathHandler deathHandler, bool isDaringBlow, IUiConfig uiConfig, IGameContext gameContext)
     : base(actorData, energyCost, actionEffectFactory)
 {
     _attackedActor = attackedActor;
     _rng           = rng;
     _deathHandler  = deathHandler;
     _isDaringBlow  = isDaringBlow;
     _uiConfig      = uiConfig;
     _gameContext   = gameContext;
 }
Example #4
0
 public NeedHandler(IEntityDetector entityDetector, IGameConfig gameConfig, IUiConfig uiConfig,
                    IDeathHandler deathHandler, IMaxSwordCalculator maxSwordCalculator, IPlayerSpaceResolver playerSpaceResolver, IGameContext gameContext, ITextEffectPresenter textEffectPresenter)
 {
     _entityDetector      = entityDetector;
     _gameConfig          = gameConfig;
     _uiConfig            = uiConfig;
     _deathHandler        = deathHandler;
     _maxSwordCalculator  = maxSwordCalculator;
     _playerSpaceResolver = playerSpaceResolver;
     _gameContext         = gameContext;
     _textEffectPresenter = textEffectPresenter;
 }
Example #5
0
 public MoveAction(ActorData actorData, float energyCost, IActionEffectFactory actionEffectFactory,
                   Vector2Int direction, IGridInfoProvider gridInfoProvider, IEntityDetector entityDetector,
                   IGameContext gameContext, ITextEffectPresenter textEffectPresenter, IUiConfig uiConfig, IDeathHandler deathHandler)
     : base(actorData, energyCost, actionEffectFactory, direction)
 {
     GuardDirection(direction);
     _gridInfoProvider    = gridInfoProvider;
     _entityDetector      = entityDetector;
     _gameContext         = gameContext;
     _textEffectPresenter = textEffectPresenter;
     _uiConfig            = uiConfig;
     _deathHandler        = deathHandler;
 }
Example #6
0
 public ActionFactory(IGridInfoProvider gridInfoProvider, IActionEffectFactory actionEffectFactory,
                      ITextEffectPresenter textEffectPresenter, INeedHandler needHandler, IRandomNumberGenerator randomNumberGenerator,
                      IDeathHandler deathHandler, IEntityRemover entityRemover, IEntityDetector entityDetector, IGameContext gameContext,
                      IEntitySpawner entitySpawner, IUiConfig uiConfig)
 {
     _gridInfoProvider      = gridInfoProvider;
     _actionEffectFactory   = actionEffectFactory;
     _textEffectPresenter   = textEffectPresenter;
     _needHandler           = needHandler;
     _randomNumberGenerator = randomNumberGenerator;
     _deathHandler          = deathHandler;
     _entityRemover         = entityRemover;
     _entityDetector        = entityDetector;
     _gameContext           = gameContext;
     _entitySpawner         = entitySpawner;
     _uiConfig = uiConfig;
 }
Example #7
0
 public ActionFactory(IGrid grid, IActionEffectFactory actionEffectFactory, IUnityGridInfoProvider unityGridInfoProvider, IPositionEffectPresenter positionEffectPresenter, IRandomNumberGenerator randomNumberGenerator, IDeathHandler deathHandler, ISceneContext sceneContext, IGameConfig gameConfig, IViewCreator viewCreator, ITileMatrixUpdater tileMatrixUpdater, IFirstPlaceInAreaFinder firstPlaceInAreaFinder, IBroadcastStimulusSender stimulusBroadcaster, IEntityDetector entityDetector, LoadViewSystem loadViewSystem, IUiFacade uiFacade, IOsnowaContextManager contextManager, IEntityViewBehaviourInitializer entityViewBehaviourInitializer, IAggressionTriggerer aggressionTriggerer, IEntityGenerator entityGenerator, ReactiveFeature reactiveFeature)
 {
     _grid = grid;
     _unityGridInfoProvider   = unityGridInfoProvider;
     _positionEffectPresenter = positionEffectPresenter;
     _randomNumberGenerator   = randomNumberGenerator;
     _deathHandler            = deathHandler;
     _actionEffectFactory     = actionEffectFactory;
     _sceneContext            = sceneContext;
     _gameConfig             = gameConfig;
     _viewCreator            = viewCreator;
     _tileMatrixUpdater      = tileMatrixUpdater;
     _firstPlaceInAreaFinder = firstPlaceInAreaFinder;
     _stimulusBroadcaster    = stimulusBroadcaster;
     _entityDetector         = entityDetector;
     _loadViewSystem         = loadViewSystem;
     _uiFacade       = uiFacade;
     _contextManager = contextManager;
     _entityViewBehaviourInitializer = entityViewBehaviourInitializer;
     _aggressionTriggerer            = aggressionTriggerer;
     _entityGenerator = entityGenerator;
     _reactiveFeature = reactiveFeature;
 }
Example #8
0
 public IntegrityChangedSystem(IContext <GameEntity> context, IDeathHandler deathHandler, IUiFacade uiFacade) : base(context)
 {
     _deathHandler = deathHandler;
     _uiFacade     = uiFacade;
 }
 // call that does the mapping
 private static void Execute(IDeathHandler handler, BaseEventData eventData)
 {
     // The ValidateEventData makes sure the passed event
     // data is of the correct type and not null
     handler.OnDeathTrigger(ExecuteEvents.ValidateEventData <DeathEventData>(eventData));
 }
 // call that does the mapping
 private static void Execute(IDeathHandler handler, BaseEventData eventData)
 {
     // The ValidateEventData makes sure the passed event
       // data is of the correct type and not null
       handler.OnDeathTrigger(ExecuteEvents.ValidateEventData<DeathEventData>(eventData));
 }