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