Skip to content

Commit

Permalink
- moved ActorActionFunc and Personality out of __LegacyState again.
Browse files Browse the repository at this point in the history
  • Loading branch information
coelckers committed May 28, 2023
1 parent b07a182 commit e97dfb3
Show file tree
Hide file tree
Showing 17 changed files with 67 additions and 67 deletions.
4 changes: 2 additions & 2 deletions source/games/sw/src/actor.cpp
Expand Up @@ -1071,11 +1071,11 @@ bool DSWActor::hasState(FName label, int subl)
return getLegacyState(a, label, subl) != nullptr;
}

void DSWActor::setActionDecide() { user.__legacyState.ActorActionFunc = AF(DoActorDecide); }
void DSWActor::setActionDecide() { user.ActorActionFunc = AF(DoActorDecide); }

void DSWActor::callAction()
{
callFunction(user.__legacyState.ActorActionFunc);
callFunction(user.ActorActionFunc);
}

void DSWActor::callStateAction()
Expand Down
42 changes: 21 additions & 21 deletions source/games/sw/src/ai.cpp
Expand Up @@ -66,7 +66,7 @@ bool ActorMoveHitReact(DSWActor* actor)
{
// if you ran into a player - call close range functions
DoActorPickClosePlayer(actor);
auto action = ChooseAction(actor->user.__legacyState.Personality->TouchTarget);
auto action = ChooseAction(actor->user.Personality->TouchTarget);
actor->callFunction(action);
}
}
Expand Down Expand Up @@ -451,7 +451,7 @@ VMFunction* DoActorActionDecide(DSWActor* actor)
// REMINDER: This function is not even called if SpriteControl doesn't let
// it get called

ASSERT(actor->user.__legacyState.Personality);
ASSERT(actor->user.Personality);

actor->user.Dist = 0;
action = AF(InitActorDecide);
Expand Down Expand Up @@ -497,7 +497,7 @@ VMFunction* DoActorActionDecide(DSWActor* actor)
actor->user.Flags &= ~(SPR_ACTIVE);

// You've lost the player - now decide what to do
action = ChooseAction(actor->user.__legacyState.Personality->LostTarget);
action = ChooseAction(actor->user.Personality->LostTarget);
//CON_Message("LostTarget");
return action;
}
Expand All @@ -509,9 +509,9 @@ VMFunction* DoActorActionDecide(DSWActor* actor)
(pActor && pActor->hasU() && pActor->user.WeaponNum == WPN_FIST && actor->user.ID != RIPPER2_RUN_R0 && actor->user.ID != RIPPER_RUN_R0))
{
if ((actor->user.ID == COOLG_RUN_R0 && (actor->spr.cstat & CSTAT_SPRITE_TRANSLUCENT)) || (actor->spr.cstat & CSTAT_SPRITE_INVISIBLE))
action = ChooseAction(actor->user.__legacyState.Personality->Evasive);
action = ChooseAction(actor->user.Personality->Evasive);
else
action = ChooseAction(actor->user.__legacyState.Personality->CloseRange);
action = ChooseAction(actor->user.Personality->CloseRange);
//CON_Message("CloseRange");
return action;
}
Expand All @@ -531,9 +531,9 @@ VMFunction* DoActorActionDecide(DSWActor* actor)
else
{
if ((actor->user.ID == COOLG_RUN_R0 && (actor->spr.cstat & CSTAT_SPRITE_TRANSLUCENT)) || (actor->spr.cstat & CSTAT_SPRITE_INVISIBLE))
action = ChooseAction(actor->user.__legacyState.Personality->Evasive);
action = ChooseAction(actor->user.Personality->Evasive);
else
action = ChooseAction(actor->user.__legacyState.Personality->Battle);
action = ChooseAction(actor->user.Personality->Battle);
}
//CON_Message("Battle 1");
return action;
Expand All @@ -543,9 +543,9 @@ VMFunction* DoActorActionDecide(DSWActor* actor)
else
{
if ((actor->user.ID == COOLG_RUN_R0 && (actor->spr.cstat & CSTAT_SPRITE_TRANSLUCENT)) || (actor->spr.cstat & CSTAT_SPRITE_INVISIBLE))
action = ChooseAction(actor->user.__legacyState.Personality->Evasive);
action = ChooseAction(actor->user.Personality->Evasive);
else
action = ChooseAction(actor->user.__legacyState.Personality->Battle);
action = ChooseAction(actor->user.Personality->Battle);
//CON_Message("Battle 2");
return action;
}
Expand All @@ -555,16 +555,16 @@ VMFunction* DoActorActionDecide(DSWActor* actor)
else if (ICanSee)
{
if ((actor->user.ID == COOLG_RUN_R0 && (actor->spr.cstat & CSTAT_SPRITE_TRANSLUCENT)) || (actor->spr.cstat & CSTAT_SPRITE_INVISIBLE))
action = ChooseAction(actor->user.__legacyState.Personality->Evasive);
action = ChooseAction(actor->user.Personality->Evasive);
else
action = ChooseAction(actor->user.__legacyState.Personality->Offense);
action = ChooseAction(actor->user.Personality->Offense);
//CON_Message("Offense");
return action;
}
else
{
// You've lost the player - now decide what to do
action = ChooseAction(actor->user.__legacyState.Personality->LostTarget);
action = ChooseAction(actor->user.Personality->LostTarget);
//CON_Message("Close but cant see, LostTarget");
return action;
}
Expand All @@ -586,7 +586,7 @@ VMFunction* DoActorActionDecide(DSWActor* actor)
DoActorOperate(actor);

// Don't let player completely sneek up behind you
action = ChooseAction(actor->user.__legacyState.Personality->Surprised);
action = ChooseAction(actor->user.Personality->Surprised);
//CON_Message("Surprised");
if (!actor->user.DidAlert && ICanSee)
{
Expand All @@ -601,7 +601,7 @@ VMFunction* DoActorActionDecide(DSWActor* actor)
// Player has not seen actor, to be fair let him know actor
// are there
;
DoActorNoise(actor, ChooseNoise(actor->user.__legacyState.Personality->Broadcast));
DoActorNoise(actor, ChooseNoise(actor->user.Personality->Broadcast));
return action;
}
}
Expand Down Expand Up @@ -687,7 +687,7 @@ int DoActorDecide(DSWActor* actor)

int InitActorMoveCloser(DSWActor* actor)
{
actor->user.__legacyState.ActorActionFunc = AF(DoActorMoveCloser);
actor->user.ActorActionFunc = AF(DoActorMoveCloser);

if (!actor->checkStateGroup(NAME_Run))
actor->setStateGroup(NAME_Run);
Expand Down Expand Up @@ -745,7 +745,7 @@ int DoActorMoveCloser(DSWActor* actor)
}

// Do a noise if ok
DoActorNoise(actor, ChooseNoise(actor->user.__legacyState.Personality->Broadcast));
DoActorNoise(actor, ChooseNoise(actor->user.Personality->Broadcast));

// after moving a ways check to see if player is still in sight
if (actor->user.DistCheck > 34.375)
Expand Down Expand Up @@ -1040,7 +1040,7 @@ int InitActorAttack(DSWActor* actor)
return 0;
}

actor->user.__legacyState.ActorActionFunc = AF(DoActorAttack);
actor->user.ActorActionFunc = AF(DoActorAttack);

// move into standing frame
//actor->setStateGroup(NAME_Stand);
Expand Down Expand Up @@ -1087,7 +1087,7 @@ int DoActorAttack(DSWActor* actor)
{
int rand_num;

DoActorNoise(actor, ChooseNoise(actor->user.__legacyState.Personality->Broadcast));
DoActorNoise(actor, ChooseNoise(actor->user.Personality->Broadcast));

double dist =(actor->spr.pos.XY() - actor->user.targetActor->spr.pos.XY()).Length();

Expand Down Expand Up @@ -1211,7 +1211,7 @@ int InitActorDuck(DSWActor* actor)
return 0;
}

actor->user.__legacyState.ActorActionFunc = AF(DoActorDuck);
actor->user.ActorActionFunc = AF(DoActorDuck);
actor->setStateGroup(NAME_Duck);

double dist = (actor->spr.pos.XY() - actor->user.targetActor->spr.pos.XY()).LengthSquared();
Expand Down Expand Up @@ -1562,7 +1562,7 @@ int InitActorReposition(DSWActor* actor)
}


actor->user.__legacyState.ActorActionFunc = AF(DoActorReposition);
actor->user.ActorActionFunc = AF(DoActorReposition);
if (!(actor->user.Flags & SPR_SWIMMING))
actor->setStateGroup(NAME_Run);

Expand Down Expand Up @@ -1608,7 +1608,7 @@ int DoActorReposition(DSWActor* actor)

int InitActorPause(DSWActor* actor)
{
actor->user.__legacyState.ActorActionFunc = AF(DoActorPause);
actor->user.ActorActionFunc = AF(DoActorPause);

actor->callAction();

Expand Down
2 changes: 1 addition & 1 deletion source/games/sw/src/break.cpp
Expand Up @@ -1021,7 +1021,7 @@ bool NullActor(DSWActor* actor)
return true;

// does not have a STATE or FUNC to control it
if (!actor->user.__legacyState.ActorActionFunc)
if (!actor->user.ActorActionFunc)
return true;

return false;
Expand Down
6 changes: 3 additions & 3 deletions source/games/sw/src/bunny.cpp
Expand Up @@ -1171,7 +1171,7 @@ void BunnyHatch(DSWActor* actor)
actorNew->user.ShellNum = 0; // Not Pregnant right now

actorNew->setStateGroup(NAME_Jump);
actorNew->user.__legacyState.ActorActionFunc = AF(DoActorMoveJump);
actorNew->user.ActorActionFunc = AF(DoActorMoveJump);
DoActorSetSpeed(actorNew, FAST_SPEED);
PickJumpMaxSpeed(actorNew, -600);

Expand Down Expand Up @@ -1219,7 +1219,7 @@ DSWActor* BunnyHatch2(DSWActor* actor)
actorNew->user.ShellNum = 0; // Not Pregnant right now

actorNew->setStateGroup(NAME_Jump);
actorNew->user.__legacyState.ActorActionFunc = AF(DoActorMoveJump);
actorNew->user.ActorActionFunc = AF(DoActorMoveJump);
DoActorSetSpeed(actorNew, FAST_SPEED);
if (TEST_BOOL3(actor))
{
Expand Down Expand Up @@ -1308,7 +1308,7 @@ int DoBunnyMove(DSWActor* actor)
actor->spr.Angles.Yaw = RandomAngle();
actor->user.jump_speed = -350;
DoActorBeginJump(actor);
actor->user.__legacyState.ActorActionFunc = AF(DoActorMoveJump);
actor->user.ActorActionFunc = AF(DoActorMoveJump);
}
}

Expand Down
4 changes: 2 additions & 2 deletions source/games/sw/src/coolg.cpp
Expand Up @@ -552,7 +552,7 @@ int NewCoolg(DSWActor* actor)
actorNew->user.__legacyState.ActorActionSet = &CoolgActionSet;

actorNew->spr.shade = actor->spr.shade;
actorNew->user.__legacyState.Personality = &CoolgPersonality;
actorNew->user.Personality = &CoolgPersonality;
actorNew->user.__legacyState.Attrib = &CoolgAttrib;

// special case
Expand Down Expand Up @@ -695,7 +695,7 @@ int DoCoolgMatchPlayerZ(DSWActor* actor)

int InitCoolgCircle(DSWActor* actor)
{
actor->user.__legacyState.ActorActionFunc = AF(DoCoolgCircle);
actor->user.ActorActionFunc = AF(DoCoolgCircle);

actor->setStateGroup(NAME_Run);

Expand Down
2 changes: 1 addition & 1 deletion source/games/sw/src/coolie.cpp
Expand Up @@ -412,7 +412,7 @@ void EnemyDefaults(DSWActor* actor, ACTOR_ACTION_SET* action, PERSONALITY* perso
actor->spr.picnum = actor->user.__legacyState.State->Pic;
change_actor_stat(actor, STAT_ENEMY);

actor->user.__legacyState.Personality = person;
actor->user.Personality = person;
actor->user.__legacyState.ActorActionSet = action;

DoActorZrange(actor);
Expand Down
4 changes: 2 additions & 2 deletions source/games/sw/src/game.h
Expand Up @@ -699,6 +699,8 @@ struct USER
TArray<int8_t> WallShade;

walltype* WallP; // operate on wall instead of sprite
VMFunction* ActorActionFunc;
PERSONALITY* Personality;

struct LegacyState
{
Expand All @@ -709,8 +711,6 @@ struct USER
STATE** StateFallOverride; // a bit kludgy - override std fall state
ACTOR_ACTION_SET* ActorActionSet;
int16_t RotNum;
VMFunction* ActorActionFunc;
PERSONALITY* Personality;
ATTRIBUTE* Attrib;

};
Expand Down
2 changes: 1 addition & 1 deletion source/games/sw/src/hornet.cpp
Expand Up @@ -413,7 +413,7 @@ int DoHornetMatchPlayerZ(DSWActor* actor)

int InitHornetCircle(DSWActor* actor)
{
actor->user.__legacyState.ActorActionFunc = AF(DoHornetCircle);
actor->user.ActorActionFunc = AF(DoHornetCircle);

actor->setStateGroup(NAME_Run);

Expand Down
2 changes: 1 addition & 1 deletion source/games/sw/src/jsector.cpp
Expand Up @@ -183,7 +183,7 @@ void JS_SpriteSetup(void)
itActor->user.__legacyState.RotNum = 0;
itActor->user.WaitTics = itActor->spr.lotag * 120;

itActor->user.__legacyState.ActorActionFunc = AF(GenerateDrips);
itActor->user.ActorActionFunc = AF(GenerateDrips);

change_actor_stat(itActor, STAT_NO_STATE);
itActor->spr.cstat |= CSTAT_SPRITE_INVISIBLE;
Expand Down
10 changes: 5 additions & 5 deletions source/games/sw/src/ninja.cpp
Expand Up @@ -1785,14 +1785,14 @@ int SetupNinja(DSWActor* actor)
{
actor->user.__legacyState.Attrib = &NinjaAttrib;
actor->user.__legacyState.ActorActionSet = &NinjaActionSet;
actor->user.__legacyState.Personality = &NinjaPersonality;
actor->user.Personality = &NinjaPersonality;
ChangeState(actor, s_NinjaCeiling[0]);
}
else
{
actor->user.__legacyState.Attrib = &NinjaAttrib;
actor->user.__legacyState.ActorActionSet = &NinjaSniperActionSet;
actor->user.__legacyState.Personality = &NinjaSniperPersonality;
actor->user.Personality = &NinjaSniperPersonality;
ChangeState(actor, s_NinjaDuck[0]);
}
}
Expand All @@ -1810,14 +1810,14 @@ int SetupNinja(DSWActor* actor)
{
actor->user.__legacyState.Attrib = &NinjaAttrib;
actor->user.__legacyState.ActorActionSet = &NinjaActionSet;
actor->user.__legacyState.Personality = &NinjaPersonality;
actor->user.Personality = &NinjaPersonality;
ChangeState(actor, s_NinjaCeiling[0]);
}
else
{
actor->user.__legacyState.Attrib = &NinjaAttrib;
actor->user.__legacyState.ActorActionSet = &NinjaSniperActionSet;
actor->user.__legacyState.Personality = &NinjaSniperPersonality;
actor->user.Personality = &NinjaSniperPersonality;
ChangeState(actor, s_NinjaDuck[0]);
}
}
Expand Down Expand Up @@ -1849,7 +1849,7 @@ int SetupNinja(DSWActor* actor)
{
actor->user.__legacyState.Attrib = &NinjaAttrib;
actor->user.__legacyState.ActorActionSet = &NinjaSniperActionSet;
actor->user.__legacyState.Personality = &NinjaSniperPersonality;
actor->user.Personality = &NinjaSniperPersonality;
ChangeState(actor, s_NinjaDuck[0]);
}
}
Expand Down
2 changes: 1 addition & 1 deletion source/games/sw/src/ripper.cpp
Expand Up @@ -1227,7 +1227,7 @@ void RipperHatch(DSWActor* actor)
actorNew->user.Flags |= (SPR_ACTIVE);

actorNew->setStateGroup(NAME_Jump);
actorNew->user.__legacyState.ActorActionFunc = AF(DoActorMoveJump);
actorNew->user.ActorActionFunc = AF(DoActorMoveJump);
DoActorSetSpeed(actorNew, FAST_SPEED);
PickJumpMaxSpeed(actorNew, -600);

Expand Down
2 changes: 1 addition & 1 deletion source/games/sw/src/ripper2.cpp
Expand Up @@ -1235,7 +1235,7 @@ void Ripper2Hatch(DSWActor* actor)
actorNew->user.Flags |= (SPR_ACTIVE);

actorNew->setStateGroup(NAME_Jump);
actorNew->user.__legacyState.ActorActionFunc = AF(DoActorMoveJump);
actorNew->user.ActorActionFunc = AF(DoActorMoveJump);
DoActorSetSpeed(actorNew, FAST_SPEED);
PickJumpMaxSpeed(actorNew, -600);

Expand Down
4 changes: 2 additions & 2 deletions source/games/sw/src/save.cpp
Expand Up @@ -745,7 +745,7 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, USER& w, USER* def
("StateEnd", w.__legacyState.StateEnd, def->__legacyState.StateEnd)
("StateFallOverride", w.__legacyState.StateFallOverride, def->__legacyState.StateFallOverride)
("ActorActionSet", w.__legacyState.ActorActionSet, def->__legacyState.ActorActionSet)
("Personality", w.__legacyState.Personality, def->__legacyState.Personality)
("Personality", w.Personality, def->Personality)
("Attrib", w.__legacyState.Attrib, def->__legacyState.Attrib)
("sop_parent", w.sop_parent, def->sop_parent)
("flags", w.Flags, def->Flags)
Expand Down Expand Up @@ -826,7 +826,7 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, USER& w, USER* def
("filler", w.filler, def->filler)
("wallshade", w.WallShade)
("rotator", w.rotator)
("actoractionfunc", w.__legacyState.ActorActionFunc)
("actoractionfunc", w.ActorActionFunc)
("oz", w.oz, def->oz);

arc.EndObject();
Expand Down
6 changes: 3 additions & 3 deletions source/games/sw/src/sector.cpp
Expand Up @@ -1008,7 +1008,7 @@ void DoSpawnSpotsForKill(short match)
if (actor->spr.hitag == SPAWN_SPOT && actor->spr.lotag == match)
{
change_actor_stat(actor, STAT_NO_STATE);
actor->user.__legacyState.ActorActionFunc = AF(DoSpawnSpot);
actor->user.ActorActionFunc = AF(DoSpawnSpot);
actor->user.WaitTics = SP_TAG5(actor) * 15;
SetActorZ(actor, actor->spr.pos);
// setting for Killed
Expand All @@ -1035,7 +1035,7 @@ void DoSpawnSpotsForDamage(short match)
if (actor->spr.hitag == SPAWN_SPOT && actor->spr.lotag == match)
{
change_actor_stat(actor, STAT_NO_STATE);
actor->user.__legacyState.ActorActionFunc = AF(DoSpawnSpot);
actor->user.ActorActionFunc = AF(DoSpawnSpot);
actor->user.WaitTics = SP_TAG7(actor) * 15;
// setting for Damaged
actor->user.LastDamage = 0;
Expand Down Expand Up @@ -1778,7 +1778,7 @@ int OperateSprite(DSWActor* actor, short player_is_operating)

SpawnUser(actor, 0, nullptr);

actor->user.__legacyState.ActorActionFunc = AF(DoGrating);
actor->user.ActorActionFunc = AF(DoGrating);

actor->spr.lotag = 0;
actor->spr.hitag /= 2;
Expand Down

0 comments on commit e97dfb3

Please sign in to comment.