mirror of
https://github.com/ZDoom/qzdoom.git
synced 2025-02-19 18:41:02 +00:00
- Added a new field to the Actor class which stores the amount of ticks passed since the game started on the moment the actor was spawned.
- Added a function to the Actor class to get its spawn time relative to the current level. - Added spawn time information to the output of the "info" console command.
This commit is contained in:
parent
b1d35eb0b3
commit
a6dbfcf9c2
4 changed files with 35 additions and 3 deletions
|
@ -1033,6 +1033,8 @@ public:
|
||||||
void AttachLight(unsigned int count, const FLightDefaults *lightdef);
|
void AttachLight(unsigned int count, const FLightDefaults *lightdef);
|
||||||
void SetDynamicLights();
|
void SetDynamicLights();
|
||||||
|
|
||||||
|
// When was this actor spawned? (relative to the current level)
|
||||||
|
int GetLevelSpawnTime() const;
|
||||||
|
|
||||||
// info for drawing
|
// info for drawing
|
||||||
// NOTE: The first member variable *must* be snext.
|
// NOTE: The first member variable *must* be snext.
|
||||||
|
@ -1262,6 +1264,9 @@ public:
|
||||||
int PrevPortalGroup;
|
int PrevPortalGroup;
|
||||||
TArray<TObjPtr<AActor*> > AttachedLights;
|
TArray<TObjPtr<AActor*> > AttachedLights;
|
||||||
|
|
||||||
|
// When was this actor spawned?
|
||||||
|
int SpawnTime;
|
||||||
|
|
||||||
// ThingIDs
|
// ThingIDs
|
||||||
static void ClearTIDHashes ();
|
static void ClearTIDHashes ();
|
||||||
void AddToHash ();
|
void AddToHash ();
|
||||||
|
|
|
@ -348,6 +348,7 @@ DEFINE_FIELD(AActor, BloodTranslation)
|
||||||
DEFINE_FIELD(AActor, RenderHidden)
|
DEFINE_FIELD(AActor, RenderHidden)
|
||||||
DEFINE_FIELD(AActor, RenderRequired)
|
DEFINE_FIELD(AActor, RenderRequired)
|
||||||
DEFINE_FIELD(AActor, friendlyseeblocks)
|
DEFINE_FIELD(AActor, friendlyseeblocks)
|
||||||
|
DEFINE_FIELD(AActor, SpawnTime)
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
|
@ -528,8 +529,9 @@ void AActor::Serialize(FSerializer &arc)
|
||||||
A("selfdamagefactor", SelfDamageFactor)
|
A("selfdamagefactor", SelfDamageFactor)
|
||||||
A("stealthalpha", StealthAlpha)
|
A("stealthalpha", StealthAlpha)
|
||||||
A("renderhidden", RenderHidden)
|
A("renderhidden", RenderHidden)
|
||||||
A("renderrequired", RenderRequired);
|
A("renderrequired", RenderRequired)
|
||||||
A("friendlyseeblocks", friendlyseeblocks);
|
A("friendlyseeblocks", friendlyseeblocks)
|
||||||
|
A("spawntime", SpawnTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef A
|
#undef A
|
||||||
|
@ -5006,6 +5008,7 @@ AActor *AActor::StaticSpawn (PClassActor *type, const DVector3 &pos, replace_t a
|
||||||
AActor *actor;
|
AActor *actor;
|
||||||
|
|
||||||
actor = static_cast<AActor *>(const_cast<PClassActor *>(type)->CreateNew ());
|
actor = static_cast<AActor *>(const_cast<PClassActor *>(type)->CreateNew ());
|
||||||
|
actor->SpawnTime = level.totaltime;
|
||||||
|
|
||||||
// Set default dialogue
|
// Set default dialogue
|
||||||
actor->ConversationRoot = GetConversation(actor->GetClass()->TypeName);
|
actor->ConversationRoot = GetConversation(actor->GetClass()->TypeName);
|
||||||
|
@ -8063,6 +8066,25 @@ void AActor::SetTranslation(FName trname)
|
||||||
// silently ignore if the name does not exist, this would create some insane message spam otherwise.
|
// silently ignore if the name does not exist, this would create some insane message spam otherwise.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
// AActor :: GetLevelSpawnTime
|
||||||
|
//
|
||||||
|
// Returns the time when this actor was spawned,
|
||||||
|
// relative to the current level.
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
int AActor::GetLevelSpawnTime() const
|
||||||
|
{
|
||||||
|
return SpawnTime - level.totaltime + level.time;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(AActor, GetLevelSpawnTime)
|
||||||
|
{
|
||||||
|
PARAM_SELF_PROLOGUE(AActor);
|
||||||
|
ACTION_RETURN_INT(self->GetLevelSpawnTime());
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// PROP A_RestoreSpecialPosition
|
// PROP A_RestoreSpecialPosition
|
||||||
|
@ -8587,5 +8609,8 @@ void PrintMiscActorInfo(AActor *query)
|
||||||
Printf("FriendlySeeBlocks: %d\n", query->friendlyseeblocks);
|
Printf("FriendlySeeBlocks: %d\n", query->friendlyseeblocks);
|
||||||
Printf("Target: %s\n", query->target ? query->target->GetClass()->TypeName.GetChars() : "-");
|
Printf("Target: %s\n", query->target ? query->target->GetClass()->TypeName.GetChars() : "-");
|
||||||
Printf("Last enemy: %s\n", query->lastenemy ? query->lastenemy->GetClass()->TypeName.GetChars() : "-");
|
Printf("Last enemy: %s\n", query->lastenemy ? query->lastenemy->GetClass()->TypeName.GetChars() : "-");
|
||||||
|
Printf("Spawn time: %d ticks (%f seconds) after game start, %d ticks (%f seconds) after level start\n",
|
||||||
|
query->SpawnTime, (double) query->SpawnTime / TICRATE,
|
||||||
|
query->GetLevelSpawnTime(), (double) query->GetLevelSpawnTime() / TICRATE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,7 +91,7 @@ const char *GetVersionString();
|
||||||
|
|
||||||
// Use 4500 as the base git save version, since it's higher than the
|
// Use 4500 as the base git save version, since it's higher than the
|
||||||
// SVN revision ever got.
|
// SVN revision ever got.
|
||||||
#define SAVEVER 4552
|
#define SAVEVER 4553
|
||||||
|
|
||||||
// This is so that derivates can use the same savegame versions without worrying about engine compatibility
|
// This is so that derivates can use the same savegame versions without worrying about engine compatibility
|
||||||
#define GAMESIG "GZDOOM"
|
#define GAMESIG "GZDOOM"
|
||||||
|
|
|
@ -234,6 +234,7 @@ class Actor : Thinker native
|
||||||
native int RenderHidden;
|
native int RenderHidden;
|
||||||
native int RenderRequired;
|
native int RenderRequired;
|
||||||
native readonly int FriendlySeeBlocks;
|
native readonly int FriendlySeeBlocks;
|
||||||
|
native readonly int SpawnTime;
|
||||||
|
|
||||||
meta String Obituary; // Player was killed by this actor
|
meta String Obituary; // Player was killed by this actor
|
||||||
meta String HitObituary; // Player was killed by this actor in melee
|
meta String HitObituary; // Player was killed by this actor in melee
|
||||||
|
@ -708,6 +709,7 @@ class Actor : Thinker native
|
||||||
native void GiveSecret(bool printmsg = true, bool playsound = true);
|
native void GiveSecret(bool printmsg = true, bool playsound = true);
|
||||||
native clearscope double GetCameraHeight() const;
|
native clearscope double GetCameraHeight() const;
|
||||||
native clearscope double GetGravity() const;
|
native clearscope double GetGravity() const;
|
||||||
|
native clearscope int GetLevelSpawnTime() const;
|
||||||
|
|
||||||
native bool CheckClass(class<Actor> checkclass, int ptr_select = AAPTR_DEFAULT, bool match_superclass = false);
|
native bool CheckClass(class<Actor> checkclass, int ptr_select = AAPTR_DEFAULT, bool match_superclass = false);
|
||||||
native void AddInventory(Inventory inv);
|
native void AddInventory(Inventory inv);
|
||||||
|
|
Loading…
Reference in a new issue