void DraggableView::MoveRelative(int dx,int dy) { int new_x = area.x + dx; if(new_x < 0) { dx = -area.x; } else if(new_x + area.w > screen->get_width()) { dx = screen->get_width() - (area.x + area.w); } int new_y = area.y + dy; if(new_y < 0) { dy = -area.y; } else if(new_y + area.h > screen->get_height()) { dy = screen->get_height() - (area.y + area.h); } force_full_redraw_if_needed(); // needs to happen before the move GUI_Widget::MoveRelative(dx, dy); return; }
void ContainerViewGump::left_arrow() { sint8 party_mem_num = party->get_member_num(actor); if(party_mem_num >= 0) { if(party_mem_num > 0) party_mem_num--; else party_mem_num = party->get_party_size() - 1; set_actor(party->get_actor(party_mem_num)); force_full_redraw_if_needed(); } }
GUI_status ContainerViewGump::KeyDown(SDL_Keysym key) { if(left_arrow_button && left_arrow_button->Status() == WIDGET_VISIBLE) // okay to change member number { KeyBinder *keybinder = Game::get_game()->get_keybinder(); ActionType a = keybinder->get_ActionType(key); switch(keybinder->GetActionKeyType(a)) { case NEXT_PARTY_MEMBER_KEY: right_arrow(); return GUI_YUM; case PREVIOUS_PARTY_MEMBER_KEY: left_arrow(); return GUI_YUM; case HOME_KEY: set_actor(party->get_actor(0)); force_full_redraw_if_needed(); return GUI_YUM; case END_KEY: set_actor(party->get_actor(party->get_party_size() - 1)); force_full_redraw_if_needed(); return GUI_YUM; default: break; } } /* moved into container widget switch(key.sym) { case SDLK_RETURN: case SDLK_KP_ENTER: return GUI_YUM; default: break; } */ return container_widget->KeyDown(key); }
void ContainerViewGump::right_arrow() { set_actor(party->get_actor((party->get_member_num(actor) + 1) % party->get_party_size())); force_full_redraw_if_needed(); }