XmlMetaSchnittstelle
Aus GameBrowser - Wiki
Inhaltsverzeichnis |
Die Schnittstelle
typedef int (t_sendXmlData)(const char* data); typedef int (t_init_core)(t_sendXmlData* sendXmlData); typedef void (t_end_core)(void); //Übergangsweise typedef void (t_update_core)(void);
Die GUI Anwendung muss folgende Funktion implementieren:
int sendXmlData(const char* data) { }
Die Core-DLL diese:
int init_core(sendXmlData) { } void end_core() { } int sendXmlData(const char* data) { } //Übergangsweise. Muss sooft wie möglich im Hauptthread aufgerufen werden im GUI void update_core() { }
Die XML Schnitstelle liefert alle Texte und Fehlermeldung bereits in einer lokalisierten Version. Welche Sprache geschickt werden soll kann mit dem XML Request SetLanguage beeinflusst werden. Standardsprache ist Englisch. Und sollte es keine Übersetzung für die gesetzte Sprache geben wird auf die Standardsprache zurückgegriffen.
Die sendXMlData des Cores gibt entweder 0 oder folgende Fehler Codes zurück:
| Rückgabe Wert | Fehler Beschreibung |
|---|---|
| -1 | Kein Handler gefunden (das heißt weder reqeuest noch answer an den Core geschickt |
| -2 | Falscher Syntax (benötigte Felder fehlen im request) |
| -3 | Es wurde kein passender receiver gefunden |
XML Definitionen (DTD)
setlanguage
Status: Implementiert
<request> <setlanguage lang="ger" /> </request>
gamecategorylist
Status: Implementiert
<request> <gamecategorylist /> </request>
<answer> <gamecategorylist> <category id="1" name="Action"> <category id="5" name="Ego" /> <category id="6" name="Action RPG" /> </category> <category id="2" name="Strategy" /> </gamecategorylist> </answer>
settings
Status: Implementiert
<request> <settings action="set" name="optionname" value="1234"/> </request>
Status: Implementiert
<request> <settings action="get" name="optionname" default=""/> </request>
<answer> <settings name="optionname" value="1234" /> </answer>
default muss nicht gesetzt werden. Wird zurück gegeben wenn Option nicht vorher mal gesetzt wurde. Standard ist default ""
writelog
Status: Implementiert
<request> <writelog level="status"> <message>Die Log Nachricht</message> </writelog> </request>
Standard für level ist immer "status". Erlaubte Loglevels für das level Tag sind:
- status
- warning
- error
getshoplist
Status: Implementiert
<request> <getshoplist category="0" /> </request>
<answer> <games> <game name="Spielname" id="special game id"> <description>Beispiel beschreibung des Spiels</description> <author publisher="Publisher Name" developer="Entwickler Name" /> <release>2009-02-30</release> </game> </games> </answer>
Das Element category muss id der Kategorie sein von der man die Spiele Liste haben will. Bei 0 werden alle Spiele geschickt.
release enthält das Release Datum oder ist leer sollte das ganze noch nicht veröffentlicht sein.
getmygames
Status: ToDo
<request> <getmygames/> </request>
<answer> <mygames> <game name="Spielname" id="special game id" moduleid="main module id of game"> <description>Beispiel beschreibung des Spiels</description> <author publisher="Publisher Name" developer="Entwickler Name" /> <release>2009-02-30</release> </game> </mygames> </answer>
moduleid enthält die ID des Hauptmoduls (idR das eigentliche Spiel), so dass das Spiel direkt aus der Übersicht heraus gestartet werden kann.
updategamesxml
Status: Implementiert
<request> <updategamesxml auto="true" enabled="true" seconds="60" /> </request>
- Für sofortigen Download der GamesXML einfach <updategamesxml /> schickt.
- Wenn auto true ist, dann wird ein Timer gestartet. Default ist false. enabled und seconds werden nur gebraucht wenn auto auf true steht
- Wenn enabled true ist, wird der Timer gestartet. Bei false wird dieser beendet. (Wird nur gebraucht wenn auto auf true steht)
- Mit seconds gibt nach wie vielen Sekunden der Update automatisch ausgeführt werden soll. (Wird nur gebraucht wenn enabled auf true steht)
Im Erfolgsfall:
<answer> <updategamesxml status="success" /> </answer>
Im Fehlerfall:
<answer> <updategamesxml status="error"> <errors> <error name="Fehler Name">Fehler Beschreibung</error> </errors> </updategamesxml> </answer>
clearcache
Status: Implementiert
<request> <clearcache auto="true" enabled="true" seconds="60" /> </request>
- Für sofortigs Löschen des Caches einfach <clearcache /> schickt.
- Wenn auto true ist, dann wird ein Timer gestartet. Default ist false. enabled und seconds werden nur gebraucht wenn auto auf true steht
- Wenn enabled true ist, wird der Timer gestartet. Bei false wird dieser beendet. (Wird nur gebraucht wenn auto auf true steht)
- Mit seconds gibt nach wie vielen Sekunden der Update automatisch ausgeführt werden soll. (Wird nur gebraucht wenn enabled auf true steht)
gamedetails
Status: Implementiert
<request> <gamedetails gameid="Die GameID wird beim shoplistrequest erzeugt" /> </request>
<answer> <gamedetails name="Spielname" id="special game id"> <languages> <language>ger</language> </languages> <description>Die beschreibung des Spiels</description> <author publisher="Publisher Name" developer="Entwickler Name" /> <release>2009-02-30</release> <screenshots> <screenshot description="Beschreibung des Screenshots" thumbnail="UrlToAThumbnail">Url zum Screenshot</screenshot> </screenshots> <videos> <video description="Beschreibung des Videos" thumbnail="UrlToAThumbnail">Url zum Video</video> </videos> <links> <link description="Beschreibung des Links (meistens der name)">Url</link> </links> <modules> <module name="Der Name des Moduls" id="Die ID des Modules" os="win,lin,all" lang="ger,eng" status="rc" installed="1"/> </modules> <filteredmodules> <module name="Der Name des Moduls" id="Die ID des Modules" os="win,lin,all" lang="ger,eng" status="alpha" installed="1"/> </filteredmodules> </gamedetails> </answer>
- in filteredmodules stehen Module die für das Aktuelle System in Frage kommen.
- Status kann sein:
- alpha
- beta
- rc
- release
- demo
updategame
Status: Implementiert
<request> <updategame gameid="The GameID" moduleid="The Module id" /> </request>
<answer> <updategame gameid="The GameID" moduleid="The Module id" available="true" /> </answer>
<answer> <updategame gameid="The GameID" moduleid="The Module id" success="true" /> </answer>
- available zeigt an, ob ein Update verfügbar ist und nun runter geladen wird oder nicht.
- success zeigt an, ob das Update korrekt eingespielt worden ist. Dies ist die letzte Meldung im zusammen Hang mit Updates.
Genereller Fehler antwort (Das updaten ist, sollte so was kommen, immer schief gegangen)
<answer> <updategameerror gameid="The GameID" moduleid="The Module id"> <error name="Fehler Name/Titel">Fehler Text</error> </updategameerror> </answer>
screenshot
Status: Implementiert
<request> <screenshot url="Screenshot url" /> </request>
<answer> <screenshot url="Screenshot url">Lokaler Pfad zum Screenshot</screenshot> </answer>
<answer> <screenshot url="Screenshot url" error="true">Die Fehler meldung</screenshot> </answer>
startmodule
Status: In Arbeit
<request> <startmodule gameid="special game id" moduleid="special module id"/> </request>