void DroidMaintenanceSessionImplementation::sendMaintenanceTransferBox(){ // add result if (selectedStructure == NULL) { cancelSession(); return; } ManagedReference<CreatureObject*> creature = this->player.get(); ManagedReference<DroidMaintenanceModuleDataComponent*> module = this->maintModule.get(); // create transfer box ManagedReference<SuiTransferBox*> sui = new SuiTransferBox(creature,SuiWindowType::DROID_ADD_STRUCTURE_AMOUNT); sui->setCallback(new DroidMaintenanceSessionAddCreditsSuiCallback(creature->getZoneServer())); sui->setPromptTitle("@pet/droid_modules:droid_maint_amount_title"); //Select Amount bool offplanet = false; if (selectedStructure->getZone()->getZoneName() != creature->getZone()->getZoneName()) offplanet = true; StringBuffer promptText = "@pet/droid_modules:droid_maint_amount_prompt \n@player_structure:current_maint_pool "+ String::valueOf(selectedStructure->getSurplusMaintenance())+"cr"; selectedFees = 0; if (offplanet) { PlanetManager* planetManager = creature->getZone()->getPlanetManager(); if (planetManager == NULL) { return; } int fee = planetManager->getTravelFare(selectedStructure->getZone()->getZoneName(),creature->getZone()->getZoneName()); selectedFees = fee; promptText << "\n@pet/droid_modules:droid_maint_diff_planet_prefix " << fee << " @pet/droid_modules:droid_maint_diff_planet_suffix \n"; } sui->setPromptText(promptText.toString()); // check for off planet, it has a fee sui->addFrom("@player_structure:total_funds",String::valueOf(availableCredits),String::valueOf(availableCredits), "1"); sui->addTo("@player_structure:to_pay", "0", "0", "1"); creature->getPlayerObject()->addSuiBox(sui); creature->sendMessage(sui->generateMessage()); }
void InstallationObjectImplementation::handleStructureAddEnergy(CreatureObject* player) { try { StringBuffer sstext, ssTotalEnergy; ManagedReference<SuiTransferBox*> energyBox = new SuiTransferBox(player, SuiWindowType::STRUCTURE_ADD_ENERGY); energyBox->setUsingObject(_this.get()); energyBox->setPromptTitle("@player_structure:add_power"); sstext << "@player_structure:select_power_amount" <<"\n\n@player_structure:current_power_value " << (int) surplusPower; energyBox->setPromptText(sstext.toString()); ResourceManager* resourceManager = getZoneServer()->getResourceManager(); ssTotalEnergy << resourceManager->getAvailablePowerFromPlayer(player); energyBox->addFrom("@player_structure:total_energy", ssTotalEnergy.toString(), ssTotalEnergy.toString(), "1"); energyBox->addTo("@player_structure:to_deposit", "0", "0", "1"); energyBox->setCallback(new InsertPowerSuiCallback(server->getZoneServer())); player->getPlayerObject()->addSuiBox(energyBox); player->sendMessage(energyBox->generateMessage()); } catch (Exception& e) { e.printStackTrace(); error("unreported exception in InstallationObjectImplementation::handleStructureAddEnergy"); } }
void SuiManager::sendTransferBox(SceneObject* usingObject, SceneObject* player, const String& title, const String& text, LuaObject& optionsAddFrom, LuaObject& optionsAddTo, const String& screenplay, const String& callback) { if (usingObject == NULL) return; if (player == NULL || !player->isCreatureObject()) return; CreatureObject* creature = cast<CreatureObject*>(player); PlayerObject* playerObject = creature->getPlayerObject(); if (playerObject != NULL) { ManagedReference<SuiTransferBox*> box = NULL; box = new SuiTransferBox(creature, 0x00); if(optionsAddFrom.isValidTable()){ String optionAddFromTextString = optionsAddFrom.getStringAt(1); String optionAddFromStartingString = optionsAddFrom.getStringAt(2); String optionAddFromRatioString = optionsAddFrom.getStringAt(3); box->addFrom(optionAddFromTextString, optionAddFromStartingString, optionAddFromStartingString, optionAddFromRatioString); optionsAddFrom.pop(); } if(optionsAddTo.isValidTable()){ String optionAddToTextString = optionsAddTo.getStringAt(1); String optionAddToStartingString = optionsAddTo.getStringAt(2); String optionAddToRatioString = optionsAddTo.getStringAt(3); box->addTo(optionAddToTextString, optionAddToStartingString, optionAddToStartingString, optionAddToRatioString); optionsAddTo.pop(); } box->setCallback(new LuaSuiCallback(creature->getZoneServer(), screenplay, callback)); box->setPromptTitle(title); box->setPromptText(text); box->setUsingObject(usingObject); box->setForceCloseDistance(32.f); creature->sendMessage(box->generateMessage()); playerObject->addSuiBox(box); } }
void StructureManager::promptPayMaintenance(StructureObject* structure, CreatureObject* creature, SceneObject* terminal) { int availableCredits = creature->getCashCredits(); if (availableCredits <= 0) { creature->sendSystemMessage("@player_structure:no_money"); //You do not have any money to pay maintenance. return; } ManagedReference<PlayerObject*> ghost = creature->getPlayerObject(); if (ghost == NULL) return; //Get the most up to date maintenance count. structure->updateStructureStatus(); int surplusMaintenance = (int) floor( (float) structure->getSurplusMaintenance()); ManagedReference<SuiTransferBox*> sui = new SuiTransferBox(creature, SuiWindowType::STRUCTURE_MANAGE_MAINTENANCE); sui->setCallback(new StructurePayMaintenanceSuiCallback(server)); sui->setPromptTitle("@player_structure:select_amount"); //Select Amount sui->setUsingObject(structure); sui->setPromptText( "@player_structure:select_maint_amount \n@player_structure:current_maint_pool " + String::valueOf(surplusMaintenance)); sui->addFrom("@player_structure:total_funds", String::valueOf(availableCredits), String::valueOf(availableCredits), "1"); sui->addTo("@player_structure:to_pay", "0", "0", "1"); ghost->addSuiBox(sui); creature->sendMessage(sui->generateMessage()); }