DynamicSprite Resize and Flip funktion und Charaktere?

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
Skyhawk
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 77
Registriert: 27.04.2004, 19:40
Kontaktdaten:

DynamicSprite Resize and Flip funktion und Charaktere?

Beitrag von Skyhawk »

Hi


bin echt froh, das die DynamicSprite Resize and Flip funktionen es in die neue beta geschafft haben.
Sehr hilfreich um den Umfang auf der Festplatte zu reduzieren.
(und jetzt noch die SpriteCompression.... yeah)

Ich benutzt das jetzt zuerst um Spiegelnde oberflächen zu "vereinfachen".
Vorher musste ich noch jeden gespiegelten Charakter mit extra Sprites in den Sprite Manager laden und das verbraucht massig platz...

allerdings war der Script aufwand verschwindend gering:


character[REFLECT].x=character[EGO].x;
character[REFLECT].y=character[EGO].y+charactergröße;

character[REFLECT].loop=character[EGO].loop;
character[REFLECT].frame=character[EGO].frame;


mit der neuen Methode scriptet man sich echt einen zurecht...


if ((character[EGO].loop==0) && (character[EGO].frame == 0)) {
RawRestoreScreen();
DynamicSprite* sprite = DynamicSprite.CreateFromExistingSprite(57);
sprite.Resize(50,93);
sprite.Flip(eFlipUpsideDown);
RawDrawImageTransparent(character[EGO].x-25, character[EGO].y-1, sprite.Graphic, 50);
sprite.Delete();
}

if ((character[EGO].loop==0) && (character[EGO].frame == 1)) {
RawRestoreScreen();
DynamicSprite* sprite = DynamicSprite.CreateFromExistingSprite(28);
sprite.Resize(50,93);
sprite.Flip(eFlipUpsideDown);
RawDrawImageTransparent(character[EGO].x-25, character[EGO].y-1, sprite.Graphic, 50);
sprite.Delete();
}

if ((character[EGO].loop==0) && (character[EGO].frame == 2)) {
RawRestoreScreen();
DynamicSprite* sprite = DynamicSprite.CreateFromExistingSprite(29);
sprite.Resize(50,93);
sprite.Flip(eFlipUpsideDown);
RawDrawImageTransparent(character[EGO].x-25, character[EGO].y-1, sprite.Graphic, 50);
sprite.Delete();
}

.... usw und sofort....


es funktioniert zwar einwandfrei, aber ist ne menge arbeit, und jeder weitere gespiegelte character braucht nochmal das ganze...
auch sieht es nicht so schick aus wie mit AA runtergerechnete Charactere...



gibt es ne möglichkeit den gerade benutzen spriteslot eines Characters direkt zu ermitteln?


PS:
am besten und einfachsten wär natürlich ne eiweiterung im View Manager der vorhandenen NORMAL / FLIPPED Modi mit UPSIDEDOWN / BOTH
PPS: Ich wollt das schon im englischen Forum posten, aber ich brech mir mit englisch momentan echt einen ab :roll:
je älter ich werde, desto weniger verstehe ich....

http://www.tafkasomm.de
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Neue Beta? :shock:. Wo bekomme ich die her?
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Totoro
Profi-Abenteurer
Profi-Abenteurer
Beiträge: 915
Registriert: 26.07.2003, 19:10
Wohnort: Osaka

Beitrag von Totoro »

Im Technical-Bereich des AGS-Forums, wie immer eigentlich:

http://www.bigbluecup.com/yabb/index.php?topic=21188.0
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

Danke, ich glaube, da sollte ich öfters mal nach gucken.
Ich besorg mir aber erst die Finale Version, bei Beta kann soviel passieren...

Ich hoffe, Chrisi erlaubt bald mal die for und do...while-Schleifen
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Smiley
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 163
Registriert: 28.04.2005, 16:26
Wohnort: Mönchengladbach

Re: DynamicSprite Resize and Flip funktion und Charaktere?

Beitrag von Smiley »

Skyhawk hat geschrieben:

if ((character[EGO].loop==0) && (character[EGO].frame == 0)) {
RawRestoreScreen();
DynamicSprite* sprite = DynamicSprite.CreateFromExistingSprite(57);
sprite.Resize(50,93);
sprite.Flip(eFlipUpsideDown);
RawDrawImageTransparent(character[EGO].x-25, character[EGO].y-1, sprite.Graphic, 50);
sprite.Delete();

man kann Pointer auch als Array(?) definieren

Code: Alles auswählen

DynamicSprite * SpiegelSprite[n]; ---> n =Anzahl der Frames


die definierst du dann durch:

Code: Alles auswählen

SpiegelSprite[1] = DynamicSprite.CreateFromExistingSprite(57);
SpiegelSprite[2] = DynamicSprite.CreateFromExistingSprite(28 );
usw.
dann drehen und die Größe ändern:

Code: Alles auswählen

int a=1;
while (a<n+1){ ---> n =Anzahl der Frames
SpiegelSprite[a].Resize(50,93);
SpiegelSprite[a].Flip(eFlipUpsideDown);
a++;}

Code: Alles auswählen

if (cEgo.loop==0)  {
  RawRestoreScreen();
   RawDrawImageTransparent(cEgo.x-25, cEgo.y-1, SpiegelSprite[cEgo.Frame].Graphic + m-1, 50); --->m ist das erste SpiegelSprite mit dem Charakter
  SpiegelSprite[cEgo.Frame].Delete();}
habs nicht getestet...könnte aber funktionieren.
Benutzeravatar
Skyhawk
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 77
Registriert: 27.04.2004, 19:40
Kontaktdaten:

Beitrag von Skyhawk »

danke, das funzt,
aber spart nicht wirklich viel arbeit,
je älter ich werde, desto weniger verstehe ich....

http://www.tafkasomm.de
Smiley
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 163
Registriert: 28.04.2005, 16:26
Wohnort: Mönchengladbach

Beitrag von Smiley »

Skyhawk hat geschrieben:danke, das funzt,
aber spart nicht wirklich viel arbeit,
Ja, es wär einfacher wenn es sowas wie cEgo.Graphic gäbe, oder die Sprites direkt hintereinander liegen würden.
strazer

Beitrag von strazer »

gibt es ne möglichkeit den gerade benutzen spriteslot eines Characters direkt zu ermitteln?
int slot = GetGameParameter(GP_FRAMEIMAGE, cEgo.View, cEgo.Loop, cEgo.Frame);
Benutzeravatar
Skyhawk
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 77
Registriert: 27.04.2004, 19:40
Kontaktdaten:

Beitrag von Skyhawk »

@strazer

besten dank, das ist genau das, was ich brauche :)
je älter ich werde, desto weniger verstehe ich....

http://www.tafkasomm.de
Antworten