- added onUse virtual to DukeActor.

This commit is contained in:
Christoph Oelckers 2022-11-14 10:22:22 +01:00
parent 36f753df8f
commit ced22bb0a8
5 changed files with 20 additions and 0 deletions

View file

@ -117,6 +117,7 @@ void CallInitialize(DDukeActor* actor);
void CallTick(DDukeActor* actor);
void CallAction(DDukeActor* actor);
void CallOnHit(DDukeActor* actor, DDukeActor* hitter);
void CallOnUse(DDukeActor* actor, player_struct* user);
bool CallAnimate(DDukeActor* actor, tspritetype* hitter);

View file

@ -435,6 +435,14 @@ void CallOnHit(DDukeActor* actor, DDukeActor* hitter)
}
}
void CallOnUse(DDukeActor* actor, player_struct* user)
{
IFVIRTUALPTR(actor, DDukeActor, onUse)
{
VMValue val[2] = { actor, user };
VMCall(func, val, 2, nullptr, 0);
}
}
bool CallAnimate(DDukeActor* actor, tspritetype* tspr)
{

View file

@ -1661,6 +1661,11 @@ void checksectors_d(int snum)
{
if (fi.checkhitswitch(snum, nullptr, neartagsprite)) return;
if (neartagsprite->GetClass() != RUNTIME_CLASS(DDukeActor))
{
CallOnUse(neartagsprite, p);
}
else
switch (neartagsprite->spr.picnum)
{
case TOILET:

View file

@ -2591,6 +2591,11 @@ void checksectors_r(int snum)
{
if (fi.checkhitswitch(snum, nullptr, neartagsprite)) return;
if (neartagsprite->GetClass() != RUNTIME_CLASS(DDukeActor))
{
CallOnUse(neartagsprite, p);
}
else
switch (neartagsprite->spr.picnum)
{
case RRTILE8448:

View file

@ -74,6 +74,7 @@ class DukeActor : CoreActor native
virtual void Initialize() {}
virtual void Tick() {}
virtual void onHit(DukeActor hitter) {}
virtual void onUse(DukePlayer user) {}
virtual bool animate(tspritetype tspr) { return false; }
virtual void RunState() {} // this is the CON function.
}