diff options
author | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
commit | 420b91db29485df39fd6e724e782c449158811cb (patch) | |
tree | b471a94563af914d3ed3edd3e856d21cb1b69945 /indra/llinventory/lleconomy.cpp |
Print done when done.
Diffstat (limited to 'indra/llinventory/lleconomy.cpp')
-rw-r--r-- | indra/llinventory/lleconomy.cpp | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/indra/llinventory/lleconomy.cpp b/indra/llinventory/lleconomy.cpp new file mode 100644 index 0000000000..378ab8ced1 --- /dev/null +++ b/indra/llinventory/lleconomy.cpp @@ -0,0 +1,227 @@ +/** + * @file lleconomy.cpp + * + * Copyright (c) 2002-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#include "linden_common.h" + +#include "lleconomy.h" +#include "llerror.h" +#include "message.h" +#include "v3math.h" + +LLGlobalEconomy::LLGlobalEconomy() +: mObjectCount( -1 ), + mObjectCapacity( -1 ), + mPriceObjectClaim( -1 ), + mPricePublicObjectDecay( -1 ), + mPricePublicObjectDelete( -1 ), + mPriceEnergyUnit( -1 ), + mPriceUpload( -1 ), + mPriceRentLight( -1 ), + mTeleportMinPrice( -1 ), + mTeleportPriceExponent( -1 ), + mPriceGroupCreate( -1 ) +{ } + +LLGlobalEconomy::~LLGlobalEconomy() +{ } + +// static +void LLGlobalEconomy::processEconomyData(LLMessageSystem *msg, void** user_data) +{ + S32 i; + F32 f; + + LLGlobalEconomy *this_ptr = (LLGlobalEconomy*)user_data; + + msg->getS32Fast(_PREHASH_Info, _PREHASH_ObjectCapacity, i); + this_ptr->setObjectCapacity(i); + msg->getS32Fast(_PREHASH_Info, _PREHASH_ObjectCount, i); + this_ptr->setObjectCount(i); + msg->getS32Fast(_PREHASH_Info, _PREHASH_PriceEnergyUnit, i); + this_ptr->setPriceEnergyUnit(i); + msg->getS32Fast(_PREHASH_Info, _PREHASH_PriceObjectClaim, i); + this_ptr->setPriceObjectClaim(i); + msg->getS32Fast(_PREHASH_Info, _PREHASH_PricePublicObjectDecay, i); + this_ptr->setPricePublicObjectDecay(i); + msg->getS32Fast(_PREHASH_Info, _PREHASH_PricePublicObjectDelete, i); + this_ptr->setPricePublicObjectDelete(i); + msg->getS32Fast(_PREHASH_Info, _PREHASH_PriceUpload, i); + this_ptr->setPriceUpload(i); + msg->getS32Fast(_PREHASH_Info, _PREHASH_PriceRentLight, i); + this_ptr->setPriceRentLight(i); + msg->getS32Fast(_PREHASH_Info, _PREHASH_TeleportMinPrice, i); + this_ptr->setTeleportMinPrice(i); + msg->getF32Fast(_PREHASH_Info, _PREHASH_TeleportPriceExponent, f); + this_ptr->setTeleportPriceExponent(f); + msg->getS32Fast(_PREHASH_Info, _PREHASH_PriceGroupCreate, i); + this_ptr->setPriceGroupCreate(i); +} + +S32 LLGlobalEconomy::calculateTeleportCost(F32 distance) const +{ + S32 min_cost = getTeleportMinPrice(); + F32 exponent = getTeleportPriceExponent(); + F32 divisor = 100.f * pow(3.f, exponent); + S32 cost = (U32)(distance * pow(log10(distance), exponent) / divisor); + if (cost < 0) + { + cost = 0; + } + else if (cost < min_cost) + { + cost = min_cost; + } + + return cost; +} + +S32 LLGlobalEconomy::calculateLightRent(const LLVector3& object_size) const +{ + F32 intensity_mod = llmax(object_size.magVec(), 1.f); + return (S32)(intensity_mod * getPriceRentLight()); +} + +void LLGlobalEconomy::print() +{ + llinfos << "Global Economy Settings: " << llendl; + llinfos << "Object Capacity: " << mObjectCapacity << llendl; + llinfos << "Object Count: " << mObjectCount << llendl; + llinfos << "Claim Price Per Object: " << mPriceObjectClaim << llendl; + llinfos << "Claim Price Per Public Object: " << mPricePublicObjectDecay << llendl; + llinfos << "Delete Price Per Public Object: " << mPricePublicObjectDelete << llendl; + llinfos << "Release Price Per Public Object: " << getPricePublicObjectRelease() << llendl; + llinfos << "Price Per Energy Unit: " << mPriceEnergyUnit << llendl; + llinfos << "Price Per Upload: " << mPriceUpload << llendl; + llinfos << "Light Base Price: " << mPriceRentLight << llendl; + llinfos << "Teleport Min Price: " << mTeleportMinPrice << llendl; + llinfos << "Teleport Price Exponent: " << mTeleportPriceExponent << llendl; + llinfos << "Price for group creation: " << mPriceGroupCreate << llendl; +} + +LLRegionEconomy::LLRegionEconomy() +: LLGlobalEconomy(), + mPriceObjectRent( -1.f ), + mPriceObjectScaleFactor( -1.f ), + mEnergyEfficiency( -1.f ), + mBasePriceParcelClaimDefault(-1), + mBasePriceParcelClaimActual(-1), + mPriceParcelClaimFactor(-1.f), + mBasePriceParcelRent(-1), + mAreaOwned(-1.f), + mAreaTotal(-1.f) +{ } + +LLRegionEconomy::~LLRegionEconomy() +{ } + +BOOL LLRegionEconomy::hasData() const +{ + return (mBasePriceParcelRent != -1); +} + +// static +void LLRegionEconomy::processEconomyData(LLMessageSystem *msg, void** user_data) +{ + S32 i; + F32 f; + + LLGlobalEconomy::processEconomyData(msg, user_data); + + LLRegionEconomy *this_ptr = (LLRegionEconomy*)user_data; + + msg->getS32Fast(_PREHASH_Info, _PREHASH_PriceParcelClaim, i); + this_ptr->setBasePriceParcelClaimDefault(i); + msg->getF32(_PREHASH_Info, _PREHASH_PriceParcelClaimFactor, f); + this_ptr->setPriceParcelClaimFactor(f); + msg->getF32Fast(_PREHASH_Info, _PREHASH_EnergyEfficiency, f); + this_ptr->setEnergyEfficiency(f); + msg->getF32Fast(_PREHASH_Info, _PREHASH_PriceObjectRent, f); + this_ptr->setPriceObjectRent(f); + msg->getF32Fast(_PREHASH_Info, _PREHASH_PriceObjectScaleFactor, f); + this_ptr->setPriceObjectScaleFactor(f); + msg->getS32Fast(_PREHASH_Info, _PREHASH_PriceParcelRent, i); + this_ptr->setBasePriceParcelRent(i); +} + +// static +void LLRegionEconomy::processEconomyDataRequest(LLMessageSystem *msg, void **user_data) +{ + LLRegionEconomy *this_ptr = (LLRegionEconomy*)user_data; + + msg->newMessageFast(_PREHASH_EconomyData); + msg->nextBlockFast(_PREHASH_Info); + msg->addS32Fast(_PREHASH_ObjectCapacity, this_ptr->getObjectCapacity()); + msg->addS32Fast(_PREHASH_ObjectCount, this_ptr->getObjectCount()); + msg->addS32Fast(_PREHASH_PriceEnergyUnit, this_ptr->getPriceEnergyUnit()); + msg->addS32Fast(_PREHASH_PriceObjectClaim, this_ptr->getPriceObjectClaim()); + msg->addS32Fast(_PREHASH_PricePublicObjectDecay, this_ptr->getPricePublicObjectDecay()); + msg->addS32Fast(_PREHASH_PricePublicObjectDelete, this_ptr->getPricePublicObjectDelete()); + msg->addS32Fast(_PREHASH_PriceParcelClaim, this_ptr->mBasePriceParcelClaimActual); + msg->addF32Fast(_PREHASH_PriceParcelClaimFactor, this_ptr->mPriceParcelClaimFactor); + msg->addS32Fast(_PREHASH_PriceUpload, this_ptr->getPriceUpload()); + msg->addS32Fast(_PREHASH_PriceRentLight, this_ptr->getPriceRentLight()); + msg->addS32Fast(_PREHASH_TeleportMinPrice, this_ptr->getTeleportMinPrice()); + msg->addF32Fast(_PREHASH_TeleportPriceExponent, this_ptr->getTeleportPriceExponent()); + + msg->addF32Fast(_PREHASH_EnergyEfficiency, this_ptr->getEnergyEfficiency()); + msg->addF32Fast(_PREHASH_PriceObjectRent, this_ptr->getPriceObjectRent()); + msg->addF32Fast(_PREHASH_PriceObjectScaleFactor, this_ptr->getPriceObjectScaleFactor()); + msg->addS32Fast(_PREHASH_PriceParcelRent, this_ptr->getPriceParcelRent()); + msg->addS32Fast(_PREHASH_PriceGroupCreate, this_ptr->getPriceGroupCreate()); + + msg->sendReliable(msg->getSender()); +} + + +S32 LLRegionEconomy::getPriceParcelClaim() const +{ + //return (S32)((F32)mBasePriceParcelClaim * (mAreaTotal / (mAreaTotal - mAreaOwned))); + return (S32)((F32)mBasePriceParcelClaimActual * mPriceParcelClaimFactor); +} + +S32 LLRegionEconomy::getPriceParcelRent() const +{ + return mBasePriceParcelRent; +} + + +void LLRegionEconomy::print() +{ + this->LLGlobalEconomy::print(); + + llinfos << "Region Economy Settings: " << llendl; + llinfos << "Land (square meters): " << mAreaTotal << llendl; + llinfos << "Owned Land (square meters): " << mAreaOwned << llendl; + llinfos << "Daily Object Rent: " << mPriceObjectRent << llendl; + llinfos << "Daily Land Rent (per meter): " << getPriceParcelRent() << llendl; + llinfos << "Energey Efficiency: " << mEnergyEfficiency << llendl; +} + + +void LLRegionEconomy::setBasePriceParcelClaimDefault(S32 val) +{ + mBasePriceParcelClaimDefault = val; + if(mBasePriceParcelClaimActual == -1) + { + mBasePriceParcelClaimActual = val; + } +} + +void LLRegionEconomy::setBasePriceParcelClaimActual(S32 val) +{ + mBasePriceParcelClaimActual = val; +} + +void LLRegionEconomy::setPriceParcelClaimFactor(F32 val) +{ + mPriceParcelClaimFactor = val; +} + +void LLRegionEconomy::setBasePriceParcelRent(S32 val) +{ + mBasePriceParcelRent = val; +} |