예제 #1
0
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]);
}
예제 #2
0
/* *** 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;
}
예제 #3
0
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);
}
예제 #4
0
/* *** 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);
}
예제 #5
0
/* *** 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;
}
예제 #6
0
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];
}