Systeemin tarkoituksena on siis tehdä valikko josta voi valita näyttötilan. Funktiolla "DisplayMode()" luodaan uusi vaihtoehto, jonka parametreiksi tulee ikkunan leveys, korkeus ja "syvyyvs", tarkoittaen siis värisyvyyttä..
Ja mikäli näyttö ei kyseistä vaihtoehtoa tue, niin sitä ei valittavaksi edes tarjota.
Valittu näyttötila tallennetaan tiedostoon, jonka olemassaolon ohjelma aina alussa tarkistaa.
Mikäli tiedosto löytyy, luetaan sieltä jo entuudestaan valittu näyttötila ja asetetaan se nykyiseksi näyttötilaksi, ilman että käyttäjän tarvitsisi joka kerta valita sitä erikseen.
Pahoittelen että koodinpätkä on aika hirveää katseltavaa enkä englantiakaan juuri osaa kuin lukea, että virheitä voi löytyä..
Tätä ei todellakaan ole toteutettu parhaalla mahdollisella tavalla, joten jokainen osaava saa parannella tätä ja mielellään myös jakaa sen täällä
Code: Select all
// Asetetaan muuttujat "TextX" ja "TextY" globaaleiksi.
Global TextX,TextY
// Tarkistetaan onko tiedostoa "DisplayMode.dat" olemassa, ja jos on
// niin luetaan tiedot.
If FileExists("DisplayMode.dat") Then
DM = OpenToRead("DisplayMode.dat")
Screen_Width = ReadLine(DM)
Screen_Height = ReadLine(DM)
Screen_Depth = ReadLine(DM)
CloseFile DM
EndIf
// Siltä varalta että tiedostossa olisi jotain näyttötilaksi sopimattomia arvoja, varmistetaan
// arvojen sopivuus. Mikäli arvot ovat käypiä, niin hypätään kohtaan "Main".
// Jos arvot eivät käyneet, niin hypätään kohtaan ChooseDisplayMode, ja valitaan toimiva näyttötila.
If GFXModeExists(Screen_Width,Screen_Height,Screen_Depth) Then
Goto Main
Else
Goto ChooseDisplayMode
End If
// Main.
Main:
DM = OpenToRead("DisplayMode.dat")
Screen_Width = ReadLine(DM)
Screen_Height = ReadLine(DM)
Screen_Depth = ReadLine(DM)
CloseFile DM
SCREEN Screen_Width,Screen_Height,Screen_Depth
// Tässä välissä sitten median lataus.
// esim. Gosub LoadMedia (Kiitos huomautuksesta MaGetzUbille :D)
Repeat
ClearText
AddText "Valitse uusi näyttötila"
If MouseX() > TextX And MouseX() < TextX+TextWidth("Valitse uusi näyttötila") And MouseY() > TextY And MouseY() < TextY + TextHeight("Valitse uusi näyttötila") And MouseHit(1) Then Goto ChooseDisplayMode
DrawScreen
Until KeyHit(1)
// "Valitse näyttötila"-silmukka.
ChooseDisplayMode:
ClearMouse
Repeat
TextY = 0
ClearText
If DisplayMode(640,480,32) Then Goto Main
If DisplayMode(800,600,32) Then Goto Main
If DisplayMode(1024,768,32) Then Goto Main
If DisplayMode(1280,960,32) Then Goto Main
If DisplayMode(1280,1024,32) Then Goto Main
If DisplayMode(1600,1200,32) Then Goto Main
If DisplayMode(1920,720,32) Then Goto Main
If DisplayMode(1920,1080,32) Then Goto Main
DrawScreen
Until KeyHit(1)
// Tässä itse funktio.
Function DisplayMode(Screen_Width, Screen_Height, Screen_Depth)
// Tarkistaa tukeeko näyttö annetuilla parametreillä tehtyä ikkunaa.
If GFXModeExists(Screen_Width,Screen_Height,Screen_Depth) Then
// Jos näyttö tukee, niin tehdään siitä vaihtoehto.
Locate TextX, TextY
AddText Screen_Width+"*"+Screen_Height+"*"+Screen_Depth
// Jos hiiren vasemmalla painikkeella klikataan vaihtoehtoa, asetetaan se näyttötilaksi.
If MouseX() > TextX And MouseX() < TextX+TextWidth(""+Screen_Width+"*"+Screen_Height+"*"+Screen_Depth) And MouseY() > TextY And MouseY() < TextY + TextHeight(""+Screen_Width+"*"+Screen_Height+"*"+Screen_Depth) And MouseHit(1) Then
TextY = 0
SCREEN Screen_Width,Screen_Height,Screen_Depth
// Kirjoitetaan tiedostoon valinta ylös, jottei näyttötilaa tarvitse joka kerta valita uudelleen.
DM = OpenToWrite("DisplayMode.dat")
WriteLine DM, ScreenWidth()
WriteLine DM, ScreenHeight()
WriteLine DM, ScreenDepth()
CloseFile DM
Return 1
EndIf
TextY = TextY + TextHeight("I")
End If
End Function
niin katsoin fiksuimmaksi tehdä tälle sitten ihan oman, mutta jos vallan omaavat keksivät tälle paremman paikan, niin siirtäkää ihmeessä
EDIT:
Poistin spoiler-tagit..
EDIT:
..ja kusin viestin muokkauksen postaamalla muokatun viestin uudelleen..