From 822412d494d79c8ea13fc4c1c5ca6f33fa51de5b Mon Sep 17 00:00:00 2001 From: masquevil Date: Sun, 26 May 2024 19:25:24 +0800 Subject: [PATCH] =?UTF-8?q?[coc-card]=20=E6=96=B0=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=9A=E9=9A=8F=E6=9C=BA=E8=A7=92=E8=89=B2=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/coc-card/components/SkillTable.vue | 1 - .../rand-name/RandNameButton.vue | 53 ++ .../rand-name/RandNameOption.vue | 47 ++ .../rand-name/RandNameRow.vue | 74 +++ src/pages/coc-card/constants/name.ts | 553 ++++++++++++++++++ src/pages/coc-card/models/name.ts | 132 +++++ .../coc-card/sections/InvestigatorSection.vue | 22 +- src/pages/coc-card/types/name.ts | 1 + src/pages/coc-card/utils/index.ts | 17 + src/types/51la/id_feature.ts | 1 + 10 files changed, 895 insertions(+), 6 deletions(-) create mode 100644 src/pages/coc-card/components/control-section-parts/rand-name/RandNameButton.vue create mode 100644 src/pages/coc-card/components/control-section-parts/rand-name/RandNameOption.vue create mode 100644 src/pages/coc-card/components/control-section-parts/rand-name/RandNameRow.vue create mode 100644 src/pages/coc-card/constants/name.ts create mode 100644 src/pages/coc-card/models/name.ts create mode 100644 src/pages/coc-card/types/name.ts diff --git a/src/pages/coc-card/components/SkillTable.vue b/src/pages/coc-card/components/SkillTable.vue index b4d82b6..92796fb 100644 --- a/src/pages/coc-card/components/SkillTable.vue +++ b/src/pages/coc-card/components/SkillTable.vue @@ -131,7 +131,6 @@ function getTableData(data: SkillGroups, suggestion?: Suggestion) { } const tableData = computed(() => getTableData(props.data, props.suggestion)); -console.log('xxx tableData', tableData); function findSkillPoints(skillInfo: COCPCSkill) { if (!pc) return; diff --git a/src/pages/coc-card/components/control-section-parts/rand-name/RandNameButton.vue b/src/pages/coc-card/components/control-section-parts/rand-name/RandNameButton.vue new file mode 100644 index 0000000..33e450f --- /dev/null +++ b/src/pages/coc-card/components/control-section-parts/rand-name/RandNameButton.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/src/pages/coc-card/components/control-section-parts/rand-name/RandNameOption.vue b/src/pages/coc-card/components/control-section-parts/rand-name/RandNameOption.vue new file mode 100644 index 0000000..db8f221 --- /dev/null +++ b/src/pages/coc-card/components/control-section-parts/rand-name/RandNameOption.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/src/pages/coc-card/components/control-section-parts/rand-name/RandNameRow.vue b/src/pages/coc-card/components/control-section-parts/rand-name/RandNameRow.vue new file mode 100644 index 0000000..84bb0d6 --- /dev/null +++ b/src/pages/coc-card/components/control-section-parts/rand-name/RandNameRow.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/src/pages/coc-card/constants/name.ts b/src/pages/coc-card/constants/name.ts new file mode 100644 index 0000000..603dc12 --- /dev/null +++ b/src/pages/coc-card/constants/name.ts @@ -0,0 +1,553 @@ +// 英文名数据源,包括姓氏、男性名、女性名 +export const namesEnSources = { + lastNames: [ + ['史密斯', 'Smith'], + ['约翰逊', 'Johnson'], + ['威廉姆斯', 'Williams'], + ['布朗', 'Brown'], + ['琼斯', 'Jones'], + ['米勒', 'Miller'], + ['戴维斯', 'Davis'], + ['加西亚', 'Garcia'], + ['罗德里格斯', 'Rodriguez'], + ['威尔逊', 'Wilson'], + ['安德森', 'Anderson'], + ['赫南德斯', 'Hernandez'], + ['摩尔', 'Moore'], + ['马丁内斯', 'Martinez'], + ['泰勒', 'Taylor'], + ['马丁', 'Martin'], + ['李', 'Lee'], + ['佩雷斯', 'Perez'], + ['汤普森', 'Thompson'], + ['白', 'White'], + ['洛佩兹', 'Lopez'], + ['罗宾逊', 'Robinson'], + ['克拉克', 'Clark'], + ['刘易斯', 'Lewis'], + ['沃克', 'Walker'], + ['霍尔', 'Hall'], + ['杨', 'Young'], + ['桑切斯', 'Sanchez'], + ['王', 'Wang'], + ['斯科特', 'Scott'], + ['格林', 'Green'], + ['亚当斯', 'Adams'], + ['贝利', 'Bailey'], + ['贝尔', 'Bell'], + ['考克斯', 'Cox'], + ['沃德', 'Ward'], + ['卡特', 'Carter'], + ['巴恩斯', 'Barnes'], + ['罗杰斯', 'Rogers'], + ['里德', 'Reed'], + ['库克', 'Cook'], + ['摩根', 'Morgan'], + ['彼得森', 'Peterson'], + ['科林斯', 'Collins'], + ['爱德华兹', 'Edwards'], + ['弗洛雷斯', 'Flores'], + ['莫里斯', 'Morris'], + ['冈萨雷斯', 'Gonzalez'], + ['纳尔逊', 'Nelson'], + ['穆雷', 'Murray'], + ['佩里', 'Perry'], + ['鲍威尔', 'Powell'], + ['罗素', 'Russell'], + ['沃森', 'Watson'], + ['索托', 'Soto'], + ['亨德森', 'Henderson'], + ['斯宾塞', 'Spencer'], + ['奥尔蒂斯', 'Ortiz'], + ['卡斯特罗', 'Castro'], + ['帕特森', 'Patterson'], + ['哈里斯', 'Harris'], + ['桑德斯', 'Sanders'], + ['哈里森', 'Harrison'], + ['格雷厄姆', 'Graham'], + ['弗格森', 'Ferguson'], + ['拉米雷斯', 'Ramirez'], + ['韦伯', 'Webb'], + ['奥尔森', 'Olson'], + ['斯图尔特', 'Stewart'], + ['华盛顿', 'Washington'], + ['威尔斯', 'Wells'], + ['巴特勒', 'Butler'], + ['辛普森', 'Simpson'], + ['雷诺兹', 'Reynolds'], + ['费雪', 'Fisher'], + ['亚历山大', 'Alexander'], + ['布莱克', 'Black'], + ['霍夫曼', 'Hoffman'], + ['阿尔瓦雷斯', 'Alvarez'], + ['格雷', 'Gray'], + ['詹金斯', 'Jenkins'], + ['菲利普斯', 'Phillips'], + ['埃文斯', 'Evans'], + ['科尔曼', 'Coleman'], + ['钱德勒', 'Chandler'], + ['康纳', 'Connor'], + ], + maleNames: [ + ['詹姆斯', 'James'], + ['约翰', 'John'], + ['罗伯特', 'Robert'], + ['约瑟夫', 'Joseph'], + ['乔治', 'George'], + ['查尔斯', 'Charles'], + ['弗兰克', 'Frank'], + ['爱德华', 'Edward'], + ['亨利', 'Henry'], + ['托马斯', 'Thomas'], + ['威廉', 'William'], + ['弗雷德', 'Fred'], + ['哈罗德', 'Harold'], + ['艾尔伯特', 'Albert'], + ['路易斯', 'Louis'], + ['杰克', 'Jack'], + ['克拉伦斯', 'Clarence'], + ['阿瑟', 'Arthur'], + ['雷蒙德', 'Raymond'], + ['卡尔', 'Carl'], + ['乔', 'Joe'], + ['理查德', 'Richard'], + ['赫伯特', 'Herbert'], + ['塞缪尔', 'Samuel'], + ['罗伊', 'Roy'], + ['哈里', 'Harry'], + ['韦恩', 'Wayne'], + ['埃迪', 'Eddie'], + ['唐纳德', 'Donald'], + ['沃尔特', 'Walter'], + ['维克多', 'Victor'], + ['威廉姆', 'Willie'], + ['伯纳德', 'Bernard'], + ['朱利叶斯', 'Julius'], + ['诺曼', 'Norman'], + ['欧文', 'Owen'], + ['马文', 'Marvin'], + ['梅尔文', 'Melvin'], + ['迈克尔', 'Michael'], + ['阿尔弗雷德', 'Alfred'], + ['卢瑟', 'Luther'], + ['霍华德', 'Howard'], + ['莱昂纳德', 'Leonard'], + ['菲利普', 'Philip'], + ['拉尔夫', 'Ralph'], + ['马库斯', 'Marcus'], + ['莱斯特', 'Lester'], + ['艾伦', 'Allen'], + ['弗洛伊德', 'Floyd'], + ['莱昂', 'Leon'], + ['哈维', 'Harvey'], + ['米尔顿', 'Milton'], + ['克莱德', 'Clyde'], + ['厄尔', 'Earl'], + ['格伦', 'Glenn'], + ['维恩', 'Vern'], + ['阿伦', 'Alvin'], + ['珀西', 'Percy'], + ['弗农', 'Vernon'], + ['罗斯', 'Ross'], + ['埃米尔', 'Emil'], + ['奥托', 'Otto'], + ['杰西', 'Jessie'], + ['马修', 'Matthew'], + ['吉恩', 'Gene'], + ['埃德温', 'Edwin'], + ['莫里斯', 'Maurice'], + ['威尔伯', 'Wilbur'], + ['比尔', 'Bill'], + ['奥维尔', 'Orville'], + ['阿诺德', 'Arnold'], + ['莱斯利', 'Leslie'], + ['厄尔文', 'Irving'], + ['威尔弗雷德', 'Wilfred'], + ['纳撒尼尔', 'Nathaniel'], + ['斯特林', 'Sterling'], + ['罗兰', 'Roland'], + ['埃尔默', 'Elmer'], + ['汤姆', 'Tom'], + ['欧内斯特', 'Ernest'], + ['卢卡斯', 'Lucas'], + ['鲍勃', 'Bob'], + ['诺亚', 'Noah'], + ['阿贝尔', 'Abel'], + ['卡梅伦', 'Cameron'], + ['布鲁斯', 'Bruce'], + ['卡洛斯', 'Carlos'], + ['克里斯', 'Chris'], + ['科林', 'Colin'], + ['达里尔', 'Daryl'], + ['德怀特', 'Dwight'], + ['埃利奥特', 'Elliott'], + ['埃里克', 'Eric'], + ['弗朗西斯', 'Francis'], + ['加里', 'Gary'], + ['格雷格', 'Greg'], + ['伊桑', 'Ethan'], + ['杰里米', 'Jeremy'], + ], + femaleNames: [ + ['玛丽', 'Mary'], + ['伊丽莎白', 'Elizabeth'], + ['露丝', 'Ruth'], + ['玛格丽特', 'Margaret'], + ['多萝西', 'Dorothy'], + ['艾琳', 'Eileen'], + ['汉娜', 'Hannah'], + ['艾玛', 'Emma'], + ['弗洛伦斯', 'Florence'], + ['格蕾丝', 'Grace'], + ['埃塞尔', 'Ethel'], + ['露易丝', 'Louise'], + ['贝蒂', 'Betty'], + ['爱丽丝', 'Alice'], + ['艾达', 'Ada'], + ['梅布尔', 'Mabel'], + ['艾米莉', 'Emily'], + ['露西', 'Lucy'], + ['埃德娜', 'Edna'], + ['罗丝', 'Rose'], + ['珍妮', 'Jenny'], + ['朱莉娅', 'Julia'], + ['卡罗琳', 'Caroline'], + ['艾米', 'Amy'], + ['艾琳', 'Irene'], + ['约瑟芬', 'Josephine'], + ['玛莎', 'Martha'], + ['苏珊', 'Susan'], + ['贝拉', 'Bella'], + ['伊莎贝尔', 'Isabel'], + ['玛格丽塔', 'Margarita'], + ['米尔德里德', 'Mildred'], + ['露西尔', 'Lucille'], + ['埃斯特尔', 'Esther'], + ['凯瑟琳', 'Catherine'], + ['维奥拉', 'Viola'], + ['伊娃', 'Eva'], + ['诺拉', 'Nora'], + ['莉莉安', 'Lillian'], + ['玛丽安', 'Marian'], + ['詹妮特', 'Janet'], + ['玛吉', 'Maggie'], + ['康斯坦丝', 'Constance'], + ['珍', 'Jean'], + ['埃莉诺', 'Elinor'], + ['梅', 'Mae'], + ['埃塞尔琳', 'Ethelyn'], + ['埃尔西', 'Elsie'], + ['埃塔', 'Etta'], + ['欧金妮亚', 'Eugenia'], + ['伊芙琳', 'Evelyn'], + ['伊芙', 'Eve'], + ['伊冯娜', 'Evonne'], + ['费丝', 'Faith'], + ['芬妮', 'Fanny'], + ['费伊', 'Fay'], + ['费叶', 'Faye'], + ['费利西亚', 'Felicia'], + ['费恩', 'Fern'], + ['弗洛拉', 'Flora'], + ['弗朗希思', 'Frances'], + ['弗雷达', 'Freda'], + ['弗里达', 'Frieda'], + ['加布里埃尔', 'Gabrielle'], + ['盖尔', 'Gail'], + ['格特鲁德', 'Gertrude'], + ['格拉迪斯', 'Gladys'], + ['格温多琳', 'Gwendolyn'], + ['海泽尔', 'Hazel'], + ['海伦娜', 'Helena'], + ['希尔达', 'Hilda'], + ['胡尔达', 'Hulda'], + ['艾达', 'Ida'], + ['伊拉', 'Ila'], + ['伊琳', 'Ilene'], + ['伊莫金', 'Imogene'], + ['伊内兹', 'Inez'], + ['伊尔玛', 'Irma'], + ['艾娃', 'Iva'], + ['艾薇', 'Ivy'], + ['贾尼斯', 'Janice'], + ['珍妮特', 'Jeanette'], + ['洁茜', 'Jessie'], + ['琼', 'Joan'], + ['朱恩', 'June'], + ['凯特', 'Kate'], + ['莱拉', 'Lela'], + ['莉娜', 'Lena'], + ['米妮', 'Minnie'], + ], +}; + +// 中文名数据源,包括姓氏、男性名(单字和双字)、女性名(单字和双字)、一些固定组合名 +export const namesZhSources = { + lastNames: ` + 赵 钱 孙 李 周 吴 郑 王 冯 陈 褚 卫 蒋 沈 韩 杨 朱 秦 尤 许 何 吕 施 张 + 孔 曹 严 华 金 魏 陶 姜 戚 谢 邹 喻 柏 水 窦 章 云 苏 潘 葛 奚 范 彭 郎 + 鲁 韦 昌 马 苗 凤 花 方 俞 任 袁 柳 酆 鲍 史 唐 费 廉 岑 薛 雷 贺 倪 汤 + 滕 殷 罗 毕 郝 邬 安 常 乐 于 时 傅 皮 卞 齐 康 伍 余 元 卜 顾 孟 平 黄 + 和 穆 萧 尹 姚 邵 湛 汪 祁 毛 禹 狄 米 贝 明 臧 计 伏 成 戴 谈 宋 茅 庞 + 熊 纪 舒 屈 项 祝 董 梁 杜 阮 蓝 闵 席 季 麻 强 贾 路 娄 危 江 童 颜 郭 + 梅 盛 林 刁 锺 徐 邱 骆 高 夏 蔡 田 樊 胡 凌 霍 虞 万 支 柯 昝 管 卢 莫 + 经 房 裘 缪 干 解 应 宗 丁 宣 贲 邓 郁 单 杭 洪 包 诸 左 石 崔 吉 钮 龚 + 程 嵇 邢 滑 裴 陆 荣 翁 荀 羊 於 惠 甄 麴 家 封 芮 羿 储 靳 汲 邴 糜 松 + 井 段 富 巫 乌 焦 巴 弓 牧 隗 山 谷 车 侯 宓 蓬 全 郗 班 仰 秋 仲 伊 宫 + 宁 仇 栾 暴 甘 钭 历 戎 祖 武 符 刘 景 詹 束 龙 叶 幸 司 韶 郜 黎 蓟 溥 + 印 宿 白 怀 蒲 邰 从 鄂 索 咸 籍 赖 卓 蔺 屠 蒙 池 乔 阳 郁 胥 能 苍 双 + 闻 莘 党 翟 谭 贡 劳 逄 姬 申 扶 堵 冉 宰 郦 雍 却 璩 桑 桂 濮 牛 寿 通 + 边 扈 燕 冀 僪 浦 尚 农 温 别 庄 晏 柴 瞿 阎 充 慕 连 茹 习 宦 艾 鱼 容 + 向 古 易 慎 戈 廖 庾 终 暨 居 衡 步 都 耿 满 弘 匡 国 文 寇 广 禄 阙 东 + 欧 殳 沃 利 蔚 越 夔 隆 师 巩 厍 聂 晁 勾 敖 融 冷 訾 辛 阚 那 简 饶 空 + 曾 毋 沙 乜 养 鞠 须 丰 巢 关 蒯 相 查 后 荆 红 游 竺 权 逮 盍 益 桓 公 + 万俟 司马 上官 欧阳 夏侯 诸葛 闻人 东方 赫连 皇甫 尉迟 公羊 + 澹台 公冶 宗政 濮阳 淳于 单于 太叔 申屠 公孙 仲孙 轩辕 令狐 + 钟离 宇文 长孙 慕容 司徒 司空 召 有 舜 叶赫那拉 丛 岳 + 寸 贰 皇 侨 彤 竭 端 赫 实 甫 集 象 翠 狂 辟 典 良 函 芒 苦 其 京 中 夕 + 之 章佳 那拉 冠 宾 香 果 依尔根觉罗 依尔觉罗 萨嘛喇 赫舍里 额尔德特 + 萨克达 钮祜禄 他塔喇 喜塔腊 讷殷富察 叶赫那兰 库雅喇 瓜尔佳 舒穆禄 爱新觉罗 索绰络 纳喇 + 乌雅 范姜 碧鲁 张廖 张简 图门 太史 公叔 乌孙 完颜 马佳 佟佳 + 富察 费莫 蹇 称 诺 来 多 繁 戊 朴 回 毓 税 荤 靖 绪 愈 硕 牢 买 但 巧 枚 撒 + 泰 秘 亥 绍 以 壬 森 斋 释 奕 姒 朋 求 羽 用 占 真 穰 翦 闾 漆 贵 代 贯 + 旁 崇 栋 告 休 褒 谏 锐 皋 闳 在 歧 禾 示 是 委 钊 频 嬴 呼 大 威 昂 律 + 冒 保 系 抄 定 化 莱 校 么 抗 祢 綦 悟 宏 功 庚 务 敏 捷 拱 兆 丑 丙 畅 + 苟 随 类 卯 俟 友 答 乙 允 甲 留 尾 佼 玄 乘 裔 延 植 环 矫 赛 昔 侍 度 + 旷 遇 偶 前 由 咎 塞 敛 受 泷 袭 衅 叔 圣 御 夫 仆 镇 藩 邸 府 掌 首 员 + 焉 戏 可 智 尔 凭 悉 进 笃 厚 仁 业 肇 资 合 仍 九 衷 哀 刑 俎 仵 圭 夷 + 徭 蛮 汗 孛 乾 帖 罕 洛 淦 洋 邶 郸 郯 邗 邛 剑 虢 隋 蒿 茆 菅 苌 树 桐 + 锁 钟 机 盘 铎 斛 玉 线 针 箕 庹 绳 磨 蒉 瓮 弭 刀 疏 牵 浑 恽 势 世 仝 + 同 蚁 止 戢 睢 冼 种 涂 肖 己 泣 潜 卷 脱 谬 蹉 赧 浮 顿 说 次 错 念 夙 + 斯 完 丹 表 聊 源 姓 吾 寻 展 出 不 户 闭 才 无 书 学 愚 本 性 雪 霜 烟 + 寒 少 字 桥 板 斐 独 千 诗 嘉 扬 善 揭 祈 析 赤 紫 青 柔 刚 奇 拜 佛 陀 + 弥 阿 素 长 僧 隐 仙 隽 宇 祭 酒 淡 塔 琦 闪 始 星 南 天 接 波 碧 速 禚 + 腾 潮 镜 似 澄 潭 謇 纵 渠 奈 风 春 濯 沐 茂 英 兰 檀 藤 枝 检 生 折 登 + 驹 骑 貊 虎 肥 鹿 雀 野 禽 飞 节 宜 鲜 粟 栗 豆 帛 官 布 衣 藏 宝 钞 银 + 门 盈 庆 喜 及 普 建 营 巨 望 希 道 载 声 漫 犁 力 贸 勤 革 改 兴 亓 睦 + 修 信 闽 北 守 坚 勇 汉 练 尉 士 旅 五 令 将 旗 军 行 奉 敬 恭 仪 母 堂 + 丘 义 礼 慈 孝 理 伦 卿 问 永 辉 位 让 尧 依 犹 介 承 市 所 苑 杞 剧 第 + 零 谌 招 续 达 忻 六 鄞 战 迟 候 宛 励 粘 萨 邝 覃 辜 初 楼 城 区 局 台 + 原 考 妫 纳 泉 老 清 德 卑 过 麦 曲 竹 百 福 言 第五 佟 爱 年 笪 谯 哈 墨 + 南宫 赏 伯 佴 佘 牟 商 西门 东门 左丘 梁丘 琴 + 后 况 亢 缑 帅 微生 羊舌 海 归 呼延 南门 东郭 + 百里 钦 鄢 汝 法 闫 楚 晋 谷梁 宰父 夹谷 拓跋 + 壤驷 乐正 漆雕 公西 巫马 端木 颛孙 子车 督 仉 司寇 亓官 + 鲜于 锺离 盖 逯 库 郏 逢 阴 薄 厉 稽 闾丘 + 公良 段干 开 光 操 瑞 眭 泥 运 摩 伟 铁 迮 + ` + .trim() + .split(/\s+/) + .sort((a, b) => a.length - b.length), + maleNames1: ` + 杰 强 伟 刚 勇 明 亮 辉 浩 波 洋 涛 瀚 宇 翔 飞 鹏 程 + 远 航 林 森 松 柏 峰 岩 石 磊 瑞 祥 龙 虎 彪 骏 轩 昂 + 博 睿 雄 帅 斌 昊 泽 德 荣 俊 志 琪 奇 鸿 宏 华 东 光 + 辰 丰 栋 昌 朋 坚 智 聪 正 诚 永 联 瑜 雷 威 敏 乐 信 + 佳 晋 育 立 学 豪 仁 友 三 四 五 六 八 百 万 京 令 仔 + 仲 仰 + ` + .trim() + .split(/\s+/), + maleNames2: [ + '晓峰', + '俊豪', + '志伟', + '明轩', + '天宇', + '建国', + '永强', + '昊天', + '凯文', + '子健', + '晨曦', + '文博', + '英杰', + '伟峰', + '俊杰', + '家豪', + '浩然', + '祥瑞', + '旭东', + '宇航', + '明杰', + '杰森', + '彬彬', + '杰华', + '俊宇', + '光辉', + '子豪', + '伟杰', + '世杰', + '嘉豪', + '博文', + '明辉', + '君豪', + '宇峰', + '志辉', + '俊峰', + '俊熙', + '伟豪', + '君杰', + '宇杰', + '文杰', + '昊宇', + '志宇', + '浩杰', + '旭杰', + '浩轩', + '俊辉', + '志豪', + '明宇', + '伟强', + '博豪', + '俊文', + '俊泽', + '凯杰', + '明哲', + '文轩', + '君伟', + '明浩', + '宇豪', + '杰宇', + '俊霖', + '宇浩', + '嘉伟', + '子杰', + '子轩', + '嘉轩', + '俊轩', + '浩宇', + '俊浩', + '明豪', + '勇军', + '伟民', + '振华', + '国华', + '志刚', + '建明', + '军伟', + '强生', + '伟东', + '杰雄', + '勇辉', + '光明', + ], + femaleNames1: ` + 婷 静 娜 美 秀 雯 蕾 洁 思 慧 心 涵 英 晓 琳 珊 莉 佳 + 璐 晨 安 包 贝 冰 蓓 珂 柏 菲 怡 梓 瑶 艾 诗 倩 苏 婧 + 彤 媛 晶 琪 云 萍 莹 薇 楠 楚 爽 卓 格 斌 羽 茜 琦 绮 + 燕 张 青 红 翠 帆 离 莲 宜 园 冬 霜 芳 蕊 玲 梅 雪 妍 + 欣 兰 艳 丽 霞 娟 春 一 七 九 千 仪 仙 梦 书 亦 亚 若 + 依 + ` + .trim() + .split(/\s+/), + femaleNames2: [ + '文婷', + '文静', + '雅静', + '雯婷', + '佳怡', + '静怡', + '雪梅', + '芷若', + '艺馨', + '雨桐', + '诗婷', + '淑婷', + '怡君', + '芳菲', + '美玲', + '瑜伽', + '欣怡', + '佳琪', + '雨萱', + '雅琪', + '雪瑶', + '梦婷', + '芸萱', + '语嫣', + '淑娟', + '莉娜', + '慧娟', + '昕怡', + '思颖', + '怡然', + '佳琳', + '静文', + '雪晴', + '佩蓉', + '婉婷', + '芳华', + '丽颖', + '雅楠', + '紫嫣', + '美华', + '玥婷', + '思琪', + '欣妍', + '婷玉', + '诗琪', + '慧琳', + '雯雅', + '静雅', + '芷晴', + '紫萱', + '依婷', + '晓燕', + '梦瑶', + '雅丽', + '思涵', + '蕊琪', + '妍欣', + '念慈', + '若琳', + '雪丽', + '思羽', + '慧妍', + '玉梅', + '春花', + '小芳', + '艳丽', + '秋菊', + '丽华', + '芳琴', + '玉兰', + '霞芬', + '娟丽', + '春玲', + '艳红', + '梅芳', + '燕君', + ], + rareGroups: [ + '顾清风浦', + '段紫云瑶', + '穆听涛岚', + '罗晓星雪', + '季冬雪松', + '赵露石霜', + '霍春柳晓', + '龚晓阳翔', + '冷秋浦燕', + '骆海瑾琴', + '韩寒梅云', + '邹晓露月', + '张秋荷风', + '杨雪晴露', + '马云山雁', + '郭海瑞石', + '吴春燕柳', + '沙云飞谷', + '王月薇花', + '金晓岚柳', + '白云翔石', + '雷梦醒霜', + '刘池阳燕', + '柴碧霞月', + '宋春汐风', + '倪绿墨云', + '齐雁南石', + '韩寒梅霜', + ], +}; diff --git a/src/pages/coc-card/models/name.ts b/src/pages/coc-card/models/name.ts new file mode 100644 index 0000000..9abb4bb --- /dev/null +++ b/src/pages/coc-card/models/name.ts @@ -0,0 +1,132 @@ +import { RandNameScope } from '../types/name'; +import { namesEnSources, namesZhSources } from '../constants/name'; +import { getRatioResult, getRandomArrayItem } from '../utils'; + +type NameMethodKey = 'en' | 'zh' | 'en-zh'; +type SexKey = 'female' | 'male' | 'all'; + +export function randName(scope: RandNameScope = 'all', sex: SexKey = 'all'): string { + const usingMethodKey: NameMethodKey = scope === 'all' ? randMethod() : scope; + switch (usingMethodKey) { + case 'zh': + return randNameZh(sex); + case 'en': + return randNameEn(1, sex); + case 'en-zh': + return randNameEn(0, sex); + default: + return ''; + } +} + +function randMethod(): NameMethodKey { + const ratio = { + zh: 4, + 'en-zh': 5, + en: 1, + }; + return getRatioResult(ratio); +} + +function randNameEn(langIndex: 0 | 1, sex: SexKey): string { + const { lastNames, femaleNames, maleNames } = namesEnSources; + const firstNames = { + all: [...femaleNames, ...maleNames], + male: maleNames, + female: femaleNames, + }[sex]; + const lastName = lastNames[Math.floor(Math.random() * lastNames.length)]; + const firstName = firstNames[Math.floor(Math.random() * firstNames.length)]; + return `${firstName[langIndex]}·${lastName[langIndex]}`; +} + +function getRandomLastName(lastNames: string[]): string { + return lastNames[Math.floor(Math.pow(Math.random(), 1.4) * lastNames.length)]; +} + +const nameZhMethods: { [key: string]: (sex: SexKey) => string } = { + rare() { + return getRandomArrayItem(namesZhSources.rareGroups); + }, + // 张 三 + ln1(sex: SexKey) { + const { lastNames, maleNames1, femaleNames1 } = namesZhSources; + const firstNames = { + all: [...femaleNames1, ...maleNames1], + male: maleNames1, + female: femaleNames1, + }[sex]; + const lastName = getRandomLastName(lastNames); + const firstName = getRandomArrayItem(firstNames); + return `${lastName}${firstName}`; + }, + // 张 文婷 + ln2(sex: SexKey) { + const { lastNames, femaleNames2, maleNames2 } = namesZhSources; + const firstNames = { + all: [...femaleNames2, ...maleNames2], + male: maleNames2, + female: femaleNames2, + }[sex]; + const lastName = getRandomLastName(lastNames); + const firstName = getRandomArrayItem(firstNames); + return `${lastName}${firstName}`; + }, + // 刘 娜 娜 + lnn(sex: SexKey) { + const { lastNames, maleNames1, femaleNames1 } = namesZhSources; + const firstNames = { + all: [...maleNames1, ...femaleNames1], + male: maleNames1, + female: femaleNames1, + }[sex]; + const lastName = getRandomLastName(lastNames); + const firstName = getRandomArrayItem(firstNames); + return `${lastName}${firstName}${firstName}`; + }, + // 赵 欣 兰 + lmn(sex: SexKey) { + const { lastNames, maleNames1, femaleNames1 } = namesZhSources; + const firstNames = { + all: [...maleNames1, ...femaleNames1], + male: maleNames1, + female: femaleNames1, + }[sex]; + const lastName = getRandomLastName(lastNames); + const firstName1 = getRandomArrayItem(firstNames); + const firstName2 = getRandomArrayItem(firstNames); + return `${lastName}${firstName1}${firstName2}`; + }, + // 张 王 欣 兰 + abmn(sex: SexKey) { + const { lastNames, maleNames1, femaleNames1 } = namesZhSources; + const firstNames = { + all: [...maleNames1, ...femaleNames1], + male: maleNames1, + female: femaleNames1, + }[sex]; + const singleLastNames = lastNames.filter((name) => name.length === 1); + const lastName1 = getRandomLastName(singleLastNames); + const lastName2 = getRandomLastName(singleLastNames); + const firstName1 = getRandomArrayItem(firstNames); + const firstName2 = getRandomArrayItem(firstNames); + return `${lastName1}${lastName2}${firstName1}${firstName2}`; + }, +}; + +function randZhMethod(): string { + const ratio = { + ln2: 500, + lmn: 320, + lnn: 120, + ln1: 50, + abmn: 8, + rare: 2, + }; + return getRatioResult(ratio); +} + +function randNameZh(sex: SexKey): string { + const method = randZhMethod(); + return nameZhMethods[method](sex); +} diff --git a/src/pages/coc-card/sections/InvestigatorSection.vue b/src/pages/coc-card/sections/InvestigatorSection.vue index 9e2a09d..36aebfe 100644 --- a/src/pages/coc-card/sections/InvestigatorSection.vue +++ b/src/pages/coc-card/sections/InvestigatorSection.vue @@ -5,6 +5,7 @@ import { ref, computed, watch } from 'vue'; import PaperSection from '../components/PaperSection.vue'; import WritableRow from '../components/WritableRow.vue'; import FlattenTree from '../components/FlattenTree.vue'; +import RandNameRow from '../components/control-section-parts/rand-name/RandNameRow.vue'; // models import formattedJobs from '../models/job'; @@ -91,11 +92,16 @@ function onSelectJob(jobName: string) { 'printing-image': pageData?.printing, }" > - +
+
+ +
+ +
(ratio: Record): T { + const value = Math.random(); + const sum = Object.values(ratio).reduce((acc, cur) => acc + cur, 0); + let sumRatio = 0; + for (const key in ratio) { + sumRatio += ratio[key] / sum; + if (value < sumRatio) { + return key; + } + } + return Object.keys(ratio)[0] as T; +} + +export function getRandomArrayItem(array: T[]): T { + return array[Math.floor(Math.random() * array.length)]; +} diff --git a/src/types/51la/id_feature.ts b/src/types/51la/id_feature.ts index 6503352..c89ef2f 100644 --- a/src/types/51la/id_feature.ts +++ b/src/types/51la/id_feature.ts @@ -13,6 +13,7 @@ export enum FeatureNames { // paper actions - 页面上的按钮 PAPER_ROLL = 'PAPER_ROLL', + PAPER_RAND_NAME = 'PAPER_RAND_NAME', PAPER_USE_JOB = 'PAPER_USE_JOB', PAPER_USE_WEAPON = 'PAPER_USE_WEAPON',