2 #include "../Common/Common.h"
4 #include "CircleStartHandler.h"
7 CCircleStartHandler::CCircleStartHandler(Dasher::CEventHandler
* pEventHandler
, CSettingsStore
* pSettingsStore
, CDasherInterfaceBase
*pInterface
)
8 : CStartHandler(pEventHandler
, pSettingsStore
, pInterface
) {
11 m_iCircleRadius
= GetLongParameter(LP_MAX_Y
) * GetLongParameter(LP_CIRCLE_PERCENT
) / 100;
15 bool CCircleStartHandler::DecorateView(CDasherView
*pView
) {
19 pView
->Dasher2Screen(2048, 2048, iCX
, iCY
);
24 pView
->Dasher2Screen(2048, 2048 + m_iCircleRadius
, iCX2
, iCY2
);
26 m_iScreenRadius
= iCY2
- iCY
;
28 if((m_iStatus
== 0) || (m_iStatus
== 2))
29 pView
->Screen()->DrawCircle(iCX
, iCY
, m_iScreenRadius
, 2, 242, 1, true);
30 else if((m_iStatus
== 1) || (m_iStatus
== 3))
31 pView
->Screen()->DrawCircle(iCX
, iCY
, m_iScreenRadius
, 240, 0, 1, false);
32 else if(m_iStatus
== 5)
33 pView
->Screen()->DrawCircle(iCX
, iCY
, m_iScreenRadius
, 2, 241, 1, true);
35 pView
->Screen()->DrawCircle(iCX
, iCY
, m_iScreenRadius
, 240, 0, 3, false);
40 void CCircleStartHandler::Timer(int iTime
, CDasherView
*m_pDasherView
, CDasherModel
*m_pDasherModel
) {
43 m_pDasherView
->GetCoordinates(iTime
, iDasherX
, iDasherY
);
47 m_pDasherView
->Dasher2Screen(2048, 2048, iCX
, iCY
);
51 m_pDasherView
->Dasher2Screen(iDasherX
, iDasherY
, iCursorX
, iCursorY
);
55 dR
= sqrt(pow(static_cast<double>(iCX
- iCursorX
), 2.0) + pow(static_cast<double>(iCY
- iCursorY
), 2.0));
61 // 0 = out of circle, stopped
62 // 1 = out of circle, started
63 // 2 = in circle, stopped
64 // 3 = in circle, started
65 // 4 = in circle, stopping
66 // 5 = in circle, starting
68 // TODO - need to check that these respond correctly to (eg) external pauses
70 if(dR
< m_iScreenRadius
) {
73 if(m_pInterface
->GetBoolParameter(BP_DASHER_PAUSED
))
88 iNewStatus
= m_iStatus
;
95 if(m_pInterface
->GetBoolParameter(BP_DASHER_PAUSED
))
102 iNewStatus
= m_iStatus
;
119 if(iNewStatus
!= m_iStatus
) {
120 m_iChangeTime
= iTime
;
123 if(iTime
- m_iChangeTime
> 1000) {
124 if(iNewStatus
== 4) {
126 m_pInterface
->PauseAt(0, 0);
128 else if(iNewStatus
== 5) {
130 m_pInterface
->Unpause(iTime
);
134 m_iStatus
= iNewStatus
;
138 void CCircleStartHandler::HandleEvent(Dasher::CEvent
* pEvent
) {
139 if(pEvent
->m_iEventType
== 1) {
140 Dasher::CParameterNotificationEvent
* pEvt(static_cast < Dasher::CParameterNotificationEvent
* >(pEvent
));
142 switch (pEvt
->m_iParameter
) {
143 case BP_DASHER_PAUSED
: