wie finde ich den index eines arrays von panels ?

Posted By: Ascalon

wie finde ich den index eines arrays von panels ? - 12/11/12 14:30

ich habe ein array von panels zb PANEL* panTest[10];

in diesem Panel gibt es einen Button und beim click auf diesen Button startet die dazugehörige Funktion, zb.:
function testfunktion(var _buttonNumber, PANEL* _panel) {...}

wie finde ich aber den Indexwert des jeweiligen Panels raus, wenn ich den button gedrückt habe ?
Posted By: Kartoffel

Re: wie finde ich den index eines arrays von panels ? - 12/11/12 14:48

gib' jedem panel in dem array beim initialisieren eine eindeutige id, die gleichzeitig der indexwert ist.
Dafür kannst du skills verwenden:
Code:
panTest[0].skill_x = 0;
panTest[1].skill_x = 1;
// usw.


in der button funktion benutzt du dann das:
Code:
void btn_function(var _buttonNumber, PANEL* _panel)
{
   _panel.skill_x   <- indexwert des panels, dessen button geklickt wurde
}


MfG, Kartoffel wink
Posted By: Uhrwerk

Re: wie finde ich den index eines arrays von panels ? - 12/11/12 15:55

Oder du durchsuchst das array nach dem richtigen Panel.

Code:
int get_panel_index(PANEL* _panel)
{
  int i;
  for (i = 0; i < 10; i++)
    if (panTest[i] == _panel)
      return i;
  return -1;
}



Kartoffels Ansatz ist aber schneller. Meiner macht dann Sinn, wenn sich die Indizes im Laufe des Spiels ändern sollten.
Posted By: Ascalon

Re: wie finde ich den index eines arrays von panels ? - 12/11/12 15:56

cool ! vielen dank, funktioniert super ! wusste nicht dass es für panels auch skill-werte gibt wink
Posted By: Kartoffel

Re: wie finde ich den index eines arrays von panels ? - 12/11/12 16:02

kein problem wink

...die skill werte hab ich auch erst "entdeckt" als ich etwas ähnliches erreichen wollte grin
Posted By: Bone

Re: wie finde ich den index eines arrays von panels ? - 12/11/12 19:01

Das mit dem Panel Skills ist ja super.

Code:
panel.skill_x



Steht das x für eine Zahl? Und falls ja, wo ist die Grenze?
Posted By: Uhrwerk

Re: wie finde ich den index eines arrays von panels ? - 12/11/12 19:05

Nein, x steht nicht für eine Zahl.

http://www.conitec.net/beta/skill_x.htm
Posted By: Bone

Re: wie finde ich den index eines arrays von panels ? - 12/12/12 02:25

Danke für den Link.
Wie ich das nur übersehen konnte .... grin

Hier ein kleines Beispiel für den Fall, dass jemand mal mehr Platz braucht
Code:
function skillsForPanel(PANEL* pan, var num){
	
	pan.skill_x = sys_malloc(num * sizeof(void*));
	
}


function main(){

	PANEL* pan = pan_create("size_x = 10; size_y = 10;", 1);
	
	// 5 ist die Anzahl der "Skills"
	skillsForPanel(pan, 5);
	
	((var*)pan.skill_x)[0] = 2;
	((var*)pan.skill_x)[1] = 6;
	
	printf("%i", (int)((var*)pan.skill_x)[0]);
	
}

© 2024 lite-C Forums