Doorgaan met een functie na een break statement bij een volgende function call.

Status
Niet open voor verdere reacties.

ThijssjihT

Gebruiker
Lid geworden
3 dec 2007
Berichten
32
Ik weet niet of ik het juiste jargon heb gebruikt in de titel, maar ik denk dat het onderwerp wel duidelijk is, maar ik zal er iets dieper op ingaan.

Ik ben een topdown rpg aan het maken, en het aantal resources is al flink groot, en zal nog groter worden. Als een level wordt gestart, moeten eerst de benodigde resources worden geladen. Tijdens het laden reageert het programma tijdelijk niet meer. Ik neem aan dat dit komt doordat er tijdens het laden van resources geen messages worden gelezen en verwijderd. De peek_message functie wordt namelijk niet aangeroepen, omdat het programma die functie pas weer bereikt als het helemaal klaar is met het laden van alle benodigde resources.

De functie void LevelInit() is de functie waar de resources worden geladen. Kan ik een break statement uitvoeren om nieuwe messages te lezen, LevelInit() opnieuw aanroepen, en dat ie weer verdergaat waar die gebleven was?

Of kan ik met multithreading dit probleem verhelpen? Hier heb ik me nog nooit echt in verdiept, maar ik dacht dat je met 2 threads op 2 verschillende plekken simultaan een aantal lijnen code kan laten uitvoeren. Dus 1 thread de messages laten lezen, en de andere thread de resources laden. Klopt dit?
 
Een nieuwe thread aanmaken is de beste oplossing. Het blijft echter de vraag waarom je GUI beschikbaar moet blijven voor de gebruiker als je programma aan het laden is. Kan de gebruiker het laden annuleren om vervolgens een andere map te selecteren? Het is volledig afhankelijk van de functionaliteit van je programma welke methode het beste in aanmerking komt. Door het laden van de resources 'los' te zetten van je GUI ontstaat er een breder stuk functionaliteit.
 
Bedankt voor je reactie. Ik ga zeker naar multi-threads kijken.

Maar ik geloof dat ik toch niet duidelijk was.

Kies random een game, en de kans is groot dat er laadschermen in zitten. Tijdens deze laadschermen worden modellen, textures en scripts geladen. Dit gebeurt bij mijn programma ook
Tijdens het laden van deze dingen, moeten er nog steeds messages worden gelezen. Zodra dit niet meer wordt gedaan, zie je (Reageert niet) bij de caption van het venster staan. Pas nadat alles geladen is, gaat mijn programma weer door, en worden er weer messages gelezen, en verdwijnt de melding weer uit de caption van het venster. Ik wil deze melding niet hebben, ook omdat je ondertussen niet meer het venster kan verplaatsen e.d. Daarbij, als de functie niet continu doorloopt, of simultaan aan een ander thread, is het mogelijk om later een progress bar/circel/parallellopipidumte toe te voegen aan het laadscherm. Of om te laden tijdens een cutscreen.
 
Wat je het beste kunt doen is een nieuwe thread aanmaken voor je GUI en de resources laden vanuit je main thread. Aangezien je in dit geval gebruik maakt van een extra thread kun je hier gebruik van maken door functionaliteit toe te voegen aan je programma.

Laat een loading screen aan de gebruiker zien die het percentage van de hoeveelheid geladen resources aangeeft. Voeg een 'Annuleren' knop toe zodat de gebruiker de mogelijkheid heeft om het laden te onderbreken. Door de twee verschillende taken van je programma op te splitsen ontstaan er hoop interessante mogelijkheden waarbij ik jouw aanraadt om deze te onderzoeken.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan