···124124 {"assets/release/20240404193219.bin.e", false},
125125}
126126127127-// platformAssets holds the per-platform rev-0 layout. At least one full set
128128-// must be present; users may have only Android or only iOS extracted.
129129-var platformAssets = [][]assetCheck{
127127+// assetTrees lists every rev-0 layout the CDN accepts. At least one full set
128128+// must be present; users may have only the un-split shared tree, only Android,
129129+// only iOS, or any combination.
130130+var assetTrees = [][]assetCheck{
131131+ {
132132+ {"assets/revisions/0/list.bin", false},
133133+ {"assets/revisions/0/assetbundle", true},
134134+ {"assets/revisions/0/resources", true},
135135+ },
130136 {
131137 {"assets/revisions/0/android/list.bin", false},
132138 {"assets/revisions/0/android/assetbundle", true},
···161167 }
162168 }
163169164164- var platformMissing [][]string
165165- anyPlatformOK := false
166166- for _, group := range platformAssets {
170170+ var treeMissing [][]string
171171+ anyTreeOK := false
172172+ for _, group := range assetTrees {
167173 var groupMissing []string
168174 for _, a := range group {
169175 if m, ok := checkAsset(a); !ok {
···171177 }
172178 }
173179 if len(groupMissing) == 0 {
174174- anyPlatformOK = true
180180+ anyTreeOK = true
175181 }
176176- platformMissing = append(platformMissing, groupMissing)
182182+ treeMissing = append(treeMissing, groupMissing)
177183 }
178178- if !anyPlatformOK {
179179- for _, gm := range platformMissing {
184184+ if !anyTreeOK {
185185+ for _, gm := range treeMissing {
180186 missing = append(missing, gm...)
181187 }
182188 }
···200206 b.WriteString("\n")
201207 b.WriteString(dimStyle.Render(" Place the extracted game assets under server/assets/ and try again."))
202208 b.WriteString("\n")
203203- b.WriteString(dimStyle.Render(" At least one of assets/revisions/0/android/ or assets/revisions/0/ios/ must be fully present."))
209209+ b.WriteString(dimStyle.Render(" At least one of assets/revisions/0/, assets/revisions/0/android/, or assets/revisions/0/ios/ must be fully present."))
204210 b.WriteString("\n")
205211 b.WriteString(dimStyle.Render(" Get them from ") + hlStyle.Render("#resources") + dimStyle.Render(" on Discord: ") + hlStyle.Hyperlink("https://discord.com/invite/MZAf5aVkJG").Render("https://discord.com/invite/MZAf5aVkJG"))
206212 b.WriteString("\n")