- 她从不主动开口,点一下才冒气泡;比赛里不弹。台词 326 句(shared/mascot/lines.ts), 口吻照「小鲸鱼」角色卡,学校里舍掉英文、粗口,「用户」改叫「同学」 - 按情况换话:题目页分没写、没交、例子没对上/对上、答错、编译错误、运行出错、超时、 错很多次、做对、一次就对、终于对了、以前做过;首页、题目列表、提交、专题、自学、排名等各有一组 - 按钮真的去办:运行例子、我错在哪(切到结果里出错的那一段)、举手、输题号、随便来一道、 下一道、选题…… - 老师也看得到:有学生举手时任何页面先说这件事;首页、课堂任务、统计、题目页各有一组 - 页面用 useMascotGuide 告诉她现在的情况(shared/mascot/guide.ts),以后按学生行为调整也接在这一层 - 修:连点时像卡住了(快点时按压过渡来不及显示,改成每下播一遍压扁回弹); 一打开从左上角飞到右下角;去掉单击的摆动 设计稿与台词表:https://claude.ai/artifact/Qz2zPCfq2zCrqmxyms1UGx Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
15966ceb0d
commit
ef3c53c671
25 files changed
+860
-57
No files matched your search
@@ -7,6 +7,7 @@ import UserName from 'shared/components/UserName.vue'
|
||||
import { useBreakpoints } from 'shared/composables/breakpoints'
|
||||
import { useConfigStore } from 'shared/store/config'
|
||||
import { useUserStore } from 'shared/store/user'
|
||||
import { useMascotGuide } from 'shared/mascot/guide'
|
||||
import { errorCode } from 'utils/api'
|
||||
import { displayName } from '@oj2/contract'
|
||||
import { STORAGE_KEY } from 'utils/constants'
|
||||
@@ -271,6 +272,17 @@ function openDetail(className: string) {
|
||||
showDetail.value = true
|
||||
}
|
||||
|
||||
// 看板娘:自己在榜上就把自己那一行滚到眼前(领奖台上是「你」那个标签,赛道上是高亮的那一行)
|
||||
useMascotGuide(() => {
|
||||
if (teacher.value || !board.value) return null
|
||||
const listed = rows.value.some((row) => row.user.id === meId.value)
|
||||
const findMe = () => {
|
||||
const el = document.querySelector('.track-card .entry.me, .track-card .prow.me, .track-card .tag.me')
|
||||
el?.scrollIntoView({ behavior: 'smooth', block: 'center' })
|
||||
}
|
||||
return { situation: 'rank', actions: listed ? [{ label: '我在哪', run: findMe }] : [] }
|
||||
})
|
||||
|
||||
function open(username: string) {
|
||||
router.push({ path: '/user', query: { name: username } })
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user