非單一功能頁面,而是建築、研究、造船、防禦四大系統的導航分發器,透過參數決定進入哪個子功能。
<?php
// 1. 更新星球建築佇列(核心邏輯)
UpdatePlanetBatimentQueueList($planetrow, $user);
// 2. 處理科技研究佇列
HandleTechnologieBuild($planetrow, $user);
// 3. 參數分發
switch ($_GET['mode'] ?? '') {
case 'fleet': FleetBuildingPage($planetrow, $user); break; // 造船廠
case 'research': ResearchBuildingPage(...); break; // 研究所
case 'defense': DefensesBuildingPage($planetrow, $user); break; // 防禦設施
default: BatimentBuildingPage($planetrow, $user); break; // 建築列表
}
<?php
function UpdatePlanetBatimentQueueList(&$CurrentPlanet, &$CurrentUser) {
$RetValue = false;
// 有建築佇列才處理
if ($CurrentPlanet['b_building_id'] != 0) {
while ($CurrentPlanet['b_building_id'] != 0) {
// 當前建築完成時間已到
if ($CurrentPlanet['b_building'] <= time()) {
// 1. 先更新資源(時間差計算)
PlanetResourceUpdate($CurrentUser, $CurrentPlanet, $CurrentPlanet['b_building'], false);
// 2. 處理建築完成:升級、更新空間、清理佇列
$IsDone = CheckPlanetBuildingQueue($CurrentPlanet, $CurrentUser);
// 3. 若成功,處理佇列下一項
if ($IsDone == true) {
SetNextQueueElementOnTop($CurrentPlanet, $CurrentUser);
}
} else {
$RetValue = true; // 還有建築在進行中
break;
}
}
}
return $RetValue;
}
b_building_id 取得:建築類型、建造/拆除、目標等級、完成時間+1 或 -1)true 表示佇列還有後續項目b_building(完成時間)、b_building_id(剩餘佇列)| 設計 | 優勢 |
|---|---|
| 被動觸發更新 | 無需排程器、Cron、背景進程;玩家每次操作自然推進時間 |
| 佇列字串儲存 | 簡單、無需額外表、適合輕量級遊戲 |
| 資源計算集中在 PlanetResourceUpdate | 單一職責、易維護、邏輯一致 |
| 作弊檢查整合在操作分發 | 統一入口防範偽造請求 |
explode 開銷大,建議改 JSON 或關聯表