del:移除了美西螈彩蛋
Some checks failed
Axolotl desktop CI / guardrails (push) Has been cancelled
Axolotl desktop CI / desktop (macos-latest) (push) Has been cancelled
Axolotl desktop CI / desktop (ubuntu-latest) (push) Has been cancelled
Axolotl desktop CI / desktop (windows-latest) (push) Has been cancelled
Axolotl desktop CI / website (push) Has been cancelled
Repository checks / typos (push) Has been cancelled
Repository checks / tombi (push) Has been cancelled
Rust checks / shear (push) Has been cancelled
Sync source to CNB / Sync Git ref (push) Has been cancelled
Some checks failed
Axolotl desktop CI / guardrails (push) Has been cancelled
Axolotl desktop CI / desktop (macos-latest) (push) Has been cancelled
Axolotl desktop CI / desktop (ubuntu-latest) (push) Has been cancelled
Axolotl desktop CI / desktop (windows-latest) (push) Has been cancelled
Axolotl desktop CI / website (push) Has been cancelled
Repository checks / typos (push) Has been cancelled
Repository checks / tombi (push) Has been cancelled
Rust checks / shear (push) Has been cancelled
Sync source to CNB / Sync Git ref (push) Has been cancelled
This commit is contained in:
File diff suppressed because one or more lines are too long
Binary file not shown.
|
Before Width: | Height: | Size: 123 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 114 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 120 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 122 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1006 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 120 KiB |
53
apps/app-frontend/src/components/ui/AboutEasterEgg.vue
Normal file
53
apps/app-frontend/src/components/ui/AboutEasterEgg.vue
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
|
||||||
|
<!--
|
||||||
|
彩蛋占位组件(Easter Egg Placeholder)
|
||||||
|
======================================
|
||||||
|
原来的「美西螈合成小游戏」已被移除,这里预留给自定义彩蛋。
|
||||||
|
|
||||||
|
触发方式(沿用原框架,见 AboutSettings.vue):
|
||||||
|
1. 输入暗号:'cyf112233' 或 'cxkcxkckx'
|
||||||
|
2. Konami 秘技:↑↑↓↓←→←→BA
|
||||||
|
3. 长按「关于」页某位开发者名字(见 about-member-experiences.ts)
|
||||||
|
|
||||||
|
如何改造成你自己的彩蛋:
|
||||||
|
- 直接在下方 <template> 里写你的内容(游戏 / 动画 / 展示页都行)。
|
||||||
|
- 如需全屏,沿用根容器的 absolute inset-0 布局。
|
||||||
|
- 组件通过 defineEmits 暴露 exit 事件,调用它会关闭弹窗。
|
||||||
|
- 若彩蛋需要独立的静态资源(图片/HTML/JS),放到 public/easteregg/ 下,
|
||||||
|
用 `${window.location.origin}/easteregg/...` 引用,或直接在 <template> 内联。
|
||||||
|
|
||||||
|
当前状态:空占位,仅显示一行提示。
|
||||||
|
-->
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { defineMessages, useVIntl } from '@modrinth/ui'
|
||||||
|
|
||||||
|
const emit = defineEmits<{ exit: [] }>()
|
||||||
|
|
||||||
|
const { formatMessage } = useVIntl()
|
||||||
|
|
||||||
|
const messages = defineMessages({
|
||||||
|
placeholder: {
|
||||||
|
id: 'app.settings.about.easteregg.placeholder',
|
||||||
|
defaultMessage: 'Easter egg goes here.',
|
||||||
|
},
|
||||||
|
exit: {
|
||||||
|
id: 'app.settings.about.easteregg.exit',
|
||||||
|
defaultMessage: 'Close',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="absolute inset-0 z-10 flex flex-col items-center justify-center gap-4 bg-surface-1">
|
||||||
|
<p class="m-0 text-sm text-secondary">
|
||||||
|
{{ formatMessage(messages.placeholder) }}
|
||||||
|
</p>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="rounded-lg bg-surface-3 px-4 py-1.5 text-sm font-medium text-contrast transition-colors hover:bg-surface-4"
|
||||||
|
@click.stop="emit('exit')"
|
||||||
|
>
|
||||||
|
{{ formatMessage(messages.exit) }}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,10 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { defineMessages, NewModal, useVIntl } from '@modrinth/ui'
|
import { defineMessages, NewModal, useVIntl } from '@modrinth/ui'
|
||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
|
|
||||||
|
import AboutEasterEgg from '../AboutEasterEgg.vue'
|
||||||
|
|
||||||
const { formatMessage } = useVIntl()
|
const { formatMessage } = useVIntl()
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
@ -14,8 +17,6 @@ const messages = defineMessages({
|
|||||||
const modal = ref<InstanceType<typeof NewModal> | null>(null)
|
const modal = ref<InstanceType<typeof NewModal> | null>(null)
|
||||||
const gameVisible = ref(false)
|
const gameVisible = ref(false)
|
||||||
|
|
||||||
const gameUrl = `${window.location.origin}/easteregg/games/game.html`
|
|
||||||
|
|
||||||
function show() {
|
function show() {
|
||||||
gameVisible.value = true
|
gameVisible.value = true
|
||||||
modal.value?.show()
|
modal.value?.show()
|
||||||
@ -25,6 +26,10 @@ function onHide() {
|
|||||||
gameVisible.value = false
|
gameVisible.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function closeGame() {
|
||||||
|
modal.value?.hide()
|
||||||
|
}
|
||||||
|
|
||||||
defineExpose({ show })
|
defineExpose({ show })
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -37,13 +42,8 @@ defineExpose({ show })
|
|||||||
noblur
|
noblur
|
||||||
:on-hide="onHide"
|
:on-hide="onHide"
|
||||||
>
|
>
|
||||||
<div class="flex flex-col items-center py-2">
|
<div class="relative h-[600px] w-[800px] max-w-full overflow-hidden rounded-xl bg-surface-1">
|
||||||
<iframe
|
<AboutEasterEgg v-if="gameVisible" @exit="closeGame" />
|
||||||
v-if="gameVisible"
|
|
||||||
:src="gameUrl"
|
|
||||||
title="Mini Game"
|
|
||||||
class="h-[600px] w-[800px] max-w-full rounded-xl border-none bg-black"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</NewModal>
|
</NewModal>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -1,19 +1,23 @@
|
|||||||
|
|
||||||
import type { Component } from 'vue'
|
import type { Component } from 'vue'
|
||||||
|
|
||||||
import AboutMergeGame from '../AboutMergeGame.vue'
|
import AboutEasterEgg from '../AboutEasterEgg.vue'
|
||||||
|
|
||||||
export type AboutMemberExperience = {
|
export type AboutMemberExperience = {
|
||||||
component: Component
|
component: Component
|
||||||
longPressDuration: number
|
longPressDuration: number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 长按「关于」页成员名字触发的彩蛋体验。
|
||||||
|
// 原 'axolotl-merge' 彩蛋已移除,改为通用占位组件 AboutEasterEgg.vue。
|
||||||
|
// 若要为特定成员挂载自定义彩蛋,在这里新增条目即可。
|
||||||
const memberExperiences: Record<string, AboutMemberExperience> = {
|
const memberExperiences: Record<string, AboutMemberExperience> = {
|
||||||
'axolotl-merge': {
|
'easter-egg': {
|
||||||
component: AboutMergeGame,
|
component: AboutEasterEgg,
|
||||||
longPressDuration: 800,
|
longPressDuration: 800,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getAboutMemberExperience(experience: unknown): AboutMemberExperience | undefined {
|
export function getAboutMemberExperience(experience: unknown): AboutMemberExperience | undefined {
|
||||||
return typeof experience === 'string' ? memberExperiences[experience] : undefined
|
return typeof experience === 'string' ? memberExperiences[experience] : undefined
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,8 @@
|
|||||||
"name": "Mystic Stars",
|
"name": "Mystic Stars",
|
||||||
"avatar": "mystic-stars.png",
|
"avatar": "mystic-stars.png",
|
||||||
"url": "https://github.com/Mystic-Stars",
|
"url": "https://github.com/Mystic-Stars",
|
||||||
"experience": "axolotl-merge"
|
|
||||||
|
"experience": "easter-egg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ItzJerry",
|
"name": "ItzJerry",
|
||||||
|
|||||||
@ -6689,63 +6689,6 @@
|
|||||||
"app.settings.about.easteregg.game-title": {
|
"app.settings.about.easteregg.game-title": {
|
||||||
"message": "Mini Game"
|
"message": "Mini Game"
|
||||||
},
|
},
|
||||||
"app.settings.about.game.best": {
|
|
||||||
"message": "Best: {score}"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.best-label": {
|
|
||||||
"message": "Best"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.completed": {
|
|
||||||
"message": "Rainbow axolotl!"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.exit": {
|
|
||||||
"message": "Exit game"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.game-over": {
|
|
||||||
"message": "The axolotls got stranded!"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.highest-level": {
|
|
||||||
"message": "Highest: level {level}"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.level-label": {
|
|
||||||
"message": "Highest level"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.new-record": {
|
|
||||||
"message": "New record!"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.overtime": {
|
|
||||||
"message": "Tide surge!"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.overtime-detail": {
|
|
||||||
"message": "The water rushes back — keep merging!"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.overtimes-label": {
|
|
||||||
"message": "Overtimes"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.restart": {
|
|
||||||
"message": "Restart"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.score": {
|
|
||||||
"message": "Score: {score}"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.score-label": {
|
|
||||||
"message": "Score"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.settle": {
|
|
||||||
"message": "Settle"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.settle-title": {
|
|
||||||
"message": "Run settled!"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.tap-to-drop": {
|
|
||||||
"message": "Click to drop a pink axolotl"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.tide-hint": {
|
|
||||||
"message": "The tide is falling — keep your axolotls underwater!"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.title": {
|
|
||||||
"message": "Starlight merge"
|
|
||||||
},
|
|
||||||
"app.settings.about.license-attribution": {
|
"app.settings.about.license-attribution": {
|
||||||
"message": "License & attribution"
|
"message": "License & attribution"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -10309,62 +10309,6 @@
|
|||||||
},
|
},
|
||||||
"app.settings.about.easteregg.game-title": {
|
"app.settings.about.easteregg.game-title": {
|
||||||
"message": "彩蛋小游戏"
|
"message": "彩蛋小游戏"
|
||||||
},
|
|
||||||
"app.settings.about.game.best": {
|
|
||||||
"message": "最高分:{score}"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.best-label": {
|
|
||||||
"message": "最高分"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.completed": {
|
|
||||||
"message": "彩虹美西螈!"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.exit": {
|
|
||||||
"message": "退出游戏"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.game-over": {
|
|
||||||
"message": "美西螈搁浅了!"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.highest-level": {
|
|
||||||
"message": "最高等级:{level}"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.level-label": {
|
|
||||||
"message": "最高等级"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.new-record": {
|
|
||||||
"message": "新纪录!"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.overtime": {
|
|
||||||
"message": "潮水大涨!"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.overtime-detail": {
|
|
||||||
"message": "水位回升,继续合成!"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.overtimes-label": {
|
|
||||||
"message": "加时次数"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.restart": {
|
|
||||||
"message": "重新开始"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.score": {
|
|
||||||
"message": "分数:{score}"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.score-label": {
|
|
||||||
"message": "分数"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.settle": {
|
|
||||||
"message": "结算"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.settle-title": {
|
|
||||||
"message": "结算完成!"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.tap-to-drop": {
|
|
||||||
"message": "点击场地,投放粉色美西螈"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.tide-hint": {
|
|
||||||
"message": "潮水正在退去,别让美西螈搁浅!"
|
|
||||||
},
|
|
||||||
"app.settings.about.game.title": {
|
|
||||||
"message": "合成美西螈"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
1
apps/app/vendor/cubiomes
vendored
Submodule
1
apps/app/vendor/cubiomes
vendored
Submodule
Submodule apps/app/vendor/cubiomes added at e61f90580c
1
third-party/blockbench
vendored
Submodule
1
third-party/blockbench
vendored
Submodule
Submodule third-party/blockbench added at 911dfdd63d
Reference in New Issue
Block a user