|
|
|
/* -------------------------------------------------------------
|
|
|
|
KDE Tuberling
|
|
|
|
Play ground widget
|
|
|
|
mailto:e.bischoff@noos.fr
|
|
|
|
------------------------------------------------------------- */
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef _PLAYGROUND_H_
|
|
|
|
#define _PLAYGROUND_H_
|
|
|
|
|
|
|
|
#include <kprinter.h>
|
|
|
|
|
|
|
|
#include <tqwidget.h>
|
|
|
|
#include <tqbitmap.h>
|
|
|
|
#include <tqptrlist.h>
|
|
|
|
|
|
|
|
#include "todraw.h"
|
|
|
|
#include "action.h"
|
|
|
|
|
|
|
|
class TQDomDocument;
|
|
|
|
class TopLevel;
|
|
|
|
|
|
|
|
class PlayGround : public TQWidget
|
|
|
|
{
|
|
|
|
TQ_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
PlayGround(TopLevel *parent, const char *name, uint selectedGameboard);
|
|
|
|
~PlayGround();
|
|
|
|
|
|
|
|
void reset();
|
|
|
|
void change(uint selectedGameboard);
|
|
|
|
void repaintAll();
|
|
|
|
bool undo();
|
|
|
|
bool redo();
|
|
|
|
bool loadFrom(const TQString &name);
|
|
|
|
bool saveAs(const TQString &name);
|
|
|
|
bool printPicture(KPrinter &printer) const;
|
|
|
|
TQPixmap getPicture() const;
|
|
|
|
|
|
|
|
inline bool isFirstAction() const { return currentAction == 0; }
|
|
|
|
inline bool isLastAction() const { return currentAction >= history.count(); }
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
virtual void paintEvent(TQPaintEvent *event);
|
|
|
|
virtual void mousePressEvent(TQMouseEvent *event);
|
|
|
|
virtual void mouseReleaseEvent(TQMouseEvent *event);
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
bool registerPlayGrounds(TQDomDocument &layoutDocument);
|
|
|
|
bool loadPlayGround(TQDomDocument &layoutDocument, uint toLoad);
|
|
|
|
void loadFailure();
|
|
|
|
void setupGeometry();
|
|
|
|
bool zone(TQPoint &position);
|
|
|
|
void drawText(TQPainter &artist, TQRect &area, TQString &textId) const;
|
|
|
|
void drawGameboard(TQPainter &artist, const TQRect &area) const;
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
TQPixmap gameboard; // Picture of the game board
|
|
|
|
TQBitmap masks; // Pictures of the objects' shapes
|
|
|
|
TQRect editableArea; // Part of the gameboard where the player can lay down objects
|
|
|
|
TQString menuItem, // Menu item describing describing this gameboard
|
|
|
|
editableSound; // Sound associated with this area
|
|
|
|
int texts, // Number of categories of objects names
|
|
|
|
decorations; // Number of draggable objects on the right side of the gameboard
|
|
|
|
TQRect *textsLayout, // Positions of the categories names
|
|
|
|
*objectsLayout; // Position of the draggable objects on right side of the gameboard
|
|
|
|
TQString *textsList, // List of the message numbers associated with categories
|
|
|
|
*soundsList; // List of sounds associated with each object
|
|
|
|
|
|
|
|
TQCursor *draggedCursor; // Cursor's shape for currently dragged object
|
|
|
|
ToDraw draggedObject; // Object currently dragged
|
|
|
|
int draggedZOrder; // Z-order (in to-draw buffer) of this object
|
|
|
|
|
|
|
|
TQPtrList<ToDraw> toDraw; // List of objects in z-order
|
|
|
|
TQPtrList<Action> history; // List of actions in chronological order
|
|
|
|
unsigned int currentAction; // Number of current action (not the last one if used "undo" button!)
|
|
|
|
|
|
|
|
TopLevel *topLevel; // Top-level window
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|