From bf970d86080413b85c10845253f468626caf7418 Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Sat, 14 Mar 2026 01:10:39 +0000 Subject: [PATCH] Add MissileTubes.on_launch callback --- src/components/missiletubes.h | 3 +++ src/script/components.cpp | 1 + src/systems/missilesystem.cpp | 5 +++++ 3 files changed, 9 insertions(+) diff --git a/src/components/missiletubes.h b/src/components/missiletubes.h index 7042b39657..38a51f142e 100644 --- a/src/components/missiletubes.h +++ b/src/components/missiletubes.h @@ -1,5 +1,6 @@ #pragma once +#include "script/callback.h" #include "ecs/entity.h" #include "shipsystem.h" #include "missileWeaponData.h" @@ -44,4 +45,6 @@ class MissileTubes : public ShipSystem { int storage_max[MW_Count] = {0}; std::vector mounts; + + sp::script::Callback on_launch; }; diff --git a/src/script/components.cpp b/src/script/components.cpp index aa0bb4d9ae..90fb8dff50 100644 --- a/src/script/components.cpp +++ b/src/script/components.cpp @@ -601,6 +601,7 @@ void initComponentScriptBindings() BIND_MEMBER_NAMED(MissileTubes, storage_max[int(MW_EMP)], "max_emp"); BIND_MEMBER_NAMED(MissileTubes, storage[int(MW_HVLI)], "storage_hvli"); BIND_MEMBER_NAMED(MissileTubes, storage_max[int(MW_HVLI)], "max_hvli"); + BIND_MEMBER(MissileTubes, on_launch); BIND_ARRAY(MissileTubes, mounts); BIND_ARRAY_MEMBER(MissileTubes, mounts, position); BIND_ARRAY_MEMBER(MissileTubes, mounts, load_time); diff --git a/src/systems/missilesystem.cpp b/src/systems/missilesystem.cpp index c7f64b2e22..5888b9b4e7 100644 --- a/src/systems/missilesystem.cpp +++ b/src/systems/missilesystem.cpp @@ -16,6 +16,7 @@ #include "multiplayer_server.h" #include "particleEffect.h" #include "random.h" +#include "menus/luaConsole.h" MissileSystem::MissileSystem() @@ -371,6 +372,10 @@ void MissileSystem::spawnProjectile(sp::ecs::Entity source, MissileTubes::MountP sfx.sound = mwd.fire_sound; sfx.volume = 55.0f + 15.0f * category_modifier; sfx.pitch += random(-0.1f, 0.1f); + + auto source_tubes = source.getComponent(); + if (source_tubes && source_tubes->on_launch) + LuaConsole::checkResult(source_tubes->on_launch.call(source, missile)); } }