source: abuse/trunk/src/ui/volumewindow.cpp @ 655

Last change on this file since 655 was 655, checked in by Sam Hocevar, 11 years ago

imlib: refactor a few image methods so that they use vec2i.

File size: 2.7 KB
Line 
1/*
2 *  Abuse - dark 2D side-scrolling platform game
3 *  Copyright (c) 1995 Crack dot Com
4 *  Copyright (c) 2005-2011 Sam Hocevar <sam@hocevar.net>
5 *
6 *  This software was released into the Public Domain. As with most public
7 *  domain software, no warranty is made or implied by Crack dot Com, by
8 *  Jonathan Clark, or by Sam Hocevar.
9 */
10
11#if defined HAVE_CONFIG_H
12#   include "config.h"
13#endif
14
15#include "common.h"
16
17#include "volumewindow.h" // class VolumeWindow
18#include "property.h"     // class property_manager
19#include "gui.h"          // ico_button
20
21VolumeWindow::VolumeWindow() : Jwindow("Volume")
22{
23    char const *ff = "art/frame.spe";
24    u_u = cache.reg(ff, "u_u", SPEC_IMAGE, 1),
25    u_d = cache.reg(ff, "u_u", SPEC_IMAGE, 1),
26    u_ua = cache.reg(ff, "u_ua", SPEC_IMAGE, 1),
27    u_da = cache.reg(ff, "u_da", SPEC_IMAGE, 1),
28    d_u = cache.reg(ff, "d_u", SPEC_IMAGE, 1),
29    d_d = cache.reg(ff, "d_u", SPEC_IMAGE, 1),
30    d_ua = cache.reg(ff, "d_ua", SPEC_IMAGE, 1),
31    d_da = cache.reg(ff, "d_da", SPEC_IMAGE, 1),
32    slider = cache.reg(ff, "volume_slide", SPEC_IMAGE, 1);
33    x = prop->getd("volume_x", xres / 2 - 20);
34    y = prop->getd("volume_y", yres / 2 - 50);
35    inm->add(new ico_button(10, 27, ID_SFX_DOWN, d_u, d_d, d_ua, d_da,
36                  new ico_button(21, 27, ID_SFX_UP, u_u, u_d, u_ua, u_da,
37                      new info_field(15, 42, 0, symbol_str("SFXv"),
38                          new ico_button(10, 72, ID_MUSIC_DOWN, d_u, d_d, d_ua, d_da,
39                              new ico_button(21, 72, ID_MUSIC_UP, u_u, u_d, u_ua, u_da,
40                                  new info_field(10, 86, 0, symbol_str("MUSICv"), NULL)))))));
41
42    //reconfigure();
43    bg = cache.reg(ff, "vcontrol", SPEC_IMAGE, 1);
44    l = cache.img(bg)->Size().x;
45    h = cache.img(bg)->Size().y;
46    m_surf = new image(cache.img(bg)->Size(), NULL, 2);
47    redraw();
48}
49
50void VolumeWindow::redraw()
51{
52    m_surf->PutImage(cache.img(bg), vec2i(0, 0));
53    draw_music_vol();
54    draw_sfx_vol();
55    inm->redraw();
56}
57
58void VolumeWindow::draw_vol(int x1, int y1, int x2, int y2, int t,
59                            int max, int c1, int c2)
60{
61    int dx = x1 + t * (x2 - x1) / max;
62    if(t != 0)
63    {
64        m_surf->PutImage(cache.img(slider), vec2i(x1, y1));
65//      m_surf->bar(x1,y1,dx,y2,c1);
66    }
67    else
68        dx--;
69
70    if(dx < x2)
71        m_surf->Bar(vec2i(dx + 1, y1), vec2i(x2, y2), c2);
72}
73
74void VolumeWindow::draw_sfx_vol()
75{
76    draw_vol(6, 16, 34, 22, sfx_volume, 127,
77             pal->find_closest(200, 75, 19), pal->find_closest(40, 0, 0));
78}
79
80void VolumeWindow::draw_music_vol()
81{
82    draw_vol(6, 61, 34, 67, music_volume, 127,
83             pal->find_closest(255, 0, 0), pal->find_closest(40, 0, 0));
84}
85
Note: See TracBrowser for help on using the repository browser.