panel zur laufzeit erstellen

Posted By: ThelT0r

panel zur laufzeit erstellen - 02/28/08 23:27

hi,
mein problem ist folgendes:

ich will im spiel zur laufzeit viele panels erstellen die ich nicht vorher angelegt habe. Und ich muss denen auch eine pos_x/y zuweisen können.

ich habe nun alles abgesucht und finde nix was ich NICHT vorher schon erstellen muss -.-

danke für eure hilfe
Posted By: Widi

Re: panel zur laufzeit erstellen - 02/28/08 23:44

Du musst die Panels zuerst definieren, das kannst du aber mit einem Array lösen.

Erst mal diesen Code:
Code:
 
PANEL* your_pan[100];
PANEL* My_create(char* content, var pos_x, var pos_y, var layer, char* bitmap, long flags)
{
PANEL* Temp_pan = pan_create(content, layer);
if (bitmap != 0)
{
Temp_pan.bmap = bmap_create(bitmap);
Temp_pan.size_x = bmap_width(Temp_pan.bmap);
Temp_pan.size_y = bmap_height(Temp_pan.bmap);
}
Temp_pan.pos_x = pos_x;
Temp_pan.pos_y = pos_y;
set(Temp_pan,flags);
return (Temp_pan);
}


Danach wird das Panel create in einer Funktion aufgerufen:
Code:
 
void main
{
....
your_pan[x] = My_create("button (0,0,dein.tga,dein.tga,dein_ok.tga,NULL,NULL,deine_func);",x,y,lay,NULL,TRANSLUCENT);
....
}



Wenn du keinen Button brauchst, kannst du alles in den Anführungszeichen mit NULL ersetzen, dafür musst du das letzte NULL mit "dein.tga" ersetzen.
Posted By: ThelT0r

Re: panel zur laufzeit erstellen - 02/29/08 20:45

ich danke dir 1000 mal supper danke
Posted By: ThelT0r

Re: panel zur laufzeit erstellen - 03/01/08 08:50

-.-, leider geht es nicht, es ruft schon fehler auf bei
panel* you_pan[100];

da sagt er "panel unknown 100", also er kennt er panels in verbindung mit array nicht an.
schade hast du noch ne idee ?
Posted By: flits

Re: panel zur laufzeit erstellen - 03/01/08 09:42

var[100] == 0-99 != 1-100
so 100 isnt in the row you need to add more to the panel
PANEL* your_pan[101];
Posted By: Joey

Re: panel zur laufzeit erstellen - 03/01/08 11:24

?

arrays von engine-objekten kennt lite-c nicht. aber es gibt ja einen umweg...

Code:
typedef struct {
PANEL* panel;
} PANEL_X;

PANEL_X panels[100];



ich weiß nicht, ob es mit einem direkten typedef funktioniert, bezweifle es aber.

joey.
Posted By: Widi

Re: panel zur laufzeit erstellen - 03/01/08 22:45

PANEL* muss gross geschrieben werden !!!!

Gruss
Posted By: Joey

Re: panel zur laufzeit erstellen - 03/02/08 13:44

arrays von engine-objekten gehen deshalb meines wissens immer noch nicht ^^
Posted By: Widi

Re: panel zur laufzeit erstellen - 03/02/08 15:27

Bei mir klappt es ohne Probleme, ohne Struct...

Es ist ja auch kein Array von einer Enginefunction, sondern nur von einem Pointer ! Die Panels werden erst später in "PANEL* my_create" erstellt und dann unserem Array - Pointer zugewiesen.
Posted By: darci

Re: panel zur laufzeit erstellen - 03/13/08 21:48

kann es sein das bei der free version von lite-c die anzahl der parameter beschrankt ist

var[10] == 0-9 != 1-10

BMAP* pBmap10[10];

er sagt mir dazu too many parameter : /
und dabei muss ich irgendwie an die 200 panels erstellen konnen
Posted By: Widi

Re: panel zur laufzeit erstellen - 03/14/08 10:10

Poste mal mehr vom Code. Die free Version sollte keinen Unterschied in der syntax und der Anzahl Parameter haben.
Ich habe BMAP* pBmap10[10] bei mir in den Code gesetzt und es läuft
Posted By: darci

Re: panel zur laufzeit erstellen - 06/02/08 17:12

hab das problem total falsch angegangen, wenn es auch functioniert hatte , sohatte das die fps ganz schon weit runtergezogen

^^
einfach n bitmap zu bemallen erwies sich als um ein vielfaches sinnnvoller

trotzdem danke fur die helfe
© 2023 lite-C Forums