olá galera, sou um estudante universitário cujo tcc é um jogo desenvolvido com a game space lib, e eu consegui criar um menu que responde ao teclado, mas to com problema em fazer o menu responder ao mouse, alguém poderia me ajudar?
eis a struct base:
Code:
//Base dos Itens de Menu
struct Item_Menu{
void Set(){
dwColor = GS_ARGB(255,255,255,0);//ajusta a cor do texto quando este estiver selecionado
}
void Unset(){
dwColor = GS_ARGB(100,255,255,0);//define a cor do texto quando não estiver selecionado
}
float posx, posy;//coordenadas x e y para o texto do menu
char *szText;//quantidade máxima de caracteres por linha do menu
GS_DWORD dwColor;//objeto que armazenará a cor do texto
bool onMouseOver(GS_VECTOR2 mouseXY){
if((mouseXY.x >= posx)^(mouseXY.x <= (posx+80))^(mouseXY.y >= posy)^(mouseXY.x <= (posy+20)))//verifica coordenada x e y
return true;
else
return false;
}
bool onMouseClick(bool seta,GAMESPACE_INPUT_HANDLER mouseBtn){
if(seta){
if(mouseBtn.GetLeftClickState() == GSKS_HIT)
return true;
else
return false;
}
}
};
a montagem do menu principal:
Code:
//menu principal
Item_Menu menuP[3];
menuP[0].posx = 120;
menuP[0].posy = 40;
menuP[0].szText = "Iniciar";
menuP[0].Set();
menuP[1].posx = 120;
menuP[1].posy = 65;
menuP[1].szText = "Opções";
menuP[1].Set();
menuP[2].posx = 120;
menuP[2].posy = 90;
menuP[2].szText = "Sair";
menuP[2].Set();
Code:
//impressão dos menus
if(j_Estado == Menu_P){
if(mI>=pItems){
mI = 0;
}
if(mI < 0){
mI = pItems-1;
}
for(int i = 0;i<3;i++){
if((mI == i)||(menuP[i].onMouseOver(gsInput.GetCursorF(&gsVideo)))){
menuP[i].Set();
gsInpunt.PrintText(GS_VECTOR2(menuP[i].posx,menuP[i].posy),menuP[i].szText,"Verdana",20,menuP[i].dwColor);
}
else{
menuP[i].Unset();
gsInpunt.PrintText(GS_VECTOR2(menuP[i].posx,menuP[i].posy),menuP[i].szText,"Verdana",20,menuP[i].dwColor);
}
}
Code:
//movimenta pelos menus
if(gsInput.KeyState(GSK_DOWN) == GSKS_HIT || gsInput.GetWheelState() < 0.0f){
mI++;
}
if(gsInput.KeyDown(GSK_UP) == GSKS_HIT || gsInput.GetWheelState() < 0.0f){
mI--;
}