1 
2 #include "cmd_brief.h"
3 
4 namespace scripting {
5 namespace api {
6 
7 //**********HANDLE: cmd_briefing
8 ADE_OBJ(l_CmdBriefStage, cmd_brief_stage, "cmd_briefing_stage", "Command briefing stage handle");
9 
10 ADE_VIRTVAR(Text, l_CmdBriefStage, nullptr, "The text of the stage", "cmd_briefing_stage", "The text")
11 {
12 	cmd_brief_stage* stage = nullptr;
13 	if (!ade_get_args(L, "o", l_CmdBriefStage.GetPtr(&stage))) {
14 		return ADE_RETURN_NIL;
15 	}
16 
17 	if (ADE_SETTING_VAR) {
18 		LuaError(L, "This property is read only.");
19 	}
20 
21 	return ade_set_args(L, "s", stage->text);
22 }
23 
24 ADE_VIRTVAR(AniFilename,
25 	l_CmdBriefStage,
26 	nullptr,
27 	"The filename of the animation to play",
28 	"cmd_briefing_stage",
29 	"The file name")
30 {
31 	cmd_brief_stage* stage = nullptr;
32 	if (!ade_get_args(L, "o", l_CmdBriefStage.GetPtr(&stage))) {
33 		return ADE_RETURN_NIL;
34 	}
35 
36 	if (ADE_SETTING_VAR) {
37 		LuaError(L, "This property is read only.");
38 	}
39 
40 	return ade_set_args(L, "s", stage->ani_filename);
41 }
42 
43 ADE_VIRTVAR(AudioFilename,
44 	l_CmdBriefStage,
45 	nullptr,
46 	"The filename of the audio file to play",
47 	"cmd_briefing_stage",
48 	"The file name")
49 {
50 	cmd_brief_stage* stage = nullptr;
51 	if (!ade_get_args(L, "o", l_CmdBriefStage.GetPtr(&stage))) {
52 		return ADE_RETURN_NIL;
53 	}
54 
55 	if (ADE_SETTING_VAR) {
56 		LuaError(L, "This property is read only.");
57 	}
58 
59 	return ade_set_args(L, "s", stage->wave_filename);
60 }
61 
62 //**********HANDLE: cmd_briefing
63 ADE_OBJ(l_CmdBrief, cmd_brief, "cmd_briefing", "Command briefing handle");
64 
65 ADE_INDEXER(l_CmdBrief,
66 	"number index",
67 	"The list of stages in the command briefing.",
68 	"cmd_briefing_stage",
69 	"The stage at the specified location.")
70 {
71 	cmd_brief* brief = nullptr;
72 	int index        = -1;
73 	if (!ade_get_args(L, "oi", l_CmdBrief.GetPtr(&brief), &index)) {
74 		return ADE_RETURN_NIL;
75 	}
76 
77 	--index;
78 
79 	if (index < 0 || index >= brief->num_stages) {
80 		LuaError(L, "Invalid index %d, only have %d entries.", index + 1, brief->num_stages);
81 		return ADE_RETURN_NIL;
82 	}
83 
84 	return ade_set_args(L, "o", l_CmdBriefStage.Set(brief->stage[index]));
85 }
86 
87 ADE_FUNC(__len, l_CmdBrief, nullptr, "The number of stages in the command briefing", "number", "The number of stages.")
88 {
89 	cmd_brief* brief = nullptr;
90 	if (!ade_get_args(L, "o", l_CmdBrief.GetPtr(&brief))) {
91 		return ADE_RETURN_NIL;
92 	}
93 
94 	return ade_set_args(L, "i", brief->num_stages);
95 }
96 
97 } // namespace api
98 } // namespace scripting
99