Giter Site home page Giter Site logo

ba-archive / blue-archive-story-viewer Goto Github PK

View Code? Open in Web Editor NEW
118.0 118.0 9.0 12.74 MB

碧蓝档案的档案。仓库已经迁移到 monorepo,详情请看 readme。

Home Page: https://github.com/ba-archive/blue-archive

License: GNU General Public License v3.0

HTML 0.52% Vue 59.17% JavaScript 0.83% SCSS 3.88% Batchfile 0.02% Python 1.31% TypeScript 34.24% Shell 0.03%

blue-archive-story-viewer's People

Contributors

diyigemt avatar luckyray-fan avatar mark9804 avatar mend-bolt-for-github[bot] avatar noddy55168 avatar ourandream avatar pfjhyyj avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

blue-archive-story-viewer's Issues

[Enhancement] 更加明显的改名提示

image

下划线引导效果不够强

想过把缺省值改成点击这里可以改名字之类的 但是说不准用户以后会不会对着剧情里显示出来的名字狂点,暂时没有什么好想法

momotalk 播放器功能一览

  • 基于 FavorScheduleIdCharacterId 区分不同学生在不同好感度条件下的聊天内容
  • 通过页面左下角的语言切换选项切换显示语言
  • 能够选择和老师的回复,并且在点击时重置本身(和之后的对话)到未选择的状态(最好能区分点击和拖拽选择文字事件)
  • 能够跳转到对应的角色好感度剧情播放器
  • 不需要做页面尺寸自适应,但是 css 有 -webkit- 前缀的尽可能覆盖到这个前缀,不然 Safari 会出奇奇怪怪的布局问题

玩家姓名输入框长度不好控制

input 标签计算长度(特别英文长度)的时候有点问题,可能要用一个 div contenteditable 标签去模拟输入然后监听变化,有大手子有想法吗

image

momotalk原始数据结构

DataList: array

MessageGroupId: number

暂时没想明白,不过是有规律的

五位数学生 ID + 00 + 2-3位数字

例:

{
    "MessageGroupId": 100040020,
    "Id": 3,
    "CharacterId": 10004,
}

同一个 GroupId 可能代表者同一个回复组

{
    "MessageGroupId": 100040020,
      "Id": 3,
      "CharacterId": 10004,
      "MessageCondition": "Answer",
}
{
    "MessageGroupId": 100040020,
    "Id": 4,
    "CharacterId": 10004,
    "MessageCondition": "Answer",
}

Id: number

应该是 Message ID,目前可以认为是两个 list 里面的唯一标识符

CharacterId: number

角色的 ID,参考 SchaleDB 的数据,这个项目里面也有:https://github.com/ba-archive/blue-archive-story-viewer/blob/master/public/config/yaml/students.yaml

MessageCondition: 'None' | 'FavorRankUp' | 'Answer' | 'Feedback'

目前发现有四种: None, FavorRankUp, Answer, Feedback

FavorRankUp: 好感度提升后,学生给老师发的第一条消息(在这一条消息上方显示“已读”横幅)

  • 这条消息是不是可以作为momotalk的分割点?
    • 如果把这条消息作为momotalk分割点,那么标题应该从哪里取到? - #23 数据流当中有

Answer: 老师给学生的回复

Feedback: 老师回复完成后,学生对老师发送的消息作出的反应

None: 应该是一般信息,接在 FavorRankUp 第一条信息后面,或者 Feedback 后面的学生发来的信息

ConditionValue: number

我觉得是角色好感度等级到了这个等级之后解锁的意思

PreConditionGroupId: number

需要完成前置MessageGroup 才能显示?

PreConditionFavorScheduleId: number

代表好感剧情结束后紧接着的对话,可以用来标记“已读信息”

FavorScheduleId: number

该值如果不为 0,则代表当前消息事件完成之后会立即接上一个好感事件入口。

该值的组成结构为 五位数学生 ID + 学生好感度等级

例:

"FavorScheduleId": 100146,

则代表进入泉奈(学生 ID 10014)第六级好感度时的剧情。

NextGroupId: number

这一组信息完成之后显示下一组信息

FeedbackTimeMillisec: number

学生回复的时候会有一个“对方正在打字”的那个动画,这个字段控制了打字动画的时长

MessageType: 'Text' | 'Image' | 'None'

有三种取值:Text, Image, None

ImagePath: string

如果 MessageTypeImage 的话,此字段启用,记录图像文件位置。

MessageKR, MessageJP: string

如果 MessageTypeText 的话,这两个字段启用。记录聊天文字的信息。

剧情数据原始结构

ScriptKr

通常格式: "3;호시노(星野, 立绘名);03(表情编号);剧情语句(可选)\n#3;效果或动作(可选)"

3指立绘初始位置(共有五个, 可能因为动作移动).

当为不是编号而是#na时, 有角色名则为人物说话但没有立绘, 无角色名表示旁白.

一般剧情语句或效果后面会加\n作为分隔, 如果在字符串的末尾则不加.

"#Title;XXX": 剧情标题

"#Place;XXX": 左上提示切换地点, 可用于背景加载, 但注意有时没有提示, 所以应该有其他加载背景的方法.

#后接一个实体或操作, 指对实体进行的操作或者给操作设置的值. 具体格式为#实体或操作;动作或值\n

#wait;1000\n: 播放线程睡眠(等待) 1000ms.

#fontsize;80 修改字体大小到 80dp

++ #zmc;: 画面拉近

#move;0,-222;2528;200\n: 画面移动

-- #zmc;move;0,-222;2528;200\n#3: 画面拉近

++ #serial;: 逐个字显示当前对话文字,通常和 [wa: Number] 配合,控制文字间的暂停,单位为 ms

++ #instant;: 立刻显示完当前对话文字

-- #zmc;instant;0,-222;2528\n: 画面拉近后保持

#all;hide隐藏画面上的所有内容(包括控制按钮),只显示播放器底部的黑色背景(也可以认为是在播放器最上层加上一个黑色不透明遮罩),用于大转场

#bgshake\n: 背景左右摇动
#hidemenu: 消除菜单

#3;动作\n指人物动作, 目前知道的有:    

符号 动作 示例位置 备注
a 人物出现(从背影到立绘) 可以通过 filter: brightness 控制?
https://www.bilibili.com/video/av756548781/?p=8&t=308 这里的 a的作用是显示生气图标,再讨论
d 人物离开 disappear
dl 向左平移出屏幕 https://www.bilibili.com/video/av756548781/?p=8&t=314
ar? https://www.bilibili.com/video/av756548781/?p=11&t=130
hophop 跳动两下
greeting 屈膝礼(向下平移,暂停,归位) https://www.bilibili.com/video/av756548781/?p=11&t=119
shake 左右摇动 https://www.bilibili.com/video/av756548781/?p=11&t=105 左右晃动?
m2 移动到指定立绘位置, 可更改数字 位置取值为 1, 2, 3, 4, 5
stiff 小幅度左右移动
closeup 人物靠近(如果已经近处则不动) “靠近”指靠近玩家位置
jump 跳动一次
falldownR 以脚底为变换中心左右摆动,然后倒下 https://www.bilibili.com/video/av756548781/?p=8&t=385

#3;em;[반응]\n: [반응]为效果, 它的前面还使用了em提示该人物作为重点(多人物时她相比其他人亮),目前知道的如下:

符号 效果 示例 机翻
[하트]; h Heart(心)
[반응] https://www.bilibili.com/video/av756548781/?p=11&t=191 反应
[음표]; m https://www.bilibili.com/video/av756548781/?p=11&t=216 音符 / music
[반짝]; k https://www.bilibili.com/video/av756548781/?p=11&t=165 闪光
[속상함]; u https://www.bilibili.com/video/av756548781/?p=8&t=373 沮丧
[땀]; w https://www.bilibili.com/video/av756548781/?p=11&t=126 流汗
[...] image-20221026221224043 https://www.bilibili.com/video/av756548781/?p=11&t=171
c image-20221026221609211 https://www.bilibili.com/video/av756548781/?p=11&t=130
[!] image-20221026223556400 https://www.bilibili.com/video/av756548781/?p=8&t=276
[빠직] image-20221026223706812 https://www.bilibili.com/video/av756548781/?p=8&t=281
[?!] image-20221026230223534 https://www.bilibili.com/video/av756548781/?p=8&t=364
[?] image-20221026230652174 https://www.bilibili.com/video/av756548781/?p=8&t=393

注音特效: [ruby=xxx]yyy[/ruby]

image

"[s1] \"分支1\"\n[s2] \"分支2\"": 选择分支, 对应后面SelectionGroup的, 无对话框时s改为ns.

1, 2.档为s时只有一个选项.

live2d语句或无对话框剧情语句大概如下:

#st;[-1200,-530];serial;60;[wa:900]― 모처럼이니 [wa:2450]선생님도 어떠신가요?
#st放置文字(有时也用于消除对话框), [wa:number]为放置时中间的停顿, serial指缓慢显示文字, instant是立即显示.60应该是指字体大小.
#clearST为取消放置文字
``

其他属性

BGMId,: 不为0时播放bgm.
BGName: 背景图片id(也可以是cg), 通过ScenarioBGNameExcelTable.json匹配
BGEffect: 背景效果(如粉尘), 通过ScenarioBGEffectExcelTable.json匹配
Transition: 变换(如画面渐变), 通过ScenarioTransitionExcelTable.json匹配
Sound:不为null时播放效果音或语音

剧情播放器特效索引表

迁移至【腾讯文档】剧情播放器特效

对话特效(emotion)

注意,判断一个特效是对话特效还是人物特效的规则是看该特效关键词前面有没有 em;
特效是否有中括号不重要

符号 效果 示例 对应单词 实现人
em;[하트];
em;h
Heart
em;[반응] https://www.bilibili.com/video/av756548781/?p=11&t=191 Respond
em;[음표];
em;m
https://www.bilibili.com/video/av756548781/?p=11&t=216 Music ourandream(已完成)
[반짝];
em;k
https://www.bilibili.com/video/av756548781/?p=11&t=165 Twinkle
em;[속상함];
em;u
https://www.bilibili.com/video/av756548781/?p=8&t=373 Upset
[땀];
em;w
https://www.bilibili.com/video/av756548781/?p=11&t=126 Sweat
em;[...];

em;…
image-20221026221224043 https://www.bilibili.com/video/av756548781/?p=11&t=171 ...
em;c image-20221026221609211 https://www.bilibili.com/video/av756548781/?p=11&t=130 Chat
em;[!] image-20221026223556400 https://www.bilibili.com/video/av756548781/?p=8&t=276 !
em;[빠직];
em;a
image-20221026223706812 https://www.bilibili.com/video/av756548781/?p=8&t=281 Angry
em;[?!]
em;?!
image-20221026230223534 https://www.bilibili.com/video/av756548781/?p=8&t=364 ?!
em;[?] image-20221026230652174 https://www.bilibili.com/video/av756548781/?p=8&t=393 ?
em;[///] shy Shy
[ruby=注音小字]正常文字[/ruby]

人物特效(action)

符号 动作 示例位置 备注 实现人
a 人物出现(从背影到立绘) 可以通过 filter: brightness 控制?
https://www.bilibili.com/video/av756548781/?p=8&t=308
第一个mt
d 人物离开 disappear
dl 向左平移出屏幕 https://www.bilibili.com/video/av756548781/?p=8&t=314
dr 向右平移出屏幕
ar 从屏幕左边进入 https://www.bilibili.com/video/av756548781/?p=11&t=130
al 从屏幕右边进入
hophop 跳动两下
greeting 屈膝礼(向下平移,暂停,归位) https://www.bilibili.com/video/av756548781/?p=11&t=119
shake 左右摇动 https://www.bilibili.com/video/av756548781/?p=11&t=105 左右晃动?
m2 平移到指定立绘位置, 可更改数字 位置取值为 1, 2, 3, 4, 5
stiff 小幅度左右移动
closeup 人物靠近(如果已经近处则不动) “靠近”指靠近玩家位置
jump 跳动一次
falldownR 以脚底为变换中心左右摆动,然后倒下 https://www.bilibili.com/video/av756548781/?p=8&t=385
hide 隐藏人物 https://www.bilibili.com/video/av756548781/?p=11&t=205

fx

effect 特效
{shot} 人物被击中

signal

全息特效

目前不明确的动画效果

ar (appear right?)

    {
      "GroupId": 11080,
      "SelectionGroup": 0,
      "BGMId": 0,
      "Sound": "",
      "Transition": 0,
      "BGName": 0,
      "BGEffect": 0,
      "PopupFileName": "",
      "ScriptKr": "1;호시노;03;나! 나!\n#1;em;c\n#1;hophop\n#1;ar\n#3;m5",
      "TextJp": "はい!はい!",
      "VoiceJp": ""
    },

https://www.bilibili.com/video/av756548781/?p=11&t=130

    {
      "GroupId": 11050,
      "SelectionGroup": 0,
      "BGMId": 0,
      "Sound": "",
      "Transition": 0,
      "BGName": 0,
      "BGEffect": 0,
      "PopupFileName": "",
      "ScriptKr": "2;헬멧단 B;00\n4;헬멧단 A;00;……\n#2;ar\n#4;al",
      "TextJp": "……。",
      "VoiceJp": ""
    },

https://www.bilibili.com/video/av756548781/?p=8&t=320

al (appear left?)

    {
      "GroupId": 11050,
      "SelectionGroup": 0,
      "BGMId": 9,
      "Sound": "SE_FootStep_03a",
      "Transition": 0,
      "BGName": 0,
      "BGEffect": 0,
      "PopupFileName": "",
      "ScriptKr": "5;세리카;02;하아…… 겨우 끝났네. 정신없는 하루였어.\n#5;al",
      "TextJp": "はあ……やっと終わった。目まぐるしい一日だったわ。",
      "VoiceJp": ""
    },

https://www.bilibili.com/video/av756548781/?p=8&t=302

如果单独使用的话,人物是从画面右边缘出来的,这一点需要再确认一下
ar 代表从左边,al 代表从右边出来。。。

dl; dr (disappear left / right?)

    {
      "GroupId": 11050,
      "SelectionGroup": 0,
      "BGMId": 0,
      "Sound": "",
      "Transition": 0,
      "BGName": 0,
      "BGEffect": 0,
      "PopupFileName": "",
      "ScriptKr": "4;헬멧단 A;00;준비해. 다음 블럭에서 포획한다.",
      "TextJp": "準備はいいか?次のブロックで捕獲するぞ。",
      "VoiceJp": ""
    },
    {
      "GroupId": 11050,
      "SelectionGroup": 0,
      "BGMId": 0,
      "Sound": "",
      "Transition": 0,
      "BGName": 0,
      "BGEffect": 0,
      "PopupFileName": "",
      "ScriptKr": "#2;dl\n#4;dr\n#wait;1000",
      "TextJp": "",
      "VoiceJp": ""
    },

https://www.bilibili.com/video/av756548781/?p=8&t=325

h

    {
      "GroupId": 11050,
      "SelectionGroup": 0,
      "BGMId": 0,
      "Sound": "",
      "Transition": 0,
      "BGName": 0,
      "BGEffect": 0,
      "PopupFileName": "",
      "ScriptKr": "1;헬멧단 A;00\n5;헬멧단 B;00\n#1;m2\n#5;m4\n#1;h\n#5;h\n#wait;1000",
      "TextJp": "",
      "VoiceJp": ""
    },
    {
      "GroupId": 11050,
      "SelectionGroup": 0,
      "BGMId": 0,
      "Sound": "",
      "Transition": 0,
      "BGName": 0,
      "BGEffect": 0,
      "PopupFileName": "",
      "ScriptKr": "1;헬멧단 A;00\n5;헬멧단 B;00\n#1;h\n#5;h\n#1;dl\n#5;dl\n#wait;1000",
      "TextJp": "",
      "VoiceJp": ""
    },

https://www.bilibili.com/video/av756548781/?p=8&t=400

pre-release check

  • 移除 robots.txt
  • 更新贡献者名单, #108
  • 功能测试
  • 性能测试
  • 可访问性测试

缺失文件汇总

这个 issue 用来汇总剧情和 momotalk 里缺失的(裂掉的)图片。

Issue 会永久开启,不会关闭。

如果下表中有未收集到的裂掉的图片,欢迎留言提出。

momotalk

  • Mo_Hare_01.png

优化:PWA 更新时加入重载提示

PWA 后台使用 StaleWhileRevalidate 获取新的 js 脚本并重载后,当前 router 会失效,给用户应用无响应的感觉

后续应该加入弹窗提示用户重载页面已应用更新

momotalk 校对备忘

  • 译者:罐子カン统一改成罐子
  • 水若藻中的 “不才若藻” 改成 “小女若藻”

momotalk 数据结构和组件结构草案

此信息已过时,参考 #24 .

过时内容

momotalk 数据结构和组件结构草案

我想了一下,本来是想解包出来之后直接用韩国人的数据结构的,但是想起来件重要的事就是他们只有日语,不用做翻译,所以还是得自己实现

数据结构

相对于羁绊剧情入口的位置

聊天大体上可以分成羁绊剧情前和羁绊剧情后,使用 beforeafter 进行区分。

参数

before: Array

放置进入羁绊剧情前的 momotalk 内容。

after: Array

放置完成羁绊剧情后的 momotalk 内容。

示例

chats:
  before: [...chat_before]
  after: [...chat_after]

普通文本信息(学生 -> 老师)

游戏内容示例

image-20221022133116061

参数

type: String<chat>

标记聊天组件的样式。纯文本信息当中,type 的值为 chat。(是否应该使用 string 作为值?)

content: Object<content.zh, content.jp>

标记聊天组件的内容。纯文本信息中,content 的值为 Object

content.zh: String

简体中文聊天内容。

content.ja: String

日语聊天内容。

sender: String

标记聊天信息是由谁发出的。一般只有 studentteacher 两个取值。

数据结构示例

chats:
  before:
    - type: chat
      content:
        zh: 一直以来承蒙照顾。
        ja: いつもお世話になっております。
      sender: student
    - type: chat
      content:
        zh: ……
        ja: ……
      sender: student

图片文本信息(学生 -> 老师)

游戏内容示例

image-20221022133546784

参数

type: String<image>

标记聊天组件样式为图片。

url: String<link>

标记图片的 url。

sender: String

同“普通文本信息”。

数据结构示例

    - type: image
      url: "~.webp"
      sender: student

回复选择肢(老师 -> 学生)和学生回复

老师回复选择肢

游戏内容示例
image-20221022133758721
参数
type: String<option>

标记组件样式为选择肢。

options: Array<option>

存放选择肢内容。

option.content: Object

因为老师的回复只出现过字符串,因此应该可以认为只需要记录文字内容(中文、日语)。

option.content.zh: String

老师的回复(中文)

option.content.ja: String

老师的回复(日语)

selection: Number

标明这个选项会触发学生哪一段学生回复。

sender: String

同“普通文本信息”

数据结构示例
    - type: option
      options:
        - content:
            zh: ……现在?大晚上的……?
            ja: ……今?まだ夜中なのに……?
          selection: 1
        - content:
            zh: 我在做梦……?
            ja: 夢……?
          selection: 2
      sender: teacher

学生回复

参数
type: String<diversion>

标记这是一段根据选择不同触发不同内容的类型。

variations: Array<selections>

存放不同触发结果。

selections.selection: Number

对应老师选项的 selection ,触发不同的内容。

selection.replies: Array<普通聊天信息>

见“普通文本信息”的定义。

数据结构:

    - type: diversion
      variations:
        - selection: 1
          replies:
            - type: chat
              content:
                zh: 回复(第 1 条,共 2 条)
                ja: 大丈夫、大したことじゃない
              sender: student
            - type: chat
              content:
                zh: 回复(第 2 条,共 2 条)
                ja: じゃあ、またね。先生
              sender: student
        - selection: 2
          replies: [...chats]

羁绊剧情入口

游戏内容示例

image-20221022134346929

参数

type: String<link>

标记这是一个 router-link,点击将会跳转到对应的羁绊内容。

content: Object

content.zh, content.ja:定义按钮显示的文字。

link: String

标记 router-link to="…" 的跳转目标。

数据结构:

    - type: link
      content:
        zh: 前往xx的羁绊剧情
        ja: xxの絆ストーリーへ
      link: 10024_story_01

[Enhancement] 希望能够自定义学生回复时打字速度

功能描述

希望能够自定义学生回复时打字速度,目前的没看出是一个随机数还是一个固定值,但是比较久
如果选择跳过打字这部分or加速这部分时间,可能可以让sensei的体验更好(不是为了仿的更真)
想法:

  1. 直接缩短全局时间,但这样会不注重还原
  2. 点击momotalk空白区域跳过
  3. 允许自定义速度
  4. 2和3都要
    最终看momotalk我还是要回到游戏内看的(我反正是这样),如果已经看了一遍或者还要再看一遍的话,那这部分其实是有点浪费时间的了

具体操作

个人目前就是直接用脚本加速了,因为学生的打字时间加起来真的很长

momotalk UI调整

translated by 太长了,改成中文看看,两天前想到了但老是忘掉

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

  • chore(deps): update all non-major dependencies (@babel/preset-env, @csstools/css-parser-algorithms, @csstools/css-tokenizer, @rushstack/eslint-patch, @types/node, @typescript-eslint/eslint-plugin, @typescript-eslint/parser, @vue/compiler-sfc, @vueuse/core, gsap, prettier-plugin-css-order, sass, typed.js, vue-tsc)

Detected dependencies

github-actions
.github/workflows/codeql.yml
  • actions/checkout v3
  • github/codeql-action v2
  • github/codeql-action v2
  • github/codeql-action v2
.github/workflows/format-and-lint.yml
  • actions/checkout v3
  • peter-evans/commit-comment v2
.github/workflows/issue-checker.yml
  • zzyyyl/issue-checker v1.7
  • actions/add-to-project v0.5.0
.github/workflows/publish.yml
  • actions/checkout v3
  • pnpm/action-setup v2
npm
package.json
  • @pixi/loaders >=6.1.0 <7.0.0
  • @pixi/particle-emitter ^5.0.8
  • @vue/compiler-sfc 3.x
  • @vueuse/core ^10.0.0
  • axios 1.4.0
  • axios-retry 3.5.0
  • fastest-levenshtein 1.0.16
  • gsap ^3.11.3
  • husky ^8.0.3
  • ismobilejs ^1.1.1
  • mitt ^3.0.0
  • pinia 2.1.3
  • pinia-plugin-persistedstate 3.1.0
  • toastify-js 1.12.0
  • typed.js ^2.0.12
  • vue 3.3.4
  • vue-router 4.2.2
  • xxhashjs ^0.2.2
  • @babel/preset-env ^7.20.2
  • @csstools/css-parser-algorithms ^2.1.0
  • @csstools/css-tokenizer ^2.1.0
  • @rushstack/eslint-patch 1.3.0
  • @trivago/prettier-plugin-sort-imports 4.1.1
  • @types/node ^18.11.9
  • @types/toastify-js 1.11.1
  • @types/xxhashjs ^0.2.2
  • @typescript-eslint/eslint-plugin 5.59.8
  • @typescript-eslint/parser 5.59.8
  • @vitejs/plugin-legacy 4.0.4
  • @vitejs/plugin-vue 4.2.3
  • @vue/eslint-config-typescript 11.0.3
  • chalk 5.2.0
  • eslint 8.42.0
  • eslint-config-prettier 8.8.0
  • eslint-plugin-import 2.27.5
  • eslint-plugin-sort-exports 0.8.0
  • eslint-plugin-vue 9.14.1
  • eslint-plugin-yaml 0.5.0
  • js-yaml 4.1.0
  • postcss 8.4.24
  • postcss-plugin-px2rem 0.8.1
  • postcss-preset-env 8.4.2
  • prettier 2.8.8
  • prettier-plugin-css-order 1.3.0
  • rollup-plugin-visualizer 5.9.0
  • sass 1.62.1
  • terser 5.17.7
  • typescript 5.1.3
  • vite 4.3.9
  • vite-plugin-clear-console ^0.2.2
  • vite-plugin-compression 0.5.1
  • vite-plugin-pwa 0.16.3
  • vue-tsc 1.6.5
  • workbox-window 7.0.0

  • Check this box to trigger a request for Renovate to run again on this repository

剧情播放器功能列表

剧情立绘

  • 能切换人物的不同表情
  • 实现人物图层上的特效(全息投影)
  • 实现人物动作(跳动,倒下,移动,出现消失等)
  • 实现人物 emoji (爱心等)

剧情背景

  • 场景切换 + 左上角场景横幅显示和消失
  • 背景动态(晃动,放大,缩小等)
  • 背景特效(下雨,烟雾等)

剧情进行逻辑

  • 显示标题
  • 点击 canvas 空白处进入下一步(在跳出选项的时候停止)
  • 点击选项跳转到对应剧情分支
  • 根据 Sound 播放特效音
  • 根据 BGMId 播放 BGM (BGMId 不变时进行循环播放)
  • 根据 VoiceJp 播放人物语音
  • 自动播放下一句(需要监听 “语音播放完成” 和 “文字显示完成” 事件)

image

好感事件 L2D 播放

  • 根据 BGName 切换 L2D 的不同阶段(BGName不变的时候进行循环)
  • 如果有选择肢,根据选择肢不同切换不同的 L2D 状态和对话
  • 根据 Sound 播放特效音
  • 根据 BGMId 播放 BGM (BGMId 不变时进行循环播放)

播放器 UI 和逻辑

  • AUTO, MENU,次级菜单
  • 对话历史界面 LOG
  • 剧情梗概界面
截图 image image

[Bug] 静子(泳装)剧情1切换选项会出问题

问题描述

image
rt,先选第二个选项之后切换到第一个选项,
sensei出现一个空回复(其实应该是静子的),并且静子的回复没有头像,是给顶掉了?
正常应该这样↓
image
并且刚刚在测试的时候出现这种情况↓
image
rt,先选选项1再切换选项2会造成无返回文本

问题位置

https://blue-archive.io/archive/26008/momotalk

复现流程

先选第二个选项之后切换到第一个选项和先选第一个再切第二个都会出错

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.