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 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
#include "medals.h"
#include "stats/medals.h"
namespace scripting {
namespace api {
medal_h::medal_h() : medal(-1) {}
medal_h::medal_h(int l_medal) : medal(l_medal) {}
medal_stuff* medal_h::getMedal() const
{
if (!isValid())
return nullptr;
return &Medals[medal];
}
bool medal_h::isValid() const
{
return SCP_vector_inbounds(Medals, medal);
}
bool medal_h::isRank() const
{
return medal == Rank_medal_index;
}
//**********HANDLE: medal
ADE_OBJ(l_Medal, medal_h, "medal", "Medal handle");
ADE_FUNC(isValid, l_Medal, nullptr, "Detects whether handle is valid", "boolean", "true if valid, false if handle is invalid, nil if a syntax/type error occurs")
{
medal_h current;
if (!ade_get_args(L, "o", l_Medal.Get(¤t)))
return ADE_RETURN_NIL;
return ade_set_args(L, "b", current.isValid());
}
ADE_VIRTVAR(Name, l_Medal, nullptr, "The name of the medal", "string", "The name")
{
medal_h current;
if (!ade_get_args(L, "o", l_Medal.Get(¤t))) {
return ADE_RETURN_NIL;
}
if (!current.isValid()) {
return ade_set_error(L, "s", "");
}
if (ADE_SETTING_VAR) {
LuaError(L, "This property is read only.");
}
return ade_set_args(L, "s", current.getMedal()->get_display_name());
}
ADE_VIRTVAR(Bitmap, l_Medal, nullptr, "The bitmap of the medal", "string", "The bitmap")
{
medal_h current;
if (!ade_get_args(L, "o", l_Medal.Get(¤t))) {
return ADE_RETURN_NIL;
}
if (!current.isValid()) {
return ade_set_error(L, "s", "");
}
if (ADE_SETTING_VAR) {
LuaError(L, "This property is read only.");
}
return ade_set_args(L, "s", current.getMedal()->bitmap);
}
ADE_VIRTVAR(NumMods, l_Medal, nullptr, "The number of mods of the medal", "number", "The number of mods")
{
medal_h current;
if (!ade_get_args(L, "o", l_Medal.Get(¤t))) {
return ADE_RETURN_NIL;
}
if (!current.isValid()) {
return ade_set_error(L, "i", 0);
}
if (ADE_SETTING_VAR) {
LuaError(L, "This property is read only.");
}
return ade_set_args(L, "i", current.getMedal()->num_versions);
}
ADE_VIRTVAR(FirstMod, l_Medal, nullptr, "The first mod of the medal. Some start at 1, some start at 0", "number", "The first mod")
{
medal_h current;
if (!ade_get_args(L, "o", l_Medal.Get(¤t))) {
return ADE_RETURN_NIL;
}
if (!current.isValid()) {
return ade_set_error(L, "i", 0);
}
if (ADE_SETTING_VAR) {
LuaError(L, "This property is read only.");
}
int start = 0;
if (current.getMedal()->version_starts_at_1)
start = 1;
return ade_set_args(L, "i", start);
}
ADE_VIRTVAR(KillsNeeded, l_Medal, nullptr, "The number of kills needed to earn this badge. If not a badge, then returns 0", "number", "The number of kills needed")
{
medal_h current;
if (!ade_get_args(L, "o", l_Medal.Get(¤t))) {
return ADE_RETURN_NIL;
}
if (!current.isValid()) {
return ade_set_error(L, "i", 0);
}
if (ADE_SETTING_VAR) {
LuaError(L, "This property is read only.");
}
return ade_set_args(L, "i", current.getMedal()->kills_needed);
}
ADE_FUNC(isRank, l_Medal, nullptr, "Detects whether medal is the rank medal", "boolean", "true if yes, false if not, nil if a syntax/type error occurs")
{
medal_h current;
if (!ade_get_args(L, "o", l_Medal.Get(¤t)))
return ADE_RETURN_NIL;
return ade_set_args(L, "b", current.isRank());
}
} // namespace api
} // namespace scripting
|