125 lines
2.5 KiB
C++
125 lines
2.5 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: bombs.h
|
|
// Purpose: Bombs game
|
|
// Author: P. Foggia 1996
|
|
// Modified by: Wlodzimierz Skiba (ABX) since 2003
|
|
// Created: 1996
|
|
// Copyright: (c) 1996 P. Foggia
|
|
// Licence: wxWindows licence
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_DEMOS_BOMBS_BOMBS_H_
|
|
#define _WX_DEMOS_BOMBS_BOMBS_H_
|
|
|
|
#include "game.h"
|
|
|
|
class BombsFrame;
|
|
|
|
/*
|
|
* Class representing the entire Application
|
|
*/
|
|
class BombsApp: public wxApp
|
|
{
|
|
public:
|
|
virtual bool OnInit() wxOVERRIDE;
|
|
|
|
private :
|
|
BombsFrame *m_frame;
|
|
|
|
BombsGame m_game;
|
|
|
|
};
|
|
|
|
wxDECLARE_APP(BombsApp);
|
|
|
|
class BombsCanvas;
|
|
|
|
class BombsFrame : public wxFrame
|
|
{
|
|
public:
|
|
|
|
BombsFrame(BombsGame *bombsGame);
|
|
|
|
void NewGame(int level, bool query);
|
|
|
|
private:
|
|
|
|
void OnNewGame(wxCommandEvent& event);
|
|
void OnEasyGame(wxCommandEvent& event);
|
|
void OnMediumGame(wxCommandEvent& event);
|
|
void OnHardGame(wxCommandEvent& event);
|
|
|
|
void OnEasyCorner(wxCommandEvent& event);
|
|
|
|
void OnExit(wxCommandEvent& event);
|
|
|
|
void OnAbout(wxCommandEvent& event);
|
|
|
|
BombsGame *m_game;
|
|
bool m_easyCorner;
|
|
int m_lastLevel;
|
|
|
|
// Subwindows for reference within the program.
|
|
BombsCanvas *m_canvas;
|
|
|
|
wxDECLARE_EVENT_TABLE();
|
|
};
|
|
|
|
// App specific menu identifiers
|
|
enum
|
|
{
|
|
bombsID_LEVEL = wxID_HIGHEST,
|
|
bombsID_EASY,
|
|
bombsID_MEDIUM,
|
|
bombsID_HARD,
|
|
bombsID_EASYCORNER
|
|
};
|
|
|
|
class BombsCanvas : public wxPanel
|
|
{
|
|
public:
|
|
|
|
// Constructor and destructor
|
|
|
|
BombsCanvas(wxFrame *parent, BombsGame *game);
|
|
|
|
void UpdateGridSize();
|
|
|
|
wxSize GetGridSizeInPixels() const;
|
|
|
|
virtual ~BombsCanvas();
|
|
|
|
private:
|
|
|
|
void OnPaint(wxPaintEvent& event);
|
|
void DrawField(wxDC *, int xc1, int yc1, int xc2, int yc2);
|
|
void RefreshField(int xc1, int yc1, int xc2, int yc2);
|
|
void Uncover(int x, int y);
|
|
void OnMouseEvent(wxMouseEvent& event);
|
|
void OnChar(wxKeyEvent& event);
|
|
|
|
BombsGame *m_game;
|
|
|
|
wxBitmap *m_bmp;
|
|
|
|
// Cell size in pixels
|
|
int m_cellWidth;
|
|
int m_cellHeight;
|
|
|
|
wxDECLARE_EVENT_TABLE();
|
|
};
|
|
|
|
/* The following sizes should probably be redefined */
|
|
/* dimensions of a scroll unit, in pixels */
|
|
#define X_UNIT 4
|
|
#define Y_UNIT 4
|
|
|
|
/* the dimensions of a cell, in scroll units are in
|
|
* BombsCanvas::x_cell and y_cell
|
|
*/
|
|
|
|
#define BOMBS_FONT wxFont(wxFontInfo(14).Family(wxFONTFAMILY_ROMAN))
|
|
|
|
#endif // #ifndef _WX_DEMOS_BOMBS_BOMBS_H_
|
|
|