mirror of
https://github.com/Walter-Sparrow/lunar-tear.git
synced 2026-07-02 05:43:41 +03:00
Implement panel missions as static unlock-all
Build and Push Docker images to Docker Hub / build-and-push (push) Has been cancelled
Build and Push Docker images to Docker Hub / build-and-push (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
package masterdata
|
||||
|
||||
import (
|
||||
"log"
|
||||
"sort"
|
||||
|
||||
"lunar-tear/server/internal/utils"
|
||||
)
|
||||
|
||||
type WebviewPanelMissionCatalog struct {
|
||||
PageIds []int32 // every WebviewPanelMissionPageId, sorted ascending
|
||||
}
|
||||
|
||||
func LoadWebviewPanelMissionCatalog() *WebviewPanelMissionCatalog {
|
||||
rows, err := utils.ReadTable[EntityMWebviewPanelMissionPage]("m_webview_panel_mission_page")
|
||||
if err != nil {
|
||||
log.Printf("load webview panel mission page table: %v", err)
|
||||
return &WebviewPanelMissionCatalog{}
|
||||
}
|
||||
ids := make([]int32, 0, len(rows))
|
||||
for _, r := range rows {
|
||||
ids = append(ids, r.WebviewPanelMissionPageId)
|
||||
}
|
||||
sort.Slice(ids, func(i, j int) bool { return ids[i] < ids[j] })
|
||||
return &WebviewPanelMissionCatalog{PageIds: ids}
|
||||
}
|
||||
@@ -44,6 +44,30 @@ const informationPage = `<!DOCTYPE html>
|
||||
</body>
|
||||
</html>`
|
||||
|
||||
const panelMissionPage = `<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Panel Missions</title>
|
||||
<style>
|
||||
body { margin:0; padding:48px 20px; font-family:"Noto Sans",sans-serif;
|
||||
background:#0a0a0f; color:#d4cfc6; text-align:center; }
|
||||
h1 { font-size:1.3em; letter-spacing:.15em; color:#e8e0d0; margin-bottom:6px; }
|
||||
.sub { font-size:.75em; color:#888; margin-bottom:28px; }
|
||||
.sep { width:60px; border:none; border-top:1px solid #333; margin:24px auto; }
|
||||
p { font-size:.85em; line-height:1.6; color:#999; max-width:340px; margin:0 auto; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>PANEL MISSIONS</h1>
|
||||
<div class="sub">Card Stories</div>
|
||||
<hr class="sep">
|
||||
<p>All panel missions are cleared.</p>
|
||||
<p>Their Card Stories are available in Library › Extra Stories.</p>
|
||||
</body>
|
||||
</html>`
|
||||
|
||||
// resourcesURLOriginal is the base URL embedded in list.bin; must be replaced with same-length (43 bytes) when rewriting.
|
||||
const resourcesURLOriginal = "https://resources.app.nierreincarnation.com"
|
||||
|
||||
@@ -456,6 +480,13 @@ func (s *OctoHTTPServer) handleWebAPI(w http.ResponseWriter, r *http.Request, pa
|
||||
return
|
||||
}
|
||||
|
||||
if strings.Contains(path, "panelmission") {
|
||||
w.Header().Set("Content-Type", "text/html; charset=utf-8")
|
||||
w.WriteHeader(200)
|
||||
w.Write([]byte(panelMissionPage))
|
||||
return
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "text/html; charset=utf-8")
|
||||
w.WriteHeader(200)
|
||||
w.Write([]byte(`<!DOCTYPE html><html><body></body></html>`))
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package userdata
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"lunar-tear/server/internal/masterdata"
|
||||
"lunar-tear/server/internal/store"
|
||||
"lunar-tear/server/internal/utils"
|
||||
)
|
||||
|
||||
var webviewPanelMissionCatalog = sync.OnceValue(masterdata.LoadWebviewPanelMissionCatalog)
|
||||
|
||||
func init() {
|
||||
register("IUserWebviewPanelMission", func(user store.UserState) string {
|
||||
pageIds := webviewPanelMissionCatalog().PageIds
|
||||
records := make([]map[string]any, 0, len(pageIds))
|
||||
for _, pageId := range pageIds {
|
||||
records = append(records, map[string]any{
|
||||
"userId": user.UserId,
|
||||
"webviewPanelMissionPageId": pageId,
|
||||
"rewardReceiveDatetime": user.GameStartDatetime,
|
||||
"latestVersion": user.GameStartDatetime,
|
||||
})
|
||||
}
|
||||
s, _ := utils.EncodeJSONMaps(records...)
|
||||
return s
|
||||
})
|
||||
}
|
||||
@@ -102,6 +102,7 @@ func FullClientTableMap(user store.UserState) map[string]string {
|
||||
"IUserBigHuntWeeklyStatus": projectTable("IUserBigHuntWeeklyStatus", user),
|
||||
"IUserFacebook": projectTable("IUserFacebook", user),
|
||||
"IUserApple": projectTable("IUserApple", user),
|
||||
"IUserWebviewPanelMission": projectTable("IUserWebviewPanelMission", user),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user