source: abuse/trunk/src/sdlport/mouse.cpp @ 481

Last change on this file since 481 was 481, checked in by Sam Hocevar, 12 years ago

Fuck the history, I'm renaming all .hpp files to .h for my own sanity.

File size: 2.9 KB
RevLine 
[56]1/*
2 *  Abuse - dark 2D side-scrolling platform game
3 *  Copyright (c) 2001 Anthony Kruize <trandor@labyrinth.net.au>
4 *
5 *  This program is free software; you can redistribute it and/or modify
6 *  it under the terms of the GNU General Public License as published by
7 *  the Free Software Foundation; either version 2 of the License, or
8 *  (at your option) any later version.
9 *
10 *  This program is distributed in the hope that it will be useful,
11 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 *  GNU General Public License for more details.
14 *
15 *  You should have received a copy of the GNU General Public License
16 *  along with this program; if not, write to the Free Software Foundation,
17 *  Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
18 */
[2]19
[56]20#include "config.h"
21
[2]22#include <SDL.h>
23
[481]24#include "video.h"
25#include "sprite.h"
26#include "image.h"
27#include "filter.h"
28#include "mouse.h"
[2]29
30unsigned char def_mouse[]=
31{
[124]32    0,2,0,0,0,0,0,0,
33    2,1,2,0,0,0,0,0,
34    2,1,1,2,0,0,0,0,
35    2,1,1,1,2,0,0,0,
36    2,1,1,1,1,2,0,0,
37    2,1,1,1,1,1,2,0,
38    0,2,1,1,2,2,0,0,
39    0,0,2,1,1,2,0,0,
40    0,0,2,1,1,2,0,0,
41    0,0,0,2,2,0,0,0
[2]42};
43
44//
45// Constructor
46//
47JCMouse::JCMouse( image *Screen, palette *pal )
48{
[124]49    image *im;
50    int br, dr;
51    filter f;
52    but = 0;
53    cx = cy = 0;
54    here = 1;
55    sp = NULL;
[2]56
[124]57    screen = Screen;
58    br = pal->brightest( 1 );
59    dr = pal->darkest( 1 );
60    f.set( 1, br );
61    f.set( 2, dr );
62    im = new image( 8, 10, def_mouse );
63    f.apply( im );
64    sp = new sprite( Screen, im, 100, 100 );
65    mx = Screen->width() / 2;
66    my = Screen->height() / 2;
[2]67}
68
69//
70// Destructor
71//
72JCMouse::~JCMouse()
73{
[124]74    if( sp )
75    {
76        delete sp->visual;
77        delete sp;
78    }
[2]79}
80
81//
82// set_shape()
83// Set the shape of the mouse cursor
84//
85void JCMouse::set_shape( image *im, int centerx, int centery )
86{
[124]87    sp->change_visual( im, 1 );
88    cx = -centerx;
89    cy = -centery;
[2]90}
91
92//
93// set_position()
94// Set the position of the mouse cursor
95//
96void JCMouse::set_position( int new_mx, int new_my )
97{
[124]98    // Make sure the values we are given are sensible.
[477]99    if( new_mx > screen->width() - 1 )
[124]100    {
[477]101        new_mx = screen->width() - 1;
[124]102    }
[477]103    if( new_my > screen->height() - 1 )
[124]104    {
[477]105        new_my = screen->height() - 1;
[124]106    }
[2]107
[124]108    // Set the new position
109    mx = new_mx;
110    my = new_my;
111    SDL_WarpMouse( new_mx, new_my );
[2]112}
113
114//
115// update()
116// Update the mouses position and buttons states
117//
118void JCMouse::update( int newx, int newy, int new_but )
119{
[124]120    if( newx < 0 )
121    {
122        Uint8 mask;
[2]123
[124]124        lx = mx;
125        ly = my;
126        lbut = but;
127        mask = SDL_GetMouseState( &mx, &my );
128        but = ( ( mask & SDL_BUTTON(1) ) != 0 ) |
129              ( ( mask & SDL_BUTTON(2) ) != 0 ) << 2 |
130              ( ( mask & SDL_BUTTON(3) ) != 0 ) << 1;
131    }
132    else
133    {
134        mx = newx;
135        my = newy;
136        but = new_but;
137    }
[2]138}
Note: See TracBrowser for help on using the repository browser.