Package server.maps
package server.maps
地圖與地圖物件子系統:地圖實體、地圖上的各式物件,及其載入與管理。
核心為地圖實體 MapleMap,由 MapleMapFactory 依
wz/ 資料載入並快取;地圖內所有可見元素皆繼承自抽象基底 MapleMapObject,
其類別由列舉 MapleMapObjectType 標示,包含怪物、NPC、掉落物
MapleMapItem、反應爐 MapleReactor、傳送門
MapleDoor、召喚獸 MapleSummon、煙霧
MapleMist 等。地形碰撞由 MapleFoothold /
MapleFootholdTree 提供。
反應爐的靜態資料(MapleReactorStats)由 MapleReactorFactory
自 Reactor.wz 解析快取;地圖入場腳本則由 MapScriptMethods 驅動。
因 MapleMap 屬高風險 God class,P5 重構以「協作者(collaborator)」模式將其三大子系統
外科式拆出,並由 MapleMap 保留簽名相同的一行委派,使 ~700 個 Java 呼叫端與 ~2,700 支腳本
完全不受影響:反應爐生命週期與查詢移入 MapReactorManager、怪物生成移入
MapleMonsterSpawnManager、怪物擊殺與掉落表移入
MapleMonsterKillManager。
-
ClassDescription具有動畫狀態(stance)的地圖物件抽象基底類別。阿拉密亞節日煙火活動的伺服器端邏輯控制器。武陵道場(Mu Lung Dojo)與武陵特工關卡的伺服器端邏輯控制器。奈特金字塔(Nett's Pyramid)與地下鐵 999(Subway 999)關卡的有狀態執行個體控制器。地圖場地限制旗標的列舉,對應 WZ 資料中
fieldLimit位元欄位。神秘之門地圖物件,表示祭司/主教技能開啟的雙向傳送門。楓之谷龍(Evan 職業夥伴龍)的地圖物件表示。放置在地圖上的道具萃取器地圖物件。地圖地形單元(foothold),代表一條線段形式的可站立平台或牆壁。以四叉樹(quadtree)儲存地圖所有MapleFoothold的空間索引結構。玩家放置的風箏地圖物件(MapleMapObjectType.KITE)。單一遊戲地圖實例,承載其上所有地圖物件與在場玩家。地圖特效訊息的資料持有者,同時支援道具音樂盒(jukebox)模式。依頻道(channel)隔離的地圖工廠,負責從 WZ 資料懶載入並快取MapleMap實體。地圖上的掉落物(道具或楓幣),實作為MapleMapObject子類別。所有可放置於MapleMap的地圖物件之抽象基底類別。列舉所有可存在於MapleMap上的地圖物件種類。地圖上的迷霧/毒霧區域,實作為MapleMapObject子類別。地圖怪物的「擊殺(kill)與掉落(drop-loot)子系統」協作者,由 P5 God class 拆分自MapleMap。地圖怪物的「生成(spawn)子系統」協作者,由 P5 God class 拆分自MapleMap。地圖的節點圖(Node Graph)與輔助空間資料的記憶體模型。地圖上的反應爐物件,實作為MapleMapObject子類別。反應爐靜態資料的工廠與快取,從Reactor.wz讀取並建立MapleReactorStats。反應爐的靜態資料模型,記錄其狀態機定義與碰撞矩形。玩家召喚出的召喚獸地圖物件,繼承自AnimatedMapleMapObject。地圖反應爐(reactor)的生命週期與查詢協作者,由 P5 God class 拆分自MapleMap。地圖進入腳本(onFirstUserEnter、onUserEnter)的靜態分派器。機械師職業專用的傳送門物件,實作為MapleMapObject子類別。反應爐掉落表中單筆道具掉落設定的資料容器。列舉所有可儲存返回點的地圖類型,用於savedLocations功能。列舉召喚獸的移動模式,對應客戶端封包中的移動行為值。