aboutsummaryrefslogtreecommitdiff
path: root/src/openvic-simulation/misc/SoundEffect.hpp
blob: 7f18dce779c9d1550aec2117bc1f734a50798189 (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
#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 {
   private:
      friend struct SoundEffectManager;
      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);
   };
}