# error You must set wxUSE_STATUSBAR to 1 in setup.h
#endif
-#include "wx/wave.h"
+#include "wx/sound.h"
#include "wx/joystick.h"
#include "joytest.h"
return FALSE;
}
-#if wxUSE_WAVE
+#if wxUSE_SOUND
m_fire.Create(_T("gun.wav"));
-#endif // wxUSE_WAVE
+#endif // wxUSE_SOUND
+ m_minX = stick.GetXMin();
+ m_minY = stick.GetYMin();
m_maxX = stick.GetXMax();
m_maxY = stick.GetYMax();
MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size):
wxScrolledWindow(parent, -1, pos, size, wxSUNKEN_BORDER)
{
- wxJoystick joystick(wxJOYSTICK1);
- joystick.SetCapture(this);
+ m_stick = new wxJoystick(wxJOYSTICK1);
+ m_stick->SetCapture(this, 10);
}
MyCanvas::~MyCanvas()
{
- wxJoystick joystick(wxJOYSTICK1);
- joystick.ReleaseCapture();
+ m_stick->ReleaseCapture();
+ delete m_stick;
}
void MyCanvas::OnJoystickEvent(wxJoystickEvent& event)
wxPoint pt(event.GetPosition());
+ // if negative positions are possible then shift everything up
+ int xmin = wxGetApp().m_minX;
+ int xmax = wxGetApp().m_maxX;
+ int ymin = wxGetApp().m_minY;
+ int ymax = wxGetApp().m_maxY;
+ if (xmin < 0) {
+ xmax += abs(xmin);
+ pt.x += abs(xmin);
+ xmin = 0;
+ }
+ if (ymin < 0) {
+ ymax += abs(ymin);
+ pt.y += abs(ymin);
+ ymin = 0;
+ }
+
// Scale to canvas size
int cw, ch;
GetSize(&cw, &ch);
- pt.x = (long) (((double)pt.x/(double)wxGetApp().m_maxX) * cw);
- pt.y = (long) (((double)pt.y/(double)wxGetApp().m_maxY) * ch);
+ pt.x = (long) (((double)pt.x/(double)xmax) * cw);
+ pt.y = (long) (((double)pt.y/(double)ymax) * ch);
if (xpos > -1 && ypos > -1 && event.IsMove() && event.ButtonIsDown())
{
frame->SetStatusText(buf);
-#if wxUSE_WAVE
+#if wxUSE_SOUND
if (event.ButtonDown() && wxGetApp().m_fire.IsOk())
{
wxGetApp().m_fire.Play();
}
-#endif // wxUSE_WAVE
+#endif // wxUSE_SOUND
}
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
// Empty
}
-void MyFrame::OnQuit(wxCommandEvent& event)
+void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
Close(TRUE);
}