fp: Add collide rules in move entity
This commit is contained in:
parent
4842bd32f9
commit
2aa3a9568b
@ -159,6 +159,31 @@ static void FP_Game_MoveEntity(FP_Game *game, FP_GameEntityHandle entity_handle,
|
|||||||
if ((collider->flags & FP_GameEntityFlag_NonTraversable) == 0)
|
if ((collider->flags & FP_GameEntityFlag_NonTraversable) == 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
bool entity_collides_with_collider = true;
|
||||||
|
switch (entity->type) {
|
||||||
|
case FP_EntityType_Nil: {
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case FP_EntityType_Terry: {
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case FP_EntityType_Smoochie: {
|
||||||
|
if (collider->type == FP_EntityType_Smoochie || collider->type == FP_EntityType_Clinger)
|
||||||
|
entity_collides_with_collider = false;
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case FP_EntityType_Clinger: {
|
||||||
|
if (collider->type == FP_EntityType_Smoochie || collider->type == FP_EntityType_Clinger)
|
||||||
|
entity_collides_with_collider = false;
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case FP_EntityType_Merchant: {
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!entity_collides_with_collider)
|
||||||
|
continue;
|
||||||
|
|
||||||
// NOTE: Sweep collider with half the radius of the source entity
|
// NOTE: Sweep collider with half the radius of the source entity
|
||||||
Dqn_Rect collider_world_hit_box = FP_Game_CalcEntityWorldHitBox(game, collider->handle);
|
Dqn_Rect collider_world_hit_box = FP_Game_CalcEntityWorldHitBox(game, collider->handle);
|
||||||
Dqn_Rect swept_collider_world_hit_box = collider_world_hit_box;
|
Dqn_Rect swept_collider_world_hit_box = collider_world_hit_box;
|
||||||
@ -1197,7 +1222,7 @@ void FP_Update(TELY_Platform *platform, FP_Game *game, TELY_PlatformInput *input
|
|||||||
else
|
else
|
||||||
attack_dir_vector.x = -1.f;
|
attack_dir_vector.x = -1.f;
|
||||||
|
|
||||||
Dqn_V2 attack_acceleration_meters_per_s = attack_dir_vector * 20.f;
|
Dqn_V2 attack_acceleration_meters_per_s = attack_dir_vector * 60.f;
|
||||||
FP_Game_MoveEntity(game, defender->handle, attack_acceleration_meters_per_s);
|
FP_Game_MoveEntity(game, defender->handle, attack_acceleration_meters_per_s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ enum FP_EntityType
|
|||||||
FP_EntityType_Smoochie,
|
FP_EntityType_Smoochie,
|
||||||
FP_EntityType_Merchant,
|
FP_EntityType_Merchant,
|
||||||
FP_EntityType_Clinger,
|
FP_EntityType_Clinger,
|
||||||
|
FP_EntityType_Count,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FP_EntityTerryState
|
enum FP_EntityTerryState
|
||||||
|
Loading…
Reference in New Issue
Block a user