Manager für alle Spielresourcen

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

Suco-X

Betreff: Manager für alle Spielresourcen

BeitragSa, Okt 15, 2005 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Abend.
Viele Globale Variablen in Spielen (z.b. die ganzen Images und Sounds) sind meistens unschön und eine schlechte Lösung. Drum habe ich dafür einen kleinen Manager gecodet, der das in Bmax vorhandene Map Modul etwas erweitert.
Man kann jetzt Sachen in einem Manager einfügen und mit einem Namen versehen. Mit diesem Namen kann man es dann wieder rausholen.


Code: [AUSKLAPPEN]

Strict

Rem

Der ResourceManager ist eine Erweiterung der TMap Klasse (Aus dem Map Modul)
Ich habe eine Methode unbenannt und zwei hinzugefügt, die das Object
schon automatisch umwandeln.
Kann jederzeit für Sounds usw erweitert werden.
End Rem


Type TResourceManager Extends TMap

   Method Add(Key:Object, Value:Object)
      super.Insert(Key, Value)
   End Method
   
   Method GetList:TList(Key:Object)
      Return TList(ValueForKey(Key))
   End Method
   
   Method GetImage:TImage(Key:Object)
      Return TImage(ValueForKey(Key))
   End Method
   
End Type




'Beispiel 1
Local ListenManager:TResourceManager = New TResourceManager
ListenManager.Add("liste1", New TList)
ListenManager.Add("liste2", New TList)


Local TempListe:TList


TempListe = ListenManager.GetList("liste1")
TempListe.AddLast("String in liste1")


TempListe = ListenManager.GetList("liste2")
TempListe.AddLast("String in liste2")



Local TempString:String



Print ""
Print "Inhalte von liste1"
For TempString = EachIn ListenManager.GetList("liste1")
   Print TempString
Next
Print ""


Print ""
Print "Inhalte von liste2"
For TempString = EachIn ListenManager.GetList("liste2")
   Print TempString
Next
Print ""



'Beispiel 2

Graphics 800,600,0


Local ImagePack1:TResourceManager = New TResourceManager
ImagePack1.Add("image1", CreateImage(32, 32))


Cls
SetColor 255,0,0
DrawOval 0,0,32,32

Local TempImage:TImage = ImagePack1.GetImage("image1")
GrabImage TempImage,0,0

Cls
SetColor 255, 255, 255
DrawImage TempImage,0,0


Flip
WaitKey



Wenn man eine Variable aus einem Manager mehrmals hintereinander verwendet, sollte man diese kurz zwischenspeichern. Denn bei den Get Befehlen wird jedesmal alles durchgegangen was drin gespeichert ist, was wiederrum Speed kostet und schnell nach hinten losgehen kann.

Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group