void GameInterface::setAprilRunning() { Current *current = StarkGlobal->getCurrent(); Resources::ModelItem *april = current->getInteractive(); Movement *movement = april->getMovement(); Walk *walk = dynamic_cast<Walk *>(movement); walk->setRunning(); }
bool GameInterface::isAprilWalking() const { Current *current = StarkGlobal->getCurrent(); if (!current) { return false; } Resources::ModelItem *april = current->getInteractive(); if (!april) { return false; } Movement *movement = april->getMovement(); if (!movement) { return false; } Walk *walk = dynamic_cast<Walk *>(movement); if (!walk) { return false; } return !walk->hasEnded(); }
void ResourceProvider::setAprilInitialPosition() { Current *current = _global->getCurrent(); Resources::ModelItem *april = current->getInteractive(); if (!april) { return; // No character } // Set the initial position for April if (!_nextPositionBookmarkReference.empty()) { Resources::Bookmark *position = _nextPositionBookmarkReference.resolve<Resources::Bookmark>(); april->placeOnBookmark(position); Resources::Camera *camera = current->getCamera(); Math::Angle cameraAngle = camera->getHorizontalAngle(); april->setDirection(_nextDirection + cameraAngle); } else if (april->getFloorFaceIndex() <= 0) { // No target location provided, place April on the first floor face april->placeDefaultPosition(); } _nextPositionBookmarkReference = ResourceReference(); _nextDirection = 0; }