Exemple #1
0
/** @copydoc widgetdata::event_func */
static int widget_event(widgetdata *widget, SDL_Event *event)
{
    uint32_t row, col;
    size_t i;

    if (EVENT_IS_MOUSE(event) && event->button.button == SDL_BUTTON_LEFT && list_mouse_get_pos(list_skills, event->motion.x, event->motion.y, &row, &col)) {
        size_t skill_id;

        skill_id = row * list_skills->cols + col;

        if (skill_id < skill_list_num) {
            if (event->type == SDL_MOUSEBUTTONUP) {
                if (selected_skill != skill_id) {
                    selected_skill = skill_id;
                    widget->redraw = 1;
                    return 1;
                }
            } else if (event->type == SDL_MOUSEBUTTONDOWN) {
                event_dragging_start(skill_list[skill_id]->skill->tag, event->motion.x, event->motion.y);
                return 1;
            }
        }
    }

    /* If the list has handled the mouse event, we need to redraw the
     * widget. */
    if (list_skills && list_handle_mouse(list_skills, event)) {
        widget->redraw = 1;
        return 1;
    }


    for (i = 0; i < BUTTON_NUM; i++) {
        if (button_event(&buttons[i], event)) {
            switch (i) {
            case BUTTON_CLOSE:
                widget->show = 0;
                break;

            case BUTTON_HELP:
                help_show("skill list");
                break;
            }

            widget->redraw = 1;
            return 1;
        }

        if (buttons[i].redraw) {
            widget->redraw = 1;
        }
    }

    return 0;
}
Exemple #2
0
/** @copydoc widgetdata::event_func */
static int widget_event(widgetdata *widget, SDL_Event *event)
{
    char buf[MAX_BUF];
    size_t i;

    /* If the list has handled the mouse event, we need to redraw the
     * widget. */
    if (list_party && list_handle_mouse(list_party, event)) {
        widget->redraw = 1;
        return 1;
    }

    for (i = 0; i < BUTTON_NUM; i++) {
        if ((cpl.partyname[0] == '\0' && (i == BUTTON_PASSWORD || i == BUTTON_LEAVE || i == BUTTON_CHAT || i == BUTTON_MEMBERS)) || (cpl.partyname[0] != '\0' && (i == BUTTON_FORM))) {
            continue;
        }

        if (button_event(&buttons[i], event)) {
            switch (i) {
            case BUTTON_PARTIES:
                send_command("/party list");
                break;

            case BUTTON_MEMBERS:
                send_command("/party who");
                break;

            case BUTTON_FORM:
                snprintf(buf, sizeof(buf), "?MCON /party form ");
                keybind_process_command(buf);
                break;

            case BUTTON_PASSWORD:
                snprintf(buf, sizeof(buf), "?MCON /party password ");
                keybind_process_command(buf);
                break;

            case BUTTON_LEAVE:
                send_command("/party leave");
                break;

            case BUTTON_CHAT:
                snprintf(buf, sizeof(buf), "?MCON /gsay ");
                keybind_process_command(buf);
                break;

            case BUTTON_CLOSE:
                widget->show = 0;
                break;

            case BUTTON_HELP:
                help_show("spell list");
                break;
            }

            widget->redraw = 1;
            return 1;
        }

        if (buttons[i].redraw) {
            widget->redraw = 1;
        }
    }

    return 0;
}
Exemple #3
0
/** @copydoc widgetdata::event_func */
static int widget_event(widgetdata *widget, SDL_Event *event)
{
    size_t i;

    if (list_mplayer) {
        if (list_handle_mouse(list_mplayer, event)) {
            widget->redraw = 1;
            return 1;
        } else if (scrollbar_event(&scrollbar_progress, event)) {
            widget->redraw = 1;
            return 1;
        }
    }

    for (i = 0; i < BUTTON_NUM; i++) {
        if (button_event(&buttons[i], event)) {
            switch (i) {
            case BUTTON_PLAY:

                if (sound_map_background(-1)) {
                    sound_start_bg_music("no_music", 0, 0);
                    sound_map_background(0);
                    shuffle = 0;
                } else {
                    list_handle_enter(list_mplayer, event);
                }

                break;

            case BUTTON_SHUFFLE:
                shuffle = !shuffle;

                if (shuffle) {
                    mplayer_do_shuffle(list_mplayer);
                    sound_map_background(1);
                } else {
                    sound_start_bg_music("no_music", 0, 0);
                    sound_map_background(0);
                }

                break;

            case BUTTON_BLACKLIST:
                /* Toggle the blacklist state of the selected row. */
                mplayer_blacklist_toggle(list_mplayer);
                mplayer_blacklist_save(list_mplayer);
                break;

            case BUTTON_CLOSE:
                widget->show = 0;
                break;

            case BUTTON_HELP:
                help_show("music player");
                break;
            }

            widget->redraw = 1;
            return 1;
        }

        if (buttons[i].redraw) {
            widget->redraw = 1;
        }
    }

    return 0;
}
Exemple #4
0
/**
 * Handle event in the main screen.
 * @param event
 * The event to handle.
 * @return
 * 1 if the event was handled, 0 otherwise.
 */
int intro_event(SDL_Event *event)
{
    if (!list_servers) {
        return 0;
    }

    if (event->type == SDL_MOUSEBUTTONDOWN && event->button.button == SDL_BUTTON_LEFT) {
        if (LIST_MOUSE_OVER(list_news, event->motion.x, event->motion.y)) {
            list_news->focus = 1;
            list_servers->focus = 0;
        } else if (LIST_MOUSE_OVER(list_servers, event->motion.x, event->motion.y)) {
            list_servers->focus = 1;
            list_news->focus = 0;
        }
    }

    if (button_event(&button_play, event)) {
        list_handle_enter(list_servers, event);
        return 1;
    } else if (button_event(&button_refresh, event)) {
        if (!ms_connecting(-1)) {
            cpl.state = ST_META;
        }

        return 1;
    } else if (button_event(&button_server, event)) {
        server_add_open();
        return 1;
    } else if (button_event(&button_settings, event)) {
        settings_open();
        return 1;
    } else if (button_event(&button_update, event)) {
        updater_open();
        return 1;
    } else if (button_event(&button_help, event)) {
        help_show("main screen");
        return 1;
    } else if (button_event(&button_credits, event)) {
        credits_show();
        return 1;
    } else if (button_event(&button_quit, event)) {
        exit(0);
        return 1;
    } else if (event->type == SDL_KEYDOWN && event->key.keysym.sym == SDLK_TAB && list_news) {
        int news_focus = 0;

        if (list_servers->focus) {
            news_focus = 1;
        }

        list_news->focus = news_focus;
        list_servers->focus = !news_focus;
    } else if (list_handle_keyboard(list_news && list_news->focus ? list_news : list_servers, event)) {
        return 1;
    } else if (list_handle_mouse(list_news, event)) {
        return 1;
    } else if (list_handle_mouse(list_servers, event)) {
        return 1;
    }

    return 0;
}