1#pragma once
2
3#include <basis/seadTypes.h>
4#include <prim/seadSafeString.h>
5
6namespace al {
7class IUseAudioKeeper;
8class IUseLayoutAction;
9class LayoutActor;
10class MessageTagDataHolder;
11class Nerve;
12class ReplaceTagProcessorBase;
13
14void startAction(IUseLayoutAction* layout, const char* actionName, const char* paneName);
15s32 startActionAtRandomFrame(IUseLayoutAction* layout, const char* actionName,
16 const char* paneName);
17void startFreezeAction(IUseLayoutAction* layout, const char* actionName, f32 frame,
18 const char* paneName);
19void startFreezeActionEnd(IUseLayoutAction* layout, const char* actionName, const char* paneName);
20
21f32 getActionFrameMax(const IUseLayoutAction* layout, const char* actionName, const char* paneName);
22
23void startFreezeGaugeAction(IUseLayoutAction* layout, f32 value, f32 minFrame, f32 maxFrame,
24 const char* actionName, const char* paneName);
25
26bool tryStartAction(IUseLayoutAction* layout, const char* actionName, const char* paneName);
27
28bool isExistAction(const IUseLayoutAction* layout, const char* actionName, const char* paneName);
29bool isActionEnd(const IUseLayoutAction* layout, const char* paneName);
30bool isExistAction(const IUseLayoutAction* layout, const char* paneName);
31bool isActionOneTime(const IUseLayoutAction* layout, const char* actionName, const char* paneName);
32
33f32 getActionFrame(const IUseLayoutAction* layout, const char* paneName);
34void setActionFrame(IUseLayoutAction* layout, f32 frame, const char* paneName);
35f32 getActionFrameRate(const IUseLayoutAction* layout, const char* paneName);
36void setActionFrameRate(IUseLayoutAction* layout, f32 frameRate, const char* paneName);
37
38const char* getActionName(const IUseLayoutAction* layout, const char* paneName);
39
40bool isActionPlaying(const IUseLayoutAction* layout, const char* actionName, const char* paneName);
41bool isAnyActionPlaying(const IUseLayoutAction* layout, const char* paneName);
42
43void setNerveAtActionEnd(LayoutActor* layout, const Nerve* nerve);
44
45void startTextPaneAnim(LayoutActor*, const char16*, const MessageTagDataHolder*,
46 const ReplaceTagProcessorBase*);
47void startTextPaneAnimWithAudioUser(LayoutActor*, const char16*, const MessageTagDataHolder*,
48 const ReplaceTagProcessorBase*, const IUseAudioKeeper*);
49void startAndSetTextPaneAnimStage(LayoutActor*, const char*, const char*,
50 const MessageTagDataHolder*, const ReplaceTagProcessorBase*);
51void startAndSetTextPaneAnimSystem(LayoutActor*, const char*, const char*,
52 const MessageTagDataHolder*, const ReplaceTagProcessorBase*);
53void endTextPaneAnim(LayoutActor*);
54void skipTextPaneAnim(LayoutActor*);
55void flushTextPaneAnim(LayoutActor*);
56void changeNextPage(LayoutActor*, const MessageTagDataHolder*, const ReplaceTagProcessorBase*);
57bool tryChangeNextPage(LayoutActor*, const MessageTagDataHolder*, const ReplaceTagProcessorBase*);
58bool isExistNextPage(const LayoutActor*);
59bool isEndTextPaneAnim(const LayoutActor*, bool);
60const char16* getCurrentMessagePaneAnim(const LayoutActor*);
61s32 calcCurrentMessageTextNum(const LayoutActor*);
62s32 calcShowTextTime(s32);
63bool tryStartTextAnim(LayoutActor*, const char16*);
64bool tryStartTextTagVoice(LayoutActor*, const char16*, const IUseAudioKeeper*, const char*,
65 sead::FixedSafeString<64>*);
66void startHitReaction(const LayoutActor*, const char*, const char*);
67} // namespace al
68