lleconomy.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:5k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file lleconomy.h
  3.  *
  4.  * $LicenseInfo:firstyear=2002&license=viewergpl$
  5.  * 
  6.  * Copyright (c) 2002-2010, Linden Research, Inc.
  7.  * 
  8.  * Second Life Viewer Source Code
  9.  * The source code in this file ("Source Code") is provided by Linden Lab
  10.  * to you under the terms of the GNU General Public License, version 2.0
  11.  * ("GPL"), unless you have obtained a separate licensing agreement
  12.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  13.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  14.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  15.  * 
  16.  * There are special exceptions to the terms and conditions of the GPL as
  17.  * it is applied to this Source Code. View the full text of the exception
  18.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  19.  * online at
  20.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  21.  * 
  22.  * By copying, modifying or distributing this software, you acknowledge
  23.  * that you have read and understood your obligations described above,
  24.  * and agree to abide by those obligations.
  25.  * 
  26.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  27.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  28.  * COMPLETENESS OR PERFORMANCE.
  29.  * $/LicenseInfo$
  30.  */
  31. #ifndef LL_LLECONOMY_H
  32. #define LL_LLECONOMY_H
  33. #include "llsingleton.h"
  34. class LLMessageSystem;
  35. class LLVector3;
  36. class LLGlobalEconomy
  37. {
  38. public:
  39. LLGlobalEconomy();
  40. virtual ~LLGlobalEconomy();
  41. // This class defines its singleton internally as a typedef instead of inheriting from
  42. // LLSingleton like most others because the LLRegionEconomy sub-class might also
  43. // become a singleton and this pattern will more easily disambiguate them.
  44. typedef LLSingleton<LLGlobalEconomy> Singleton;
  45. void initSingleton() { }
  46. virtual void print();
  47. static void processEconomyData(LLMessageSystem *msg, LLGlobalEconomy* econ_data);
  48. S32 calculateTeleportCost(F32 distance) const;
  49. S32 calculateLightRent(const LLVector3& object_size) const;
  50. S32 getObjectCount() const { return mObjectCount; }
  51. S32 getObjectCapacity() const { return mObjectCapacity; }
  52. S32 getPriceObjectClaim() const { return mPriceObjectClaim; }
  53. S32 getPricePublicObjectDecay() const { return mPricePublicObjectDecay; }
  54. S32 getPricePublicObjectDelete() const { return mPricePublicObjectDelete; }
  55. S32 getPricePublicObjectRelease() const { return mPriceObjectClaim - mPricePublicObjectDelete; }
  56. S32 getPriceEnergyUnit() const { return mPriceEnergyUnit; }
  57. S32 getPriceUpload() const { return mPriceUpload; }
  58. S32 getPriceRentLight() const { return mPriceRentLight; }
  59. S32 getTeleportMinPrice() const { return mTeleportMinPrice; }
  60. F32 getTeleportPriceExponent() const  { return mTeleportPriceExponent; }
  61. S32 getPriceGroupCreate() const { return mPriceGroupCreate; }
  62. void setObjectCount(S32 val) { mObjectCount = val; }
  63. void setObjectCapacity(S32 val) { mObjectCapacity = val; }
  64. void setPriceObjectClaim(S32 val) { mPriceObjectClaim = val; }
  65. void setPricePublicObjectDecay(S32 val) { mPricePublicObjectDecay = val; }
  66. void setPricePublicObjectDelete(S32 val) { mPricePublicObjectDelete = val; }
  67. void setPriceEnergyUnit(S32 val) { mPriceEnergyUnit = val; }
  68. void setPriceUpload(S32 val) { mPriceUpload = val; }
  69. void setPriceRentLight(S32 val) { mPriceRentLight = val; }
  70. void setTeleportMinPrice(S32 val) { mTeleportMinPrice = val; }
  71. void setTeleportPriceExponent(F32 val)  { mTeleportPriceExponent = val; }
  72. void setPriceGroupCreate(S32 val) { mPriceGroupCreate = val; }
  73. private:
  74. S32 mObjectCount;
  75. S32 mObjectCapacity;
  76. S32 mPriceObjectClaim; // per primitive
  77. S32 mPricePublicObjectDecay; // per primitive
  78. S32 mPricePublicObjectDelete; // per primitive
  79. S32 mPriceEnergyUnit;
  80. S32 mPriceUpload;
  81. S32 mPriceRentLight;
  82. S32 mTeleportMinPrice;
  83. F32 mTeleportPriceExponent;
  84. S32     mPriceGroupCreate;
  85. };
  86. class LLRegionEconomy : public LLGlobalEconomy
  87. {
  88. public:
  89. LLRegionEconomy();
  90. ~LLRegionEconomy();
  91. static void processEconomyData(LLMessageSystem *msg, void **user_data);
  92. static void processEconomyDataRequest(LLMessageSystem *msg, void **user_data);
  93. void print();
  94. BOOL hasData() const;
  95. F32 getPriceObjectRent() const { return mPriceObjectRent; }
  96. F32 getPriceObjectScaleFactor() const {return mPriceObjectScaleFactor;}
  97. F32 getEnergyEfficiency() const { return mEnergyEfficiency; }
  98. S32 getPriceParcelClaim() const;
  99. S32 getPriceParcelRent() const;
  100. F32 getAreaOwned() const { return mAreaOwned; }
  101. F32 getAreaTotal() const { return mAreaTotal; }
  102. S32 getBasePriceParcelClaimActual() const { return mBasePriceParcelClaimActual; }
  103. void setPriceObjectRent(F32 val) { mPriceObjectRent = val; }
  104. void setPriceObjectScaleFactor(F32 val) { mPriceObjectScaleFactor = val; }
  105. void setEnergyEfficiency(F32 val) { mEnergyEfficiency = val; }
  106. void setBasePriceParcelClaimDefault(S32 val);
  107. void setBasePriceParcelClaimActual(S32 val);
  108. void setPriceParcelClaimFactor(F32 val);
  109. void setBasePriceParcelRent(S32 val);
  110. void setAreaOwned(F32 val) { mAreaOwned = val; }
  111. void setAreaTotal(F32 val) { mAreaTotal = val; }
  112. private:
  113. F32 mPriceObjectRent;
  114. F32 mPriceObjectScaleFactor;
  115. F32 mEnergyEfficiency;
  116. S32 mBasePriceParcelClaimDefault;
  117. S32 mBasePriceParcelClaimActual;
  118. F32 mPriceParcelClaimFactor;
  119. S32 mBasePriceParcelRent;
  120. F32 mAreaOwned;
  121. F32 mAreaTotal;
  122. };
  123. #endif