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); }
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; }