diff --git a/apps/app-frontend/src/assets/stars/blue.png b/apps/app-frontend/src/assets/stars/blue.png new file mode 100644 index 0000000..eb4541a Binary files /dev/null and b/apps/app-frontend/src/assets/stars/blue.png differ diff --git a/apps/app-frontend/src/assets/stars/green.png b/apps/app-frontend/src/assets/stars/green.png new file mode 100644 index 0000000..7d02b18 Binary files /dev/null and b/apps/app-frontend/src/assets/stars/green.png differ diff --git a/apps/app-frontend/src/assets/stars/pink.png b/apps/app-frontend/src/assets/stars/pink.png new file mode 100644 index 0000000..23728f2 Binary files /dev/null and b/apps/app-frontend/src/assets/stars/pink.png differ diff --git a/apps/app-frontend/src/assets/stars/red.png b/apps/app-frontend/src/assets/stars/red.png new file mode 100644 index 0000000..2def081 Binary files /dev/null and b/apps/app-frontend/src/assets/stars/red.png differ diff --git a/apps/app-frontend/src/assets/stars/super.png b/apps/app-frontend/src/assets/stars/super.png new file mode 100644 index 0000000..9a84733 Binary files /dev/null and b/apps/app-frontend/src/assets/stars/super.png differ diff --git a/apps/app-frontend/src/assets/stars/yellow.png b/apps/app-frontend/src/assets/stars/yellow.png new file mode 100644 index 0000000..e201340 Binary files /dev/null and b/apps/app-frontend/src/assets/stars/yellow.png differ diff --git a/apps/app-frontend/src/components/ui/AboutEasterEgg.vue b/apps/app-frontend/src/components/ui/AboutEasterEgg.vue index 4f3039b..98504c5 100644 --- a/apps/app-frontend/src/components/ui/AboutEasterEgg.vue +++ b/apps/app-frontend/src/components/ui/AboutEasterEgg.vue @@ -1,53 +1,1017 @@ + - - + diff --git a/apps/app-frontend/src/components/ui/settings/AboutSettings.vue b/apps/app-frontend/src/components/ui/settings/AboutSettings.vue index e4c4daf..152a02a 100644 --- a/apps/app-frontend/src/components/ui/settings/AboutSettings.vue +++ b/apps/app-frontend/src/components/ui/settings/AboutSettings.vue @@ -79,7 +79,7 @@ const gameModal = ref | null>(null) const contributorsModal = ref | null>(null) let typedBuffer = '' -const secretCodes = ['cyf112233', 'cxkcxkckx'] +const secretCodes = ['starlight'] const konamiSequence = [ 'ArrowUp', diff --git a/apps/app-frontend/src/components/ui/settings/about-member-experiences.ts b/apps/app-frontend/src/components/ui/settings/about-member-experiences.ts index 889fd83..a01022d 100644 --- a/apps/app-frontend/src/components/ui/settings/about-member-experiences.ts +++ b/apps/app-frontend/src/components/ui/settings/about-member-experiences.ts @@ -9,7 +9,7 @@ export type AboutMemberExperience = { } // 长按「关于」页成员名字触发的彩蛋体验。 -// 原 'axolotl-merge' 彩蛋已移除,改为通用占位组件 AboutEasterEgg.vue。 +// 下界之星合成彩蛋(AboutEasterEgg.vue),由长按成员名 / 暗号 / Konami 秘技触发。 // 若要为特定成员挂载自定义彩蛋,在这里新增条目即可。 const memberExperiences: Record = { 'easter-egg': { diff --git a/tools/icon_work/chk_game.py b/tools/icon_work/chk_game.py new file mode 100644 index 0000000..e44362c --- /dev/null +++ b/tools/icon_work/chk_game.py @@ -0,0 +1,7 @@ + +t = open(r"D:\Project\Starlight_Lancher\apps\app-frontend\src\components\ui\AboutEasterEgg.vue", encoding="utf-8").read() +print("含 :", "" in t) +print("含 drawAxolotl:", "drawAxolotl" in t) +print("含 axolotl-balls import:", "axolotl-balls" in t) +print("行数:", len(t.split("\n"))) +print("末 120 字:", repr(t[-120:])) diff --git a/tools/icon_work/cleanup_game.py b/tools/icon_work/cleanup_game.py new file mode 100644 index 0000000..6f53699 --- /dev/null +++ b/tools/icon_work/cleanup_game.py @@ -0,0 +1,19 @@ + +# 1) 游戏文件:改内部标识符 +p = r"D:\Project\Starlight_Lancher\apps\app-frontend\src\components\ui\AboutEasterEgg.vue" +t = open(p, encoding="utf-8").read() +t = t.replace("AXOLOTL_MERGE_BEST_STORAGE_KEY", "MERGE_BEST_STORAGE_KEY") +t = t.replace("drawAxolotl", "drawMergePiece") +open(p, "w", encoding="utf-8", newline="\n").write(t) +print("游戏文件: AXOLOTL_MERGE_BEST_STORAGE_KEY -> MERGE_BEST_STORAGE_KEY, drawAxolotl -> drawMergePiece") +print(" 残留 axolotl:", "axolotl" in t.lower()) + +# 2) about-member-experiences.ts:更新过时注释 +p2 = r"D:\Project\Starlight_Lancher\apps\app-frontend\src\components\ui\settings\about-member-experiences.ts" +t2 = open(p2, encoding="utf-8").read() +old = "// 原 'axolotl-merge' 彩蛋已移除,改为通用占位组件 AboutEasterEgg.vue。" +new = "// 下界之星合成彩蛋(AboutEasterEgg.vue),由长按成员名 / 暗号 / Konami 秘技触发。" +assert old in t2, "注释找不到" +t2 = t2.replace(old, new, 1) +open(p2, "w", encoding="utf-8", newline="\n").write(t2) +print("注释已更新") diff --git a/tools/icon_work/convert6.py b/tools/icon_work/convert6.py new file mode 100644 index 0000000..2b5ce2e --- /dev/null +++ b/tools/icon_work/convert6.py @@ -0,0 +1,55 @@ + +p = r"D:\Project\Starlight_Lancher\apps\app-frontend\src\components\ui\AboutEasterEgg.vue" +t = open(p, encoding="utf-8").read() + +# 1) import 6 张星图 +old_imports = """import blueBall from '@/assets/axolotl-balls/blueball.png' +import cyanBall from '@/assets/axolotl-balls/cyanball.png' +import pinkBall from '@/assets/axolotl-balls/pinkball.png' +import redBall from '@/assets/axolotl-balls/redball.png' +import superBall from '@/assets/axolotl-balls/superball.png' +import yellowBall from '@/assets/axolotl-balls/yellowball.png'""" +new_imports = """import blueStar from '@/assets/stars/blue.png' +import greenStar from '@/assets/stars/green.png' +import pinkStar from '@/assets/stars/pink.png' +import redStar from '@/assets/stars/red.png' +import yellowStar from '@/assets/stars/yellow.png' +import superStar from '@/assets/stars/super.png'""" +assert old_imports in t, "import 块找不到" +t = t.replace(old_imports, new_imports, 1) + +# 2) 配置数组(保持 6,颜色换星色) +old_cfg = """const colors = ['#ff8fb3', '#ffd866', '#54c9c4', '#e5484d', '#5c8ee8', '#f05ed2'] +const rainbowColors = ['#ff8fb3', '#ffd866', '#54c9c4', '#5c8ee8', '#f05ed2', '#ffffff'] +const radiusRatios = [0.055, 0.075, 0.098, 0.128, 0.164, 0.21] +const points = [10, 25, 60, 120, 250, 1200]""" +new_cfg = """const colors = ['#4f9cff', '#1bd96a', '#ff8fb3', '#e5484d', '#ffd866', '#e0e0ff'] +const rainbowColors = ['#4f9cff', '#1bd96a', '#ff8fb3', '#e5484d', '#ffd866', '#ffffff'] +const radiusRatios = [0.055, 0.075, 0.098, 0.128, 0.164, 0.21] +const points = [10, 25, 60, 120, 250, 1200]""" +assert old_cfg in t, "配置数组找不到" +t = t.replace(old_cfg, new_cfg, 1) + +# 3) 球图数组(blue->green->pink->red->yellow->super) +old_balls = "const ballImages = [pinkBall, yellowBall, cyanBall, redBall, blueBall, superBall]" +new_balls = "const ballImages = [blueStar, greenStar, pinkStar, redStar, yellowStar, superStar]" +assert old_balls in t, "ballImages 找不到" +t = t.replace(old_balls, new_balls, 1) + +# 4) 存储 key +t = t.replace("const AXOLOTL_MERGE_BEST_STORAGE_KEY = 'axolotl-merge-best-score'", + "const AXOLOTL_MERGE_BEST_STORAGE_KEY = 'starlight-merge-best-score'", 1) + +# 5) 文案 +text_map = { + "defaultMessage: 'The axolotls got stranded!'": "defaultMessage: 'The stars fell down!'", + "defaultMessage: 'Rainbow axolotl!'": "defaultMessage: 'Nether star!'", + "defaultMessage: 'The tide is falling — keep your axolotls underwater!'": "defaultMessage: 'The sky is falling — keep merging!'", + "defaultMessage: 'Click to drop a pink axolotl'": "defaultMessage: 'Click to drop a star'", +} +for o, n in text_map.items(): + assert o in t, f"文案找不到: {o}" + t = t.replace(o, n, 1) + +open(p, "w", encoding="utf-8", newline="\n").write(t) +print("done") diff --git a/tools/icon_work/convert_game.py b/tools/icon_work/convert_game.py new file mode 100644 index 0000000..1fffc67 --- /dev/null +++ b/tools/icon_work/convert_game.py @@ -0,0 +1,54 @@ + +p = r"D:\Project\Starlight_Lancher\apps\app-frontend\src\components\ui\AboutEasterEgg.vue" +t = open(p, encoding="utf-8").read() + +# 1) import 换 5 张星图 +old_imports = """import blueBall from '@/assets/axolotl-balls/blueball.png' +import cyanBall from '@/assets/axolotl-balls/cyanball.png' +import pinkBall from '@/assets/axolotl-balls/pinkball.png' +import redBall from '@/assets/axolotl-balls/redball.png' +import superBall from '@/assets/axolotl-balls/superball.png' +import yellowBall from '@/assets/axolotl-balls/yellowball.png'""" +new_imports = """import blueStar from '@/assets/stars/blue.png' +import greenStar from '@/assets/stars/green.png' +import pinkStar from '@/assets/stars/pink.png' +import redStar from '@/assets/stars/red.png' +import superStar from '@/assets/stars/super.png'""" +assert old_imports in t, "import 块找不到" +t = t.replace(old_imports, new_imports, 1) + +# 2) 颜色 / 半径 / 分数 / 球图数组(6→5) +old_cfg = """const colors = ['#ff8fb3', '#ffd866', '#54c9c4', '#e5484d', '#5c8ee8', '#f05ed2'] +const rainbowColors = ['#ff8fb3', '#ffd866', '#54c9c4', '#5c8ee8', '#f05ed2', '#ffffff'] +const radiusRatios = [0.055, 0.075, 0.098, 0.128, 0.164, 0.21] +const points = [10, 25, 60, 120, 250, 1200]""" +new_cfg = """const colors = ['#4f9cff', '#1bd96a', '#ff8fb3', '#e5484d', '#ffd866'] +const rainbowColors = ['#4f9cff', '#1bd96a', '#ff8fb3', '#e5484d', '#ffd866'] +const radiusRatios = [0.055, 0.078, 0.105, 0.14, 0.185] +const points = [10, 25, 60, 130, 300]""" +assert old_cfg in t, "配置数组找不到" +t = t.replace(old_cfg, new_cfg, 1) + +# 3) 球图数组(顺序 blue->green->pink->red->super) +old_balls = "const ballImages = [pinkBall, yellowBall, cyanBall, redBall, blueBall, superBall]" +new_balls = "const ballImages = [blueStar, greenStar, pinkStar, redStar, superStar]" +assert old_balls in t, "ballImages 找不到" +t = t.replace(old_balls, new_balls, 1) + +# 4) 存储 key +t = t.replace("const AXOLOTL_MERGE_BEST_STORAGE_KEY = 'axolotl-merge-best-score'", + "const AXOLOTL_MERGE_BEST_STORAGE_KEY = 'starlight-merge-best-score'", 1) + +# 5) 文案(messages) +text_map = { + "defaultMessage: 'The axolotls got stranded!'": "defaultMessage: 'The stars fell down!'", + "defaultMessage: 'Rainbow axolotl!'": "defaultMessage: 'Nether star!'", + "defaultMessage: 'The tide is falling — keep your axolotls underwater!'": "defaultMessage: 'The sky is falling — keep merging!'", + "defaultMessage: 'Click to drop a pink axolotl'": "defaultMessage: 'Click to drop a star'", +} +for o, n in text_map.items(): + assert o in t, f"文案找不到: {o}" + t = t.replace(o, n, 1) + +open(p, "w", encoding="utf-8", newline="\n").write(t) +print("done") diff --git a/tools/icon_work/fix_secret.py b/tools/icon_work/fix_secret.py new file mode 100644 index 0000000..06afef6 --- /dev/null +++ b/tools/icon_work/fix_secret.py @@ -0,0 +1,10 @@ + +p = r"D:\Project\Starlight_Lancher\apps\app-frontend\src\components\ui\settings\AboutSettings.vue" +t = open(p, encoding="utf-8").read() +old = "const secretCodes = ['cyf112233', 'cxkcxkckx']" +new = "const secretCodes = ['starlight']" +assert old in t, "找不到 secretCodes" +t = t.replace(old, new, 1) +open(p, "w", encoding="utf-8", newline="\n").write(t) +print("done") +print("新:", new) diff --git a/tools/icon_work/old_merge_game.vue b/tools/icon_work/old_merge_game.vue new file mode 100644 index 0000000..2636386 --- /dev/null +++ b/tools/icon_work/old_merge_game.vue @@ -0,0 +1,1017 @@ + + + + + diff --git a/tools/icon_work/read_old_parts.py b/tools/icon_work/read_old_parts.py new file mode 100644 index 0000000..cb80610 --- /dev/null +++ b/tools/icon_work/read_old_parts.py @@ -0,0 +1,9 @@ + +t = open(r"D:\Project\Starlight_Lancher\tools\icon_work\old_merge_game.vue", encoding="utf-8").read() +lines = t.split("\n") +print("总行数:", len(lines)) +print("\n=== 含 ball/color/radius/point/axolotl/import 的行 ===") +for i, line in enumerate(lines): + low = line.lower() + if any(k in low for k in ("ball", "color", "radius", "point", "axolotl", "import ", "level", "tier")): + print(f"{i+1}: {line.rstrip()[:140]}") diff --git a/tools/icon_work/read_rest.py b/tools/icon_work/read_rest.py new file mode 100644 index 0000000..f60c352 --- /dev/null +++ b/tools/icon_work/read_rest.py @@ -0,0 +1,9 @@ + +t = open(r"D:\Project\Starlight_Lancher\tools\icon_work\old_merge_game.vue", encoding="utf-8").read() +lines = t.split("\n") +print("=== messages 全貌 (221-253) ===") +for i in range(220, 254): + print(f"{i+1}: {lines[i]}") +print("\n=== drawAxolotl 绘制 (689-757) ===") +for i in range(688, 757): + print(f"{i+1}: {lines[i]}") diff --git a/tools/icon_work/verify6.py b/tools/icon_work/verify6.py new file mode 100644 index 0000000..7d178f0 --- /dev/null +++ b/tools/icon_work/verify6.py @@ -0,0 +1,9 @@ + +t = open(r"D:\Project\Starlight_Lancher\apps\app-frontend\src\components\ui\AboutEasterEgg.vue", encoding="utf-8").read() +for i, line in enumerate(t.split("\n")): + if any(k in line for k in ("import blueStar", "import greenStar", "import pinkStar", "import redStar", "import yellowStar", "import superStar", + "const colors =", "const ballImages =", "starlight-merge-best-score", + "stars fell down", "Nether star", "sky is falling", "drop a star")): + print(f"{i+1}: {line.strip()}") +print("\n残留 axolotl-balls:", "axolotl-balls" in t) +print("残留 axolotl 文案:", "axolotl" in t.lower())