XmlMetaSchnittstelle

Aus GameBrowser - Wiki

Wechseln zu:Navigation, Suche

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:

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>

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>

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>

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>

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>
Navigation
Media
Werkzeuge