Files
fs2open.github.com/code/scripting/api/objs/cmd_brief.cpp
T
asarium ef395640d3 Add support for libRocket command briefing
This adds access to the command briefing data parsed from the mission
file to the scripting API so it can be used by the UI scripts for the
high res UI.

Also switches the animation support to using the generic anim to use
streaming to improve performance.
2020-06-20 18:17:01 +02:00

99 lines
2.3 KiB
C++

#include "cmd_brief.h"
namespace scripting {
namespace api {
//**********HANDLE: cmd_briefing
ADE_OBJ(l_CmdBriefStage, cmd_brief_stage, "cmd_briefing_stage", "Command briefing stage handle");
ADE_VIRTVAR(Text, l_CmdBriefStage, nullptr, "The text of the stage", "cmd_briefing_stage", "The text")
{
cmd_brief_stage* stage = nullptr;
if (!ade_get_args(L, "o", l_CmdBriefStage.GetPtr(&stage))) {
return ADE_RETURN_NIL;
}
if (ADE_SETTING_VAR) {
LuaError(L, "This property is read only.");
}
return ade_set_args(L, "s", stage->text);
}
ADE_VIRTVAR(AniFilename,
l_CmdBriefStage,
nullptr,
"The filename of the animation to play",
"cmd_briefing_stage",
"The file name")
{
cmd_brief_stage* stage = nullptr;
if (!ade_get_args(L, "o", l_CmdBriefStage.GetPtr(&stage))) {
return ADE_RETURN_NIL;
}
if (ADE_SETTING_VAR) {
LuaError(L, "This property is read only.");
}
return ade_set_args(L, "s", stage->ani_filename);
}
ADE_VIRTVAR(AudioFilename,
l_CmdBriefStage,
nullptr,
"The filename of the audio file to play",
"cmd_briefing_stage",
"The file name")
{
cmd_brief_stage* stage = nullptr;
if (!ade_get_args(L, "o", l_CmdBriefStage.GetPtr(&stage))) {
return ADE_RETURN_NIL;
}
if (ADE_SETTING_VAR) {
LuaError(L, "This property is read only.");
}
return ade_set_args(L, "s", stage->wave_filename);
}
//**********HANDLE: cmd_briefing
ADE_OBJ(l_CmdBrief, cmd_brief, "cmd_briefing", "Command briefing handle");
ADE_INDEXER(l_CmdBrief,
"number index",
"The list of stages in the command briefing.",
"cmd_briefing_stage",
"The stage at the specified location.")
{
cmd_brief* brief = nullptr;
int index = -1;
if (!ade_get_args(L, "oi", l_CmdBrief.GetPtr(&brief), &index)) {
return ADE_RETURN_NIL;
}
--index;
if (index < 0 || index >= brief->num_stages) {
LuaError(L, "Invalid index %d, only have %d entries.", index + 1, brief->num_stages);
return ADE_RETURN_NIL;
}
return ade_set_args(L, "o", l_CmdBriefStage.Set(brief->stage[index]));
}
ADE_FUNC(__len, l_CmdBrief, nullptr, "The number of stages in the command briefing", "number", "The number of stages.")
{
cmd_brief* brief = nullptr;
if (!ade_get_args(L, "o", l_CmdBrief.GetPtr(&brief))) {
return ADE_RETURN_NIL;
}
return ade_set_args(L, "i", brief->num_stages);
}
} // namespace api
} // namespace scripting