bool Tower::initWithType(TowerType type, ControllerType controller) { if (BaseGameEntity::initWithControllerType(controller)) { // Architecture //------------------- m_pArchitecture = Architecture::getArchitectureForType(type); // Set Sprite //------------------- CCSpriteFrame *frame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(m_pArchitecture->getSpriteName()); m_pSprite->setDisplayFrame(frame); GameModel::instance()->getBatch()->addChild(m_pSprite); // Shooting Component //------------------- m_pComponents->setObject(ShootingComponent::create(this), kShootingComponent); // Touch Component //------------------- m_pComponents->setObject(TouchComponent::create(this, 1, this, menu_selector(Tower::popMenu), m_pArchitecture->getBodyRadius()), kTouchComponent); // State Machine Component //------------------- StateMachine<Tower> *pSM = StateMachine<Tower>::create(this); pSM->setGlobalState(TowerGlobalState::instance()); pSM->changeState(TowerStateIdle::instance()); m_pComponents->setObject(pSM, kStateMachineComponent); // Collision Component //------------------- getCollisionComponent()->setQueryRadius(m_pArchitecture->getGuardingRadius()); getCollisionComponent()->setCollisionRadius(m_pArchitecture->getGuardingRadius()); // Set entity type //------------------- m_eEntityType = kTower; return true; } return false; }
void changeState(Enemy::States newState) { mStateMachine.changeState(mStates.at(newState).get(), newState); }
// Setters void changeState(Adventurer::States newState) { mStateMachine.changeState(mStates.at(newState).get(), newState); }