VISIBLE gibt es nicht mehr, nur noch die Flags INVISIBLE (für Level-Entities) und SHOW (für View-Entities).
set und reset sind Makros, die sich, wie bereits von dir bezweifelt, nur auf die gewöhnlichen flags auswirken. Du kannst dir für flags2 selbst solche definieren oder die betreffenden flags direkt setzen, bspw. wie folgt:
sky_1.flags2 |= SHOW; // an
sky_1.flags2 &= ~SHOW; // aus
Deine Funktion "time" ist zudem nicht sonderlich gut durchdacht, nicht nur, dass Variable und Funktionenname gleich heißen, sondern auch, dass der Bereich hinter der while-Schleife niemals ausgeführt wird. Zudem empfehle ich, die Verwendung der wait-Funktion mit negativem Argument zu vermeiden. Wenn ich die Absicht der Funktion korrekt verstehe, lässt sie sich alternativ schreiben wie folgt:
void do_sky()
{
var time = 0;
sky_1.flags2 |= SHOW;
sky_2.flags2 &= ~SHOW;
while(1)
{
while(time < 12*16) // 16 ticks = 1 Sekunde
{
time += time_step;
wait(1);
}
sky_1.flags2 &= ~SHOW;
sky_2.flags2 |= SHOW;
time = 0;
while(time < 12*16)
{
time += time_step;
wait(1);
}
sky_1.flags2 |= SHOW;
sky_2.flags2 &= ~SHOW;
wait(1);
}
}