callback working

This commit is contained in:
2023-08-17 23:33:10 +02:00
parent 4817e08f3c
commit 79152b9632
3 changed files with 95 additions and 19 deletions
@@ -0,0 +1,197 @@
untyped
globalize_all_functions
struct {
table < entity, array< void functionref(WeaponPrimaryAttackParams attackParams) > > weaponCallbacks
} file
void function AddCallback_OnWeaponFired(entity weapon, void functionref(WeaponPrimaryAttackParams attackParams) callback){
if(weapon in file.weaponCallbacks){
file.weaponCallbacks[weapon].append(callback)
}else{
file.weaponCallbacks[weapon] <- [callback]
}
AddEntityDestroyedCallback(weapon, HandleWeaponDestroyed)
}
function HandleWeaponDestroyed(weapon){
entity w = expect entity(weapon)
if(w in file.weaponCallbacks){
delete file.weaponCallbacks[w]
}
}
void function OnWeaponFired(entity weapon, WeaponPrimaryAttackParams attackParams){
if(weapon in file.weaponCallbacks){
array< void functionref(WeaponPrimaryAttackParams attackParams) > callbacks = file.weaponCallbacks[weapon]
foreach(callback in callbacks){
callback(attackParams)
print("callback")
}
}
}
var function WeaponFireCallbacks_OnWeaponPrimaryAttack_alternator_smg( entity weapon, WeaponPrimaryAttackParams attackParams )
{
var result = OnWeaponPrimaryAttack_alternator_smg(weapon, attackParams)
if(result == 0){
return 0
}
OnWeaponFired(weapon, attackParams)
return result
}
var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_defender( entity weapon, WeaponPrimaryAttackParams attackParams )
{
var result = OnWeaponPrimaryAttack_weapon_defender(weapon, attackParams)
if(result == 0){
return 0
}
OnWeaponFired(weapon, attackParams)
return result
}
var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_doubletake( entity weapon, WeaponPrimaryAttackParams attackParams )
{
var result = OnWeaponPrimaryAttack_weapon_doubletake(weapon, attackParams)
if(result == 0){
return 0
}
OnWeaponFired(weapon, attackParams)
return result
}
var function WeaponFireCallbacks_OnWeaponPrimaryAttack_lmg( entity weapon, WeaponPrimaryAttackParams attackParams )
{
var result = OnWeaponPrimaryAttack_lmg(weapon, attackParams)
if(result == 0){
return 0
}
OnWeaponFired(weapon, attackParams)
return result
}
var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_lstar( entity weapon, WeaponPrimaryAttackParams attackParams )
{
var result = OnWeaponPrimaryAttack_weapon_lstar(weapon, attackParams)
if(result == 0){
return 0
}
OnWeaponFired(weapon, attackParams)
return result
}
var function WeaponFireCallbacks_OnWeaponPrimaryAttack_mastiff( entity weapon, WeaponPrimaryAttackParams attackParams )
{
var result = OnWeaponPrimaryAttack_weapon_mastiff(weapon, attackParams)
if(result == 0){
return 0
}
OnWeaponFired(weapon, attackParams)
return result
}
var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_mgl( entity weapon, WeaponPrimaryAttackParams attackParams )
{
var result = OnWeaponPrimaryAttack_weapon_mgl(weapon, attackParams)
if(result == 0){
return 0
}
OnWeaponFired(weapon, attackParams)
return result
}
var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_rocket_launcher( entity weapon, WeaponPrimaryAttackParams attackParams )
{
var result = OnWeaponPrimaryAttack_weapon_rocket_launcher(weapon, attackParams)
if(result == 0){
return 0
}
OnWeaponFired(weapon, attackParams)
return result
}
var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_shotgun( entity weapon, WeaponPrimaryAttackParams attackParams )
{
var result = OnWeaponPrimaryAttack_weapon_shotgun(weapon, attackParams)
if(result == 0){
return 0
}
OnWeaponFired(weapon, attackParams)
return result
}
var function WeaponFireCallbacks_OnWeaponPrimaryAttack_shotgun_doublebarrel( entity weapon, WeaponPrimaryAttackParams attackParams )
{
var result = OnWeaponPrimaryAttack_shotgun_doublebarrel(weapon, attackParams)
if(result == 0){
return 0
}
OnWeaponFired(weapon, attackParams)
return result
}
var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_shotgun_pistol( entity weapon, WeaponPrimaryAttackParams attackParams )
{
var result = OnWeaponPrimaryAttack_weapon_shotgun_pistol(weapon, attackParams)
if(result == 0){
return 0
}
OnWeaponFired(weapon, attackParams)
return result
}
var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_smart_pistol( entity weapon, WeaponPrimaryAttackParams attackParams )
{
var result = OnWeaponPrimaryAttack_weapon_smart_pistol(weapon, attackParams)
if(result == 0){
return 0
}
OnWeaponFired(weapon, attackParams)
return result
}
var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_smr( entity weapon, WeaponPrimaryAttackParams attackParams )
{
var result = OnWeaponPrimaryAttack_weapon_smr(weapon, attackParams)
if(result == 0){
return 0
}
OnWeaponFired(weapon, attackParams)
return result
}
var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_sniper( entity weapon, WeaponPrimaryAttackParams attackParams )
{
var result = OnWeaponPrimaryAttack_weapon_sniper(weapon, attackParams)
if(result == 0){
return 0
}
OnWeaponFired(weapon, attackParams)
return result
}
var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_softball( entity weapon, WeaponPrimaryAttackParams attackParams )
{
var result = OnWeaponPrimaryAttack_weapon_softball(weapon, attackParams)
if(result == 0){
return 0
}
OnWeaponFired(weapon, attackParams)
return result
}
var function WeaponFireCallbacks_OnWeaponPrimaryAttack_weapon_generic( entity weapon, WeaponPrimaryAttackParams attackParams ){
OnWeaponFired(weapon, attackParams)
}
var function WeaponFireCallbacks_OnWeaponPrimaryAttack_GenericBoltWithDrop_Player( entity weapon, WeaponPrimaryAttackParams attackParams ){
var result = OnWeaponPrimaryAttack_GenericBoltWithDrop_Player(weapon, attackParams)
if(result == 0){
return 0
}
OnWeaponFired(weapon, attackParams)
return result
}