Class CashItemFactory
java.lang.Object
server.CashItemFactory
現金商城商品目錄的全域工廠與快取,負責從 WZ 資料與資料庫載入所有可販售項目。
本類別為全域單例(getInstance()),於伺服器啟動或 reload=true 時呼叫
initialize(boolean) 從 Etc.wz/Commodity.img 讀取 CashItem 基本屬性,
再合併資料庫 cashshop_modified_items 表中的 CashModItem 覆蓋記錄。
同時維護以下輔助映射:
- 套裝組合(
itemPackage):來自CashPackage.img,一個序號對應多個子道具序號。 - 開盒獎勵(
openBox):特定箱子道具(如彩帽箱、武器箱)對應的可能序號清單。 - 皇家/整型優惠券(
unkCoupon/unkCoupon2/royaCoupon): 各種美髮券與整型券的可選造型清單(含男/女分組)。
協作者:CashShop(消費本工廠取得 CashItem 後轉換為背包道具);
provider.MapleDataProviderFactory(讀取 WZ 資料);
DatabaseConnection(讀取 cashshop_modified_items)。
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddModItem(CashModItem cModItem) voiddeleteModItem(int sn) final Collection<CashModItem> final List<CashModItem> static CashItemFactoryfinal CashItemgetItem(int sn) final intgetItemSN(int itemid) final List<CashModItem> final CashModItemgetModItem(int sn) getPackageItems(int itemId) final CashItemgetSimpleItem(int sn) voidinitialize(boolean reload) intnextSerialForCategory(int category) 配發指定分區(SN 前 3 碼)下一個可用的序號。voidremoveModifiedItem(int serial) 從cashshop_modified_items刪除一筆商品並同步移除記憶體快取。voidsaveModifiedItem(int serial, int itemid, int count, int price, int period, int gender, int mark, boolean showup, int priority) 新增或更新cashshop_modified_items一筆現金商城商品(後台 GUI 使用), 並同步更新記憶體中的itemMods快取(免重啟即生效)。voidupdateModItem(CashModItem cModItem)
-
Constructor Details
-
CashItemFactory
public CashItemFactory()
-
-
Method Details
-
getInstance
-
initialize
public void initialize(boolean reload) -
getAllItems
-
getHideAllDefaultItems
-
getHideItems
-
getAllModItems
-
getMainItems
-
getSimpleItem
-
getItem
-
getPackageItems
-
getModItem
-
getAllModInfo
-
getRandomItemInfo
-
getUnkCoupon
-
getUnkCoupon2
-
getRoyaCoupon
-
getItemSN
public final int getItemSN(int itemid) -
addModItem
-
updateModItem
-
deleteModItem
public void deleteModItem(int sn) -
saveModifiedItem
public void saveModifiedItem(int serial, int itemid, int count, int price, int period, int gender, int mark, boolean showup, int priority) 新增或更新cashshop_modified_items一筆現金商城商品(後台 GUI 使用), 並同步更新記憶體中的itemMods快取(免重啟即生效)。以
serial(SN)為主鍵 upsert:序號不存在則新增,存在則更新可編輯欄位 (售價/旗標/顯示/道具 ID/優先序/期限/性別/數量);package/meso等非 GUI 欄位僅於首次新增時設為預設值,更新時保留原值。- Parameters:
serial- 商品序號(SN,前 3 碼為分區)itemid- 道具 IDcount- 數量price- 售價(楓葉點數/樂豆點數,對應discount_price欄)period- 有效天數(0=永久)gender- 適用性別(0=男 1=女 2=共用)mark- 旗標(對應mark欄,預設 -2)showup- 是否上架顯示priority- 排序優先序
-
removeModifiedItem
public void removeModifiedItem(int serial) 從cashshop_modified_items刪除一筆商品並同步移除記憶體快取。- Parameters:
serial- 商品序號(SN)
-
nextSerialForCategory
public int nextSerialForCategory(int category) 配發指定分區(SN 前 3 碼)下一個可用的序號。分區
category對應的序號區間為[category*100000, category*100000+100000), 例如504(轉蛋)→50400000起;回傳該分區目前最大序號 +1(無則回傳區間起點)。- Parameters:
category- 分區代碼(如 200=帽子、504=轉蛋)- Returns:
- 該分區下一個可用序號
-