- Ordenació alfabètica dels actors de cada habitació per als arxius i l'editor
This commit is contained in:
@@ -281,6 +281,57 @@ namespace actor
|
||||
return "NONE";
|
||||
}
|
||||
|
||||
actor_t *alpha = nullptr;
|
||||
const bool a_is_greater_than_b(actor_t *a, actor_t *b)
|
||||
{
|
||||
return strcmp(a->name, b->name) >= 0;
|
||||
}
|
||||
|
||||
void order(actor_t *act)
|
||||
{
|
||||
if (!act) return;
|
||||
if (!a_is_greater_than_b(act, alpha))
|
||||
{
|
||||
act->next_alpha = alpha;
|
||||
alpha = act;
|
||||
}
|
||||
else
|
||||
{
|
||||
actor_t *other = alpha;
|
||||
actor_t *prev = nullptr;
|
||||
while (a_is_greater_than_b(act, other))
|
||||
{
|
||||
if (other->next_alpha)
|
||||
{
|
||||
prev = other;
|
||||
other = other->next_alpha;
|
||||
}
|
||||
else
|
||||
{
|
||||
other->next_alpha = act;
|
||||
return;
|
||||
}
|
||||
}
|
||||
prev->next_alpha = act;
|
||||
act->next_alpha = other;
|
||||
}
|
||||
}
|
||||
|
||||
actor_t *alphaOrder(actor_t *act)
|
||||
{
|
||||
if (!act) return nullptr;
|
||||
alpha = act;
|
||||
act->next_alpha = nullptr;
|
||||
act = act->next;
|
||||
while (act)
|
||||
{
|
||||
act->next_alpha = nullptr;
|
||||
order(act);
|
||||
act = act->next;
|
||||
}
|
||||
return alpha;
|
||||
}
|
||||
|
||||
void saveToFile(FILE *f, actor_t *act)
|
||||
{
|
||||
fprintf(f, "\nactor{\n");
|
||||
|
||||
Reference in New Issue
Block a user