SetGraphics
Kategorie: Objekte
/ Darstellung
Ab Engineversion: 4.9.1.0 GWE
(erweitert ab 4.9.5.0 CE)
Beschreibung
Ändert die Grafik eines Objekts. Diese beeinflusst die Darstellung des betreffenden Objekts überall im Spiel: In der Landschaft, im Menü oder auf Maussteuerungssymbolen.
Syntax
bool SetGraphics
(string szGfxName, object pObj, id idSrcDef, int iOverlay, int iOverlayMode, string szAction, int dwBlitMode, object pOvelayObject);
Parameter
- szGfxName:
[opt]
Name der neu zu setzenden Grafik. Bei 0 wird die Standardgrafik (Graphics.png bzw. bmp) gesetzt.
- pObj:
[opt]
Objekt, dessen Grafik geändert werden soll. 0 bei lokalem Aufruf.
- idSrcDef:
[opt]
Definition, von der die Grafik entnommen werden soll. Wenn nicht angegeben, gilt die Definition des Objekts, dessen Grafik geändert wird. Wenn nicht angegeben für iOverlay!=0, wird das entsprechende Overlay entfernt.
- iOverlay:
[opt]
Index der zu setzenden Overlaygrafik. Muss wenn angegeben größer 0 sein, und fügt dem Objekt eine Grafik mit dem gegebenen Index hinzu, bzw. ändert sie wenn eine Grafik mit dem gegebenen Overlayindex schon existiert. Overlays mit größerem Index werden stets über denen mit kleinerem Index gezeichnet. Wenn ein Objekt nur eine Overlaygrafik hat, kann die symbolische Konstante GFX_Overlay (=1) verwendet werden.
- iOverlayMode:
[opt]
Nur beachtet bei angegebenem iOverlay: Gibt an, wie das Overlay gezeichnet wird. Folgende Konstanten sind möglich:
Konstante |
Wert |
Effekt |
GFXOV_MODE_None |
0 |
Ungültig: Nicht benutzen |
GFXOV_MODE_Base |
1 |
Die Basisgrafik der angegebenen Definition, das heißt das Zielrechteck (0,0,Width,Height,OffsetX,OffsetY), wird an der Objektposition über die Grafik gelegt. |
GFXOV_MODE_Action |
2 |
Die Aktivität der angegebenen Objektdefinition. Ab CR. |
GFXOV_MODE_Picture |
3 |
Hat nur Auswirkung, wenn das Objekt im Inventar eines Clonks oder in einem Menü (z.B. Aktivieren in Gebäuden) auftaucht: Das Picture-Rechteck der angegebenen Definition wird über das Repräsentativbild des Objekts gezeichnet. Hiermit können zum Beispiel Zauberer auf Steine oder Zaubersymbole auf Schriftrollen gedruckt werden. |
GFXOV_MODE_IngamePicture |
4 |
Legt die Picture-Grafik der Quelldefinition über das Shape des Zielobjektes. Ab CR. |
GFXOV_MODE_Object |
5 |
Legt die aktuelle Objektgrafik inklusive aller Overlays von pOverlayObject über das Objekt. Achtung: Ein Objekt darf sich nicht rekursiv über sich selbst als Overlay legen. Ab CR. |
GFXOV_MODE_ExtraGraphics |
6 |
Benutzt die angegebene Grafik als Quellgrafik, um das Objekt erneut zu zeichnen. Die Quellkoordinaten sind die gleichen wie die, die auch beim Zeichnen von pObj verwendet wurden. Ab CR. |
- szAction:
[opt]
Nur für iOverlayMode==GFXOV_MODE_Action: Aktivität in der Definition idSrcDef, dessen Grafik über das Zielobjekt gelegt werden soll. Diese Aktivität muss in der
ActMap.txt der Quelldefinition definiert sein. Achtung: Die Länge dieser Animation sollte 1 sein; bewegte Animtionen sind noch nicht möglich. Ab CR.
- dwBlitMode:
[opt]
Blitmodus der überlegten Grafik (z.B. additiv). Siehe
SetObjectBlitMode
- pOvelayObject:
[opt]
Nur für iOverlayMode==GFXOV_MODE_Object: Objekt, dessen Grafik über das Zielobjekt gelegt werden soll. Ab CR.
Anmerkung
Es wird bei iOverlay=0 nur die Grafik eines Objekts geändert. Der Effekt entspricht dem Ersetzen der Graphics.bmp/-.png/Overlay.png in der
Definition; Quellangaben aus der
ActMap.txt oder
DefCore.txt werden dadurch nicht beeinflusst; diese Koordinaten sollten also in der neuen Grafik auf sinnvolle Positionen verweisen (Das gilt auch für SolidMasks!).
Beispiele
SetGraphics(0, FindObject(ROCK), GOLD);
Gibt einem zufälligen Stein aus der Landschaft die Grafik des Goldes.
SetGraphics("Armored", FindObject(KNIG));
Gibt dem zuletzt erstellten Ritter im Spiel das Aussehen eines rüstungstragenden Ritters. Dazu werden die Dateien GraphicsArmored.png und OverlayArmored.png aus der Ritter-Gruppendatei für die Darstellung verwendet.
var obj; while (obj = FindObject(0, 0,0,0,0, 0, 0,0, 0, obj)) SetGraphics(0, obj);
Gibt allen Objekten im Spiel ihre Ursprungsgrafiken zurück.
SetGraphics(0, this(), CLNK, GFX_Overlay, GFXOV_MODE_Picture);
SetObjDrawTransform(800,0,0, 0,800,0, this(), GFX_Overlay);
Objektscript: Das aufrufende Objekt bekommt ein verkleinertes Clonk-Bild auf die Picture-Grafik gedruckt.
SetGraphics(0, FindObject(KNIG), SHIA, GFX_Overlay, GFXOV_MODE_Base, 0, GFX_BLIT_Additive);
Es wird bei irgendeinem Ritter ein Schild auf die Grafik gesetzt, und additiv gezeichnet.
Sven2, Juni 2003, März 2005