Files
Goober5000 592eefb60f scripting refactor to compose handle types
Several handle types in the scripting API used inheritance where composition would be more appropriate.  This refactors those types, as well as removing the various handle types that were just aliases for `model_h`.  These are just the C++-side types; all the Lua types remain as-is.

This also refactors `sound_h` to move the previous `isSoundValid` to `isValid` so that `ade_set_args` will work properly for sounds with the `Lua_API_returns_nil_instead_of_invalid_object` flag.  The subclassing from `sound_entry_h` was removed and the "full validity check" was moved to `isValidWithEntry`.  The Lua side remains unaffected, but additional documentation was added to clarify the usage.

Follow-up to #6009 and prerequisite to #6006 due to the `isValid` refactor for `sound_h`.
2024-02-28 02:51:08 -05:00

44 lines
707 B
C++

#pragma once
#include <object/object.h>
#include <ship/ship.h>
#include "scripting/ade_api.h"
namespace scripting {
namespace api {
const int SWH_NONE = 0;
const int SWH_PRIMARY = 1;
const int SWH_SECONDARY = 2;
const int SWH_TERTIARY = 3;
struct ship_banktype_h
{
object_h objh;
ship_weapon *sw;
int type;
ship_banktype_h();
ship_banktype_h(object *objp_in, ship_weapon *wpn, int in_type);
bool isValid() const;
};
DECLARE_ADE_OBJ(l_WeaponBankType, ship_banktype_h);
struct ship_bank_h
{
ship_banktype_h typeh;
int bank;
ship_bank_h();
ship_bank_h(object *objp_in, ship_weapon *wpn, int in_type, int in_bank);
bool isValid() const;
};
DECLARE_ADE_OBJ(l_WeaponBank, ship_bank_h);
}
}