Witam, mam taki format poziomu do swojej gry:
LEVEL FORMAT:
LevelHeader
LevelGoal
LevelObject
LevelObject
(...)
string: "------!FINISHBLOCK!------"
(if dialogs are present) string: "------!BEGINDIALOGBLOCK!------"
DialogPart
DialogPart
(...)
string: "------!FINISHBLOCK!------"
LevelHeader, LevelGoal, itd. są structami. Zapis wiem jak zrobić, gorzej będzie z odczytem. Otóż jak widzicie, poszczególne części pliku poziomu są rozdzielone delimiterami będącymi stringami (dla wygody - dzięki temu w razie SNAFU mogę szybko podejrzeć w hexedicie i wiedzieć gdzie się bloki zaczynają i kończą).
Dlatego też, po każdym odczycie LevelObject czy DialogPart muszę patrzeć czy jak odczytam stringa to nie będzie on czasem równał się "------!FINISHBLOCK!------" a jesli tak to odczytać kolejnego stringa żebym wiedział jaki blok jest następny (oprócz pierwszego bloku z obiektami poziomu wszystkie inne mogą występować w dowolnej kolejności a format jest zaprojektowany aby można go było rozszerzać bez utraty kompatybilności).
Niestety jak pewnie wiecie, odczyt stringa powoduje przesunięcie "wskaźnika" pliku i teraz jak go przesunąć z powrotem w razie gdyby to jednak nie był "------!FINISHBLOCK!------", tylko losowe dane (wskazujące na to że dalej jest kolejny LevelObject czy DialogPart)?
Odczyt/zapis pliku będzie się odbywać przy pomocy BinaryReader/BinaryWriter.