blob: a4252ec546cc442d5e134aa5a1872a02bf4b9465 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
#ifndef KOLF_BALL_H
#define KOLF_BALL_H
#include <tqcanvas.h>
#include <tqcolor.h>
#include <math.h>
#include "vector.h"
#include "rtti.h"
enum BallState { Rolling = 0, Stopped, Holed };
class Ball : public TQCanvasEllipse, public CanvasItem
{
public:
Ball(TQCanvas *canvas);
virtual void aboutToDie();
BallState currentState();
virtual void resetSize() { setSize(7, 7); }
virtual void advance(int phase);
virtual void doAdvance();
virtual void moveBy(double dx, double dy);
virtual void setVelocity(double vx, double vy);
virtual bool deleteable() const { return false; }
virtual bool canBeMovedByOthers() const { return true; }
BallState curState() const { return state; }
void setState(BallState newState);
TQColor color() const { return m_color; }
void setColor(TQColor color) { m_color = color; setBrush(color); }
void setMoved(bool yes) { m_moved = yes; }
bool moved() const { return m_moved; }
void setBlowUp(bool yes) { m_blowUp = yes; blowUpCount = 0; }
bool blowUp() const { return m_blowUp; }
void setFrictionMultiplier(double news) { frictionMultiplier = news; };
void friction();
void collisionDetect(double oldx, double oldy);
virtual int rtti() const { return Rtti_Ball; };
int addStroke() const { return m_addStroke; }
bool placeOnGround(Vector &v) { v = oldVector; return m_placeOnGround; }
void setAddStroke(int newStrokes) { m_addStroke = newStrokes; }
void setPlaceOnGround(bool placeOnGround) { m_placeOnGround = placeOnGround; oldVector = m_vector; }
bool beginningOfHole() const { return m_beginningOfHole; }
void setBeginningOfHole(bool yes) { m_beginningOfHole = yes; }
bool forceStillGoing() const { return m_forceStillGoing; }
void setForceStillGoing(bool yes) { m_forceStillGoing = yes; }
Vector curVector() const { return m_vector; }
void setVector(const Vector &newVector);
bool collisionLock() const { return m_collisionLock; }
void setCollisionLock(bool yes) { m_collisionLock = yes; }
virtual void fastAdvanceDone() { setCollisionLock(false); }
void setDoDetect(bool yes) { m_doDetect = yes; }
bool doDetect() const { return m_doDetect; }
virtual void showInfo();
virtual void hideInfo();
virtual void setName(const TQString &);
virtual void setCanvas(TQCanvas *c);
virtual void setVisible(bool yes);
private:
BallState state;
TQColor m_color;
long int collisionId;
double frictionMultiplier;
bool m_blowUp;
int blowUpCount;
int m_addStroke;
bool m_placeOnGround;
double m_oldvx;
double m_oldvy;
bool m_moved;
bool m_beginningOfHole;
bool m_forceStillGoing;
Vector m_vector;
Vector oldVector;
bool m_collisionLock;
bool m_doDetect;
TQCanvasItemList m_list;
TQCanvasText *label;
};
inline int rad2deg(double theDouble)
{
return (int)((360L / (2L * M_PI)) * theDouble);
}
inline double deg2rad(double theDouble)
{
return (((2L * M_PI) / 360L) * theDouble);
}
#endif
|