Tiedostot

Ulkoisten tiedostojen käyttäminen on hyödyllistä. Voit esimerkiksi tehdä tiedoston, joka kertoo, mitä millä hetkillä pitäisi tapahtua. Voit myös haluta tallentaa tietoa seuraavaa pelikertaa varten (esimerkiksi parhaillaan esillä olevan huoneen). Seuraavat funktiot lukevat ja kirjoittavat tietoa tekstitiedostoihin:

file_text_open_read(fname) Avaa tekstitiedoston, jonka nimi annetaan, lukutilassa. Tämä funktio palauttaa tiedoston id-arvon, joka sinun täytyy antaa eteenpäin kaikissa muissa funktioissa. Voit avata maksimissaan 32 tiedostoa samanaikaiseen käsittelyyn. Älä unohda sulkea niitä, kun olet saanut tehtyä niillä kaiken haluamasi.
file_text_open_write(fname) Avaa tekstitiedoston, jonka nimi annetaan, kirjoitustilassa ja luo sen, jos sitä ei ole olemassa. Tämä funktio palauttaa tiedoston id-arvon, joka sinun täytyy antaa eteenpäin kaikissa muissa funktioissa.
file_text_open_append(fname) Avaa tekstitiedoston, jonka nimi annetaan, lisäystilassa (vastaa kirjoitustilaa, jossa siirrytään tiedoston loppuun) ja luo sen, jos sitä ei ole olemassa. Tämä funktio palauttaa tiedoston id-arvon, joka sinun täytyy antaa eteenpäin kaikissa muissa funktioissa.
file_text_close(fileid) Sulkee tiedoston, jolla on annettu id.
file_text_write_string(fileid,str) Kirjoittaa merkkijonon tiedostoon, jolla on annettu id.
file_text_write_real(fileid,x) Kirjoittaa reaaliluvun tiedostoon, jolla on annettu id.
file_text_writeln(fileid) Kirjoittaa rivinvaihtomerkin tiedostoon, jolla on annettu id.
file_text_read_string(fileid) Lukee merkkijonon tiedostosta, jolla on annettu id, ja palauttaa sen. Merkkijono päättyy rivinvaihtoon.
file_text_read_real(fileid) Lukee reaaliluvun tiedostosta, jolla on annettu id, ja palauttaa sen.
file_text_readln(fileid) Siirtyy seuraavalle riville tiedostossa, jolla on annettu id.
file_text_eof(fileid) Ilmoittaa, onko tiedoston, jolla on annettu id, loppuun päästy.

Seuraavilla funktioilla voit muokata tiedostojärjestelmän tiedostoja:

file_exists(fname) Ilmoittaa, onko kyseisen niminen tiedosto olemassa (true) vai ei (false).
file_delete(fname) Poistaa annetun tiedoston.
file_rename(oldname,newname) Nimeää tiedoston oldname uudelle nimelle newname.
file_copy(fname,newname) Kopioi tiedoston fname nimelle newname.
directory_exists(dname) Ilmoittaa, onko annetun niminen kansio olemassa. Annetun kansion nimen täytyy olla kokonainen polku, ei suhteellinen polku.
directory_create(dname) Luo annetun nimisen kansion (ja siihen johtavan polun kansiot), jos sitä ei ole olemassa. Annetun kansion nimen täytyy olla kokonainen polku, ei suhteellinen polku.
file_find_first(mask,attr) Palauttaa ensimmäisen tiedoston, joka vastaa attribuutteja ja maskia mask. Jos yhtään sopivaa tiedostoa ei löydy, se palauttaa tyhjän merkkijonon. Maski voi sisältää polun ja saa sisältää villimerkkejä, eesimerkiksi 'C:\temp\*.doc'. Attribuuteilla saat ylimääräisiä tiedostoja esiin. (Normaalit tiedostot palautetaan aina, jos ne vastaavat maskia.) Voit summata seuraavista vakioista haluamasi, jolloin näet haluamasi tiedostot:
fa_readonly kirjoitussuojatut tiedostot
fa_hidden piilotiedostot
fa_sysfile järjestelmätiedostot
fa_volumeid tiedostojärjestelmän hallintatiedostot?
fa_directory kansiot
fa_archive arkistoidut tiedostot
file_find_next() Palauttaa seuraavan aiemmin annettua maskia ja attribuutteja vastaavan tiedoston. Jos sopivia tiedostoja ei enää löydy, se palauttaa tyhjän merkkijonon.
file_find_close() Vapauttaa haun varaaman muistin.
file_attributes(fname,attr) Ilmoittaa, vastaavatko kaikki annetun tiedoston attribuutit ilmoitettuja attribuutteja. Käytä ylempänä annettujen vakioiden yhdistelmää.

Seuraavilla funktioilla voi muuttaa tiedostonimiä. Huomaa, että ne eivät tee mitään oikeille tiedostoille, vaan käsittelevät merkkijonoissa olevia tiedostonimiä.

filename_name(fname) Palauttaa nimestä tiedoston nimen tiedostopäätteen kera, ilman polkua.
filename_path(fname) Palauttaa nimestä polun viimeisen kenoviivan kera.
filename_dir(fname) Palauttaa nimestä kansion polun, joka on yleensä sana kuin itse tiedoston polku ilman viimeistä kenoviivaa.
filename_drive(fname) Palauttaa nimestä asemaosan.
filename_ext(fname) Palauttaa nimestä tiedoston tiedostopäätteen sitä edeltävän pisteen kera.
filename_change_ext(fname,newext) Palauttaa nimen vaihdetulla tiedostopäätteellä (johon kuuluu myös edeltävä piste). Voit käyttää tyhjää merkkijonoa uutena päätteenä poistaaksesi päätteen kokonaan.

Joissain harvoissa tilanteissa voit tarvita tietoa binääritiedostoista. Seuraavat alemman tason funktiot käsittelevät binääritiedostoja:

file_bin_open(fname,mod) Avaa annetun nimisen tiedoston. Argumentti mode ilmoittaa, mitä tiedostolle voidaan tehdä: 0 = lukutila, 1 = kirjoitustila ja 2 = sekä kirjoitus- että lukutila. Jos tiedostoa ei ole olemassa, se luodaan. Tämä funktio palauttaa tiedoston id-arvon, joka sinun täytyy antaa eteenpäin kaikissa muissa funktioissa. Voit avata maksimissaan 32 tiedostoa samanaikaiseen käsittelyyn. Älä unohda sulkea niitä, kun olet saanut tehtyä niillä kaiken haluamasi.
file_bin_rewrite(fileid) Uudelleenkirjoittaa tiedostoon, jolla on annettu id, eli tyhjentää sen ja aloittaa kirjoittamisen sen alusta.
file_bin_close(fileid) Sulkee tiedoston, jolla on annettu id.
file_bin_size(fileid) Palauttaa tiedoston, jolla on annettu id, koon tavuina.
file_bin_position(fileid) Palauttaa nykyisen sijainnin (tavuina; 0 on ensimmäinen sijainti) tiedostossa, jolla on annettu id.
file_bin_seek(fileid,pos) Siirtyy tiedostossa, jolla on annettu id, ilmoitettuun sijaintiin. Jos haluat lisätä tietoa tiedoston loppuun, siirry sijaintiin, joka on yhtä suuri kuin tiedoston koko ennen kirjoittamista.
file_bin_write_byte(fileid,byte) Kirjoittaa tavun tietoa tiedostoon, jolla on annettu id.
file_bin_read_byte(fileid) Lukee tavun tietoa tiedostosta, jolla on annettu id, ja palauttaa sen.

Jos pelin asetuksissa on määritetty käytettäväksi ns. turvatila (secure mode), monissa näissä toiminnoissa et saa määrittää itse polkua, ja vain tiedostoihin, jotka ovat ohjelman kansiossa, voidaan mm. kirjoittaa.

Jos olet sisällyttänyt tiedostoja pelisovellukseen itseensä etkä purkanut niitä pelin alussa, voit tehdä sen seuraavilla funktioilla.

export_include_file(fname) Purkaa sisällytetyn tiedoston, jonka nimi on fname, omaksi tiedostokseen. Muista, että tämän täytyy olla merkkijonoarvo, joten älä unohda lainausmerkkejä.
export_include_file_location(fname,location) Purkaa sisällytetyn tiedoston, jonka nimi on fname, kohteeseen location. Kohteen tulee sisältää polku ja tiedostonimi.
discard_include_file(fname) Poistaa muistista sisällytetyn tiedoston, jonka nimi on fname, vapauttaen kaiken sen varaaman muistin. Muista, että tämän täytyy olla merkkijono, joten älä unohda lainausmerkkejä.

Seuraavat neljä vain luku -muuttujaa voivat olla hyödyllisiä:

game_id* Pelin ainutlaatuinen tunnisteluku. Voit käyttää sitä, jos tarvitset ainutlaatuisia tiedostonimiä.
working_directory* Pelin työskentelykansio. (Ei sisällä viimeistä kenoviivaa.)
program_directory* Kansio, jossa pelisovellus sijaitsee. (Ei sisällä viimeistä kenoviivaa.) Kun suoritat itsenäistä peliä, tämä on yleensä sama kuin pelin työskentelykansio, paitsi jos peli esimerkiksi avaa tiedoston käyttämällä tiedostonvalitsinta. Huomioi, että testatessasi peliä luot ohjelman ja työskentelykansio on eri kuin sovelluksen kansio. Tässä tapauksessa työskentelykansio on se kansio, jossa muokattava versio sijaitsee, kun taas sovelluskansio on väliaikainen testauskansio.
temp_directory* Peliä varten luotu väliaikaiskansio. (Ei sisällä viimeistä kenoviivaa.) Tänne voit pistää väliaikaisia tiedostoja. Tämä kansio poistetaan, kun peli suljetaan.

Tietyissä tapauksissa voit haluta antaa pelaajille mahdollisuuden antaa pelille komentorivikäskyjä (esimerkiksi koodien tai erikoistilojen luomiseksi). Näillä kahdella funktiolla saat annetut argumentit käyttöön.

parameter_count() Ilmoittaa komentorivitoimintojen määrän. Itse parametrit saat seuraavan funktion avulla.
parameter_string(n) Palauttaa komentoriviparametrin, jonka indeksi on n. Ensimmäisen parametrin indeksi on 1, ja viimeisen sama kuin parameter_count(). Indeksi 0 on erikoistapaus. Se on itse pelin tiedostonimi polkuineen.

Voit lukea ympäristömuuttujien (environment variable) arvoja seuraavalla funktiolla:

environment_get_variable(name) Palauttaa ympäristömuuttujan name merkkijonomuotoisen arvon.