fp: Add sentinel DS, fix physics step, fix waypoints
This commit is contained in:
+15
-20
@@ -203,12 +203,9 @@ static FP_GameEntity *FP_Game_MakeEntityPointerFV(FP_Game *game, DQN_FMT_STRING_
|
||||
result->handle.id = (game->entities.size - 1) & FP_GAME_ENTITY_HANDLE_INDEX_MASK;
|
||||
}
|
||||
|
||||
result->size_scale = Dqn_V2_InitNx1(1);
|
||||
result->parent = FP_Game_ActiveParentEntityPointer(game);
|
||||
result->name = TELY_ChunkPool_AllocFmtFV(game->chunk_pool, fmt, args);
|
||||
result->waypoints = TELY_ChunkPool_New(game->chunk_pool, FP_GameWaypoint);
|
||||
result->waypoints->next = result->waypoints;
|
||||
result->waypoints->prev = result->waypoints;
|
||||
result->size_scale = Dqn_V2_InitNx1(1);
|
||||
result->parent = FP_Game_ActiveParentEntityPointer(game);
|
||||
result->name = TELY_ChunkPool_AllocFmtFV(game->chunk_pool, fmt, args);
|
||||
|
||||
// NOTE: Attach entity as a child to the parent
|
||||
FP_GameEntity *parent = result->parent;
|
||||
@@ -292,8 +289,8 @@ static void FP_Game_DetachEntityIntoFreeList(FP_Game *game, FP_GameEntityHandle
|
||||
if (entity->name.size)
|
||||
TELY_ChunkPool_Dealloc(game->chunk_pool, entity->name.data);
|
||||
|
||||
if (entity->spawn_list)
|
||||
TELY_ChunkPool_Dealloc(game->chunk_pool, entity->spawn_list);
|
||||
FP_SentinelList_Deinit(&entity->spawn_list, game->chunk_pool);
|
||||
FP_SentinelList_Deinit(&entity->waypoints, game->chunk_pool);
|
||||
|
||||
if (new_entity_generation > entity_generation) {
|
||||
// NOTE: Update the incremented handle disassociating all prior handles
|
||||
@@ -654,17 +651,15 @@ static FP_GameEntityHandle FP_Game_EntityAddWallAtTile(FP_Game *game, Dqn_String
|
||||
|
||||
static FP_GameEntityHandle FP_Game_EntityAddMob(FP_Game *game, Dqn_V2 pos)
|
||||
{
|
||||
FP_GameEntity *entity = FP_Game_MakeEntityPointerF(game, "Mob");
|
||||
entity->type = FP_EntityType_Smoochie;
|
||||
entity->local_pos = pos;
|
||||
entity->size_scale = Dqn_V2_InitNx1(.25f);
|
||||
entity->local_hit_box_size = Dqn_V2_InitNx2(428, 471) * entity->size_scale;
|
||||
entity->flags |= FP_GameEntityFlag_Clickable;
|
||||
entity->flags |= FP_GameEntityFlag_MoveByKeyboard;
|
||||
entity->flags |= FP_GameEntityFlag_MoveByMouse;
|
||||
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
||||
entity->stalk_entity = game->player;
|
||||
|
||||
FP_GameEntityHandle result = entity->handle;
|
||||
FP_GameEntity *entity = FP_Game_MakeEntityPointerF(game, "Mob");
|
||||
entity->type = FP_EntityType_Smoochie;
|
||||
entity->local_pos = pos;
|
||||
entity->size_scale = Dqn_V2_InitNx1(.25f);
|
||||
entity->local_hit_box_size = Dqn_V2_InitNx2(428, 471) * entity->size_scale;
|
||||
entity->flags |= FP_GameEntityFlag_Clickable;
|
||||
entity->flags |= FP_GameEntityFlag_MoveByKeyboard;
|
||||
entity->flags |= FP_GameEntityFlag_MoveByMouse;
|
||||
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
||||
FP_GameEntityHandle result = entity->handle;
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user