summaryrefslogtreecommitdiff
path: root/include/JSystem/JStudio/JStudio_JAudio2/control.h
blob: 3996d59273deadae976d3b3f97b0de80a82e8c61 (plain)
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#ifndef JSTUDIO_JAUDIO2_CONTROL_H
#define JSTUDIO_JAUDIO2_CONTROL_H

#include "JSystem/JAudio2/JAISoundHandles.h"
#include "JSystem/JAudio2/JAISoundStarter.h"
#include "JSystem/JStage/JSGSystem.h"
#include "JSystem/JStudio/JStudio/jstudio-object.h"

namespace JStudio_JAudio2 {
struct TCreateObject : public JStudio::TCreateObject {
    typedef JStudio::TObject* (*CreateFunc)(JStudio::stb::data::TParse_TBlock_object const&,
                                            JStudio_JAudio2::TCreateObject*);

    TCreateObject(JAISoundStarter* p_soundStarter, const JStage::TSystem* p_system) {
        pJAISoundStarter_ = p_soundStarter;
        pJSGSystem_ = p_system;
        mPermit_onExit_notEnd = false;
    }

    /* 8028D550 */ virtual ~TCreateObject();
    /* 8028D5B0 */ virtual bool create(JStudio::TObject**,
                                       JStudio::stb::data::TParse_TBlock_object const&);
    /* 8028D624 */ static JStudio::TObject*
    createObject_JAI_SOUND_(JStudio::stb::data::TParse_TBlock_object const&,
                            JStudio_JAudio2::TCreateObject*);
    JAISoundStarter* get_pJAISoundStarter_() { return pJAISoundStarter_; }
    const JStage::TSystem* get_pJSGSystem_() { return pJSGSystem_; }
    bool isPermit_onExit_notEnd() { return mPermit_onExit_notEnd; }

    /* 0x0C */ JAISoundStarter* pJAISoundStarter_;
    /* 0x10 */ const JStage::TSystem* pJSGSystem_;
    /* 0x14 */ bool mPermit_onExit_notEnd;
};

struct TAdaptor_sound : public JStudio::TAdaptor_sound {
    typedef void (*TVVOSoundSetFunc)(JAISound*, f32);
    typedef JStudio::TObject_sound ObjectType;

    enum TEVariableValue {
        UNK_7 = 7,
        UNK_8 = 8,
        UNK_9 = 9,
        UNK_10 = 10,
        UNK_11 = 11,
        UNK_NONE = -1,
    };

    struct TVVOSetValue_ : public JStudio::TVariableValue::TOutput {
        TVVOSetValue_(TEVariableValue param_1, TVVOSoundSetFunc param_2)
            : field_0x04(param_1), field_0x08(param_2) {}
        /* 8028DECC */ virtual void operator()(f32, JStudio::TAdaptor*) const;
        /* 8028E094 */ virtual ~TVVOSetValue_() {}

        /* 0x04 */ TEVariableValue field_0x04;
        /* 0x08 */ TVVOSoundSetFunc field_0x08;
    };

    /* 8028D828 */ TAdaptor_sound(JStudio_JAudio2::TCreateObject*);
    /* 8028DF04 */ void prepareSound_();
    /* 8028DFA4 */ void beginSound_fadeIn_();
    /* 8028E054 */ void endSound_fadeOut_(u32);

    /* 8028D8F4 */ virtual ~TAdaptor_sound();
    /* 8028D9A4 */ virtual void adaptor_do_prepare();
    /* 8028DA74 */ virtual void adaptor_do_end();
    /* 8028DA78 */ virtual void adaptor_do_update(u32);
    /* 8028DC20 */ virtual void adaptor_do_SOUND(JStudio::data::TEOperationData, void const*, u32);
    /* 8028DC54 */ virtual void adaptor_do_BEGIN(JStudio::data::TEOperationData, void const*, u32);
    /* 8028DC88 */ virtual void adaptor_do_BEGIN_FADE_IN(JStudio::data::TEOperationData, void const*,
                                                    u32);
    /* 8028DCD0 */ virtual void adaptor_do_END(JStudio::data::TEOperationData, void const*, u32);
    /* 8028DD00 */ virtual void adaptor_do_END_FADE_OUT(JStudio::data::TEOperationData, void const*,
                                                u32);
    /* 8028DD48 */ virtual void adaptor_do_PARENT(JStudio::data::TEOperationData, void const*, u32);
    /* 8028DDB4 */ virtual void adaptor_do_PARENT_NODE(JStudio::data::TEOperationData, void const*,
                                                u32);
    /* 8028DE34 */ virtual void adaptor_do_PARENT_ENABLE(JStudio::data::TEOperationData, void const*,
                                                    u32);
    /* 8028DE50 */ virtual void adaptor_do_REPEAT(JStudio::data::TEOperationData, void const*, u32);
    /* 8028DE6C */ virtual void adaptor_do_CONTINUOUS(JStudio::data::TEOperationData, void const*, u32);
    /* 8028DE88 */ virtual void adaptor_do_LOCATED(JStudio::data::TEOperationData, void const*, u32);
    /* 8028DEB0 */ virtual void adaptor_do_ON_EXIT_NOT_END(JStudio::data::TEOperationData, void const*,
                                                    u32);

    void beginSound_fadeIn_(u32 param_1) {
        field_0x128 = param_1;
        beginSound_fadeIn_();
    }
    
    void beginSound_() {
        beginSound_fadeIn_(0);
    }

    void endSound_() {
        endSound_fadeOut_(0);
    }

    void opJAISoundHandle_stop_() {
        opJAISoundHandle_->stop();
    }

    void set_bPermit_onExit_notEnd_(bool param_1) { field_0x11c = param_1; }

    #ifndef NONMATCHING
    static TVVOSetValue_ saoVVOSetValue_[6];
    #else
    static u8 saoVVOSetValue_[72];
    #endif

    /* 0x114 */ TCreateObject* pCreateObject_;
    /* 0x118 */ JAISoundHandle opJAISoundHandle_;
    /* 0x11C */ bool field_0x11c;
    /* 0x11D */ u8 field_0x11d;
    /* 0x11E */ u8 field_0x11e;
    /* 0x11F */ u8 field_0x11f;
    /* 0x120 */ u8 field_0x120;
    /* 0x124 */ u32 field_0x124;
    /* 0x128 */ u32 field_0x128;
    /* 0x12C */ JGeometry::TVec3<f32>* field_0x12c;
    /* 0x130 */ JGeometry::TVec3<f32> field_0x130;
    /* 0x13C */ JStage::TObject* field_0x13c;
    /* 0x140 */ u32 field_0x140;
    /* 0x144 */ u8 field_0x144;
};
};  // namespace JStudio_JAudio2

#endif /* JSTUDIO_JAUDIO2_CONTROL_H */