diff options
author | aap <aap@papnet.eu> | 2021-01-11 22:45:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-11 22:45:10 +0100 |
commit | 6ef3b8c458d2ba1c7d48f45ffbcd6842df0e2e1c (patch) | |
tree | 8c22f9716cccc3ef44c4f062f79246c2b1c42a08 /src | |
parent | Merge branch 'lcs-dev' into lcs (diff) | |
parent | unused CFerryDoor (diff) | |
download | re3-6ef3b8c458d2ba1c7d48f45ffbcd6842df0e2e1c.tar re3-6ef3b8c458d2ba1c7d48f45ffbcd6842df0e2e1c.tar.gz re3-6ef3b8c458d2ba1c7d48f45ffbcd6842df0e2e1c.tar.bz2 re3-6ef3b8c458d2ba1c7d48f45ffbcd6842df0e2e1c.tar.lz re3-6ef3b8c458d2ba1c7d48f45ffbcd6842df0e2e1c.tar.xz re3-6ef3b8c458d2ba1c7d48f45ffbcd6842df0e2e1c.tar.zst re3-6ef3b8c458d2ba1c7d48f45ffbcd6842df0e2e1c.zip |
Diffstat (limited to 'src')
-rw-r--r-- | src/vehicles/Door.cpp | 55 | ||||
-rw-r--r-- | src/vehicles/Door.h | 19 |
2 files changed, 74 insertions, 0 deletions
diff --git a/src/vehicles/Door.cpp b/src/vehicles/Door.cpp index c80965aa..72a30339 100644 --- a/src/vehicles/Door.cpp +++ b/src/vehicles/Door.cpp @@ -168,3 +168,58 @@ CTrainDoor::IsClosed(void) { return m_fPosn == RetTranslationWhenClosed(); } + +bool +CFerryDoor::IsInUse(void) +{ + float translationDifference = m_fPrevPosn - m_fPosn; + m_fPrevPosn = m_fPosn; + return Abs(translationDifference) > 0.002f; +} + +float +CFerryDoor::RetTranslationWhenClosed(void) +{ + if(Abs(m_fClosedPosn) < Abs(m_fOpenPosn)) + return m_fClosedPosn; + else + return m_fOpenPosn; +} + +bool +CFerryDoor::IsClosed(void) +{ + return m_fPosn == RetTranslationWhenClosed(); +} + +float +CFerryDoor::RetTranslationWhenOpen(void) +{ + if(Abs(m_fClosedPosn) < Abs(m_fOpenPosn)) + return m_fOpenPosn; + else + return m_fClosedPosn; +} + +bool +CFerryDoor::IsFullyOpen(void) +{ + if(Abs(m_fPosn) < Abs(RetTranslationWhenOpen()) - 0.5f) + return false; + return true; +} + +void +CFerryDoor::Open(float ratio) +{ + float open; + + m_fPrevPosn = m_fPosn; + open = RetTranslationWhenOpen(); + if(ratio < 1.0f){ + m_fPosn = open*ratio; + }else{ + m_nDoorState = DOORST_OPEN; + m_fPosn = open; + } +}
\ No newline at end of file diff --git a/src/vehicles/Door.h b/src/vehicles/Door.h index 567d3263..da5a3de0 100644 --- a/src/vehicles/Door.h +++ b/src/vehicles/Door.h @@ -67,3 +67,22 @@ public: float RetTranslationWhenOpen(void); void Open(float ratio); }; + + +class CFerryDoor { +private: + float m_fClosedPosn; + float m_fOpenPosn; + int8 m_nDirn; + int8 m_nAxis; + int8 m_nDoorState; + float m_fPosn; + float m_fPrevPosn; +public: + bool IsInUse(void); + float RetTranslationWhenClosed(void); + float RetTranslationWhenOpen(void); + bool IsClosed(void); + bool IsFullyOpen(void); + void Open(float ratio); +};
\ No newline at end of file |