raze/source/games/blood/src/vmexports.cpp
Christoph Oelckers 762263671a exported the main structures in Blood that make up a BloodActor.
nnext stuff was omitted for now.
This also eliminates the DUDEEXTRA_STATS substructure and integrates its content directly into DUDEEXTRA.
2023-10-01 22:25:08 +02:00

151 lines
5.4 KiB
C++

//-------------------------------------------------------------------------
/*
Copyright (C) 2020-2023 - Christoph Oelckers
This file is part of Raze
This is free software;you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation;either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY;without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
*/
//-------------------------------------------------------------------------
#include "vm.h"
#include "ns.h"
#include "buildtiles.h"
#include "blood.h"
BEGIN_BLD_NS
DEFINE_FIELD_X(XSECTOR, XSECTOR, flags)
DEFINE_FIELD_X(XSECTOR, XSECTOR, flags2)
DEFINE_FIELD_X(XSECTOR, XSECTOR, marker0)
DEFINE_FIELD_X(XSECTOR, XSECTOR, marker1)
DEFINE_FIELD_X(XSECTOR, XSECTOR, basePath)
DEFINE_FIELD_X(XSECTOR, XSECTOR, actordata)
DEFINE_FIELD_X(XSECTOR, XSECTOR, busy)
DEFINE_FIELD_X(XSECTOR, XSECTOR, offCeilZ)
DEFINE_FIELD_X(XSECTOR, XSECTOR, onCeilZ)
DEFINE_FIELD_X(XSECTOR, XSECTOR, offFloorZ)
DEFINE_FIELD_X(XSECTOR, XSECTOR, onFloorZ)
DEFINE_FIELD_X(XSECTOR, XSECTOR, windVel)
DEFINE_FIELD_X(XSECTOR, XSECTOR, data)
DEFINE_FIELD_X(XSECTOR, XSECTOR, txID)
DEFINE_FIELD_X(XSECTOR, XSECTOR, rxID)
DEFINE_FIELD_X(XSECTOR, XSECTOR, busyTimeA)
DEFINE_FIELD_X(XSECTOR, XSECTOR, waitTimeA)
DEFINE_FIELD_X(XSECTOR, XSECTOR, panAngle)
DEFINE_FIELD_X(XSECTOR, XSECTOR, busyTimeB)
DEFINE_FIELD_X(XSECTOR, XSECTOR, waitTimeB)
DEFINE_FIELD_X(XSECTOR, XSECTOR, windAng)
DEFINE_FIELD_X(XSECTOR, XSECTOR, bobTheta)
DEFINE_FIELD_X(XSECTOR, XSECTOR, bobSpeed)
DEFINE_FIELD_X(XSECTOR, XSECTOR, busyWaveA)
DEFINE_FIELD_X(XSECTOR, XSECTOR, busyWaveB)
DEFINE_FIELD_X(XSECTOR, XSECTOR, command)
DEFINE_FIELD_X(XSECTOR, XSECTOR, amplitude)
DEFINE_FIELD_X(XSECTOR, XSECTOR, freq)
DEFINE_FIELD_X(XSECTOR, XSECTOR, phase)
DEFINE_FIELD_X(XSECTOR, XSECTOR, wave)
DEFINE_FIELD_X(XSECTOR, XSECTOR, shade)
DEFINE_FIELD_X(XSECTOR, XSECTOR, panVel)
DEFINE_FIELD_X(XSECTOR, XSECTOR, Depth)
DEFINE_FIELD_X(XSECTOR, XSECTOR, Key)
DEFINE_FIELD_X(XSECTOR, XSECTOR, ceilpal)
DEFINE_FIELD_X(XSECTOR, XSECTOR, damageType)
DEFINE_FIELD_X(XSECTOR, XSECTOR, floorpal)
DEFINE_FIELD_X(XSECTOR, XSECTOR, bobZRange)
DEFINE_FIELD_X(XWALL, XWALL, flags)
DEFINE_FIELD_X(XWALL, XWALL, busy)
DEFINE_FIELD_X(XWALL, XWALL, data)
DEFINE_FIELD_X(XWALL, XWALL, txID)
DEFINE_FIELD_X(XWALL, XWALL, rxID)
DEFINE_FIELD_X(XWALL, XWALL, busyTime)
DEFINE_FIELD_X(XWALL, XWALL, waitTime)
DEFINE_FIELD_X(XWALL, XWALL, command)
DEFINE_FIELD_NAMED_X(XWALL, XWALL, panVel.X, panVelX) // VM does not support int vectors.
DEFINE_FIELD_NAMED_X(XWALL, XWALL, panVel.Y, panVelY)
DEFINE_FIELD_X(XWALL, XWALL, key)
DEFINE_FIELD_X(XSPRITE, XSPRITE, aiState)
DEFINE_FIELD_X(XSPRITE, XSPRITE, flags)
DEFINE_FIELD_X(XSPRITE, XSPRITE, target)
DEFINE_FIELD_X(XSPRITE, XSPRITE, burnSource)
DEFINE_FIELD_X(XSPRITE, XSPRITE, TargetPos)
DEFINE_FIELD_X(XSPRITE, XSPRITE, goalAng)
DEFINE_FIELD_X(XSPRITE, XSPRITE, sysData1)
DEFINE_FIELD_X(XSPRITE, XSPRITE, sysData2)
DEFINE_FIELD_X(XSPRITE, XSPRITE, scale)
DEFINE_FIELD_X(XSPRITE, XSPRITE, physAttr)
DEFINE_FIELD_X(XSPRITE, XSPRITE, health)
DEFINE_FIELD_X(XSPRITE, XSPRITE, busy)
DEFINE_FIELD_X(XSPRITE, XSPRITE, data1)
DEFINE_FIELD_X(XSPRITE, XSPRITE, data2)
DEFINE_FIELD_X(XSPRITE, XSPRITE, data3)
DEFINE_FIELD_X(XSPRITE, XSPRITE, txID)
DEFINE_FIELD_X(XSPRITE, XSPRITE, rxID)
DEFINE_FIELD_X(XSPRITE, XSPRITE, command)
DEFINE_FIELD_X(XSPRITE, XSPRITE, busyTime)
DEFINE_FIELD_X(XSPRITE, XSPRITE, waitTime)
DEFINE_FIELD_X(XSPRITE, XSPRITE, data4)
DEFINE_FIELD_X(XSPRITE, XSPRITE, burnTime)
DEFINE_FIELD_X(XSPRITE, XSPRITE, height)
DEFINE_FIELD_X(XSPRITE, XSPRITE, stateTimer)
DEFINE_FIELD_X(XSPRITE, XSPRITE, respawnPending)
DEFINE_FIELD_X(XSPRITE, XSPRITE, dropMsg)
DEFINE_FIELD_X(XSPRITE, XSPRITE, key)
DEFINE_FIELD_X(XSPRITE, XSPRITE, lSkill)
DEFINE_FIELD_X(XSPRITE, XSPRITE, lockMsg)
DEFINE_FIELD_X(XSPRITE, XSPRITE, dodgeDir)
DEFINE_FIELD_X(XSPRITE, XSPRITE, wave)
DEFINE_FIELD_X(XSPRITE, XSPRITE, medium)
DEFINE_FIELD_X(XSPRITE, XSPRITE, respawn)
DEFINE_FIELD_X(XSPRITE, XSPRITE, modernFlags)
DEFINE_FIELD_X(XSPRITE, XSPRITE, sightstuff)
DEFINE_FIELD_X(XSPRITE, XSPRITE, patrolturndelay)
DEFINE_FIELD_X(DUDEEXTRA, DUDEEXTRA, time)
DEFINE_FIELD_X(DUDEEXTRA, DUDEEXTRA, teslaHit)
DEFINE_FIELD_X(DUDEEXTRA, DUDEEXTRA, active)
DEFINE_FIELD_X(DUDEEXTRA, DUDEEXTRA, prio)
DEFINE_FIELD_X(DUDEEXTRA, DUDEEXTRA, thinkTime)
DEFINE_FIELD_X(DUDEEXTRA, DUDEEXTRA, birthCounter)
DEFINE_FIELD_UNSIZED(SPRITEHIT, SPRITEHIT, hit)
DEFINE_FIELD_UNSIZED(SPRITEHIT, SPRITEHIT, ceilhit)
DEFINE_FIELD_UNSIZED(SPRITEHIT, SPRITEHIT, florhit)
DEFINE_FIELD(DBloodActor, dudeSlope)
DEFINE_FIELD(DBloodActor, hasx)
DEFINE_FIELD(DBloodActor, explosionhackflag)
DEFINE_FIELD_UNSIZED(BloodActor, DBloodActor, hit)
DEFINE_FIELD_UNSIZED(BloodActor, DBloodActor, dudeExtra)
DEFINE_FIELD_UNSIZED(BloodActor, DBloodActor, xspr)
DEFINE_FIELD(DBloodActor, ownerActor)
DEFINE_FIELD(DBloodActor, cumulDamage)
DEFINE_FIELD(DBloodActor, interpolated)
void Blood_ChangeType(DBloodActor* self, PClassActor* type)
{
self->ChangeType(type);
}
DEFINE_ACTION_FUNCTION_NATIVE(DBloodActor, ChangeType, Blood_ChangeType)
{
PARAM_SELF_PROLOGUE(DBloodActor);
PARAM_POINTER(type, PClassActor);
self->ChangeType(type);
return 0;
}
END_BLD_NS