/** * Processes clicking on facilities. * @param action Pointer to an action. */ void PlaceFacilityState::viewClick(Action *) { if (!_view->isPlaceable(_rule)) { _game->pushState(new ErrorMessageState(tr("STR_CANNOT_BUILD_HERE"), _palette, _game->getRuleset()->getInterface("placeFacility")->getElement("errorMessage")->color, "BACK01.SCR", _game->getRuleset()->getInterface("placeFacility")->getElement("errorPalette")->color)); } else if (_game->getSavedGame()->getFunds() < _rule->getBuildCost()) { _game->popState(); _game->pushState(new ErrorMessageState(tr("STR_NOT_ENOUGH_MONEY"), _palette, _game->getRuleset()->getInterface("placeFacility")->getElement("errorMessage")->color, "BACK01.SCR", _game->getRuleset()->getInterface("placeFacility")->getElement("errorPalette")->color)); } else { BaseFacility *fac = new BaseFacility(_rule, _base); fac->setX(_view->getGridX()); fac->setY(_view->getGridY()); fac->setBuildTime(_rule->getBuildTime()); _base->getFacilities()->push_back(fac); if (Options::allowBuildingQueue) { if (_view->isQueuedBuilding(_rule)) fac->setBuildTime(std::numeric_limits<int>::max()); _view->reCalcQueuedBuildings(); } _game->getSavedGame()->setFunds(_game->getSavedGame()->getFunds() - _rule->getBuildCost()); _game->popState(); } }
/** * Processes clicking on facilities. * @param action Pointer to an action. */ void PlaceLiftState::viewClick(Action *action) { BaseFacility *fac = new BaseFacility(_game->getRuleset()->getBaseFacility("STR_ACCESS_LIFT"), _base, _view->getGridX(), _view->getGridY()); fac->setBuildTime(0); _base->getFacilities()->push_back(fac); _game->popState(); _game->pushState(new BasescapeState(_game, _base, _globe)); }
/** * Processes clicking on facilities. * @param action Pointer to an action. */ void PlaceFacilityState::viewClick(Action *action) { if (!_view->isPlaceable(_rule)) { _game->popState(); _game->pushState(new BasescapeErrorState(_game, "STR_CANNOT_BUILD_HERE")); } else if (_game->getSavedGame()->getFunds() < _rule->getBuildCost()) { _game->popState(); _game->pushState(new BasescapeErrorState(_game, "STR_NOT_ENOUGH_MONEY")); } else { BaseFacility *fac = new BaseFacility(_rule, _base, _view->getGridX(), _view->getGridY()); fac->setBuildTime(_rule->getBuildTime()); _base->getFacilities()->push_back(fac); _game->getSavedGame()->setFunds(_game->getSavedGame()->getFunds() - _rule->getBuildCost()); _game->popState(); } }
/** * Processes clicking on facilities. * @param action Pointer to an action. */ void PlaceFacilityState::viewClick(Action *action) { if (!_view->isPlaceable(_rule)) { _game->popState(); _game->pushState(new ErrorMessageState(_game, "STR_CANNOT_BUILD_HERE", Palette::blockOffset(15)+1, "BACK01.SCR", 6)); } else if (_game->getSavedGame()->getFunds() < _rule->getBuildCost()) { _game->popState(); _game->pushState(new ErrorMessageState(_game, "STR_NOT_ENOUGH_MONEY", Palette::blockOffset(15)+1, "BACK01.SCR", 6)); } else { BaseFacility *fac = new BaseFacility(_rule, _base); fac->setX(_view->getGridX()); fac->setY(_view->getGridY()); fac->setBuildTime(_rule->getBuildTime()); _base->getFacilities()->push_back(fac); _game->getSavedGame()->setFunds(_game->getSavedGame()->getFunds() - _rule->getBuildCost()); _game->popState(); } }