File: StateMachine.h

package info (click to toggle)
pinball 0.3.20201218-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 8,452 kB
  • sloc: cpp: 15,230; makefile: 840; sh: 381; xml: 24
file content (81 lines) | stat: -rw-r--r-- 2,094 bytes parent folder | download | duplicates (9)
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
/***************************************************************************
                          StateMachine.h  -  description
                             -------------------
    begin                : Fri Jul 13 2001
    copyright            : (C) 2001 by Henrik Enqvist IB
    email                : henqvist@excite.com
 ***************************************************************************/

#ifndef STATEMACHINE_H
#define STATEMACHINE_H

#include "SignalSender.h"
/* Macros to do a state machine */

#define StdOnCollision() \
  onCollision(const Vertex3D & em_vtx, const Vertex3D & em_vtxOwn, Group* em_group)

#define StdEmptyOnCollision() \
  onCollision(const Vertex3D &, const Vertex3D &, Group*)

#define StdOnSignal() \
  onSignal(int em_signal, Group* em_group)

#define StdEmptyOnSignal() \
  onSignal(int, Group*)

#define StdOnTick() \
  onTick()

#define OnCallerProperty(a) \
  if ( em_group != NULL && ( em_group->getUserProperties() & a ) )

#define GetCallerProperty() \
  em_group->getUserProperties()

#define OR_CP \
  || em_group->getUserProperties() &

#define AND_CP \
  && em_group->getUserProperties() &

#define OnProperty(a) \
  if ( p_Parent != NULL && ( p_Parent->getUserProperties() & a ) )

#define SetProperty(a) \
  if ( p_Parent != NULL ) p_Parent->setUserProperty(a)

#define UnsetProperty(a) \
  if ( p_Parent != NULL ) p_Parent->unsetUserProperty(a)

#define OR_PR \
  || p_Parent->getUserProperties() &

#define AND_PR \
  && p_Parent->getUserProperties() &

/* #define OnState(a) 				if ( m_iState == a ) */
/* #define OR_ST							|| m_iState == */
/* #define AND_ST						&& m_iState == */
/* #define SetState(a) 			m_iState = a */

#define OnSignal(a) \
 if ( em_signal == a )

#define ElseOnSignal(a) \
 else if ( em_signal == a )

#define OR_SI \
  || em_signal ==

#define GetSignal() \
  em_signal
//#define AND_SI						&& em_signal ==

#define SendSignal(a, d, s, r) \
  SignalSender::getInstance()->addSignal(a, d, s, r)

#define SetLightOn(b) \
  if (this->getLight() != NULL) this->getLight()->setOn(b)

#endif // STATEMACHINE_H