|
Re: Moving Panels together
[Re: Aku_Aku]
#481035
08/02/20 23:09
08/02/20 23:09
|
Joined: Sep 2003
Posts: 6,861 Kiel (Germany)
Superku
Senior Expert
|
Senior Expert
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
|
Go to your Gamestudio installation folder, then open the "include" subfolder. Among others you'll find atypes.h in there. You might have seen and looked into it before but still, check it out. There's the PANEL definition inside: typedef struct PANEL {
C_LINK link;
long type; // internal use only
var layer; // layer number (read only)
var pos_x,pos_y; // screen position in pixels
long flags; //
var alpha; // transparency factor
BMAP *bmap; // background bitmap
var scale_x,scale_y;
var blue,green,red; // color for background and Truetype fonts
var size_x,size_y; // panel dimension
var angle; // rotation angle (6.5 or above)
var center_x,center_y; // rotation center
BMAP *mouse_map;
BMAP *target_map;
EVENT event; // panel function, executed on mouse click
var skill_x,skill_y; // general purpose variables
byte pad[PAD_PANEL];
} PANEL; You can use skill_x/y freely. center_x/y might be usable (in a hacky way sort of) as well, never tried it. If you've got the code to move one panel you have it to move them all. You need to know beforehand which panels to move of course. What about something like this (needs more stuff to work but you get the idea): typedef struct
{
PANEL* pnl;
int isSelected;
var diffX, diffY;
} PANEL_EXTENDED;
#define PANELS_EXTENDED_MAX 8
PANEL_EXTENDED panelsExtended[PANELS_EXTENDED_MAX];
void panelsExtendedInit()
{
panelsExtended[0].pnl = myPanel1;
panelsExtended[0].isSelected = 1;
panelsExtended[1].pnl = myPanel2;
panelsExtended[2].pnl = myPanel3;
panelsExtended[2].isSelected = 1;
}
void panelsExtendedSetDiffs() // call this on left mouse presses (once, like on_mouse_left)
{
int i;
for(i = 0; i < PANELS_EXTENDED_MAX; i++)
{
PANEL_EXTENDED *pnlExtended = &panelsExtended[i];
PANEL* pnl = pnlExtended.pnl;
if(pnl != NULL && pnlExtended.isSelected)
{
pnlExtended.diffX = pnl.pos_x - mouse_pos.x;
pnlExtended.diffY = pnl.pos_y - mouse_pos.y;
}
}
}
void panelsExtendedMove()
{
int i;
for(i = 0; i < PANELS_EXTENDED_MAX; i++)
{
PANEL_EXTENDED *pnlExtended = &panelsExtended[i];
PANEL* pnl = pnlExtended.pnl;
if(pnl != NULL && pnlExtended.isSelected)
{
pnl.pos_x = mouse_pos.x + pnlExtended.diffX;
pnl.pos_y = mouse_pos.y + pnlExtended.diffY;
}
}
}
Last edited by Superku; 08/02/20 23:09.
"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual Check out my new game: Pogostuck: Rage With Your Friends
|
|
|
|