Hi,
nach langem Überlegen habe ich mir eine Ladefunktion gebaut!
Ich hoffe, ihr könnt auch was damit anfangen!
TYPE loader
// 0: Sprites
// 1: Modelle
// 2: Texturen
// 3: Sound
file_name$[5][1000][3]
anzahl[5]
FUNCTION dynLoad: typ, file$
LOCAL tmp, id, load
// ID - Check
FOR tmp = 0 TO self.anzahl[typ]
IF file$ = self.file_name$[typ][tmp][0]
load = 1
id = self.file_name$[typ][tmp][1]
ENDIF
NEXT
// Ladevorgang
IF load = 0
SELECT typ
CASE 0
id = GENSPRITE()
LOADSPRITE file$, id
IF id > self.anzahl[0] THEN self.anzahl[0] = id
CASE 1
id = GENX_OBJ()
X_LOADOBJ file$, id
IF id > self.anzahl[1] THEN self.anzahl[1] = id
CASE 2
id = GENSPRITE()
LOADSPRITE file$, id
IF id > self.anzahl[2] THEN self.anzahl[2] = id
CASE 3
id = GENSOUND()
LOADSOUND file$, id, 1
IF id > self.anzahl[3] THEN self.anzahl[3] = id
ENDSELECT
self.file_name$[typ][id][0] = file$
self.file_name$[typ][id][1] = id
ENDIF
RETURN id
ENDFUNCTION
FUNCTION dynUnload: typ, id$
LOCAL id
id = id$
SELECT typ
CASE 0
LOADSPRITE "", id
CASE 1
X_LOADOBJ "", id
CASE 2
LOADSPRITE "", id
CASE 3
LOADSOUND "", id, 1
ENDSELECT
FOR tmp = 1 TO self.anzahl[typ]
IF LEN(self.file_name$[typ][id][0]) > 0
aktiv = tmp
ENDIF
NEXT
self.anzahl[typ] = aktiv
ENDFUNCTION
ENDTYPE
In der Anwendung sieht das Ganze dann so aus:
GLOBAL ld AS loader
pic$ = ld.dynLoad(0, "pic_1.png")
pic2$ = ld.dynLoad(0, "pic_1.png")
ld.dynUnload(0, pic$)
WHILE TRUE
PRINT pic$, 0, 0
PRINT pic2$, 0, 20
SHOWSCREEN
WEND
LG
W.