aboutsummaryrefslogtreecommitdiff
path: root/src/openvic-simulation/misc/SoundEffect.hpp
blob: 35d05dc41030ca9e51e40d4a20a713b7419a3028 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#pragma once

#include "openvic-simulation/types/fixed_point/FixedPoint.hpp"
#include "openvic-simulation/types/IdentifierRegistry.hpp"

namespace OpenVic {
   /*For interface/Sound.sfx */
   struct SoundEffectManager;

   struct SoundEffect : HasIdentifier {
      friend struct SoundEffectManager;

   private:
      std::string PROPERTY(file);
      fixed_point_t PROPERTY(volume);

      SoundEffect(std::string_view new_identifier, std::string_view new_file, fixed_point_t new_volume);

   public:
      SoundEffect(SoundEffect&&) = default;
   };

   struct SoundEffectManager {
   private:
      IdentifierRegistry<SoundEffect> IDENTIFIER_REGISTRY(sound_effect);
      bool _load_sound_define(std::string_view sfx_identifier, ast::NodeCPtr root);

   public:
      bool load_sound_defines_file(ast::NodeCPtr root);
   };
}