├── .eslintrc.cjs ├── .gitignore ├── .prettierrc.json ├── LICENSE ├── README.md ├── _config.yaml ├── index.html ├── package.json ├── public ├── aris.jpeg ├── favicon144.png ├── favicon512.png ├── img │ ├── ap.png │ ├── boxy.png │ ├── convertor.png │ ├── fish.png │ ├── gold.png │ ├── max.png │ ├── min.png │ ├── pickduck.png │ ├── pyroxene.png │ └── waddle2.png ├── l2d │ ├── aris │ │ ├── Aris_home.atlas │ │ ├── Aris_home.png │ │ ├── Aris_home.skel │ │ ├── Aris_home2.png │ │ └── Someday_-sometime.mp3 │ ├── arrow.png │ └── hina_swimsuit │ │ ├── CH0063_home.atlas │ │ ├── CH0063_home.skel │ │ ├── CH0063_home_CN.png │ │ ├── CH0063_home_CN_2.png │ │ └── Theme_21.mp3 ├── shitim │ ├── Event_Main_Stage_Bg.png │ └── Tran_Shitim_Icon.png ├── task.png └── transfrom.webm ├── shots └── main.png ├── src ├── App.vue ├── assets │ ├── font │ │ ├── BlueakaBeta2GBK-Bold.ttf │ │ └── BlueakaBeta2GBK-DemiBold.ttf │ └── index.css ├── components │ ├── Background.vue │ ├── Banner.vue │ ├── Contact.vue │ ├── Cursor.vue │ ├── Footer.vue │ ├── Level.vue │ ├── Loading.vue │ ├── Task.vue │ └── Toolbox.vue └── main.js └── vite.config.js /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | /* eslint-env node */ 2 | require('@rushstack/eslint-patch/modern-module-resolution') 3 | 4 | module.exports = { 5 | root: true, 6 | 'extends': [ 7 | 'plugin:vue/vue3-essential', 8 | 'eslint:recommended', 9 | '@vue/eslint-config-prettier/skip-formatting' 10 | ], 11 | rules: { 12 | "vue/multi-word-component-names":"off", 13 | }, 14 | parserOptions: { 15 | ecmaVersion: 'latest' 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | 106 | # Docusaurus cache and generated files 107 | .docusaurus 108 | 109 | # Serverless directories 110 | .serverless/ 111 | 112 | # FuseBox cache 113 | .fusebox/ 114 | 115 | # DynamoDB Local files 116 | .dynamodb/ 117 | 118 | # TernJS port file 119 | .tern-port 120 | 121 | # Stores VSCode versions used for testing VSCode extensions 122 | .vscode-test 123 | 124 | # yarn v2 125 | .yarn/cache 126 | .yarn/unplugged 127 | .yarn/build-state.yml 128 | .yarn/install-state.gz 129 | .pnp.* 130 | 131 | .idea 132 | 133 | yarn.lock 134 | 135 | .DS_Store 136 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/prettierrc", 3 | "semi": false, 4 | "tabWidth": 2, 5 | "singleQuote": true, 6 | "printWidth": 100, 7 | "trailingComma": "none" 8 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 小鱼yuzifu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

小鱼档案

2 | 3 |

4 | star 5 | GitHub stars 6 |

7 | 8 |
有关小鱼的《蔚蓝档案》风格的个人主页
9 | 10 | ![小鱼档案](shots/main.png) 11 | 12 | ## 预览链接 13 | 14 | - [小鱼档案](https://yzf.moe) 15 | - [小鱼档案 - 备用](https://yuzifu.top/) 16 | 17 | ## 目前复刻程度 18 | 19 | - [x] 加载界面 20 | - [x] 主界面复刻 21 | - [x] 回忆大厅 22 | - [x] 弹窗复刻 23 | - [x] 什亭之箱转场 24 | - [x] 点击特效和动效 25 | - [x] 多个学生回忆大厅l2d切换 26 | - [x] 学生回忆大厅全局观赏 27 | - [ ] 学生互动 28 | 29 | ## 使用到的项目 30 | 31 | - [Vue](https://cn.vuejs.org/) 32 | - [Vite](https://vitejs.cn/vite3-cn/) 33 | - [Arco Design](https://arco.design/) 34 | - [PIXIjs](https://github.com/pixijs/pixijs) 35 | - [spine-pixi-v7](https://www.npmjs.com/package/@esotericsoftware/spine-pixi-v7) 36 | - [Iconfont](https://www.iconfont.cn/) 37 | - [cn-font-split](https://github.com/KonghaYao/cn-font-split) 38 | - [APlayer](https://aplayer.js.org/#/) 39 | 40 | ## 部署方式 41 | 42 | ### 使用第三方部署平台 43 | 44 | #### 1. Vercel 45 | [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/sf-yuzifu/homepage) 46 | 47 | #### 2. Netlify 48 | 1. `Fork`[本项目](https://github.com/sf-yuzifu/homepage) 49 | 2. [登录 Netlify 控制台](https://app.netlify.com ),选择`Add new site`-`Import an exist project`添加网站 50 | 3. 接着选择 GitHub 认证来读取我们的 GitHub 项目列表。在列表中搜索我们刚才`Fork`生成的仓库名,点击该项目开始基于该仓库创建我们的 Netlify 网站 51 | 52 | ### 本地构建网页文件 53 | 54 | > **推荐环境:** 55 | > 56 | > node > 18.0.0 57 | > npm > 8.15.0 58 | 59 | 1. 安装yarn 60 | 61 | ```bash 62 | # 安装 yarn 63 | npm install -g yarn 64 | ``` 65 | 66 | 2. 克隆此项目到本地 67 | 3. 在项目根目录下运行 68 | 69 | ```bash 70 | # 安装依赖 71 | yarn install 72 | 73 | # 预览(开发环境) 74 | yarn dev 75 | 76 | # 构建 77 | yarn build 78 | 79 | # 预览(生产环境预览) 80 | yarn preview 81 | ``` 82 | 83 | > 构建完成后,静态资源会在 **`dist` 目录** 中生成,你可以将 **`dist` 目录中的文件**上传至服务器 84 | 85 | > 其中关于宝塔如何部署的([https://cloud.tencent.com/developer/article/1977167](https://cloud.tencent.com/developer/article/1977167)) 86 | 87 | ## 个性化 88 | 89 | > 新版本配置文件采用yaml格式以方便阅读,想要快速迁移可以通过[此网站](https://www.json.cn/json2yaml/)快速将json格式转为yaml格式 90 | > 91 | > 打开根目录下的 `_config.yaml`,在其中你会看到如下内容 92 | 93 | ```yaml 94 | # 网站基本配置 95 | title: 小鱼档案 # 网站标题 96 | description: 有关小鱼的《蔚蓝档案》风格的个人主页 # 网站简介 97 | favicon: /favicon144.png # 网站图标链接 98 | author: 小鱼yuzifu # Sensei,你的名字 99 | keywords: '蔚蓝档案,小鱼yuzifu,个人主页' # 网站关键词描述 100 | ICP: '' # ICP备案号 101 | # PWA配置(https:#developer.mozilla.org/zh-CN/docs/Web/Manifest) 102 | manifest: 103 | name: 小鱼档案 # 应用全称 104 | short_name: 小鱼档案 # 应用简称 105 | description: 有关小鱼的《蔚蓝档案》风格的个人主页 # 简介 106 | theme_color: '#128AFA' # 主题色 107 | start_url: / 108 | id: Homepage 109 | # 图标 110 | icons: 111 | - src: /favicon512.png # 网站图标链接 112 | sizes: 512x512 # 尺寸 113 | purpose: any maskable 114 | # 个人信息 115 | level: 85 # 等级 116 | exp: 8382 # 经验值 117 | nextExp: 8381 # 到达下一等级经验值(比exp小则显示满级) 118 | # Iconfont图标导入 119 | iconfont: 'https://at.alicdn.com/t/c/font_4336463_0i6ly0yvyzb.js' 120 | # 底部项目信息(推荐5个,最多7个) 121 | dock: 122 | - name: 一起吃小鱼 # 项目名称 123 | href: 'https://gitee.com/sf-yuzifu/eat-fish-together' # 项目地址 124 | imgSrc: /img/fish.png # 项目图标 125 | # 左边联系方式(推荐4个) 126 | contact: 127 | - name: QQ # 联系方式 128 | href: 'https://wpa.qq.com/msgrd?v=3&uin=1906929246&site=qq&menu=yes&jumpflag=1' # 联系地址 129 | iconfont: icon-qq # iconfont图标id(只有icon-qq/github/bilibili/gitee) 130 | # 任务按钮启动 131 | task: 132 | name: 个人博客 # 任务名称 133 | href: 'https://blog.yzf.moe/' # 跳转地址 134 | banner: 135 | musicID: # 音乐ID(暂时只支持网易云音乐) 136 | - 2059151619 137 | ``` 138 | > 修改其中相关内容,之后重新按上述方式部署即可完成修改 139 | 140 | ## 有关学生回忆大厅L2D文件获取 141 | 142 | 1. 自己去游戏解包中获取([教程1](https://www.bilibili.com/read/cv15934670/)、[教程2](https://www.bilibili.com/read/cv18073492/)) 143 | 2. 去[基沃托斯古书馆](https://kivo.fun/)中的`角色图鉴`—`切换到鉴赏模式`—`回忆大厅`当中自行抓包获取 144 | -------------------------------------------------------------------------------- /_config.yaml: -------------------------------------------------------------------------------- 1 | # 网站基本配置 2 | title: 小鱼档案 # 网站标题 3 | description: 有关小鱼的《蔚蓝档案》风格的个人主页 # 网站简介 4 | favicon: /favicon144.png # 网站图标链接 5 | author: 小鱼yuzifu # Sensei,你的名字 6 | keywords: '蔚蓝档案,小鱼yuzifu,个人主页' # 网站关键词描述 7 | ICP: '' # ICP备案号 8 | # PWA配置(https:#developer.mozilla.org/zh-CN/docs/Web/Manifest) 9 | manifest: 10 | name: 小鱼档案 # 应用全称 11 | short_name: 小鱼档案 # 应用简称 12 | description: 有关小鱼的《蔚蓝档案》风格的个人主页 # 简介 13 | theme_color: '#128AFA' # 主题色 14 | start_url: / 15 | id: Homepage 16 | # 图标 17 | icons: 18 | - src: /favicon512.png # 网站图标链接 19 | sizes: 512x512 # 尺寸 20 | purpose: any maskable 21 | - src: /favicon144.png 22 | sizes: 144x144 23 | # 个人信息 24 | level: 85 # 等级 25 | exp: 8382 # 经验值 26 | nextExp: 8381 # 到达下一等级经验值(比exp小则显示满级) 27 | # Iconfont图标导入 28 | iconfont: 'https://at.alicdn.com/t/c/font_4336463_0i6ly0yvyzb.js' 29 | # 底部项目信息(推荐5个,最多7个) 30 | dock: 31 | - name: 一起吃小鱼 # 项目名称 32 | href: 'https://gitee.com/sf-yuzifu/eat-fish-together' # 项目地址 33 | imgSrc: /img/fish.png # 项目图标 34 | - name: 编程猫格式工厂 35 | href: 'https://gitee.com/sf-yuzifu/bcm_convertor' 36 | imgSrc: /img/convertor.png 37 | - name: Waddle编辑器 38 | href: 'https://waddle.cocotais.cn/' 39 | imgSrc: /img/waddle2.png 40 | - name: PICKDUCK 41 | href: 'https://shequ.pgaot.com/' 42 | imgSrc: /img/pickduck.png 43 | - name: Boxy编辑器 44 | href: 'https://boxy.cocotais.cn/' 45 | imgSrc: /img/boxy.png 46 | # 左边联系方式(推荐4个) 47 | contact: 48 | - name: QQ # 联系方式 49 | href: 'https://wpa.qq.com/msgrd?v=3&uin=1906929246&site=qq&menu=yes&jumpflag=1' # 联系地址 50 | iconfont: icon-qq # iconfont图标id(只有icon-qq/github/bilibili/gitee) 51 | - name: Gitee 52 | href: 'https://gitee.com/sf-yuzifu' 53 | iconfont: icon-gitee 54 | - name: Github 55 | href: 'https://github.com/sf-yuzifu' 56 | iconfont: icon-github 57 | - name: BiliBili 58 | href: 'https://space.bilibili.com/447666445' 59 | iconfont: icon-bilibili 60 | # 任务按钮启动 61 | task: 62 | name: 个人博客 # 任务名称 63 | href: 'https://blog.yzf.moe/' # 跳转地址 64 | banner: 65 | musicID: # 音乐ID(暂时只支持网易云音乐) 66 | - 2059151619 67 | - 2098476758 68 | - 2630220461 69 | - 2630217054 70 | - 2630217057 71 | - 2099308172 72 | - 2098477269 73 | - 2098478097 74 | - 2098478355 75 | - 2098473565 76 | - 2098473572 77 | - 2008994667 78 | - 1840401436 79 | - 2029212574 80 | - 2612747239 81 | - 2140425047 82 | - 1832392174 83 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | <%- title %> 19 | 20 | 21 |
22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "homepage", 3 | "version": "1.0.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite --host", 7 | "build": "vite build", 8 | "preview": "vite preview", 9 | "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore", 10 | "format": "prettier --write src/" 11 | }, 12 | "resolutions": { 13 | "bin-wrapper": "npm:bin-wrapper-china" 14 | }, 15 | "dependencies": { 16 | "@esotericsoftware/spine-pixi-v7": "^4.2.76", 17 | "@rollup/plugin-yaml": "^4.1.2", 18 | "aplayer": "^1.10.1", 19 | "autoprefixer": "^10.4.20", 20 | "axios": "^1.8.2", 21 | "js-yaml": "^4.1.0", 22 | "nprogress": "^0.2.0", 23 | "pixi.js": "^7.4.3", 24 | "postcss": "^8.4.41", 25 | "postcss-import": "^16.1.0", 26 | "postcss-loader": "^8.1.1", 27 | "postcss-px-to-viewport": "^1.1.1", 28 | "rollup-plugin-copy": "^3.5.0", 29 | "vite-plugin-font": "^2.1.5", 30 | "vite-plugin-pwa": "^0.16.5", 31 | "vue": "^3.3.4", 32 | "vue-i18n": "^11.1.2", 33 | "vue-router": "^4.2.4" 34 | }, 35 | "devDependencies": { 36 | "@arco-design/web-vue": "^2.51.2", 37 | "@rushstack/eslint-patch": "^1.3.3", 38 | "@vitejs/plugin-vue": "^4.3.4", 39 | "@vitejs/plugin-vue-jsx": "^3.0.2", 40 | "@vue/eslint-config-prettier": "^8.0.0", 41 | "eslint": "^8.49.0", 42 | "eslint-plugin-vue": "^9.17.0", 43 | "prettier": "^3.0.3", 44 | "vite": "^5.4.6", 45 | "vite-plugin-compression": "^0.5.1", 46 | "vite-plugin-html": "^3.2.0", 47 | "vite-plugin-imagemin": "^0.6.1" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /public/aris.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/aris.jpeg -------------------------------------------------------------------------------- /public/favicon144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/favicon144.png -------------------------------------------------------------------------------- /public/favicon512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/favicon512.png -------------------------------------------------------------------------------- /public/img/ap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/img/ap.png -------------------------------------------------------------------------------- /public/img/boxy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/img/boxy.png -------------------------------------------------------------------------------- /public/img/convertor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/img/convertor.png -------------------------------------------------------------------------------- /public/img/fish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/img/fish.png -------------------------------------------------------------------------------- /public/img/gold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/img/gold.png -------------------------------------------------------------------------------- /public/img/max.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/img/max.png -------------------------------------------------------------------------------- /public/img/min.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/img/min.png -------------------------------------------------------------------------------- /public/img/pickduck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/img/pickduck.png -------------------------------------------------------------------------------- /public/img/pyroxene.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/img/pyroxene.png -------------------------------------------------------------------------------- /public/img/waddle2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/img/waddle2.png -------------------------------------------------------------------------------- /public/l2d/aris/Aris_home.atlas: -------------------------------------------------------------------------------- 1 | 2 | Aris_home.png 3 | size: 2048,2048 4 | format: RGBA8888 5 | filter: Linear,Linear 6 | repeat: none 7 | B_ F_Hair_01 8 | rotate: 180 9 | xy: 1570, 1118 10 | size: 475, 451 11 | orig: 475, 451 12 | offset: 0, 0 13 | index: -1 14 | B_ R_Hair_01 15 | rotate: false 16 | xy: 1651, 1805 17 | size: 90, 242 18 | orig: 90, 242 19 | offset: 0, 0 20 | index: -1 21 | B_ R_Hair_02 22 | rotate: true 23 | xy: 1468, 198 24 | size: 106, 227 25 | orig: 106, 227 26 | offset: 0, 0 27 | index: -1 28 | Cc_Hair_04 29 | rotate: false 30 | xy: 1530, 529 31 | size: 92, 66 32 | orig: 93, 66 33 | offset: 0, 0 34 | index: -1 35 | Cc_Hair_05 36 | rotate: 270 37 | xy: 349, 244 38 | size: 206, 654 39 | orig: 206, 654 40 | offset: 0, 0 41 | index: -1 42 | F_Hair_01 43 | rotate: false 44 | xy: 2, 252 45 | size: 138, 283 46 | orig: 138, 299 47 | offset: 0, 16 48 | index: -1 49 | F_Hair_02 50 | rotate: false 51 | xy: 1304, 1348 52 | size: 209, 270 53 | orig: 210, 270 54 | offset: 1, 0 55 | index: -1 56 | F_Hair_03_03 57 | rotate: true 58 | xy: 1182, 169 59 | size: 68, 834 60 | orig: 69, 834 61 | offset: 0, 0 62 | index: -1 63 | F_Hair_Acc_01 64 | rotate: false 65 | xy: 1202, 198 66 | size: 413, 284 67 | orig: 413, 284 68 | offset: 0, 0 69 | index: -1 70 | Jumper_01 71 | rotate: 270 72 | xy: 128, 407 73 | size: 211, 314 74 | orig: 211, 314 75 | offset: 0, 0 76 | index: -1 77 | Jumper_02 78 | rotate: false 79 | xy: 1744, 1614 80 | size: 301, 432 81 | orig: 301, 432 82 | offset: 0, 0 83 | index: -1 84 | Jumper_03 85 | rotate: false 86 | xy: 393, 797 87 | size: 428, 433 88 | orig: 428, 433 89 | offset: 0, 0 90 | index: -1 91 | Jumper_04 92 | rotate: true 93 | xy: 1344, 582 94 | size: 236, 487 95 | orig: 236, 503 96 | offset: 0, 16 97 | index: -1 98 | Jumper_05 99 | rotate: 270 100 | xy: 2, 559 101 | size: 287, 405 102 | orig: 287, 405 103 | offset: 0, 0 104 | index: -1 105 | Jumper_06 106 | rotate: 270 107 | xy: 302, 315 108 | size: 299, 472 109 | orig: 299, 472 110 | offset: 0, 0 111 | index: -1 112 | L_Calf_01 113 | rotate: true 114 | xy: 276, 574 115 | size: 305, 620 116 | orig: 312, 622 117 | offset: 7, 0 118 | index: -1 119 | L_Eye_P_01 120 | rotate: false 121 | xy: 1619, 2021 122 | size: 28, 25 123 | orig: 28, 25 124 | offset: 0, 0 125 | index: -1 126 | L_Eye_P_02 127 | rotate: false 128 | xy: 1743, 1786 129 | size: 27, 24 130 | orig: 27, 24 131 | offset: 0, 0 132 | index: -1 133 | L_Eye_White_01 134 | rotate: false 135 | xy: 1943, 1946 136 | size: 101, 101 137 | orig: 101, 101 138 | offset: 0, 0 139 | index: -1 140 | L_Eyebrows_02 141 | rotate: false 142 | xy: 388, 414 143 | size: 84, 60 144 | orig: 84, 61 145 | offset: 0, 1 146 | index: -1 147 | L_Eyebrows_03 148 | rotate: false 149 | xy: 1896, 458 150 | size: 92, 55 151 | orig: 92, 55 152 | offset: 0, 0 153 | index: -1 154 | L_Eyebrows_03_D 155 | rotate: false 156 | xy: 1170, 1215 157 | size: 63, 15 158 | orig: 63, 15 159 | offset: 0, 0 160 | index: -1 161 | L_Eyebrows_04 162 | rotate: false 163 | xy: 1119, 902 164 | size: 82, 60 165 | orig: 88, 60 166 | offset: 6, 0 167 | index: -1 168 | L_Eyebrows_default 169 | rotate: false 170 | xy: 1494, 402 171 | size: 98, 57 172 | orig: 98, 58 173 | offset: 0, 1 174 | index: -1 175 | L_Eyebrows_default_D 176 | rotate: false 177 | xy: 1304, 1377 178 | size: 67, 17 179 | orig: 67, 17 180 | offset: 0, 0 181 | index: -1 182 | L_Face_Eyelid_full 183 | rotate: false 184 | xy: 1729, 1989 185 | size: 91, 59 186 | orig: 92, 59 187 | offset: 0, 0 188 | index: -1 189 | L_Face_Eyelid_halfclose 190 | rotate: false 191 | xy: 1939, 1100 192 | size: 92, 57 193 | orig: 92, 57 194 | offset: 0, 0 195 | index: -1 196 | L_Forearm_01 197 | rotate: false 198 | xy: 2, 1132 199 | size: 84, 100 200 | orig: 84, 235 201 | offset: 0, 135 202 | index: -1 203 | L_Forearm_02 204 | rotate: false 205 | xy: 1299, 885 206 | size: 71, 96 207 | orig: 71, 97 208 | offset: 0, 1 209 | index: -1 210 | L_Forearm_03 211 | rotate: false 212 | xy: 423, 861 213 | size: 94, 206 214 | orig: 95, 206 215 | offset: 1, 0 216 | index: -1 217 | L_Hair_01 218 | rotate: false 219 | xy: 1987, 1853 220 | size: 59, 95 221 | orig: 60, 95 222 | offset: 0, 0 223 | index: -1 224 | L_Hair_Acc_01 225 | rotate: true 226 | xy: 400, 116 227 | size: 77, 255 228 | orig: 77, 255 229 | offset: 0, 0 230 | index: -1 231 | L_Hair_Acc_02 232 | rotate: false 233 | xy: 1496, 1265 234 | size: 66, 251 235 | orig: 66, 252 236 | offset: 0, 0 237 | index: -1 238 | L_Hand_01 239 | rotate: false 240 | xy: 1911, 1490 241 | size: 135, 171 242 | orig: 135, 171 243 | offset: 0, 0 244 | index: -1 245 | L_T_Eyebrows_01 246 | rotate: false 247 | xy: 940, 1087 248 | size: 71, 44 249 | orig: 71, 44 250 | offset: 0, 0 251 | index: -1 252 | L_Thigh_01 253 | rotate: true 254 | xy: 1366, 794 255 | size: 236, 680 256 | orig: 239, 681 257 | offset: 0, 0 258 | index: -1 259 | L_UpperArm_01 260 | rotate: true 261 | xy: 382, 460 262 | size: 212, 374 263 | orig: 213, 375 264 | offset: 0, 1 265 | index: -1 266 | L_eye_01_1 267 | rotate: false 268 | xy: 287, 1176 269 | size: 63, 54 270 | orig: 63, 54 271 | offset: 0, 0 272 | index: -1 273 | L_eye_01_2 274 | rotate: false 275 | xy: 1937, 2031 276 | size: 17, 17 277 | orig: 17, 17 278 | offset: 0, 0 279 | index: -1 280 | L_eye_01_3 281 | rotate: false 282 | xy: 1884, 1558 283 | size: 35, 21 284 | orig: 35, 21 285 | offset: 0, 0 286 | index: -1 287 | L_eye_default_3 288 | rotate: false 289 | xy: 1884, 1558 290 | size: 35, 21 291 | orig: 35, 21 292 | offset: 0, 0 293 | index: -1 294 | L_eye_default_1 295 | rotate: false 296 | xy: 1822, 1568 297 | size: 66, 58 298 | orig: 66, 58 299 | offset: 0, 0 300 | index: -1 301 | L_eye_default_2 302 | rotate: false 303 | xy: 1922, 2028 304 | size: 18, 18 305 | orig: 18, 18 306 | offset: 0, 0 307 | index: -1 308 | L_flush_1 309 | rotate: false 310 | xy: 1203, 906 311 | size: 94, 64 312 | orig: 94, 68 313 | offset: 0, 0 314 | index: -1 315 | L_flush_2 316 | rotate: false 317 | xy: 1417, 1274 318 | size: 98, 67 319 | orig: 98, 80 320 | offset: 0, 13 321 | index: -1 322 | R_Calf_01 323 | rotate: 270 324 | xy: 763, 687 325 | size: 292, 663 326 | orig: 292, 664 327 | offset: 0, 0 328 | index: -1 329 | R_Eye_P_01 330 | rotate: false 331 | xy: 2009, 1822 332 | size: 31, 29 333 | orig: 31, 29 334 | offset: 0, 0 335 | index: -1 336 | R_Eye_P_02 337 | rotate: false 338 | xy: 1304, 1992 339 | size: 28, 27 340 | orig: 28, 27 341 | offset: 0, 0 342 | index: -1 343 | R_Eye_White_01 344 | rotate: false 345 | xy: 816, 1011 346 | size: 100, 100 347 | orig: 101, 101 348 | offset: 1, 1 349 | index: -1 350 | R_Eyebrows_02 351 | rotate: false 352 | xy: 1932, 499 353 | size: 114, 56 354 | orig: 114, 56 355 | offset: 0, 0 356 | index: -1 357 | R_Eyebrows_03 358 | rotate: false 359 | xy: 1718, 703 360 | size: 122, 53 361 | orig: 122, 53 362 | offset: 0, 0 363 | index: -1 364 | R_Eyebrows_03_D 365 | rotate: false 366 | xy: 349, 1205 367 | size: 64, 27 368 | orig: 64, 28 369 | offset: 0, 1 370 | index: -1 371 | R_Eyebrows_04 372 | rotate: false 373 | xy: 787, 736 374 | size: 117, 57 375 | orig: 117, 57 376 | offset: 0, 0 377 | index: -1 378 | R_Eyebrows_default 379 | rotate: false 380 | xy: 1651, 741 381 | size: 130, 54 382 | orig: 130, 54 383 | offset: 0, 0 384 | index: -1 385 | R_Eyebrows_default _D 386 | rotate: false 387 | xy: 1359, 1258 388 | size: 60, 24 389 | orig: 60, 25 390 | offset: 0, 1 391 | index: -1 392 | R_Face_Eyelid_full 393 | rotate: false 394 | xy: 1065, 1166 395 | size: 106, 64 396 | orig: 108, 64 397 | offset: 1, 0 398 | index: -1 399 | R_Face_Eyelid_halfclose 400 | rotate: false 401 | xy: 1618, 1030 402 | size: 108, 67 403 | orig: 108, 67 404 | offset: 0, 0 405 | index: -1 406 | R_Forearm_01 407 | rotate: 180 408 | xy: 1597, 406 409 | size: 449, 277 410 | orig: 449, 277 411 | offset: 0, 0 412 | index: -1 413 | R_Hair_01 414 | rotate: true 415 | xy: 1099, 164 416 | size: 157, 139 417 | orig: 157, 144 418 | offset: 0, 0 419 | index: -1 420 | R_Hair_02 421 | rotate: 270 422 | xy: 318, 192 423 | size: 115, 671 424 | orig: 122, 673 425 | offset: 0, 0 426 | index: -1 427 | R_Hair_03_00 428 | rotate: 270 429 | xy: 890, 434 430 | size: 112, 711 431 | orig: 114, 711 432 | offset: 2, 0 433 | index: -1 434 | R_Hair_03_01 435 | rotate: true 436 | xy: 1682, 254 437 | size: 91, 365 438 | orig: 92, 366 439 | offset: 1, 1 440 | index: -1 441 | R_Hair_03_02 442 | rotate: true 443 | xy: 1539, 202 444 | size: 37, 507 445 | orig: 38, 507 446 | offset: 0, 0 447 | index: -1 448 | R_Hair_04 449 | rotate: true 450 | xy: 118, 196 451 | size: 164, 279 452 | orig: 164, 279 453 | offset: 0, 0 454 | index: -1 455 | R_Hair_06 456 | rotate: false 457 | xy: 287, 66 458 | size: 249, 263 459 | orig: 249, 263 460 | offset: 0, 0 461 | index: -1 462 | R_Hand_01 463 | rotate: false 464 | xy: 1841, 663 465 | size: 204, 156 466 | orig: 204, 157 467 | offset: 0, 0 468 | index: -1 469 | R_T_Eyebrows_01 470 | rotate: false 471 | xy: 1307, 1276 472 | size: 110, 17 473 | orig: 110, 17 474 | offset: 0, 0 475 | index: -1 476 | R_Thigh_01 477 | rotate: true 478 | xy: 912, 943 479 | size: 328, 706 480 | orig: 349, 706 481 | offset: 21, 0 482 | index: -1 483 | R_UpperArm_01 484 | rotate: 270 485 | xy: 898, 549 486 | size: 224, 396 487 | orig: 224, 396 488 | offset: 0, 0 489 | index: -1 490 | R_eye_01_1 491 | rotate: false 492 | xy: 1537, 1453 493 | size: 64, 61 494 | orig: 68, 61 495 | offset: 3, 0 496 | index: -1 497 | R_eye_01_2 498 | rotate: false 499 | xy: 1593, 2027 500 | size: 18, 19 501 | orig: 18, 19 502 | offset: 0, 0 503 | index: -1 504 | R_eye_01_3 505 | rotate: false 506 | xy: 2009, 1618 507 | size: 37, 28 508 | orig: 37, 28 509 | offset: 0, 0 510 | index: -1 511 | R_eye_default_1 512 | rotate: false 513 | xy: 1981, 1645 514 | size: 65, 72 515 | orig: 71, 72 516 | offset: 6, 0 517 | index: -1 518 | R_eye_default_2 519 | rotate: false 520 | xy: 2030, 2030 521 | size: 13, 17 522 | orig: 13, 17 523 | offset: 0, 0 524 | index: -1 525 | R_eye_default_3 526 | rotate: false 527 | xy: 1787, 1569 528 | size: 39, 27 529 | orig: 39, 27 530 | offset: 0, 0 531 | index: -1 532 | R_flush_1 533 | rotate: false 534 | xy: 1304, 1283 535 | size: 112, 87 536 | orig: 112, 108 537 | offset: 0, 3 538 | index: -1 539 | R_flush_2 540 | rotate: false 541 | xy: 1623, 548 542 | size: 86, 54 543 | orig: 88, 64 544 | offset: 2, 0 545 | index: -1 546 | Skirt_01 547 | rotate: true 548 | xy: 822, 1111 549 | size: 119, 241 550 | orig: 119, 241 551 | offset: 0, 0 552 | index: -1 553 | Skirt_02 554 | rotate: true 555 | xy: 1763, 227 556 | size: 81, 282 557 | orig: 81, 282 558 | offset: 0, 0 559 | index: -1 560 | Top_Light 561 | rotate: false 562 | xy: 2, 1232 563 | size: 1300, 814 564 | orig: 1300, 814 565 | offset: 0, 0 566 | index: -1 567 | Torso_01 568 | rotate: false 569 | xy: 1304, 1515 570 | size: 530, 532 571 | orig: 530, 541 572 | offset: 0, 9 573 | index: -1 574 | face 575 | rotate: true 576 | xy: 2, 821 577 | size: 411, 437 578 | orig: 411, 437 579 | offset: 0, 0 580 | index: -1 581 | faceshadow_1 582 | rotate: 270 583 | xy: 885, 174 584 | size: 205, 322 585 | orig: 206, 322 586 | offset: 1, 0 587 | index: -1 588 | faceshadow_2 589 | rotate: false 590 | xy: 31, 96 591 | size: 90, 197 592 | orig: 90, 200 593 | offset: 0, 3 594 | index: -1 595 | faceshadow_3 596 | rotate: false 597 | xy: 712, 796 598 | size: 191, 59 599 | orig: 192, 59 600 | offset: 1, 0 601 | index: -1 602 | mouth_01 603 | rotate: false 604 | xy: 1304, 1363 605 | size: 61, 19 606 | orig: 61, 20 607 | offset: 0, 1 608 | index: -1 609 | mouth_01_1 610 | rotate: false 611 | xy: 1304, 2020 612 | size: 61, 27 613 | orig: 61, 27 614 | offset: 0, 0 615 | index: -1 616 | mouth_01_2 617 | rotate: false 618 | xy: 88, 1192 619 | size: 67, 39 620 | orig: 67, 39 621 | offset: 0, 0 622 | index: -1 623 | mouth_02 624 | rotate: false 625 | xy: 1817, 2025 626 | size: 59, 22 627 | orig: 59, 25 628 | offset: 0, 3 629 | index: -1 630 | mouth_02_1 631 | rotate: false 632 | xy: 1595, 1509 633 | size: 53, 16 634 | orig: 53, 16 635 | offset: 0, 0 636 | index: -1 637 | mouth_02_2 638 | rotate: false 639 | xy: 1365, 2030 640 | size: 55, 17 641 | orig: 55, 19 642 | offset: 0, 2 643 | index: -1 644 | nose 645 | rotate: false 646 | xy: 1741, 1813 647 | size: 20, 36 648 | orig: 20, 36 649 | offset: 0, 0 650 | index: -1 651 | side hair_01 652 | rotate: true 653 | xy: 1666, 339 654 | size: 114, 379 655 | orig: 114, 379 656 | offset: 0, 0 657 | index: -1 658 | side hair_02 659 | rotate: false 660 | xy: 419, 843 661 | size: 105, 76 662 | orig: 105, 76 663 | offset: 0, 0 664 | index: -1 665 | side hair_03_00 666 | rotate: true 667 | xy: 745, 332 668 | size: 175, 810 669 | orig: 175, 810 670 | offset: 0, 0 671 | index: -1 672 | side hair_03_01 673 | rotate: true 674 | xy: 746, 491 675 | size: 88, 853 676 | orig: 88, 853 677 | offset: 0, 0 678 | index: -1 679 | side hair_03_02 680 | rotate: true 681 | xy: 1674, 1034 682 | size: 124, 372 683 | orig: 124, 372 684 | offset: 0, 0 685 | index: -1 686 | 687 | Aris_home2.png 688 | size: 2048,2048 689 | format: RGBA8888 690 | filter: Linear,Linear 691 | repeat: none 692 | background/background 693 | rotate: false 694 | xy: 2, 756 695 | size: 1645, 1184 696 | orig: 1645, 1184 697 | offset: 0, 0 698 | index: -1 699 | background/chair 700 | rotate: true 701 | xy: 2, 3 702 | size: 752, 956 703 | orig: 849, 956 704 | offset: 0, 0 705 | index: -1 706 | background/game_light_01 707 | rotate: false 708 | xy: 2, 692 709 | size: 88, 62 710 | orig: 88, 62 711 | offset: 0, 0 712 | index: -1 713 | background/game_light_02 714 | rotate: false 715 | xy: 2, 610 716 | size: 103, 80 717 | orig: 104, 80 718 | offset: 0, 0 719 | index: -1 720 | background/game_light_03 721 | rotate: false 722 | xy: 822, 695 723 | size: 156, 60 724 | orig: 156, 60 725 | offset: 0, 0 726 | index: -1 727 | background/halo 1 728 | rotate: true 729 | xy: 1481, 222 730 | size: 520, 363 731 | orig: 520, 363 732 | offset: 0, 0 733 | index: -1 734 | background/halo 2 735 | rotate: false 736 | xy: 959, 223 737 | size: 520, 369 738 | orig: 520, 369 739 | offset: 0, 0 740 | index: -1 741 | -------------------------------------------------------------------------------- /public/l2d/aris/Aris_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/l2d/aris/Aris_home.png -------------------------------------------------------------------------------- /public/l2d/aris/Aris_home.skel: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/l2d/aris/Aris_home.skel -------------------------------------------------------------------------------- /public/l2d/aris/Aris_home2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/l2d/aris/Aris_home2.png -------------------------------------------------------------------------------- /public/l2d/aris/Someday_-sometime.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/l2d/aris/Someday_-sometime.mp3 -------------------------------------------------------------------------------- /public/l2d/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/l2d/arrow.png -------------------------------------------------------------------------------- /public/l2d/hina_swimsuit/CH0063_home.atlas: -------------------------------------------------------------------------------- 1 | CH0063_home_CN.png 2 | size:3068,2910 3 | filter:Linear,Linear 4 | BG/BG_Shadow_01 5 | bounds:2,632,1350,584 6 | BG/Candlelights_01 7 | bounds:146,2899,9,25 8 | rotate:90 9 | BG/Candlelights_01_P 10 | bounds:719,1303,500,479 11 | BG/Candlelights_02 12 | bounds:298,2898,10,25 13 | rotate:90 14 | BG/Citylights_Resource_01 15 | bounds:2227,2879,30,29 16 | BG/Citylights_Resource_04 17 | bounds:2227,2879,30,29 18 | BG/Citylights_Resource_02 19 | bounds:1613,2884,25,24 20 | BG/Citylights_Resource_03 21 | bounds:1640,2884,25,24 22 | BG/F_BG 23 | bounds:2,2,1730,628 24 | offsets:0,0,1730,757 25 | BG/Halo_01 26 | bounds:2643,1989,414,239 27 | offsets:21,9,450,248 28 | BG/Halo_03 29 | bounds:1630,2603,225,113 30 | offsets:0,1,225,115 31 | BG/Halo_04 32 | bounds:207,2767,90,142 33 | rotate:90 34 | BG/Halo_05 35 | bounds:1581,2722,123,92 36 | offsets:2,1,125,96 37 | BG/L_Halo_02 38 | bounds:937,2632,150,111 39 | offsets:0,2,150,113 40 | BG/R_Halo_02 41 | bounds:1706,2718,150,94 42 | BG/Sea 43 | bounds:1221,1218,1500,410 44 | offsets:0,330,1500,949 45 | BG/Sky_Halo_P 46 | bounds:1354,632,1400,584 47 | offsets:0,455,1400,1039 48 | BG/Sky_halo 49 | bounds:2276,2800,149,76 50 | offsets:1,0,150,79 51 | BG/sea_light 52 | bounds:1891,2049,750,212 53 | BG/sea_wave 01 54 | bounds:351,2762,450,82 55 | BG/sea_wave 02 56 | bounds:1129,2731,450,86 57 | offsets:0,0,450,87 58 | BG/sea_wave 03 59 | bounds:2197,2702,450,87 60 | BG/sea_wave 04 61 | bounds:202,2670,450,90 62 | BG/sea_wave 05 63 | bounds:648,2362,750,129 64 | offsets:0,1,750,130 65 | BG/sea_wave 06 66 | bounds:1857,2598,500,102 67 | B_Hair_01 68 | bounds:2,1493,411,715 69 | offsets:106,216,541,932 70 | rotate:90 71 | B_Hair_012 72 | bounds:336,1906,634,270 73 | B_Hair_02 74 | bounds:1946,2456,140,179 75 | offsets:0,1,140,182 76 | rotate:90 77 | B_Hair_03 78 | bounds:1440,2087,214,449 79 | rotate:90 80 | F_Pillow 81 | bounds:998,2102,440,212 82 | L_Arm_01 83 | bounds:649,2514,124,222 84 | offsets:7,10,131,232 85 | rotate:90 86 | L_Arm_01_Intro 87 | bounds:2859,2564,118,180 88 | offsets:0,1,118,181 89 | rotate:90 90 | L_B_Eye_P_01 91 | bounds:1018,2890,25,18 92 | offsets:0,0,25,19 93 | L_B_Eye_P_02 94 | bounds:1045,2890,24,18 95 | offsets:0,0,25,18 96 | L_B_Eye_P_03 97 | bounds:1071,2890,24,18 98 | offsets:0,0,25,19 99 | L_B_Eyebrows_01 100 | bounds:444,2896,28,12 101 | offsets:1,0,29,12 102 | L_B_Eyebrows_02 103 | bounds:537,2895,33,13 104 | L_B_Finger_01 105 | bounds:1870,2882,29,26 106 | offsets:0,0,30,54 107 | L_B_Finger_02 108 | bounds:2144,2880,34,28 109 | L_B_Finger_03 110 | bounds:1695,2883,32,25 111 | offsets:0,1,32,26 112 | L_B_Finger_04 113 | bounds:1901,2882,32,26 114 | offsets:1,1,33,28 115 | L_Cardigan_01 116 | bounds:2,2563,105,498 117 | rotate:90 118 | L_Cardigan_01_Intro 119 | bounds:2359,2583,104,498 120 | offsets:0,0,105,498 121 | rotate:90 122 | L_Cardigan_02 123 | bounds:570,2178,182,426 124 | offsets:0,1,182,427 125 | rotate:90 126 | L_Eye_01 127 | bounds:2259,2879,29,40 128 | rotate:90 129 | L_Eye_02 130 | bounds:2550,2876,32,40 131 | rotate:90 132 | L_Eye_03 133 | bounds:2592,2876,32,41 134 | rotate:90 135 | L_Eye_P_01_0 136 | bounds:74,2900,8,15 137 | offsets:1,0,9,16 138 | rotate:90 139 | L_Eye_P_01_1 140 | bounds:1167,2889,19,29 141 | rotate:90 142 | L_Eye_P_02_0 143 | bounds:173,2899,9,16 144 | rotate:90 145 | L_Eye_P_02_1 146 | bounds:1294,2887,21,26 147 | rotate:90 148 | L_Eye_P_03_0 149 | bounds:191,2899,9,16 150 | offsets:1,0,10,17 151 | rotate:90 152 | L_Eye_P_03_1 153 | bounds:1322,2887,21,26 154 | rotate:90 155 | L_Eye_White 156 | bounds:948,2841,61,48 157 | offsets:0,1,62,50 158 | L_Finger_01 159 | bounds:2180,2880,28,45 160 | offsets:1,1,29,46 161 | rotate:90 162 | L_Finger_01_01_Intro 163 | bounds:762,2893,15,38 164 | offsets:0,1,17,39 165 | rotate:90 166 | L_Finger_01_02_Intro 167 | bounds:1729,2883,26,25 168 | offsets:0,0,27,25 169 | L_Finger_02 170 | bounds:1350,2887,21,56 171 | offsets:1,1,23,57 172 | rotate:90 173 | L_Finger_03 174 | bounds:1408,2887,21,50 175 | offsets:1,1,22,51 176 | rotate:90 177 | L_Finger_04 178 | bounds:2301,2879,29,43 179 | offsets:1,0,30,43 180 | rotate:90 181 | L_Foot_01 182 | bounds:1089,2619,101,539 183 | offsets:1,0,102,539 184 | rotate:90 185 | L_Forearm_01 186 | bounds:2611,2433,229,148 187 | offsets:14,9,243,157 188 | L_Forearm_01_Intro 189 | bounds:1858,2713,94,218 190 | rotate:90 191 | L_Hair_01 192 | bounds:1194,2493,124,335 193 | offsets:1,1,126,343 194 | rotate:90 195 | L_Hair_01_P_01 196 | bounds:2444,2877,31,104 197 | offsets:0,0,31,105 198 | rotate:90 199 | L_Hair_02 200 | bounds:2112,2807,82,71 201 | offsets:0,0,83,72 202 | L_Hair_03 203 | bounds:895,2842,48,51 204 | offsets:0,2,48,54 205 | rotate:90 206 | L_Hair_04 207 | bounds:1230,2821,64,188 208 | rotate:90 209 | L_Hair_04_P_01 210 | bounds:1011,2841,47,127 211 | rotate:90 212 | L_Hair_05 213 | bounds:268,2201,196,300 214 | offsets:3,3,200,304 215 | rotate:90 216 | L_Hair_05_Shadow 217 | bounds:2887,2684,96,133 218 | offsets:1,0,101,136 219 | rotate:90 220 | L_Hair_06 221 | bounds:2842,2414,148,224 222 | offsets:1,2,150,226 223 | rotate:90 224 | L_Hair_06_Shadow 225 | bounds:2127,2451,145,195 226 | offsets:2,0,150,195 227 | rotate:90 228 | L_Hand_01 229 | bounds:2529,2793,89,81 230 | L_Hand_01_Intro 231 | bounds:1420,2821,69,64 232 | offsets:1,2,70,66 233 | L_Hand_02_01_Intro 234 | bounds:1542,2885,23,36 235 | offsets:1,0,25,36 236 | rotate:90 237 | L_Hand_02_02_Intro 238 | bounds:1667,2884,24,26 239 | offsets:0,0,25,30 240 | rotate:90 241 | L_Hand_03_01_Intro 242 | bounds:1977,2881,32,27 243 | offsets:0,1,33,28 244 | L_Hand_03_02_Intro 245 | bounds:1757,2883,25,25 246 | offsets:0,0,26,32 247 | L_Hand_04_Intro 248 | bounds:2011,2881,34,27 249 | offsets:0,0,39,27 250 | L_Hand_05_Intro 251 | bounds:2771,2873,38,35 252 | offsets:0,0,39,65 253 | L_Horns_1 254 | bounds:1946,2809,70,164 255 | offsets:0,36,125,200 256 | rotate:90 257 | L_Horns_2 258 | bounds:2196,2803,78,74 259 | offsets:47,1,125,200 260 | L_M_Eyebrows_01 261 | bounds:422,2855,70,39 262 | offsets:2,3,72,44 263 | L_M_Eyebrows_02 264 | bounds:494,2854,69,39 265 | offsets:0,5,69,44 266 | L_M_Eyebrows_03 267 | bounds:2811,2873,62,35 268 | offsets:0,0,63,40 269 | L_M_Eyebrows_04 270 | bounds:98,2861,59,36 271 | offsets:0,0,59,42 272 | L_Mt_Eyebrows_01 273 | bounds:839,2892,47,16 274 | L_Screen_P_00 275 | bounds:228,2859,36,145 276 | rotate:90 277 | L_Screen_P_01 278 | bounds:565,2852,41,46 279 | rotate:90 280 | L_Screen_P_02 281 | bounds:1140,2838,49,88 282 | rotate:90 283 | L_Screen_P_03 284 | bounds:2620,2791,81,85 285 | rotate:90 286 | L_T_Eye_P_01 287 | bounds:572,2895,13,16 288 | offsets:0,0,13,17 289 | rotate:90 290 | L_T_Eye_P_02 291 | bounds:590,2895,13,14 292 | offsets:0,0,13,16 293 | rotate:90 294 | L_T_Eye_P_03 295 | bounds:606,2895,13,14 296 | offsets:0,0,13,15 297 | rotate:90 298 | L_T_Eyebrows_01 299 | bounds:1247,2888,45,20 300 | offsets:0,3,51,23 301 | L_T_Eyebrows_02 302 | bounds:949,2891,37,17 303 | offsets:0,13,57,30 304 | L_T_Eyebrows_03 305 | bounds:1097,2890,43,18 306 | offsets:0,2,43,20 307 | L_T_Hair_01 308 | bounds:1585,2816,65,142 309 | offsets:4,2,69,149 310 | rotate:90 311 | L_T_Hair_010 312 | bounds:2600,1630,357,420 313 | rotate:90 314 | L_T_Hair_01_P_01 315 | bounds:2324,2441,285,140 316 | offsets:0,0,285,141 317 | L_T_Hair_01_P_02 318 | bounds:803,2749,91,115 319 | rotate:90 320 | L_T_Hair_02 321 | bounds:2022,1706,341,576 322 | offsets:1,0,343,576 323 | rotate:90 324 | L_T_Hair_020 325 | bounds:300,2413,148,190 326 | rotate:90 327 | L_T_Hair_02_P_01 328 | bounds:2875,2873,35,131 329 | rotate:90 330 | L_T_Hair_03 331 | bounds:492,2399,154,148 332 | offsets:0,0,154,149 333 | L_Thigh_01 334 | bounds:1694,2303,151,331 335 | offsets:1,6,152,337 336 | rotate:90 337 | L_Wing_01 338 | bounds:2684,2230,205,182 339 | L_Wing_02 340 | bounds:2443,2263,239,168 341 | L_eyelid_01 342 | bounds:2427,2798,100,77 343 | offsets:0,0,100,78 344 | L_eyelid_02 345 | bounds:2847,2785,96,86 346 | offsets:2,2,100,89 347 | L_flush_01 348 | bounds:785,2846,52,45 349 | offsets:2,0,54,47 350 | L_flush_02 351 | bounds:613,2851,58,42 352 | Mouse_01 353 | bounds:365,2897,42,11 354 | offsets:0,0,43,11 355 | Mouse_02_01 356 | bounds:22,2901,13,7 357 | Mouse_02_02 358 | bounds:37,2901,16,7 359 | Mouse_03_01 360 | bounds:91,2900,17,8 361 | offsets:0,0,18,10 362 | Mouse_03_02 363 | bounds:110,2900,17,8 364 | Mouse_03_03 365 | bounds:55,2901,17,7 366 | Mouse_04 367 | bounds:209,2899,35,9 368 | Mouse_04_01 369 | bounds:246,2899,33,9 370 | offsets:0,0,34,9 371 | Mouse_04_02 372 | bounds:409,2897,33,11 373 | offsets:0,0,34,11 374 | Neck_01 375 | bounds:920,2748,103,91 376 | offsets:2,0,125,92 377 | Nose_01 378 | bounds:802,2893,15,17 379 | rotate:90 380 | R_Arm_01 381 | bounds:2,2773,86,203 382 | offsets:0,1,86,204 383 | rotate:90 384 | R_B_Cardigan_01 385 | bounds:2,2416,145,296 386 | offsets:1,2,174,338 387 | rotate:90 388 | R_B_Eye_P_01 389 | bounds:1198,2889,23,19 390 | offsets:2,0,25,21 391 | R_B_Eye_P_02 392 | bounds:1223,2889,22,19 393 | offsets:1,0,25,21 394 | R_B_Eye_P_03 395 | bounds:1142,2890,23,18 396 | offsets:1,1,25,21 397 | R_B_Eyebrows_01 398 | bounds:474,2896,26,12 399 | offsets:0,0,27,13 400 | R_B_Eyebrows_02 401 | bounds:702,2894,25,14 402 | R_B_Hair_01 403 | bounds:2,2671,100,198 404 | offsets:0,21,102,219 405 | rotate:90 406 | R_B_Hair_02 407 | bounds:1025,2745,94,102 408 | offsets:6,1,100,105 409 | rotate:90 410 | R_B_Hair_03 411 | bounds:1400,2316,150,292 412 | rotate:90 413 | R_B_Hair_04 414 | bounds:1773,2461,135,171 415 | offsets:0,1,196,172 416 | rotate:90 417 | R_B_Hair_05 418 | bounds:1729,2814,67,127 419 | offsets:0,0,67,185 420 | rotate:90 421 | R_B_Hair_05_P_01 422 | bounds:159,2861,36,67 423 | rotate:90 424 | R_B_Hair_06 425 | bounds:776,2640,106,159 426 | offsets:0,0,106,174 427 | rotate:90 428 | R_B_Hair_06_P_01 429 | bounds:2945,2782,89,121 430 | offsets:0,0,90,121 431 | rotate:90 432 | R_Cardigan_01 433 | bounds:2,2234,180,264 434 | offsets:0,1,181,265 435 | rotate:90 436 | R_Eye_01 437 | bounds:1784,2883,25,41 438 | rotate:90 439 | R_Eye_02 440 | bounds:1935,2882,26,40 441 | offsets:0,1,26,42 442 | rotate:90 443 | R_Eye_03 444 | bounds:1827,2883,25,41 445 | offsets:0,1,25,42 446 | rotate:90 447 | R_Eye_P_01_0 448 | bounds:2,2902,6,18 449 | offsets:2,1,9,20 450 | rotate:90 451 | R_Eye_P_01_1 452 | bounds:888,2892,16,30 453 | rotate:90 454 | R_Eye_P_02_0 455 | bounds:129,2900,8,15 456 | offsets:1,0,9,15 457 | rotate:90 458 | R_Eye_P_02_1 459 | bounds:988,2891,17,28 460 | rotate:90 461 | R_Eye_P_03_0 462 | bounds:281,2899,9,15 463 | rotate:90 464 | R_Eye_P_03_1 465 | bounds:920,2892,16,27 466 | offsets:1,0,17,28 467 | rotate:90 468 | R_Eye_White 469 | bounds:673,2849,43,43 470 | offsets:1,1,45,45 471 | R_Finger_01 472 | bounds:2047,2881,27,95 473 | offsets:1,0,28,101 474 | rotate:90 475 | R_Finger_02 476 | bounds:718,2848,43,65 477 | offsets:0,3,52,68 478 | rotate:90 479 | R_Foot_01 480 | bounds:1471,1717,330,549 481 | rotate:90 482 | R_Forearm_01 483 | bounds:2649,2689,94,236 484 | offsets:0,0,94,238 485 | rotate:90 486 | R_Hair_01 487 | bounds:1531,2468,133,240 488 | offsets:9,0,144,243 489 | rotate:90 490 | R_Hair_01_Shadow 491 | bounds:2707,2786,85,138 492 | rotate:90 493 | R_Hair_02 494 | bounds:839,2843,54,47 495 | offsets:0,1,55,49 496 | R_Hand_01 497 | bounds:1491,2819,64,92 498 | offsets:0,2,65,94 499 | rotate:90 500 | R_Horns_1 501 | bounds:2635,2874,34,94 502 | offsets:2,0,36,94 503 | rotate:90 504 | R_M_Eyebrows_01 505 | bounds:3008,2873,50,35 506 | offsets:1,8,55,45 507 | R_M_Eyebrows_02 508 | bounds:2,2864,52,35 509 | offsets:1,8,55,45 510 | R_M_Eyebrows_03 511 | bounds:2346,2878,48,30 512 | offsets:0,0,55,33 513 | R_M_Eyebrows_04 514 | bounds:2396,2878,46,30 515 | offsets:0,0,55,33 516 | R_Mt_Eyebrows_01 517 | bounds:502,2896,33,12 518 | offsets:1,1,34,15 519 | R_T_Eye_P_01 520 | bounds:821,2893,15,16 521 | rotate:90 522 | R_T_Eye_P_02 523 | bounds:729,2894,15,14 524 | R_T_Eye_P_03 525 | bounds:746,2894,14,14 526 | R_T_Eyebrows_01 527 | bounds:622,2895,37,13 528 | offsets:4,3,41,17 529 | R_T_Eyebrows_02 530 | bounds:661,2895,39,13 531 | offsets:4,0,44,13 532 | R_T_Eyebrows_03 533 | bounds:325,2898,38,10 534 | offsets:6,1,44,15 535 | R_T_Hair_01 536 | bounds:1858,2813,86,67 537 | offsets:0,0,87,68 538 | R_T_Hair_01_P_01 539 | bounds:375,2856,39,45 540 | rotate:90 541 | R_Thigh_01 542 | bounds:873,2498,119,319 543 | offsets:0,0,120,323 544 | rotate:90 545 | R_Thumb_01 546 | bounds:1460,2887,21,80 547 | offsets:1,1,23,81 548 | rotate:90 549 | R_Wing_01 550 | bounds:2027,2293,211,156 551 | offsets:0,1,211,157 552 | R_Wing_02 553 | bounds:2240,2273,201,166 554 | offsets:1,4,202,170 555 | R_eyelid_01 556 | bounds:654,2660,100,120 557 | offsets:0,0,100,122 558 | rotate:90 559 | R_eyelid_02 560 | bounds:2078,2706,95,117 561 | offsets:3,3,100,122 562 | rotate:90 563 | R_flush_01 564 | bounds:2731,2874,38,34 565 | offsets:7,0,45,34 566 | R_flush_02 567 | bounds:56,2863,40,35 568 | offsets:2,0,43,37 569 | Torso 570 | bounds:972,1784,301,497 571 | offsets:0,5,302,502 572 | rotate:90 573 | Whistle_01 574 | bounds:1580,2885,23,31 575 | offsets:0,1,23,32 576 | rotate:90 577 | Whistle_02 578 | bounds:502,2549,119,145 579 | offsets:0,0,119,146 580 | rotate:90 581 | face 582 | bounds:2,1926,273,332 583 | offsets:23,4,300,344 584 | rotate:90 585 | 586 | CH0063_home_CN_2.png 587 | size:1734,1288 588 | filter:Linear,Linear 589 | F_Screen 590 | bounds:2,2,1730,1284 591 | -------------------------------------------------------------------------------- /public/l2d/hina_swimsuit/CH0063_home.skel: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/l2d/hina_swimsuit/CH0063_home.skel -------------------------------------------------------------------------------- /public/l2d/hina_swimsuit/CH0063_home_CN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/l2d/hina_swimsuit/CH0063_home_CN.png -------------------------------------------------------------------------------- /public/l2d/hina_swimsuit/CH0063_home_CN_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/l2d/hina_swimsuit/CH0063_home_CN_2.png -------------------------------------------------------------------------------- /public/l2d/hina_swimsuit/Theme_21.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/l2d/hina_swimsuit/Theme_21.mp3 -------------------------------------------------------------------------------- /public/shitim/Event_Main_Stage_Bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/shitim/Event_Main_Stage_Bg.png -------------------------------------------------------------------------------- /public/shitim/Tran_Shitim_Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/shitim/Tran_Shitim_Icon.png -------------------------------------------------------------------------------- /public/task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/task.png -------------------------------------------------------------------------------- /public/transfrom.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/public/transfrom.webm -------------------------------------------------------------------------------- /shots/main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/shots/main.png -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 37 | 38 | 63 | 64 | 162 | -------------------------------------------------------------------------------- /src/assets/font/BlueakaBeta2GBK-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/src/assets/font/BlueakaBeta2GBK-Bold.ttf -------------------------------------------------------------------------------- /src/assets/font/BlueakaBeta2GBK-DemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sf-yuzifu/homepage/9f4135e09064dccf98228f69f3aedbcb310de882/src/assets/font/BlueakaBeta2GBK-DemiBold.ttf -------------------------------------------------------------------------------- /src/assets/index.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | user-select: none; 5 | --webkit-user-select: none; 6 | } 7 | 8 | :root { 9 | --deco1: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iX+WbvuWxgl8xIiBkYXRhLW5hbWU9IuWbvuWxgiAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzU5IDI3MyI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogIzQxODRhYjsKICAgICAgfQoKICAgICAgLmNscy0xLCAuY2xzLTIsIC5jbHMtMywgLmNscy00LCAuY2xzLTUsIC5jbHMtNiwgLmNscy03LCAuY2xzLTgsIC5jbHMtOSwgLmNscy0xMCwgLmNscy0xMSwgLmNscy0xMiwgLmNscy0xMywgLmNscy0xNCwgLmNscy0xNSwgLmNscy0xNiB7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAwcHg7CiAgICAgIH0KCiAgICAgIC5jbHMtMiB7CiAgICAgICAgZmlsbDogIzkxZDRmYjsKICAgICAgfQoKICAgICAgLmNscy0zIHsKICAgICAgICBmaWxsOiAjODNjNGViOwogICAgICB9CgogICAgICAuY2xzLTQgewogICAgICAgIGZpbGw6ICM3OWJjZTM7CiAgICAgIH0KCiAgICAgIC5jbHMtNSB7CiAgICAgICAgZmlsbDogIzZkYjBkNzsKICAgICAgfQoKICAgICAgLmNscy02IHsKICAgICAgICBmaWxsOiAjZWNmOWZmOwogICAgICB9CgogICAgICAuY2xzLTcgewogICAgICAgIGZpbGwtcnVsZTogZXZlbm9kZDsKICAgICAgfQoKICAgICAgLmNscy03LCAuY2xzLTEwIHsKICAgICAgICBmaWxsOiAjYjdlNGZmOwogICAgICB9CgogICAgICAuY2xzLTggewogICAgICAgIGZpbGw6ICM4MGMzZWE7CiAgICAgIH0KCiAgICAgIC5jbHMtOSB7CiAgICAgICAgZmlsbDogI2FhZGVmZTsKICAgICAgfQoKICAgICAgLmNscy0xMSB7CiAgICAgICAgZmlsbDogI2RkZjJmZjsKICAgICAgfQoKICAgICAgLmNscy0xNyB7CiAgICAgICAgZmlsbDogdXJsKCNf5pyq5ZG95ZCN55qE5riQ5Y+YXzgpOwogICAgICAgIHN0cm9rZTogIzAwMDsKICAgICAgICBzdHJva2UtbWl0ZXJsaW1pdDogMTA7CiAgICAgIH0KCiAgICAgIC5jbHMtMTIgewogICAgICAgIGZpbGw6ICNjNWVjZmY7CiAgICAgIH0KCiAgICAgIC5jbHMtMTMgewogICAgICAgIGZpbGw6ICNlZGY4ZmY7CiAgICAgIH0KCiAgICAgIC5jbHMtMTQgewogICAgICAgIGZpbGw6ICNiMGRlZmU7CiAgICAgIH0KCiAgICAgIC5jbHMtMTggewogICAgICAgIG9wYWNpdHk6IC42OwogICAgICB9CgogICAgICAuY2xzLTE5IHsKICAgICAgICBtYXNrOiB1cmwoI21hc2spOwogICAgICB9CgogICAgICAuY2xzLTE1IHsKICAgICAgICBmaWxsOiAjOTZkN2ZlOwogICAgICB9CgogICAgICAuY2xzLTE2IHsKICAgICAgICBmaWxsOiAjZDhmMmZmOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJf5pyq5ZG95ZCN55qE5riQ5Y+YXzgiIGRhdGEtbmFtZT0i5pyq5ZG95ZCN55qE5riQ5Y+YIDgiIHgxPSIyMTIuMTUiIHkxPSIzMzAuMDMiIHgyPSIxOS41MSIgeTI9IjM2LjgyIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZiIvPgogICAgICA8c3RvcCBvZmZzZXQ9Ii4wNyIgc3RvcC1jb2xvcj0iI2NjYzljOCIvPgogICAgICA8c3RvcCBvZmZzZXQ9Ii4xNiIgc3RvcC1jb2xvcj0iIzk5OTQ5MiIvPgogICAgICA8c3RvcCBvZmZzZXQ9Ii4yNCIgc3RvcC1jb2xvcj0iIzZlNjc2NSIvPgogICAgICA8c3RvcCBvZmZzZXQ9Ii4zMiIgc3RvcC1jb2xvcj0iIzRkNDU0MiIvPgogICAgICA8c3RvcCBvZmZzZXQ9Ii40IiBzdG9wLWNvbG9yPSIjMzYyYzI5Ii8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjQ2IiBzdG9wLWNvbG9yPSIjMjcxZDFhIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjUyIiBzdG9wLWNvbG9yPSIjMjMxODE1Ii8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPG1hc2sgaWQ9Im1hc2siIHg9Ii0xODkuNSIgeT0iLS41IiB3aWR0aD0iNTQ5IiBoZWlnaHQ9IjI3NCIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxyZWN0IGNsYXNzPSJjbHMtMTciIHg9Ii0xODkiIHdpZHRoPSI1NDgiIGhlaWdodD0iMjczIi8+CiAgICA8L21hc2s+CiAgPC9kZWZzPgogIDxnIGNsYXNzPSJjbHMtMTkiPgogICAgPGcgY2xhc3M9ImNscy0xOCI+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTAiIGQ9Ik0yOTguNzIsMTAxaDI4Ljc2bDExLjM2LTE3LjY3LTMxLjA5LTQ4LjgzaC01MS4yNWw0Mi4yMiw2Ni41WiIvPgogICAgICA8cGF0aCBjbGFzcz0iY2xzLTEwIiBkPSJNMzU5LDI3M3YtNTkuNWwtMzksNTkuNWgzOVoiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy00IiBkPSJNMjgzLDI3M2gzN2wzOS01OS41aC00Mi42bC0zNS45Miw1NS42NiwyLjUyLDMuODRaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTAiIGQ9Ik0yODAuNDgsMjY5LjE2bDM1LjkyLTU1LjY2aC03Mi4zOWwzNi40Nyw1NS42NloiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy04IiBkPSJNMjA2LDI3M2g3MmwyLjQ4LTMuODQtMzYuNDctNTUuNjYtMzguMDEsNTkuNVoiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMzE2LjQsMjEzLjVoNDIuNmwtMjEuMTktMzMuMTctMjEuNDEsMzMuMTdaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTI3OCwyNzNoNWwtMi41Mi0zLjg0LTIuNDgsMy44NFoiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xMiIgZD0iTTMwMS41LDEyMy41bC01Ny40OSw5MGg3Mi4zOWwyMS40MS0zMy4xNy0zNi4zMS01Ni44M1oiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xMSIgZD0iTTM1OSwyMTMuNXYtNjZsLTIxLjE5LDMyLjgzLDIxLjE5LDMzLjE3WiIvPgogICAgICA8cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik0zNTksMTQ3LjV2LTI0aC01Ny41bDM2LjMxLDU2LjgzLDIxLjE5LTMyLjgzWiIvPgogICAgICA8cGF0aCBjbGFzcz0iY2xzLTE2IiBkPSJNMzU5LDEyMy41di04LjVsLTguOTEtMTRoLTIyLjYxbC0xNC40OCwyMi41aDQ2WiIvPgogICAgICA8cGF0aCBjbGFzcz0iY2xzLTE2IiBkPSJNMzM4Ljg0LDgzLjMzbC0xMS4zNiwxNy42N2gyMi42MWwtMTEuMjUtMTcuNjdaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTM1OSwxMDF2LTQ5bC0yMC4xNiwzMS4zMywxMS4yNSwxNy42N2g4LjkxWiIvPgogICAgICA8cGF0aCBjbGFzcz0iY2xzLTE0IiBkPSJNMzU5LDExNXYtMTRoLTguOTFsOC45MSwxNFoiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xNSIgZD0iTTM1OSw1MnYtMTcuNWgtNTEuMjVsMzEuMDksNDguODMsMjAuMTYtMzEuMzNaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTM1OSwzNC41VjBsLTUxLjI1LDM0LjVoNTEuMjVaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Ik0xNDEsMjczaDI5bC0xNC40NS0yMS43MS0xNC41NSwyMS43MVoiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xMyIgZD0iTTE3MCwyNzNoMzZsMzguMDEtNTkuNWgtNjMuMTFsLTI1LjM1LDM3Ljc5LDE0LjQ1LDIxLjcxWiIvPgogICAgICA8cGF0aCBjbGFzcz0iY2xzLTkiIGQ9Ik0xODEsMTIzLjVsLTU0LjQsODQuMjgsMy44LDUuNzJoNTAuNWwyOS4yMy00My42LTI5LjEzLTQ2LjRaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTE0MSwyNzNoLTU2LjVsNi05LjMtMzIuNDEtNTAuMkwwLDEyMy41aDE4MWwtNTQuNCw4NC4yOCwzLjgsNS43Mmg1MC41bC0yNS4zNSwzNy43OS0xNC41NSwyMS43MVpNMjEwLjEzLDE2OS45bC0yOS4xMy00Ni40aDEyMC41bC01Ny40OSw5MGgtNi41MWwtMjcuMzctNDMuNlpNMzI3LjQ4LDEwMWwtMTQuNDgsMjIuNS0xNC4yOC0yMi41LTQyLjIyLTY2LjVoNTEuMjVsMzEuMDksNDguODMtMTEuMzYsMTcuNjdaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtOSIgZD0iTTE4MC45LDIxMy41aDU2LjZsLTI3LjM3LTQzLjYtMjkuMjMsNDMuNloiLz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPg==); 10 | --deco2: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0iX+WbvuWxgl8xIiBkYXRhLW5hbWU9IuWbvuWxgiAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDM5LjUgMTMwIj4KICA8ZGVmcz4KICAgIDxzdHlsZT4KICAgICAgLmNscy0xIHsKICAgICAgICBmaWxsOiAjN2RjOGY0OwogICAgICB9CgogICAgICAuY2xzLTEsIC5jbHMtMiwgLmNscy0zLCAuY2xzLTQsIC5jbHMtNSwgLmNscy02LCAuY2xzLTcsIC5jbHMtOCwgLmNscy05LCAuY2xzLTEwLCAuY2xzLTExLCAuY2xzLTEyLCAuY2xzLTEzIHsKICAgICAgICBzdHJva2Utd2lkdGg6IDBweDsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjODNkMWZlOwogICAgICB9CgogICAgICAuY2xzLTMgewogICAgICAgIGZpbGw6ICM2OGIxZGY7CiAgICAgIH0KCiAgICAgIC5jbHMtNCB7CiAgICAgICAgZmlsbDogdXJsKCNf5pyq5ZG95ZCN55qE5riQ5Y+YXzIpOwogICAgICB9CgogICAgICAuY2xzLTUgewogICAgICAgIGZpbGw6ICM0MzhlYmE7CiAgICAgIH0KCiAgICAgIC5jbHMtNiB7CiAgICAgICAgZmlsbDogIzlhZDlmZjsKICAgICAgfQoKICAgICAgLmNscy03IHsKICAgICAgICBmaWxsOiAjNWVhYWQ0OwogICAgICB9CgogICAgICAuY2xzLTggewogICAgICAgIGZpbGw6ICM4NGNiZjk7CiAgICAgIH0KCiAgICAgIC5jbHMtMTQgewogICAgICAgIG9wYWNpdHk6IC42OwogICAgICB9CgogICAgICAuY2xzLTkgewogICAgICAgIGZpbGw6ICM3ZWM5ZjU7CiAgICAgIH0KCiAgICAgIC5jbHMtMTAgewogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5jbHMtMTUgewogICAgICAgIG1hc2s6IHVybCgjbWFzayk7CiAgICAgIH0KCiAgICAgIC5jbHMtMTEgewogICAgICAgIGZpbGw6ICMzOTgzYjA7CiAgICAgIH0KCiAgICAgIC5jbHMtMTIgewogICAgICAgIGZpbGw6ICM1NWEwY2M7CiAgICAgIH0KCiAgICAgIC5jbHMtMTMgewogICAgICAgIGZpbGw6ICNkZmYyZmY7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9Il/mnKrlkb3lkI3nmoTmuJDlj5hfMiIgZGF0YS1uYW1lPSLmnKrlkb3lkI3nmoTmuJDlj5ggMiIgeDE9IjAiIHkxPSI2NSIgeDI9IjQzOS41IiB5Mj0iNjUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZmIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iLjY4IiBzdG9wLWNvbG9yPSIjMjMxODE1Ii8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPG1hc2sgaWQ9Im1hc2siIHg9IjAiIHk9IjAiIHdpZHRoPSI0MzkuNSIgaGVpZ2h0PSIxMzAiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8cmVjdCBjbGFzcz0iY2xzLTQiIHdpZHRoPSI0MzkuNSIgaGVpZ2h0PSIxMzAiLz4KICAgIDwvbWFzaz4KICA8L2RlZnM+CiAgPGcgY2xhc3M9ImNscy0xNSI+CiAgICA8ZyBjbGFzcz0iY2xzLTE0Ij4KICAgICAgPHBhdGggY2xhc3M9ImNscy01IiBkPSJNMCwwdjQ1aDYxLjc5TDM0LDBIMFoiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xMiIgZD0iTTAsNDV2ODVMNjEuNzksNDVIMFoiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy03IiBkPSJNNjEuNzksNDVMMCwxMzBoMTAuNWw2MS04NWgtOS43MVoiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy05IiBkPSJNNzEuNSw0NUwxMC41LDEzMGgxMjEuNWwtNjAuNS04NVoiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xIiBkPSJNOTQuNSwwaC02MC41bDI3Ljc5LDQ1TDk0LjUsMFoiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy02IiBkPSJNMjAxLDBoLTEwNi41bC0zMi43MSw0NWgxNjkuMTVMMjAxLDBaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTIxMy41LDEzMGwzNy41My01NC44MS0yMC4wOC0zMC4xOUg3MS41bDYwLjUsODVoODEuNVoiLz4KICAgICAgPHBhdGggY2xhc3M9ImNscy0xMyIgZD0iTTMwMi41LDBoLTEwMS41bDI5Ljk0LDQ1aDQwLjc1TDMwMi41LDBaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTIzMC45NCw0NWwyMC4wOCwzMC4xOSwyMC42Ni0zMC4xOWgtNDAuNzVaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Ik0yMTMuNSwxMzBoNzRsLTM2LjQ3LTU0LjgxLTM3LjUzLDU0LjgxWiIvPgogICAgICA8cGF0aCBjbGFzcz0iY2xzLTExIiBkPSJNMjg3LjUsMTMwaDI0LjVsNjEuMTQtODVoLTEwMS40NGwtMjAuNjYsMzAuMTksMzYuNDcsNTQuODFaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtOCIgZD0iTTQzOS41LDEzMGwtNjYuMzYtODUtNjEuMTQsODVoMTI3LjVaIi8+CiAgICAgIDxwYXRoIGNsYXNzPSJjbHMtMTAiIGQ9Ik0zMzgsMGgtMzUuNWwtMzAuODEsNDVoMTAxLjQ0TDMzOCwwWiIvPgogICAgPC9nPgogIDwvZz4KPC9zdmc+); 11 | } 12 | 13 | body { 14 | background-color: #fff; 15 | overflow: hidden; 16 | font-family: BlueakaBeta2GBK, Inter, '-apple-system', BlinkMacSystemFont, 'PingFang SC', 17 | 'Hiragino Sans GB', 'noto sans', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, 18 | sans-serif !important; 19 | } 20 | 21 | a { 22 | text-decoration: unset; 23 | color: unset; 24 | } 25 | 26 | #app { 27 | width: 100vw; 28 | height: 100vh; 29 | display: flex; 30 | flex-direction: column; 31 | } 32 | 33 | @media only screen and (max-width: 400px) { 34 | .arco-page-header-wrapper .arco-page-header-header { 35 | justify-content: center; 36 | } 37 | } 38 | 39 | .arco-page-header-main .arco-page-header-title { 40 | white-space: normal; 41 | text-align: center; 42 | } 43 | 44 | .arco-modal-footer, 45 | .arco-modal-body { 46 | text-align: center !important; 47 | } 48 | 49 | .arco-modal { 50 | width: auto !important; 51 | } 52 | 53 | .arco-modal-header .arco-modal-title { 54 | height: 100%; 55 | width: auto; 56 | position: relative; 57 | flex: unset !important; 58 | font-size: 20px; 59 | color: #003153; 60 | } 61 | 62 | .arco-modal-header .arco-modal-title:after { 63 | content: ''; 64 | position: absolute; 65 | width: 100%; 66 | height: 5px; 67 | background: #ffe433; 68 | bottom: 0; 69 | } 70 | 71 | .arco-modal-header { 72 | justify-content: center; 73 | } 74 | 75 | .arco-modal-close-btn { 76 | right: 15px; 77 | position: absolute; 78 | } 79 | 80 | .arco-btn { 81 | transform: skewX(-10deg); 82 | border-radius: 4px !important; 83 | } 84 | 85 | .arco-modal-body { 86 | padding: 75px 100px !important; 87 | font-size: 16px !important; 88 | max-width: 240px; 89 | 90 | background-size: contain; 91 | background: #f0f0f0 var(--deco1) no-repeat right !important; 92 | border-radius: 0 0 var(--border-radius-large) var(--border-radius-large) !important; 93 | } 94 | 95 | .arco-modal-header { 96 | background-color: #f1f2f4; 97 | background-image: var(--deco2); 98 | border-radius: var(--border-radius-large) var(--border-radius-large) 0 0; 99 | background-repeat: no-repeat; 100 | background-position: left; 101 | background-size: contain; 102 | } 103 | 104 | .arco-modal-footer { 105 | background: #f0f0f0; 106 | border-radius: 0 0 var(--border-radius-large) var(--border-radius-large); 107 | border-top: unset !important; 108 | padding: 24px 32px !important; 109 | } 110 | 111 | .arco-btn-secondary { 112 | background: #daeef5 !important; 113 | color: #003153 !important; 114 | filter: drop-shadow(0px 1px 2px #0004); 115 | padding: 20px 40px !important; 116 | font-size: 18px !important; 117 | transition: transform 0.1s !important; 118 | } 119 | 120 | .arco-btn-primary { 121 | background: #77deff !important; 122 | color: #003153 !important; 123 | filter: drop-shadow(0px 1px 2px #0004); 124 | padding: 20px 40px !important; 125 | font-size: 18px !important; 126 | transition: transform 0.1s !important; 127 | } 128 | 129 | .arco-btn-primary:active, 130 | .arco-btn-secondary:active { 131 | transform: scale(0.9) skewX(-10deg); 132 | } 133 | 134 | .arco-modal { 135 | border-radius: var(--border-radius-large) !important; 136 | } 137 | 138 | .arco-modal-header .arco-icon { 139 | font-size: 30px; 140 | vertical-align: -8px !important; 141 | transition: transform 0.1s !important; 142 | } 143 | 144 | .arco-modal-header .arco-icon:active { 145 | transform: scale(0.9); 146 | } 147 | 148 | #curtain { 149 | position: absolute; 150 | top: 0; 151 | left: 0; 152 | z-index: 9998; 153 | width: 100%; 154 | height: 100%; 155 | animation-name: example; 156 | animation-duration: 3s; 157 | display: none; 158 | } 159 | 160 | @keyframes example { 161 | 0% { 162 | background-color: transparent; 163 | } 164 | 25% { 165 | background-color: #000; 166 | } 167 | 50% { 168 | background-color: #000; 169 | } 170 | 75% { 171 | background-color: #000; 172 | } 173 | 100% { 174 | background-color: transparent; 175 | } 176 | } 177 | 178 | .zoom-modal-enter-from,.zoom-modal-appear-from { 179 | transform: scale(1) translateY(100%)!important; 180 | opacity: 0 181 | 182 | } 183 | 184 | .zoom-modal-enter-to,.zoom-modal-appear-to { 185 | transform: scale(1) translateY(0); 186 | opacity: 1 187 | } 188 | 189 | .zoom-modal-enter-active,.zoom-modal-appear-active { 190 | transition: opacity .4s cubic-bezier(.3,1.3,.3,1),transform .4s cubic-bezier(.3,1,.3,1) !important; 191 | } 192 | 193 | #background canvas { 194 | height: max(100vh, 100vw * (1440 / 2560)); 195 | width: max(100vh / (1440 / 2560), 100vw); 196 | } -------------------------------------------------------------------------------- /src/components/Background.vue: -------------------------------------------------------------------------------- 1 | 43 | 44 | 50 | 51 | 99 | -------------------------------------------------------------------------------- /src/components/Banner.vue: -------------------------------------------------------------------------------- 1 | 111 | 112 | 119 | 120 | 154 | 155 | 187 | -------------------------------------------------------------------------------- /src/components/Contact.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 23 | 24 | 85 | -------------------------------------------------------------------------------- /src/components/Cursor.vue: -------------------------------------------------------------------------------- 1 | 74 | 75 | 86 | 87 | 164 | 165 | 213 | -------------------------------------------------------------------------------- /src/components/Footer.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 40 | 41 | 192 | -------------------------------------------------------------------------------- /src/components/Level.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 34 | 35 | 152 | -------------------------------------------------------------------------------- /src/components/Loading.vue: -------------------------------------------------------------------------------- 1 | 33 | 34 | 53 | 54 | 133 | -------------------------------------------------------------------------------- /src/components/Task.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 51 | 52 | 173 | -------------------------------------------------------------------------------- /src/components/Toolbox.vue: -------------------------------------------------------------------------------- 1 | 71 | 72 | 128 | 129 | 208 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import './assets/index.css' 2 | import '@arco-design/web-vue/dist/arco.css' 3 | 4 | import { createApp } from 'vue' 5 | import { Modal } from '@arco-design/web-vue' 6 | import ArcoVue from '@arco-design/web-vue' 7 | import ArcoVueIcon from '@arco-design/web-vue/es/icon' 8 | import App from './App.vue' 9 | import { registerSW } from 'virtual:pwa-register' 10 | 11 | import { css } from './assets/font/BlueakaBeta2GBK-DemiBold.ttf' 12 | import { css as css2 } from './assets/font/BlueakaBeta2GBK-Bold.ttf' 13 | // console.log(css.family, css.weight); 14 | // console.log(css2.family, css2.weight); 15 | 16 | const app = createApp(App) 17 | app.use(ArcoVue) 18 | app.use(ArcoVueIcon) 19 | 20 | app.mount('#app') 21 | 22 | if ('serviceWorker' in navigator) { 23 | const updateSW = registerSW({ 24 | onNeedRefresh() { 25 | Modal.open({ 26 | title: '通知', 27 | content: '老师,站点已更新,刷新即可访问最新内容!', 28 | onOk: () => { 29 | updateSW(true) 30 | } 31 | }) 32 | } 33 | }) 34 | } 35 | 36 | window.l2d_complete = false 37 | 38 | setInterval(() => { 39 | document.querySelectorAll('a[href]:not(.tag)').forEach((link) => { 40 | link.classList.add('tag') 41 | link.addEventListener('click', async (e) => { 42 | const url = link.getAttribute('href') 43 | e.preventDefault() 44 | document.querySelector('#curtain').style.display = 'block' 45 | setTimeout(() => { 46 | let a = document.createElement('a') 47 | a.href = url 48 | a.target = '_blank' 49 | a.click() 50 | }, 900) 51 | setTimeout(() => (document.querySelector('#curtain').style.display = ''), 3000) 52 | }) 53 | }) 54 | }, 1000) 55 | 56 | import * as PIXI from 'pixi.js' 57 | 58 | // 这里是学生的l2d载入位置,想要修改自己喜欢的学生可以改这里 59 | const hina_swimsuit = '/l2d/hina_swimsuit/CH0063_home' 60 | const aris = '/l2d/aris/Aris_home' 61 | /* 62 | * students 是学生l2d的位置 63 | * l2dBGM 是学生背景音乐的位置 64 | * */ 65 | export const students = [hina_swimsuit, aris] 66 | /*——————————————————————————————————————————————————*/ 67 | 68 | // 加载大厅L2D文件 69 | ;(async function () { 70 | let a = 0 71 | for (let i of students) { 72 | PIXI.Assets.add({ alias: 'skeleton' + a, src: `${i}.skel` }) 73 | PIXI.Assets.add({ alias: 'atlas' + a, src: `${i}.atlas` }) 74 | await PIXI.Assets.load(['skeleton' + a, 'atlas' + a]) 75 | a++ 76 | } 77 | window.l2d_complete = true 78 | })() 79 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { fileURLToPath, URL } from 'node:url' 2 | 3 | import { load } from 'js-yaml' 4 | import fs from 'fs' 5 | const config = load(fs.readFileSync('_config.yaml', 'utf8')) 6 | 7 | import { defineConfig } from 'vite' 8 | import vue from '@vitejs/plugin-vue' 9 | import vueJsx from '@vitejs/plugin-vue-jsx' 10 | import viteCompression from 'vite-plugin-compression' 11 | import viteImagemin from 'vite-plugin-imagemin' 12 | import { VitePWA } from 'vite-plugin-pwa' 13 | import { createHtmlPlugin } from 'vite-plugin-html' 14 | import Font from 'vite-plugin-font' 15 | import yaml from '@rollup/plugin-yaml' 16 | 17 | // https://vitejs.dev/config/ 18 | export default defineConfig({ 19 | build: { 20 | assetsInlineLimit: 0, 21 | minify: 'esbuild', 22 | chunkSizeWarningLimit: 500, 23 | rollupOptions: { 24 | output: { 25 | manualChunks(id) { 26 | if (id.includes('node_modules')) { 27 | return id.toString().split('node_modules/')[1].split('/')[0].toString() 28 | } 29 | } 30 | } 31 | } 32 | }, 33 | plugins: [ 34 | vue(), 35 | vueJsx(), 36 | Font.vite({ 37 | css: { 38 | fontFamily: 'BlueakaBeta2GBK' 39 | } 40 | }), 41 | createHtmlPlugin({ 42 | inject: { 43 | data: { 44 | title: config.title, 45 | favicon: config.favicon, 46 | themeColor: config.manifest.theme_color, 47 | description: config.description, 48 | keywords: config.keywords 49 | } 50 | } 51 | }), 52 | viteImagemin({ 53 | gifsicle: { 54 | optimizationLevel: 7, 55 | interlaced: false 56 | }, 57 | optipng: { 58 | optimizationLevel: 3 59 | }, 60 | mozjpeg: { 61 | quality: 50 62 | }, 63 | pngquant: { 64 | quality: [0.9, 1], 65 | speed: 4 66 | }, 67 | svgo: { 68 | plugins: [ 69 | { 70 | name: 'removeViewBox' 71 | }, 72 | { 73 | name: 'removeEmptyAttrs', 74 | active: false 75 | } 76 | ] 77 | } 78 | }), 79 | VitePWA({ 80 | mode: 'production', 81 | base: '/', 82 | registerType: 'prompt', 83 | injectRegister: 'auto', 84 | workbox: { 85 | runtimeCaching: [ 86 | { 87 | urlPattern: /.*/i, 88 | handler: 'CacheFirst', 89 | options: { 90 | cacheName: 'ba-cache', 91 | expiration: { 92 | maxEntries: 10, 93 | maxAgeSeconds: 60 * 60 * 24 * 30 94 | }, 95 | cacheableResponse: { 96 | statuses: [0, 200] 97 | } 98 | } 99 | } 100 | ] 101 | }, 102 | manifest: config.manifest 103 | }), 104 | viteCompression({ 105 | threshold: 10240 // the unit is Bytes 106 | }), 107 | yaml() 108 | ], 109 | resolve: { 110 | alias: { 111 | '@': fileURLToPath(new URL('./src', import.meta.url)) 112 | } 113 | } 114 | }) 115 | --------------------------------------------------------------------------------