Struktura souboru
Tato cast bude o tech souborech a adresarich, ktere se meni behem hrani a hlavne behem tvoreni her. Nebudu zde resit adresare/soubory potrebne pro samotny system ani importovaci adresare
- Games - strukturovany adresar, ktery obsahuje veskere zdroje her (levly, skripty, automatismy, pakaze, definice postupu po levlech) FileSystem/Levels, KrkalC/NecisteOperace
- Profiles - Info o tobe (co si dohral, editoval, vytvoril,...). Ulozene hry. FileSystem/Profiles
- Translations - databaze prekladu FileSystem/Preklady
- Dokumentace - pokud nekdo byde chtit vytvorit textovou dokumentaci ke sve hre. Dat ji do rootu ke krkalske dokumentaci, nebo nekam do Games?
- compiler/code - .code soubory (prelozene interpretovane skripty a informace o objektech) (nemel bych jmeno souboru urezavat jen na verzi, je to neprehledne)
- compiler/bin - .dll soubory (prelozene kompilovane scripty)
- compiler/cppSource - cpp zdrojaky kompilovanych skriptu (nakrazuje KScripts)
- compiler/DebugOutput - debug vystup
Verzovani
- Verze zarucuje unikatnost souboru.
- U profilu se uklada seznam verzi souboru, na ktere mas prava zapisu. Vzdy maximalne jeden uzivatel ma pravo zapisu na dany soubor. Prava se muzes vzdat a predat ho jinemu uzivateli. (neco jako zamykani v SS). Uzavreni skriptu znamena, ze uz nikdo nema pravo zapisu. Popkud uzivatel s pravem umre uz nikdy nikdo nebude moct dany soubor modifikovat.
- Vzdy muzes vytvorit kopii souboru a dat ji jine jmeno a hlavne verzi -> Tim automaticky ziskas prava zapisu
- Verze by mela byt jen soucasti nazvu fajlu. Nemela by se vyskytovat nikde uvnitr souboru. -> Muzu jednoduse vytvorit kopii pod jinou verzi. Pak ale cely soubor a vse uvnitr uz jsou jine entity. Naprikad pokud takhle zduplikuju pakaz, vse uvnitr ma timto jine/nove nazvy. Vyjimku tvori skripty viz KrkalC/NecisteOperace
Verzovane soubory
- levly - (*.lv/!level, *.lv/!level.info) tady ma verzi adresar
- skripty (*.kc, *.dkc (adresarovy skript pro konfikurace/statistiky))
- automatismy (* .a)
- pakaze (*.pkg)
- adresare mohou a nemusi mit verzi (pokud adresar verzi nema, nemuze v nem bezet *.dkc skript)
- dir.profile verzi nemaji, v adresari je vzdy maximalne jeden
- v Games muzes mit i mnoho dalsich neznamych souboru bez verze
- adresar profiles je plochy. Profily maji taky povinnou verzi
- k souborum s prekladama se pripojuje verze tveho profilu. Jsou tak odlisene tvoje a cizi preklady
- soubory v podadresarich compiler maji jmena odvozena z jmen skriptu (*.kc), obsahuji tedy odpovidajici verzi. (je to vnejsi verze (verze souboru) ne vnitrni (verze objektu))
Struktura v games - Duplicity
- V Games nesmi mit zadna entita stejnou verzi jako jina entita. Pokud se verze schoduji, tak se binarne shoduji i vnitrky a nazvy fajlu
- Odkazy na jine fajly budou delany bez cesty. Vyhledavani fajlu bude probihat postupne od aktualniho adresare, pres nadrazene az do Games
- FS bude udrzovat informace o vsech souborech v games. Zaznamy budou obsahovat: cestu, (verzi), datum/cas a velikost. Plus bude ukladana informace o duplicitach - tedy o fajlech ktere se binarne shoduji
- tato databaze se bude kontrolovat pri startu a pri pristupu k fajlum. Zmeny se budou identifikovat podle zmeny ve velikosti nebo case. V pripade zmeny nebo noveho souboru se overuji duplicity binarnim porovnanim vnitrku fajlu.
- Pokud soubory nejsou shodne, musis jednomu z nich dat jinou verzi.
- Je povolena jen duplicita mezi sousednimi adresarovymi stromy
- Duplicita ve vnitrnim a vnejsim adresari se vyresi smazanim souboru ve vnitrnim adresari
- Levly a adresare nemohou byt duplicitni
- S duplicitami je pracovano v rezimu Read any/ write all. S kazdym pristupem se take kontroluje integrita podle casu a velikosti. Co delat, pokud v prubehu prace zjistim, ze doslo ke zmene? (nekdo zvenci neco zmenil)
Souborove operace
FS musi podporovat celou radu operaci se soubory:
- operace na miste - pro celou skupinu duplicit/ jen pro jeden soubor
- delete
- copy - vzdy zmeni verzi, ziskas prava zapisu, pojmenovani muzes ponechat stejne
- rename - vzdy zmeni verzi, ziskas prava zapisu, pojmenovani muzes ponechat stejne
- operace s targetem
- copy - vzdy zmeni verzi, ziskas prava zapisu, pojmenovani muzes ponechat stejne
- dup - FS musi kontrolovat, aby nevznikly diplicity v jednom podstromu
- move - FS musi kontrolovat, aby nevznikly diplicity v jednom podstromu
- move&rename - vzdy zmeni verzi, ziskas prava zapisu, pojmenovani muzes ponechat stejne
- poklud pracuji s adresarem, jeho vnitrek je rekurzivne zduplikovan (duplicity jsou preferovany pred zbytecnym tvorenim novych verzi. At je nova verze vytvorena taprve tehdy, kdyz uz je to nutne (nemas zapisova prava, ale potrebujes zapsat))
