Hard Light Productions Forums
Modding, Mission Design, and Coding => FS2 Open Coding - The Source Code Project (SCP) => Topic started by: Axem on February 16, 2015, 04:43:31 pm
-
Okay, I know I should have probably divided this into multiple patches, but they're all pretty small.
1: Allows beam weapons to work with On Turret Fire hook (by MageKing actually, but I haven't seen him commit it yet!) (aiturret.cpp)
2: Adds applyWhack function to the physics library (lua.cpp)
3: Adds On Afterburner Engage/Stop hooks (scripting.cpp, scripting.h, afterburner.cpp)
4: Adds On Beam Fire Hook (occurs when the beam actually begins to render, after the warm up) (scripting.cpp, scripting.h, beam.cpp)
http://pastebin.com/ukBgUCAj
So if some intrepid coder could look through these and make sure I didn't make any silly mistakes, that would be awesome. :)
-
1: Allows beam weapons to work with On Turret Fire hook (by MageKing actually, but I haven't seen him commit it yet!) (aiturret.cpp)
I didn't?
Oh right, I didn't. I wanted to make sure it didn't break existing scripts, in case they were relying on hv.Weapon not being a beam.
-
Since Axem mentioned this again recently, I thought I'd explain in more detail why I haven't committed (or, since the move to Git, made a pull request for) the change allowing On Turret Fire to detect beams.
Currently, the "Weapon" hook variable is of the Lua class "weapon", always. Guaranteed. With that change, suddenly it can be either "weapon" or "beam", and the two have different sets of methods and attributes. If there's a script that does things based on hv.Weapon.LifeLeft, for instance, this patch might cause that script (which used to work just fine) to generate errors. Now, it's possible that everyone who wrote a script using On Turret Fire operated under the assumption that hv.Weapon might be a beam, and this assumption just happened to make their script futureproof in this scenariio, but I don't know what every modder that ever used On Turret Fire did.
Does anybody else have any suggestions? I'm all ears.
-
Is 'beam' a subclass of 'weapon' in Lua? If so, keep the script hook signature as using 'weapon', but provide a 'beam' internally.
This is what happened in the Java Swing API when they moved from Graphics to Graphics2D. All of the API methods still have a Graphics object for reverse-compatibility, but newer implementations cast it to Graphics2D to take advantage of the extra methods.
-
Is 'beam' a subclass of 'weapon' in Lua?
No.