fix(miniprogram): 优化分包并清理旧版小游戏
This commit is contained in:
@@ -51,8 +51,7 @@ build: {
|
||||
|
||||
## 说明
|
||||
|
||||
- 旧地址 `/tongji/pages/game` 和 `/tongji/pages/game-endless` 只是当前项目的兼容跳转,迁移时不需要复制。
|
||||
- 当前项目原来的“糖分突袭”源码保存在 `tongji/legacy-game/game.vue`,没有注册为页面,不参与打包。
|
||||
- 旧版“糖分突袭”页面及其独占依赖已经移除,项目只注册 `/tongji/endless-game/index` 这一款小游戏。
|
||||
- 连消小目标按“连消×2”累计 2 次;连续 6 次普通消除没有连消时,下一次掉落会提供连消机会。“连消×3”保留为额外积分、驼乳粉与撒花惊喜,不阻挡主线任务。
|
||||
- 横向 3 个与竖向 3 个相交形成 L/T 形五消时,会在交点生成带高对比 L 标记的范围爆破棋子;该棋子再次被消除时清除周围九格。
|
||||
- 进入游戏时展示“本周 7 人同行榜”,包含真实平台昵称、前后名次、差距提示和可切换的同行/亲友鼓励;顶部“本周同行”可再次打开。后端部署方式见 `PLATFORM_INTEGRATION.md`。
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
import { readdirSync, readFileSync } from 'node:fs'
|
||||
import { resolve } from 'node:path'
|
||||
|
||||
const VIRTUAL_ID = 'virtual:tongji-endless-food-images'
|
||||
const RESOLVED_VIRTUAL_ID = `\0${VIRTUAL_ID}`
|
||||
|
||||
/**
|
||||
* 将游戏食物图内联到 tongji 分包代码。
|
||||
* 微信代码质量会累计整个代码包内的图片/音频体积;源 JPG 继续保留,便于后续增补和迁移。
|
||||
*/
|
||||
export function endlessGameFoodInlinePlugin() {
|
||||
return {
|
||||
name: 'tongji-endless-game-food-inline',
|
||||
enforce: 'pre',
|
||||
resolveId(id) {
|
||||
return id === VIRTUAL_ID ? RESOLVED_VIRTUAL_ID : null
|
||||
},
|
||||
load(id) {
|
||||
if (id !== RESOLVED_VIRTUAL_ID) return null
|
||||
|
||||
const foodDir = resolve(process.cwd(), 'tongji/endless-game/assets/food')
|
||||
const images = Object.fromEntries(
|
||||
readdirSync(foodDir)
|
||||
.filter((fileName) => fileName.toLowerCase().endsWith('.jpg'))
|
||||
.sort()
|
||||
.map((fileName) => {
|
||||
const filePath = resolve(foodDir, fileName)
|
||||
this.addWatchFile(filePath)
|
||||
const key = fileName.replace(/\.jpg$/i, '')
|
||||
const dataUrl = `data:image/jpeg;base64,${readFileSync(filePath).toString('base64')}`
|
||||
return [key, dataUrl]
|
||||
})
|
||||
)
|
||||
|
||||
return `export default ${JSON.stringify(images)}`
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -303,14 +303,7 @@ import TongjiIcon from './components/TongjiIcon.vue'
|
||||
import { useGameSfx } from './composables/useGameSfx.js'
|
||||
import { useGamePlatform } from './composables/useGamePlatform.js'
|
||||
import { useGameAuth } from './composables/useGameAuth.js'
|
||||
|
||||
const FOOD_IMAGE_MODULES = import.meta.glob('./assets/food/*.jpg', {
|
||||
eager: true,
|
||||
import: 'default'
|
||||
})
|
||||
const FOOD_IMAGES = Object.fromEntries(
|
||||
Object.entries(FOOD_IMAGE_MODULES).map(([path, url]) => [path.split('/').pop().replace(/\.jpg$/, ''), url])
|
||||
)
|
||||
import FOOD_IMAGES from 'virtual:tongji-endless-food-images'
|
||||
|
||||
const ROWS = 5
|
||||
const COLS = 4
|
||||
|
||||
Reference in New Issue
Block a user