Kein Problem, ich zeig dir mal als Beispiel wie ich es in dem Fall machen würde.
Ich würde die Funktion IsInSafe aus InstanceBase nach PythonBackground verlagern.
So hast du den Code auch nicht mehr doppelt.
Also deine InstanceBase Funktion IsInSafe wird jetzt zu:
- bool CInstanceBase::IsInSafe()
- {
- return CPythonBackground::Instance().IsActorInSafe(m_GraphicThingInstance);
- }
In PythonBackground.h fügst du hinzu:
- public:
- bool IsActorInSafe(CActorInstance& actor);
In PythonBackground.cpp fügst du hinzu:
- bool CPythonBackground::IsActorInSafe(CActorInstance& actor)
- {
- const auto& c_rkPPosCur = actor.NEW_GetCurPixelPositionRef();
- return isAttrOn(c_rkPPosCur.x, c_rkPPosCur.y, CTerrainImpl::ATTRIBUTE_BANPK);
- }
Und in TestActorCollision() fügst du hinzu:
- if (CPythonBackground::instance().IsActorInSafe(rVictim))
- return FALSE;
So hast du den funktionalen Teil des Codes an einer Stelle und kannst von überall drauf zugreifen sofern du die ActorInstance hast.
Bitte melden Sie sich an, um diesen Link zu sehen.