Exemplo n.º 1
0
        private static Rectangle GetSpriteSourceRect(ConsumeEffectType effectType)
        {
            const int SPRITE_SIZE = 16;

            return(effectType switch
            {
                ConsumeEffectType.Eat => new Rectangle(0, 0, SPRITE_SIZE, SPRITE_SIZE),
                ConsumeEffectType.Drink => new Rectangle(SPRITE_SIZE, 0, SPRITE_SIZE, SPRITE_SIZE),
                ConsumeEffectType.Heal => new Rectangle(0, SPRITE_SIZE, SPRITE_SIZE, SPRITE_SIZE),
                _ => new Rectangle(SPRITE_SIZE, SPRITE_SIZE, SPRITE_SIZE, SPRITE_SIZE)
            });
        /// <inheritdoc />
        public SoundEffect?GetConsumePropSound(ConsumeEffectType consumeEffectType)
        {
            if (_consumableDict is null)
            {
                throw new InvalidOperationException(
                          "Dictionary of consumable sound effect must be initialized in storage loading.");
            }

            if (_consumableDict.TryGetValue(consumeEffectType, out var soundEffect))
            {
                return(soundEffect);
            }

            return(null);
        }
Exemplo n.º 3
0
        public ConsumingEffect(IGameObjectVisualizationContentStorage visualizationContentStorage,
                               Vector2 targetObjectPosition, ConsumeEffectType effectType)
        {
            _startEffectPosition  = targetObjectPosition;
            _targetEffectPosition = targetObjectPosition - (Vector2.UnitY * EFFECT_FLIGHT_DISTANCE);

            var spriteSourceRect = GetSpriteSourceRect(effectType);

            _effectSprite = new Sprite(visualizationContentStorage.GetConsumingEffectTexture())
            {
                Position        = targetObjectPosition,
                SourceRectangle = spriteSourceRect
            };

            _counter = EFFECT_DISPLAY_DURATION_SECONDS;
        }