void IAGSEngine::DrawTextWrapped (int32 xx, int32 yy, int32 wid, int32 font, int32 color, const char*text) { int texthit = wgetfontheight(font); break_up_text_into_lines (wid, font, (char*)text); wtextcolor(color); wtexttransparent(TEXTFG); multiply_up_coordinates(&xx, &yy); for (int i = 0; i < numlines; i++) draw_and_invalidate_text(xx, yy + texthit*i, font, lines[i]); }
/* *** SCRIPT SYMBOL: [GUI] GetGUIAt *** */ int GetGUIAt (int xx,int yy) { multiply_up_coordinates(&xx, &yy); int aa, ll; for (ll = game.numgui - 1; ll >= 0; ll--) { aa = play.gui_draw_order[ll]; if (guis[aa].on<1) continue; if (guis[aa].flags & GUIF_NOCLICK) continue; if ((xx>=guis[aa].x) & (yy>=guis[aa].y) & (xx<=guis[aa].x+guis[aa].wid) & (yy<=guis[aa].y+guis[aa].hit)) return aa; } return -1; }
void DisplayAt(int xxp,int yyp,int widd,char*texx, ...) { char displbuf[STD_BUFFER_SIZE]; va_list ap; va_start(ap,texx); my_sprintf(displbuf, get_translation(texx), ap); va_end(ap); multiply_up_coordinates(&xxp, &yyp); widd = multiply_up_coordinate(widd); if (widd<1) widd=scrnwid/2; if (xxp<0) xxp=scrnwid/2-widd/2; _display_at(xxp,yyp,widd,displbuf,1,0, 0, 0, false); }
/* *** SCRIPT SYMBOL: [ListBox] ListBox::GetItemAtLocation^2 *** */ int ListBox_GetItemAtLocation(GUIListBox *listbox, int x, int y) { if (guis[listbox->guin].on < 1) return -1; multiply_up_coordinates(&x, &y); x = (x - listbox->x) - guis[listbox->guin].x; y = (y - listbox->y) - guis[listbox->guin].y; if ((x < 0) || (y < 0) || (x >= listbox->wid) || (y >= listbox->hit)) return -1; return listbox->GetIndexFromCoordinates(x, y); }
/* *** SCRIPT SYMBOL: [GUI] GUI::SetSize^2 *** */ void GUI_SetSize(ScriptGUI *sgui, int widd, int hitt) { if ((widd < 1) || (hitt < 1) || (widd > BASEWIDTH) || (hitt > GetMaxScreenHeight())) quitprintf("!SetGUISize: invalid dimensions (tried to set to %d x %d)", widd, hitt); GUIMain *tehgui = sgui->gui; multiply_up_coordinates(&widd, &hitt); if ((tehgui->wid == widd) && (tehgui->hit == hitt)) return; tehgui->wid = widd; tehgui->hit = hitt; recreate_guibg_image(tehgui); guis_need_update = 1; }
GUIObject *GetGUIControlAtLocation(int xx, int yy) { int guinum = GetGUIAt(xx, yy); if (guinum == -1) return NULL; multiply_up_coordinates(&xx, &yy); int oldmousex = mousex, oldmousey = mousey; mousex = xx - guis[guinum].x; mousey = yy - guis[guinum].y; int toret = guis[guinum].find_object_under_mouse(0, false); mousex = oldmousex; mousey = oldmousey; if (toret < 0) return NULL; GlobalReturnValue.SetDynamicObject(guis[guinum].objs[toret], &ccDynamicGUIObject); return guis[guinum].objs[toret]; }