Being able to access common functions in the Scroll class is pretty essential in a Orx/Scroll based game. The Scroll
class provides a singleton which can be accessed from anywhere in a ScrollObject
class:
MyClass::GetInstance()
Imagine for a second that you had a function in your Scroll
class to update a score. Collisions using OnCollide
in the various instances of ScrollObject(s) might all need to update the score with different values.
Let's say the score function looks like this in the MyGame
Scroll
class:
void MyGame::AddToScore(int points) { score += points; }
And say we had a Hero ScrollObject
class which happened to collide with a Coin ScrollObject
class:
orxBOOL Hero::OnCollide(ScrollObject *_poCollider, orxBODY_PART *_pstPart, orxBODY_PART *_pstColliderPart, const orxVECTOR &_rvPosition, const orxVECTOR &_rvNormal) { if (_poCollider == orxNULL) { return; } const orxSTRING colliderName = _poCollider->GetName(); if (orxString_Compare(colliderName, "Coin") == 0) { MyGame::GetInstance().AddToScore(100); } return orxTRUE; }
The main point is that once the collision is detected, we can update the score in the Scroll class using the singleton:
MyGame::GetInstance().AddToScore(100);
That's all there is to it.