@quybt93/pcgf 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/plugins/marketplace.json +20 -0
- package/.agents/skills/bmad-advanced-elicitation/SKILL.md +64 -0
- package/.agents/skills/bmad-advanced-elicitation/assets/methods.csv +72 -0
- package/.agents/skills/bmad-advanced-elicitation/customize.toml +54 -0
- package/.agents/skills/bmad-advanced-elicitation/scripts/pick_methods.py +233 -0
- package/.agents/skills/bmad-advanced-elicitation/scripts/tests/test_pick_methods.py +228 -0
- package/.agents/skills/bmad-agent-analyst/SKILL.md +76 -0
- package/.agents/skills/bmad-agent-analyst/customize.toml +103 -0
- package/.agents/skills/bmad-agent-architect/SKILL.md +76 -0
- package/.agents/skills/bmad-agent-architect/customize.toml +63 -0
- package/.agents/skills/bmad-agent-dev/SKILL.md +76 -0
- package/.agents/skills/bmad-agent-dev/customize.toml +81 -0
- package/.agents/skills/bmad-agent-pm/SKILL.md +76 -0
- package/.agents/skills/bmad-agent-pm/customize.toml +73 -0
- package/.agents/skills/bmad-agent-ux-designer/SKILL.md +76 -0
- package/.agents/skills/bmad-agent-ux-designer/customize.toml +58 -0
- package/.agents/skills/bmad-architecture/SKILL.md +85 -0
- package/.agents/skills/bmad-architecture/assets/spine-template.md +79 -0
- package/.agents/skills/bmad-architecture/customize.toml +101 -0
- package/.agents/skills/bmad-architecture/references/headless.md +26 -0
- package/.agents/skills/bmad-architecture/references/reviewer-gate.md +13 -0
- package/.agents/skills/bmad-architecture/scripts/lint_spine.py +257 -0
- package/.agents/skills/bmad-architecture/scripts/tests/test_lint_spine.py +270 -0
- package/.agents/skills/bmad-brainstorming/SKILL.md +80 -0
- package/.agents/skills/bmad-brainstorming/assets/brain-icons.json +166 -0
- package/.agents/skills/bmad-brainstorming/assets/brain-methods.csv +109 -0
- package/.agents/skills/bmad-brainstorming/assets/brain-selector.html +328 -0
- package/.agents/skills/bmad-brainstorming/customize.toml +83 -0
- package/.agents/skills/bmad-brainstorming/references/converge.md +24 -0
- package/.agents/skills/bmad-brainstorming/references/finalize.md +26 -0
- package/.agents/skills/bmad-brainstorming/references/headless.md +54 -0
- package/.agents/skills/bmad-brainstorming/references/in-chat-techniques.md +18 -0
- package/.agents/skills/bmad-brainstorming/references/mode-autonomous.md +10 -0
- package/.agents/skills/bmad-brainstorming/references/mode-facilitator.md +11 -0
- package/.agents/skills/bmad-brainstorming/references/mode-partner.md +16 -0
- package/.agents/skills/bmad-brainstorming/references/resume.md +5 -0
- package/.agents/skills/bmad-brainstorming/scripts/brain.py +789 -0
- package/.agents/skills/bmad-brainstorming/scripts/tests/test_brain.py +289 -0
- package/.agents/skills/bmad-build/SKILL.md +13 -0
- package/.agents/skills/bmad-build/compile-epic-context.md +62 -0
- package/.agents/skills/bmad-build/customize.toml +152 -0
- package/.agents/skills/bmad-build/references/claims-check.md +14 -0
- package/.agents/skills/bmad-build/references/deletion-check.md +14 -0
- package/.agents/skills/bmad-build/review-prompts/edge-case-hunter.md +112 -0
- package/.agents/skills/bmad-build/review-prompts/verification-gap.md +113 -0
- package/.agents/skills/bmad-build/spec-template.md +111 -0
- package/.agents/skills/bmad-build/step-01-clarify-and-route.md +100 -0
- package/.agents/skills/bmad-build/step-02-plan.md +62 -0
- package/.agents/skills/bmad-build/step-03-implement.md +51 -0
- package/.agents/skills/bmad-build/step-04-review.md +85 -0
- package/.agents/skills/bmad-build/step-05-present.md +43 -0
- package/.agents/skills/bmad-build/step-oneshot.md +107 -0
- package/.agents/skills/bmad-build/sync-sprint-status.md +5 -0
- package/.agents/skills/bmad-build/workflow.md +84 -0
- package/.agents/skills/bmad-build-auto/SKILL.md +13 -0
- package/.agents/skills/bmad-build-auto/compile-epic-context.md +62 -0
- package/.agents/skills/bmad-build-auto/customize.toml +119 -0
- package/.agents/skills/bmad-build-auto/references/claims-check.md +14 -0
- package/.agents/skills/bmad-build-auto/references/deletion-check.md +14 -0
- package/.agents/skills/bmad-build-auto/review-prompts/edge-case-hunter.md +112 -0
- package/.agents/skills/bmad-build-auto/review-prompts/verification-gap.md +113 -0
- package/.agents/skills/bmad-build-auto/spec-template.md +96 -0
- package/.agents/skills/bmad-build-auto/step-01-clarify-and-route.md +84 -0
- package/.agents/skills/bmad-build-auto/step-02-plan.md +27 -0
- package/.agents/skills/bmad-build-auto/step-03-implement.md +48 -0
- package/.agents/skills/bmad-build-auto/step-04-review.md +116 -0
- package/.agents/skills/bmad-build-auto/workflow.md +104 -0
- package/.agents/skills/bmad-code-review/SKILL.md +90 -0
- package/.agents/skills/bmad-code-review/customize.toml +110 -0
- package/.agents/skills/bmad-code-review/references/claims-check.md +14 -0
- package/.agents/skills/bmad-code-review/references/deletion-check.md +14 -0
- package/.agents/skills/bmad-code-review/review-prompts/edge-case-hunter.md +112 -0
- package/.agents/skills/bmad-code-review/review-prompts/verification-gap.md +113 -0
- package/.agents/skills/bmad-code-review/steps/step-01-gather-context.md +94 -0
- package/.agents/skills/bmad-code-review/steps/step-02-review.md +32 -0
- package/.agents/skills/bmad-code-review/steps/step-03-triage.md +54 -0
- package/.agents/skills/bmad-code-review/steps/step-04-present.md +134 -0
- package/.agents/skills/bmad-correct-course/SKILL.md +308 -0
- package/.agents/skills/bmad-correct-course/checklist.md +288 -0
- package/.agents/skills/bmad-correct-course/customize.toml +39 -0
- package/.agents/skills/bmad-create-epics-and-stories/SKILL.md +93 -0
- package/.agents/skills/bmad-create-epics-and-stories/customize.toml +39 -0
- package/.agents/skills/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md +263 -0
- package/.agents/skills/bmad-create-epics-and-stories/steps/step-02-design-epics.md +242 -0
- package/.agents/skills/bmad-create-epics-and-stories/steps/step-03-create-stories.md +255 -0
- package/.agents/skills/bmad-create-epics-and-stories/steps/step-04-final-validation.md +143 -0
- package/.agents/skills/bmad-create-epics-and-stories/templates/epics-template.md +61 -0
- package/.agents/skills/bmad-customize/SKILL.md +111 -0
- package/.agents/skills/bmad-customize/scripts/list_customizable_skills.py +231 -0
- package/.agents/skills/bmad-customize/scripts/tests/test_list_customizable_skills.py +249 -0
- package/.agents/skills/bmad-deep-recon/SKILL.md +82 -0
- package/.agents/skills/bmad-deep-recon/assets/research.template.md +18 -0
- package/.agents/skills/bmad-deep-recon/customize.toml +212 -0
- package/.agents/skills/bmad-deep-recon/references/draft.md +8 -0
- package/.agents/skills/bmad-deep-recon/references/finalize.md +11 -0
- package/.agents/skills/bmad-deep-recon/references/html-briefing.md +16 -0
- package/.agents/skills/bmad-deep-recon/references/lifecycle.md +11 -0
- package/.agents/skills/bmad-deep-recon/references/process.md +10 -0
- package/.agents/skills/bmad-deep-recon/references/run.md +73 -0
- package/.agents/skills/bmad-deep-recon/references/selection.md +13 -0
- package/.agents/skills/bmad-deep-recon/references/synthesis.md +16 -0
- package/.agents/skills/bmad-deep-recon/references/verification.md +29 -0
- package/.agents/skills/bmad-deep-recon/scripts/recon_kit.py +322 -0
- package/.agents/skills/bmad-deep-recon/scripts/tests/test_recon_kit.py +144 -0
- package/.agents/skills/bmad-deep-recon/types/academic-lit.md +19 -0
- package/.agents/skills/bmad-deep-recon/types/competitive.md +19 -0
- package/.agents/skills/bmad-deep-recon/types/domain.md +19 -0
- package/.agents/skills/bmad-deep-recon/types/market.md +19 -0
- package/.agents/skills/bmad-deep-recon/types/technical.md +19 -0
- package/.agents/skills/bmad-deep-recon/types/user-voice.md +19 -0
- package/.agents/skills/bmad-forge-idea/SKILL.md +107 -0
- package/.agents/skills/bmad-forge-idea/customize.toml +41 -0
- package/.agents/skills/bmad-forge-idea/scripts/resolve_personas.py +277 -0
- package/.agents/skills/bmad-forge-idea/scripts/tests/test_resolve_personas.py +160 -0
- package/.agents/skills/bmad-help/SKILL.md +77 -0
- package/.agents/skills/bmad-party-mode/SKILL.md +60 -0
- package/.agents/skills/bmad-party-mode/customize.toml +211 -0
- package/.agents/skills/bmad-party-mode/references/create-party.md +70 -0
- package/.agents/skills/bmad-party-mode/references/mode-agent-team.md +13 -0
- package/.agents/skills/bmad-party-mode/references/mode-auto.md +13 -0
- package/.agents/skills/bmad-party-mode/references/mode-subagent.md +31 -0
- package/.agents/skills/bmad-party-mode/references/party-memory.md +51 -0
- package/.agents/skills/bmad-party-mode/scripts/resolve_party.py +284 -0
- package/.agents/skills/bmad-party-mode/scripts/tests/test_resolve_party.py +168 -0
- package/.agents/skills/bmad-prd/SKILL.md +94 -0
- package/.agents/skills/bmad-prd/assets/headless-schemas.md +76 -0
- package/.agents/skills/bmad-prd/assets/prd-template.md +165 -0
- package/.agents/skills/bmad-prd/assets/prd-validation-checklist.md +135 -0
- package/.agents/skills/bmad-prd/assets/validation-report-template.html +325 -0
- package/.agents/skills/bmad-prd/customize.toml +148 -0
- package/.agents/skills/bmad-prd/references/headless.md +39 -0
- package/.agents/skills/bmad-prd/references/validate.md +97 -0
- package/.agents/skills/bmad-prfaq/SKILL.md +135 -0
- package/.agents/skills/bmad-prfaq/agents/artifact-analyzer.md +60 -0
- package/.agents/skills/bmad-prfaq/agents/web-researcher.md +49 -0
- package/.agents/skills/bmad-prfaq/assets/prfaq-template.md +62 -0
- package/.agents/skills/bmad-prfaq/bmad-manifest.json +16 -0
- package/.agents/skills/bmad-prfaq/customize.toml +39 -0
- package/.agents/skills/bmad-prfaq/references/customer-faq.md +55 -0
- package/.agents/skills/bmad-prfaq/references/internal-faq.md +51 -0
- package/.agents/skills/bmad-prfaq/references/press-release.md +60 -0
- package/.agents/skills/bmad-prfaq/references/verdict.md +83 -0
- package/.agents/skills/bmad-product-brief/SKILL.md +91 -0
- package/.agents/skills/bmad-product-brief/assets/brief-template.md +41 -0
- package/.agents/skills/bmad-product-brief/customize.toml +100 -0
- package/.agents/skills/bmad-project-context/SKILL.md +121 -0
- package/.agents/skills/bmad-project-context/customize.toml +24 -0
- package/.agents/skills/bmad-project-context/references/best-practices.md +84 -0
- package/.agents/skills/bmad-project-context/references/template.md +55 -0
- package/.agents/skills/bmad-qa-generate-e2e-tests/SKILL.md +176 -0
- package/.agents/skills/bmad-qa-generate-e2e-tests/checklist.md +33 -0
- package/.agents/skills/bmad-qa-generate-e2e-tests/customize.toml +39 -0
- package/.agents/skills/bmad-retrospective/SKILL.md +94 -0
- package/.agents/skills/bmad-retrospective/customize.toml +39 -0
- package/.agents/skills/bmad-retrospective/references/acceptance-verdict.md +55 -0
- package/.agents/skills/bmad-retrospective/references/aggregate-views.md +17 -0
- package/.agents/skills/bmad-retrospective/references/evidence-gathering.md +30 -0
- package/.agents/skills/bmad-retrospective/references/retro-document.md +84 -0
- package/.agents/skills/bmad-retrospective/references/team-discussion.md +22 -0
- package/.agents/skills/bmad-retrospective/scripts/git_evidence.py +304 -0
- package/.agents/skills/bmad-retrospective/scripts/sprint_status.py +746 -0
- package/.agents/skills/bmad-retrospective/scripts/tests/fixtures/sprint-status-template.yaml +71 -0
- package/.agents/skills/bmad-retrospective/scripts/tests/test_git_evidence.py +750 -0
- package/.agents/skills/bmad-retrospective/scripts/tests/test_sprint_status.py +1579 -0
- package/.agents/skills/bmad-review/SKILL.md +50 -0
- package/.agents/skills/bmad-review/customize.toml +141 -0
- package/.agents/skills/bmad-review/references/editorial-common.md +56 -0
- package/.agents/skills/bmad-review/references/lens-adversarial.md +19 -0
- package/.agents/skills/bmad-review/references/lens-edge-case-hunter.md +72 -0
- package/.agents/skills/bmad-review/references/lens-prose.md +7 -0
- package/.agents/skills/bmad-review/references/lens-structure.md +9 -0
- package/.agents/skills/bmad-review/references/lens-verification-gap.md +92 -0
- package/.agents/skills/bmad-review/references/structure-models.md +44 -0
- package/.agents/skills/bmad-review/scripts/tests/test_word_metrics.py +62 -0
- package/.agents/skills/bmad-review/scripts/word_metrics.py +102 -0
- package/.agents/skills/bmad-spec/SKILL.md +160 -0
- package/.agents/skills/bmad-spec/assets/headless-schemas.md +33 -0
- package/.agents/skills/bmad-spec/assets/spec-template.md +49 -0
- package/.agents/skills/bmad-spec/assets/stories-schema.md +44 -0
- package/.agents/skills/bmad-spec/customize.toml +52 -0
- package/.agents/skills/bmad-sprint-planning/SKILL.md +62 -0
- package/.agents/skills/bmad-sprint-planning/customize.toml +39 -0
- package/.agents/skills/bmad-sprint-planning/references/fix-sprint-status.md +30 -0
- package/.agents/skills/bmad-sprint-planning/references/generate-tracking.md +25 -0
- package/.agents/skills/bmad-sprint-planning/references/readiness-gate.md +20 -0
- package/.agents/skills/bmad-sprint-planning/references/status-view.md +14 -0
- package/.agents/skills/bmad-sprint-planning/references/validate.md +10 -0
- package/.agents/skills/bmad-sprint-planning/scripts/sprint_plan.py +697 -0
- package/.agents/skills/bmad-sprint-planning/scripts/tests/test_sprint_plan.py +524 -0
- package/.agents/skills/bmad-sprint-planning/sprint-status-template.yaml +71 -0
- package/.agents/skills/bmad-ux/SKILL.md +90 -0
- package/.agents/skills/bmad-ux/assets/color-themes.md +9 -0
- package/.agents/skills/bmad-ux/assets/design-directions.md +9 -0
- package/.agents/skills/bmad-ux/assets/design-example-editorial.md +158 -0
- package/.agents/skills/bmad-ux/assets/design-example-mobile.md +93 -0
- package/.agents/skills/bmad-ux/assets/design-example-shadcn.md +109 -0
- package/.agents/skills/bmad-ux/assets/excalidraw-wireframe.md +19 -0
- package/.agents/skills/bmad-ux/assets/experience-example-mobile.md +112 -0
- package/.agents/skills/bmad-ux/assets/experience-example-shadcn.md +133 -0
- package/.agents/skills/bmad-ux/assets/headless-schemas.md +84 -0
- package/.agents/skills/bmad-ux/assets/key-screens.md +29 -0
- package/.agents/skills/bmad-ux/assets/validation-report-template.html +319 -0
- package/.agents/skills/bmad-ux/customize.toml +100 -0
- package/.agents/skills/bmad-ux/references/creative-tools.md +19 -0
- package/.agents/skills/bmad-ux/references/design-md-spec.md +50 -0
- package/.agents/skills/bmad-ux/references/headless.md +37 -0
- package/.agents/skills/bmad-ux/references/validate.md +115 -0
- package/.agents/skills/bmad-walkthrough/SKILL.md +68 -0
- package/.agents/skills/bmad-walkthrough/customize.toml +39 -0
- package/.agents/skills/bmad-walkthrough/generate-trail.md +38 -0
- package/.agents/skills/bmad-walkthrough/step-01-orientation.md +105 -0
- package/.agents/skills/bmad-walkthrough/step-02-walkthrough.md +89 -0
- package/.agents/skills/bmad-walkthrough/step-03-detail-pass.md +106 -0
- package/.agents/skills/bmad-walkthrough/step-04-testing.md +74 -0
- package/.agents/skills/bmad-walkthrough/step-05-wrapup.md +30 -0
- package/README.md +111 -0
- package/bin/pcgf.js +8 -0
- package/installer/clean.js +137 -0
- package/installer/cli.js +479 -0
- package/installer/deps.js +160 -0
- package/installer/fs-utils.js +58 -0
- package/installer/install.js +201 -0
- package/installer/paths.js +17 -0
- package/installer/scaffold.js +274 -0
- package/installer/tools.js +38 -0
- package/package.json +37 -0
- package/plugins/phaser-casual-game-factory/.codex-plugin/plugin.json +27 -0
- package/plugins/phaser-casual-game-factory/PROGRESS.md +120 -0
- package/plugins/phaser-casual-game-factory/README.md +79 -0
- package/plugins/phaser-casual-game-factory/assets/sfx/README.md +8 -0
- package/plugins/phaser-casual-game-factory/assets/sfx/ui_click.mp3 +0 -0
- package/plugins/phaser-casual-game-factory/assets/sfx/ui_close.mp3 +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/README.md +9 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_l_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_l_DarkGray.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_l_Gray.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_l_Green.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_l_Mint.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_l_Pink.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_l_Purple.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_l_Red.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_l_Sky.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_l_White_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_l_White_Light1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_l_White_Light2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_l_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_s_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_s_DarkGray.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_s_Flat.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_s_Gray.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_s_Green.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_s_Mint.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_s_PInk.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_s_Purple.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_s_Red.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_s_Sky.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_s_White_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_s_White_Light1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_s_White_Light2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button01_s_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Circle118.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Circle120.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Circle122.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Circle74_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Circle74_Border.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Circle82.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_LeftFlush_Dark.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_LeftFlush_White1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_LeftFlush_White2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round01_White_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round01_White_Light1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round01_White_Light2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round01_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round02_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round02_White_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round02_White_Light.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round03_Dark.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round03_WhiteBg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round03_White_Light.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round04_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round04_Oblique.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round05.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round06_Red.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round06_White.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round07.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round08.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round09.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round10_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Round10_Light.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_SkillBtnMask.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_SkillBtn_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_SkillBtn_Dark.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_SkillBtn_Orange.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_SkillBtn_Red.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_SkillBtn_White_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_SkillBtn_White_Light.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Tapered_White1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Tapered_White2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Tapered_White3.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Button_Tapered_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Menu_BottomBtn_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Menu_BottomBtn_TabFocus.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Menu_BottomBtn_TabFocus_Light.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Menu_MiddleBtn_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Button/Menu_MiddleBtn_TabFocus.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BannerFrame00_01~02_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BannerFrame00_01~02_InnerBg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BannerFrame00_01~02_InnerLine.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BannerFrame00_01~02_Light.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BannerFrame00_01~02_Pattern.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BannerFrame00_01~02_Pattern.psd +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BannerFrame00_03_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BannerFrame00_03_Border.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BannerFrame00_04~06_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BannerFrame00_04~06_BgLight.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BannerFrame00_04~06_Border.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BannerFrame00_04~06_Pattern.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BannerFrame03_Demo.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BannerFrame04_Demo.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BannerFrame05_Demo.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BannerFrame06_Demo_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BannerFrame06_Demo__Gray.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BannerFrame07.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BasicFrame_Circle160.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BasicFrame_Hexagon87.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BasicFrame_Oval44.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BasicFrame_Oval50.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BasicFrame_Round12.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BasicFrame_Round17.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BasicFrame_Round20.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BasicFrame_Round24.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Circle60.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Circle75_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Circle75_Light.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Circle78.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Flag_Demo_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Flag_Demo_Green.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Flag_Demo_Red.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Flag_White_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Flag_White_BgGradient.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Flag_White_BgLine01.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Flag_White_BgLine02.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Oval46_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Oval46_InnerLine.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Oval58.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Rhombus_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Rhombus_Inner.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Round18_Transparent.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Round20_Demo_Dark.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Round20_Demo_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Round20_White_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Round20_White_Light.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Round24.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Round30.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Squrare_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BorderFrame_Squrare_Inner.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame01_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame01_BgArrow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame01_BgShadow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame01_Hexagon_Bg_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame01_Hexagon_Bg_Green.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame01_Hexagon_Bg_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame01_Hexagon_FocusBorder.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame01_Hexagon_FocusGlow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame02_Arrow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame02_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame02_BgShadow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame03_Arrow_Left.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame03_Arrow_Right.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame03_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame04_Blue_Arrow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame04_Blue_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame04_White_Arrow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame04_White_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame05_InnerBg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame05_InnerBorder.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame05_Left_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame05_Left_BgShadow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame05_Right_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/BubbleFrame05_Right_BgShadow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame01_Bg_d.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame01_Bg_d_Pattern.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame01_Bg_n.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame01_Border.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame01_Bottom.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame01_Glow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame01_Gradient.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame01_Gradient_Hologram.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame02_d_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame02_d_Bg_Pattern.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame02_d_Border.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame02_n_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame02_n_Bottom.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame02_n_Light.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame03_d.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame03_n_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame03_n_InnerBg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame03_n_Light.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame04_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame04_Bg_DividerLine.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame04_Bg_Gradient.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame04_Border.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame04_FocusBorder.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame04_FocusGlow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame04_Glow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame05_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame05_Bg_Corner.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame05_Border.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame05_FocusBorder.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame05_FocusGlow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame05_Glow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame06_Demo_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame06_Demo_Bg_Glow_Green.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame06_Demo_Deco_Green.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame06_Demo_Frame_Green.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame06_White_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame06_White_Bg_Glow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame06_White_Deco.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/CardFrame06_White_Frame.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame00~03_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame00~03_BgGlow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame00~03_BgLight.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame00~03_Bg_Hologram.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame00~03_Border.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame00~03_CornerDeco.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame00~03_FocusLine.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame01_Demo_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame01_Demo_Gray.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame01_Demo_Green.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame01_Demo_Hologram1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame01_Demo_Hologram2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame01_Demo_Navy.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame01_Demo_OffWhite.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame01_Demo_Purple.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame01_Demo_Red.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame01_Demo_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame02_Demo_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame02_Demo_Gray.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame02_Demo_Green.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame02_Demo_Hologram1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame02_Demo_Hologram2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame02_Demo_Navy.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame02_Demo_OffWhite.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame02_Demo_Purple.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame02_Demo_Red.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame02_Demo_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame03_Demo_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame03_Demo_Gray.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame03_Demo_Green.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame03_Demo_Hologram.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame03_Demo_Navy.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame03_Demo_Purple.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame03_Demo_Red.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ItemFrame03_Demo_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ListFrame00_01~02_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ListFrame00_01~02_BgInner.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ListFrame00_01~02_Oblique.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ListFrame00_03~04_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ListFrame00_03~04_BgInner.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ListFrame00_03~04_Dim.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ListFrame04_Demo_f_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ListFrame04_Demo_f_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/PanelFrame01_Line.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/PanelFrame02.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/PanelFrame03_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/PanelFrame03_Oblique.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/PanelFrame04_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/PanelFrame04_OutTilte1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/PanelFrame04_OutTilte2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ProfileFrame01_l_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ProfileFrame01_l_Border.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ProfileFrame01_m~s_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ProfileFrame01_m~s_Inner.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ProfileFrame02_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ProfileFrame02_Inner.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ProfileFrame_Circle275_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/ProfileFrame_Circle275_Inner.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/SkillFrame_l~m_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/SkillFrame_l~m_Border.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/SkillFrame_l~m_Empty.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/SkillFrame_s_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/SkillFrame_s_Border.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Frame/SkillFrame_s_Empty.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_brz.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_chn.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_cze.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_deu.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_eng.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_esp.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_fra.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_gbr.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_gre.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_ind.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_ita.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_jpn.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_kor.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_pol.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_prt.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_rou.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_rsa.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_rus.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_swe.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_tha.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_tur.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_twn.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_ukr.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_Flag/Small/Icon_Flag_usa.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_GradeBadge/256/Icon_GradeBadge_Beginner.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_GradeBadge/256/Icon_GradeBadge_Bronze.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_GradeBadge/256/Icon_GradeBadge_Challenger.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_GradeBadge/256/Icon_GradeBadge_Diamond.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_GradeBadge/256/Icon_GradeBadge_Gold.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_GradeBadge/256/Icon_GradeBadge_Grandmaster.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_GradeBadge/256/Icon_GradeBadge_Iron.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_GradeBadge/256/Icon_GradeBadge_Master.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_GradeBadge/256/Icon_GradeBadge_Platinum.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_GradeBadge/256/Icon_GradeBadge_Silver.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Badge_Crown.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Badge_Gold.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Bag_Brown.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Bag_Gray.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Battle.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Book_1_Purple.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Book_1_Wine.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Calendar.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Calendar_Check.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Chat.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Chest_Gem.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Chest_Gold.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Chest_Premium.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Chest_Wood.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Clover_Gold.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Clover_Green.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Damage.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Dungeon.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Earth.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Energy_Blue.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Friend.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Gear.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Gear_Armor_Bottom.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Gear_Armor_Top.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Gear_Boots.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Gear_Hat_Witch.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Gear_Ring.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Gear_Sword.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Gem_Circle.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Gem_Diamond_Purple.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Gem_Ellipse_Red.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Gem_Star_Blue.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Gift_Blue.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Gift_Green.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Gift_Red.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Heart_Dimmed.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Heart_Red.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Key_Gold.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Mail.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Map.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Meat.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Medal_Bronze_1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Medal_Bronze_2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Medal_Gold_1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Medal_Gold_2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Medal_Silver_1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Medal_Silver_2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Medalstand.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_MemoPad.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Money_Bill.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Money_Coin.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Pot.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Shop.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Skull.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Star_Blue.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Star_Bronze.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Star_Gold.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Star_Purple.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Star_Red.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Star_Silver.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_TV_AdBlock.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Ticket_Gold.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Ticket_Red.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Trophy_Bronze.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Trophy_Gold.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Trophy_Silver.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_ItemIcons/256/ItemIcon_Video.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Again_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Again_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Aiming_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Aiming_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Alarm.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Anchor.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Archer.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Armor.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Arrow_Down.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Arrow_Left_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Arrow_Left_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Arrow_Left_3.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Arrow_Right_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Arrow_Right_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Arrow_Right_3.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Arrow_Up.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_At.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Attack.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Ax.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Ax_Double.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Back_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Back_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Badge.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Bag.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Bank.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Basket.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Battery_Charge.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Battle.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Bell.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Bell_Off.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Bell_On.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Bell_Sleep.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Blacksmith.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Block.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Bluetooth.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Bomb_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Bomb_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Book_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Book_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Book_3.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Boots.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Boss.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Bow.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Brief_Bag.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Brush.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Bulb.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Bulb_Charge.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Bullet.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Calendar.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Camera.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Camera_Off.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Cap.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Card_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Card_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Cart_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Cart_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Castle.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Caution.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Certification.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Change.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Chat_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Chat_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Check_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Check_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Chest.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Chisel.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Class_A.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Class_B.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Class_C.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Class_D.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Class_S.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Class_Ss.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Clock_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Clock_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Closet.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Clothes.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Coin.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Coin_Star.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Compass.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Console_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Console_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Contraction.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Cooking.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Copy.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Costume.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Critical_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Critical_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Critical_3.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Crown_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Crown_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Crystal.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Delete.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Diamond.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Dice.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Direction_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Direction_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Discount.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Dollar_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Dollar_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Download.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Earth.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Earth_Pin.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Effect.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Energy_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Energy_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Exit.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Exit_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Exit_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Exp.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Expansion.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Face.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Faint.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Female.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Fire.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Firework.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Fish.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Fishing.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Flag.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Float.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Food.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Freezee.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Friends.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Gallery.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Game.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Gear.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Gift.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Glasses.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Globe.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Graduation_Cap.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Hammer.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Hammer_Claw.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Hand_Touch.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Hanger.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Hat.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Headset.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Heart.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Heart_Add.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Heart_Empty.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Helmet_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Helmet_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Help_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Help_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_History.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Home_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Home_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Hp.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Icecream.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Illuminati.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Infinity.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Info_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Info_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Info_3.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Info_4.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Key.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Kitchen_Knife.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Layer_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Layer_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Leaf.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Link.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Lock_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Lock_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Lock_Open.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Magic.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Magic_Ball.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Mail_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Mail_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Male.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Map_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Map_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Map_Pin.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Meal.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Medal_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Medal_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Megaphone.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Menu_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Menu_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Menu_3.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Menu_4.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Menu_5.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Menu_6.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Merge.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Message_Bottle.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Minus_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Minus_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Mission.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Money_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Money_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Money_Pouch.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Movie.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Mushroom.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Music_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Music_1_Off.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Music_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Music_2_Off.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Necklace.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Night.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Note.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Object.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Page_Next.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Page_Prev.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Paper_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Paper_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Path.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Pause_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Pause_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Paw.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Pen.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Pen_Feather.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Pencil.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Phone.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Photo_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Photo_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Pick.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Pickax.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Plants.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Play_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Play_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Plus_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Plus_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Potion_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Potion_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Potion_3.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Pouch.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Power_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Power_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Power_Off.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Rampart.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Rank_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Rank_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Recommendation.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Recycle.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Refresh_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Refresh_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Refresh_3.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Refresh_4.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Ring.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Roulette.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Safebox.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Sandglass.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Saw.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Scale.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Scroll_Old.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Search.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Security.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Setting.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Share.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Sheos.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Sheos_Wing.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Sheriff.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Shield_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Shield_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Shield_Viking.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Ship.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Shop_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Shop_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Shop_3.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Shovel.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Sickle.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Sign.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Skull.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Sound.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Sound_Off.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Star_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Star_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Star_3.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Star_Empty.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Step.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Stopwatch_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Stopwatch_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Storage.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Sun.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Switch.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Sword_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Sword_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Tag.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Target.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Telescope.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Temple.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Ticket.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Tool_Fix.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Top.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Trophy_1.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Trophy_2.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Tv.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Typhoon.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Under.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_User.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_User_Add.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_User_Info.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Video.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_View.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_View_Off.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Vr.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Warehouse.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Water.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Wing.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Wood.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_World.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Zoom_In.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_PictoIcons/256/PictoIcon_Zoom_Out.Png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_TutorialHand/256/tutorial_hand_1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_TutorialHand/256/tutorial_hand_2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_TutorialHand/256/tutorial_hand_3.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_TutorialHand/256/tutorial_hand_4.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_TutorialHand/256/tutorial_hand_5.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Icon_TutorialHand/256/tutorial_hand_6.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Badge01_Green.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Badge01_Purple.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Badge01_Red.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Badge01_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Badge02.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Bubble_Arrow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Bubble_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Parallelogram_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Parallelogram_Gray.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Parallelogram_Green.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Parallelogram_Hologram.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Parallelogram_Purple.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Parallelogram_Red.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Parallelogram_White_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Parallelogram_White_Inner.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Parallelogram_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Ribbon_Hologram.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Ribbon_White.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Tail_Demo_Red.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Tail_White_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Label_Tail_White_Border.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_LIne04_Under.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Line01_Divider_Left.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Line01_Divider_Right.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Line02_Divider_Left.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Line02_Divider_Right.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Line03_Divider.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Oval.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon01_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon01_Gray.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon01_Green.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon01_Magenta.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon01_Navy.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon01_Orange.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon01_Peacock.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon01_Plum.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon01_Purple.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon01_Red.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon01_Sky.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon01_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon02_Red.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon02_White1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon02_White2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon03_Red.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon03_White1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon03_White2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon04_Red.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Ribbon05.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Tapered01.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Tapered02.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Label/Title_Tapered03.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/PACK.md +6 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup01_Basic_Demo.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup01_Basic_White_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup01_Basic_White_Light.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup02~09_Topber_Demo_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup02~09_Topber_White_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup02~09_Topber_White_BgTop.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup02~09_Topber_White_BgTopLight.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup03_Gradient.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup06_Glow_Bottom.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup06_Pattern.psd +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup09_Topber_White_Label_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup09_Topber_White_Label_Inner.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup_Chat_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup_Chat_BgLight.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup_Chat_TabFocus.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup_FullWidth_Dark.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup_FullWidth_White.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup_List_VerticalLayout.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup_OutTitle_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup_OutTitle_Bg_Title.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup_OutTitle_Inner_Bottom.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup_OutTitle_Inner_Top.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup_Ticket_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup_Ticket_Border.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup_Ticket_BottomPattern.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Popup/Popup_Ticket_Gradient.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic01_Bg_Demo.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic01_Bg_White1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic01_Bg_White2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic01_FillMask.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic01_Fill_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic01_Fill_Green.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic01_Fill_White.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic01_Fill_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic02_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic02_FillMask.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic02_Fill_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic02_Fill_Green.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic02_Fill_White.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic02_Fill_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic03_Bg_Demo.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic03_Bg_White1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic03_Bg_White2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic03_FillMask.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic03_Fill_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic03_Fill_Green.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic03_Fill_White.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic03_Fill_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic04_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic04_Fill_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic04_Fill_Orange.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic04_White_Fill1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Basic04_White_Fill2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Handle_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Handle_FillMask.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Handle_Fill_Pink.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Handle_Fill_White1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Handle_Fill_White2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Handle_Handle.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Icon01_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Icon01_FillMask.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Icon01_Fill_Orange.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Icon01_Fill_White.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Icon01_Icon1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Icon01_Icon2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Icon02_Badge1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Icon02_Badge2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Icon02_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Icon02_FillMask.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Icon02_Fill_Orange.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Icon02_Fill_White.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Icon02_Icon1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level01_Badge_l.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level01_Badge_s.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level01_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level01_Fill.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level01_FillMask.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level02_Bg_Demo.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level02_Bg_White1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level02_Bg_White2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level02_Fill01_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level02_Fill01_White.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level02_Fill01_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level02_Fill02_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level02_Fill02_White.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level02_Fill02_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level02_Icon_Badge_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level02_Icon_Badge_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level02_Icon_Up_Green.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level02_Icon_Up_White.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level03_Badge1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level03_Badge2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level03_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level03_Fill1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Level03_Fill2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Panel_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Panel_Fill1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Panel_Fill2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Play01_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Play01_Fill.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Play01_FillMask.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Play02_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Play02_FillMask.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_StageHorizontal_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_StageHorizontal_Icon_l_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_StageHorizontal_Icon_l_Gray.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_StageHorizontal_Icon_l_White1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_StageHorizontal_Icon_l_White2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_StageHorizontal_Icon_l_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_StageHorizontal_Icon_s_Blue.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_StageHorizontal_Icon_s_White1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_StageHorizontal_Icon_s_White2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_StageHorizontal_Icon_s_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_StageVertical_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_StageVertical_Icon1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_StageVertical_Icon2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Wave_Badge1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Wave_Badge2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Wave_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/Slider_Wave_Fill.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/_Slider_Basic_R6_Fill_Orange.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/_Slider_Round6_01_White_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/Slider/_Slider_Round6_01_White_Fill.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Alert_Circle_Icon_Exclamation.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Alert_Circle_l_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Alert_Circle_l_Border.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Alert_Circle_s_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Alert_Circle_s_Border.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Alert_Dot_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Alert_Dot_Border.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Alert_Dot_Light.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/InputField01_Bg_Demo.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/InputField01_Bg_White1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/InputField01_Bg_White2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/InputField01_Bg_White3.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/InputField01_Icon_Lock.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/InputField01_Icon_Mail.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/InputField02_Demo.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/InputField02_White1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/InputField02_White2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/InputField03.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/InputField04.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ResourceBar_Demo_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ResourceBar_Demo_Btn_Blue1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ResourceBar_Demo_Btn_Blue2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ResourceBar_Demo_Btn_Purple1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ResourceBar_Demo_Btn_Purple2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ResourceBar_Demo_Btn_Yellow1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ResourceBar_Demo_Btn_Yellow2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ResourceBar_Demo_Icon_Coin.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ResourceBar_Demo_Icon_Energy.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ResourceBar_Demo_Icon_Gem.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ResourceBar_Demo_Icon_Monster.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ResourceBar_White_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ResourceBar_White_Btn1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ResourceBar_White_Btn2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ResourceBar_White_Btn3.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ResourceBar_White_Icon1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ResourceBar_White_Icon2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Switch_Demo_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Switch_Demo_Fill.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Switch_Demo_Handle.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Switch_White_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Switch_White_BgInner.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Switch_White_Fill1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Switch_White_Fill2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Switch_White_Handle.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ToastMessage_Bg_Gray.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ToastMessage_Bg_Green.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ToastMessage_Bg_Red.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ToastMessage_Bg_White.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ToastMessage_Bg_Yellow.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ToastMessage_Gradient.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ToastMessage_Light1.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/ToastMessage_Light2.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Toggle_Check_Demo_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Toggle_Check_Demo_Icon.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Toggle_Check_White_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Toggle_Check_White_BgLight.png +0 -0
- package/plugins/phaser-casual-game-factory/assets/ui-packs/super-casual/UI_Etc/Toggle_Check_White_Icon.png +0 -0
- package/plugins/phaser-casual-game-factory/examples/README.md +44 -0
- package/plugins/phaser-casual-game-factory/examples/economy-demo-config.ts +255 -0
- package/plugins/phaser-casual-game-factory/examples/economy-demo.ts +89 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/index.html +342 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/package-lock.json +1293 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/package.json +21 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/playwright.config.ts +26 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/public/assets/sfx/ui_click.mp3 +0 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/public/assets/sfx/ui_close.mp3 +0 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/public/assets/ui/BG_lobby.png +0 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/public/assets/ui/Bar_Bg.png +0 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/public/assets/ui/progress_inner.png +0 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/public/assets/ui/progress_outer.png +0 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/public/fonts/bvp-400-latin-OEyTajQY.woff2 +0 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/public/fonts/bvp-400-viet-SOx6iaFb.woff2 +0 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/public/fonts/bvp-600-latin-xAC4kEK0.woff2 +0 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/public/fonts/bvp-600-viet-DbGrrtCq.woff2 +0 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/public/fonts/bvp-700-latin-CPfR8Jz_.woff2 +0 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/public/fonts/bvp-700-viet-DptIoWwl.woff2 +0 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/public/fonts/bvp-800-latin-B5VTH9An.woff2 +0 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/public/fonts/bvp-800-viet-BEUwTqXl.woff2 +0 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/public/fonts/bvp-900-latin-B6esVQUu.woff2 +0 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/public/fonts/bvp-900-viet-DUJ3fpCl.woff2 +0 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/public/logo-frog.png +0 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/src/brand/BootLoadingScreen.js +7 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/src/brand/SplashFullscreenBg.js +4 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/src/brand-shims.d.ts +33 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/src/demo-scenes.ts +12 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/src/demo-tools.ts +34 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/src/main.ts +1358 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/src/scenes/BootScene.ts +236 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/src/scenes/GameScene.ts +152 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/src/scenes/HomeScene.ts +21 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/src/scenes/scene-hooks.ts +12 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/src/styles.css +623 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/src/ui-audio.ts +156 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/tests/browser-smoke.spec.ts +170 -0
- package/plugins/phaser-casual-game-factory/examples/factory-browser-demo/vite.config.ts +23 -0
- package/plugins/phaser-casual-game-factory/examples/leveling-demo-config.ts +107 -0
- package/plugins/phaser-casual-game-factory/references/condition-service.md +38 -0
- package/plugins/phaser-casual-game-factory/references/core-contracts.md +39 -0
- package/plugins/phaser-casual-game-factory/references/daily-login-service.md +32 -0
- package/plugins/phaser-casual-game-factory/references/economy-service.md +192 -0
- package/plugins/phaser-casual-game-factory/references/leveling-service.md +56 -0
- package/plugins/phaser-casual-game-factory/references/loading-view.md +181 -0
- package/plugins/phaser-casual-game-factory/references/time-service.md +42 -0
- package/plugins/phaser-casual-game-factory/scripts/new-phaser-casual-game.ps1 +152 -0
- package/plugins/phaser-casual-game-factory/scripts/run-browser-demo.ps1 +13 -0
- package/plugins/phaser-casual-game-factory/scripts/run-economy-demo.ps1 +4 -0
- package/plugins/phaser-casual-game-factory/scripts/test-all.ps1 +11 -0
- package/plugins/phaser-casual-game-factory/scripts/test-browser.ps1 +10 -0
- package/plugins/phaser-casual-game-factory/scripts/test-economy.ps1 +4 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/SKILL.md +846 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/client/.env.example +19 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/client/bgremove.py +127 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/client/codex_extract.py +123 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/client/codex_gen.sh +172 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/client/envfile.py +121 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/client/gemini_image_mcp.py +1870 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/client/imglib.py +2138 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/client/remote_backend.py +498 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/client/remote_codex.py +59 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/client/remote_proto.py +135 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/client/requirements-client.txt +22 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/client/test_imglib.py +1647 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/client/test_restyle_tools.py +256 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/client/tools/restyle/styles/unscrew-casual.refs/ref-lose.jpg +0 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/client/tools/restyle/styles/unscrew-casual.refs/ref-welcome.jpg +0 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/client/tools/restyle/styles/unscrew-casual.refs/ref-win.jpg +0 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/client/upscale.py +289 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/reference/client-guide.md +180 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/reference/mcp-image-input.md +148 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/reference/prompt-template.md +216 -0
- package/plugins/phaser-casual-game-factory/skills/game-art/reference/remote-lan.md +224 -0
- package/plugins/phaser-casual-game-factory/skills/pcgf-git-merge-request/SKILL.md +96 -0
- package/plugins/phaser-casual-game-factory/skills/pcgf-ui-reskin/SKILL.md +144 -0
- package/plugins/phaser-casual-game-factory/skills/phaser-adaptive-loading/SKILL.md +33 -0
- package/plugins/phaser-casual-game-factory/skills/phaser-casual-game-factory/SKILL.md +225 -0
- package/plugins/phaser-casual-game-factory/skills/phaser-condition-service/SKILL.md +21 -0
- package/plugins/phaser-casual-game-factory/skills/phaser-daily-login-service/SKILL.md +20 -0
- package/plugins/phaser-casual-game-factory/skills/phaser-economy-service/SKILL.md +72 -0
- package/plugins/phaser-casual-game-factory/skills/phaser-foundation/SKILL.md +60 -0
- package/plugins/phaser-casual-game-factory/skills/phaser-leveling-service/SKILL.md +39 -0
- package/plugins/phaser-casual-game-factory/skills/phaser-loading-view/SKILL.md +167 -0
- package/plugins/phaser-casual-game-factory/skills/phaser-studio25-boot-brand/SKILL.md +107 -0
- package/plugins/phaser-casual-game-factory/skills/phaser-time-service/SKILL.md +26 -0
- package/plugins/phaser-casual-game-factory/skills/phaser-ui-motion/SKILL.md +161 -0
- package/plugins/phaser-casual-game-factory/skills/phaser-ui-motion/fix-off-canvas-press.md +198 -0
- package/plugins/phaser-casual-game-factory/skills/phaser-ui-sfx/SKILL.md +83 -0
- package/plugins/phaser-casual-game-factory/skills/theme-cream-casual/SKILL.md +136 -0
- package/plugins/phaser-casual-game-factory/skills/theme-dark-casual/SKILL.md +23 -0
- package/plugins/phaser-casual-game-factory/skills/tool-demo-qa/SKILL.md +264 -0
- package/plugins/phaser-casual-game-factory/templates/adaptive-loading/adaptive-loading-manager.ts +103 -0
- package/plugins/phaser-casual-game-factory/templates/adaptive-loading/device-profile.ts +76 -0
- package/plugins/phaser-casual-game-factory/templates/adaptive-loading/device-tier-session.ts +133 -0
- package/plugins/phaser-casual-game-factory/templates/adaptive-loading/index.ts +4 -0
- package/plugins/phaser-casual-game-factory/templates/adaptive-loading/types.ts +27 -0
- package/plugins/phaser-casual-game-factory/templates/boot/brand/BootLoadingScreen.js +370 -0
- package/plugins/phaser-casual-game-factory/templates/boot/brand/SplashFullscreenBg.js +18 -0
- package/plugins/phaser-casual-game-factory/templates/boot/brand/brand-defaults.js +36 -0
- package/plugins/phaser-casual-game-factory/templates/boot/brand-shims.d.ts +40 -0
- package/plugins/phaser-casual-game-factory/templates/boot/close-styles.ts +26 -0
- package/plugins/phaser-casual-game-factory/templates/boot/index.ts +32 -0
- package/plugins/phaser-casual-game-factory/templates/boot/iris-close.ts +85 -0
- package/plugins/phaser-casual-game-factory/templates/boot/map-dom-rect-to-game.ts +53 -0
- package/plugins/phaser-casual-game-factory/templates/boot/play-boot-loading-view.ts +124 -0
- package/plugins/phaser-casual-game-factory/templates/commerce/commerce-service.ts +22 -0
- package/plugins/phaser-casual-game-factory/templates/commerce/index.ts +1 -0
- package/plugins/phaser-casual-game-factory/templates/commerce/types.ts +6 -0
- package/plugins/phaser-casual-game-factory/templates/condition/condition-service.ts +166 -0
- package/plugins/phaser-casual-game-factory/templates/condition/index.ts +2 -0
- package/plugins/phaser-casual-game-factory/templates/condition/types.ts +69 -0
- package/plugins/phaser-casual-game-factory/templates/core/events.ts +71 -0
- package/plugins/phaser-casual-game-factory/templates/core/gameplay.ts +15 -0
- package/plugins/phaser-casual-game-factory/templates/core/index.ts +9 -0
- package/plugins/phaser-casual-game-factory/templates/core/layout.ts +25 -0
- package/plugins/phaser-casual-game-factory/templates/core/loading.ts +33 -0
- package/plugins/phaser-casual-game-factory/templates/core/service-registry.ts +28 -0
- package/plugins/phaser-casual-game-factory/templates/core/services.ts +19 -0
- package/plugins/phaser-casual-game-factory/templates/core/storage.ts +7 -0
- package/plugins/phaser-casual-game-factory/templates/core/time.ts +70 -0
- package/plugins/phaser-casual-game-factory/templates/core/types.ts +21 -0
- package/plugins/phaser-casual-game-factory/templates/daily-login/daily-login-service.ts +136 -0
- package/plugins/phaser-casual-game-factory/templates/daily-login/index.ts +3 -0
- package/plugins/phaser-casual-game-factory/templates/daily-login/reward-service.ts +108 -0
- package/plugins/phaser-casual-game-factory/templates/daily-login/types.ts +39 -0
- package/plugins/phaser-casual-game-factory/templates/demo-tools/demo-device-tier.ts +73 -0
- package/plugins/phaser-casual-game-factory/templates/demo-tools/demo-perf.ts +232 -0
- package/plugins/phaser-casual-game-factory/templates/demo-tools/demo-tools.css +355 -0
- package/plugins/phaser-casual-game-factory/templates/demo-tools/demo-tools.ts +305 -0
- package/plugins/phaser-casual-game-factory/templates/demo-tools/index.ts +7 -0
- package/plugins/phaser-casual-game-factory/templates/demo-tools/init-demo-qa-tools.ts +101 -0
- package/plugins/phaser-casual-game-factory/templates/demo-tools/tool-param-fields.ts +214 -0
- package/plugins/phaser-casual-game-factory/templates/demo-tools/tool-sections.ts +238 -0
- package/plugins/phaser-casual-game-factory/templates/demo-tools/tool-shell.html +57 -0
- package/plugins/phaser-casual-game-factory/templates/demo-tools/tool-shell.ts +141 -0
- package/plugins/phaser-casual-game-factory/templates/economy/default-registry.ts +14 -0
- package/plugins/phaser-casual-game-factory/templates/economy/economy-service.ts +65 -0
- package/plugins/phaser-casual-game-factory/templates/economy/exchange-handlers.ts +58 -0
- package/plugins/phaser-casual-game-factory/templates/economy/grant-handler.ts +58 -0
- package/plugins/phaser-casual-game-factory/templates/economy/index.ts +15 -0
- package/plugins/phaser-casual-game-factory/templates/economy/inventory-service.ts +170 -0
- package/plugins/phaser-casual-game-factory/templates/economy/item-service.ts +220 -0
- package/plugins/phaser-casual-game-factory/templates/economy/item-utils.ts +126 -0
- package/plugins/phaser-casual-game-factory/templates/economy/merge-handler.ts +42 -0
- package/plugins/phaser-casual-game-factory/templates/economy/operation-handler.ts +44 -0
- package/plugins/phaser-casual-game-factory/templates/economy/package-handler.ts +41 -0
- package/plugins/phaser-casual-game-factory/templates/economy/random.ts +33 -0
- package/plugins/phaser-casual-game-factory/templates/economy/repository.ts +64 -0
- package/plugins/phaser-casual-game-factory/templates/economy/state-utils.ts +221 -0
- package/plugins/phaser-casual-game-factory/templates/economy/types.ts +309 -0
- package/plugins/phaser-casual-game-factory/templates/economy/ui-view-models.ts +79 -0
- package/plugins/phaser-casual-game-factory/templates/entitlement/entitlement-service.ts +29 -0
- package/plugins/phaser-casual-game-factory/templates/entitlement/index.ts +1 -0
- package/plugins/phaser-casual-game-factory/templates/entitlement/types.ts +26 -0
- package/plugins/phaser-casual-game-factory/templates/leveling/condition-evaluator.ts +17 -0
- package/plugins/phaser-casual-game-factory/templates/leveling/config-validator.ts +63 -0
- package/plugins/phaser-casual-game-factory/templates/leveling/index.ts +5 -0
- package/plugins/phaser-casual-game-factory/templates/leveling/leveling-service.ts +306 -0
- package/plugins/phaser-casual-game-factory/templates/leveling/types.ts +80 -0
- package/plugins/phaser-casual-game-factory/templates/leveling/view-model.ts +52 -0
- package/plugins/phaser-casual-game-factory/templates/loading-view/index.ts +4 -0
- package/plugins/phaser-casual-game-factory/templates/loading-view/loading-view-model.ts +203 -0
- package/plugins/phaser-casual-game-factory/templates/loading-view/presets.ts +26 -0
- package/plugins/phaser-casual-game-factory/templates/loading-view/progress.ts +30 -0
- package/plugins/phaser-casual-game-factory/templates/loading-view/types.ts +49 -0
- package/plugins/phaser-casual-game-factory/templates/motion/index.ts +2 -0
- package/plugins/phaser-casual-game-factory/templates/motion/phaser-ui-motion.ts +363 -0
- package/plugins/phaser-casual-game-factory/templates/motion/types.ts +21 -0
- package/plugins/phaser-casual-game-factory/templates/phaser/browser-storage-adapter.ts +91 -0
- package/plugins/phaser-casual-game-factory/templates/phaser/design-size.ts +34 -0
- package/plugins/phaser-casual-game-factory/templates/phaser/foundation-scene.ts +39 -0
- package/plugins/phaser-casual-game-factory/templates/phaser/hybrid-loading-layer.css +46 -0
- package/plugins/phaser-casual-game-factory/templates/phaser/loading-overlay-scene.ts +653 -0
- package/plugins/phaser-casual-game-factory/templates/phaser/phaser-event-bus.ts +35 -0
- package/plugins/phaser-casual-game-factory/templates/phaser/scene-keys.ts +12 -0
- package/plugins/phaser-casual-game-factory/templates/phaser/scene-registration.ts +28 -0
- package/plugins/phaser-casual-game-factory/templates/phaser/system-time-adapter.ts +33 -0
- package/plugins/phaser-casual-game-factory/templates/time/index.ts +2 -0
- package/plugins/phaser-casual-game-factory/templates/time/time-service.ts +184 -0
- package/plugins/phaser-casual-game-factory/templates/ui/audio-settings.ts +148 -0
- package/plugins/phaser-casual-game-factory/templates/ui/bind-factory-dom-press.ts +108 -0
- package/plugins/phaser-casual-game-factory/templates/ui/factory-cream-casual.css +380 -0
- package/plugins/phaser-casual-game-factory/templates/ui/factory-dark-casual.css +11 -0
- package/plugins/phaser-casual-game-factory/templates/ui/index.ts +5 -0
- package/plugins/phaser-casual-game-factory/templates/ui/settings-popup-dom.ts +349 -0
- package/plugins/phaser-casual-game-factory/templates/ui/settings-popup-phaser.ts +284 -0
- package/plugins/phaser-casual-game-factory/templates/ui/ui-sfx.ts +131 -0
- package/plugins/phaser-casual-game-factory/templates/ui-reskin/compare.html +235 -0
- package/plugins/phaser-casual-game-factory/tests/README.md +29 -0
- package/plugins/phaser-casual-game-factory/tests/condition.test.ts +92 -0
- package/plugins/phaser-casual-game-factory/tests/daily-login-reward.test.ts +45 -0
- package/plugins/phaser-casual-game-factory/tests/daily-login.test.ts +73 -0
- package/plugins/phaser-casual-game-factory/tests/economy.test.ts +258 -0
- package/plugins/phaser-casual-game-factory/tests/entitlement.test.ts +18 -0
- package/plugins/phaser-casual-game-factory/tests/leveling.test.ts +158 -0
- package/plugins/phaser-casual-game-factory/tests/loading-view.test.ts +39 -0
- package/plugins/phaser-casual-game-factory/tests/time.test.ts +60 -0
|
@@ -0,0 +1,846 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: game-art
|
|
3
|
+
description: Use when re-styling existing game art assets — generating a new art style for PNG assets while keeping their exact shape, using Gemini web via MCP and/or Codex CLI (GPT Image 2) — whichever backends are alive; one backend is enough, always deliver compare.html demo — then removing the background (runs SEVERAL cutout methods per image — algebraic unmix, chroma-key on the measured background colour, chroma-key on the requested key, BEN2 — scores each on measurable criteria and delivers the best one) and outputting at the original asset's exact size (upscaling with Real-ESRGAN x4plus_anime_6B when the generated image is smaller than the target - again scoring several methods and picking the best), with a self-contained web page to review variants. Also has a Thumbnail mode - generate store thumbnails at exactly 1:1 (min 512x512), 5:7 (540x756) and 16:9 (min 1280x720) from a style + Home screenshot + game assets, no background removal. And a Screen Sheet mode - reskin a WHOLE game screen from a screenshot - one generated image = full restyled mockup on top + key-background detail strip below, sliced into individual assets. Triggers on "đổi style asset", "restyle asset", "game art", "làm lại asset theo phong cách", "re-skin game art", "tạo asset mới từ asset cũ", "generate asset from existing asset", "review asset trên web", "reskin màn hình", "reskin cả màn hình từ screenshot", "screen sheet", "tạo thumb game", "làm thumbnail game", "ảnh quảng bá game", "game thumbnail".
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# game-art — Restyle Asset
|
|
7
|
+
|
|
8
|
+
Sinh asset game mới **từ asset có sẵn**: giữ nguyên hình dạng, đổi phong cách, tách nền,
|
|
9
|
+
xuất ra **đúng size + đúng vị trí của asset gốc** để thay 1-1 mà không phải sửa code layout.
|
|
10
|
+
|
|
11
|
+
**Sinh ảnh dùng Gemini web (MCP) và/hoặc Codex `codex` (GPT Image 2)** — xem mục
|
|
12
|
+
"Sinh ảnh — backend". **Không bắt buộc so sánh chéo hai AI.** Còn **ít nhất 1 backend** là
|
|
13
|
+
đủ để gen + luôn xuất `compare.html` demo. Cả hai sống thì có thể chạy cả hai (tuỳ chọn,
|
|
14
|
+
không bắt buộc). Tách nền, bám size, duyệt sheet và apply vẫn chạy trên MCP `gemini-image` —
|
|
15
|
+
**12 tool, không còn script rời nào trong project** (script sinh ảnh Codex nằm trong
|
|
16
|
+
`server/` của skill, không phải trong project). Ngoài luồng theo-asset mặc định còn hai chế độ
|
|
17
|
+
riêng, xem mục riêng bên dưới: **Screen Sheet** (reskin CẢ màn hình từ screenshot) và
|
|
18
|
+
**Thumbnail** (3 tỉ lệ cửa hàng):
|
|
19
|
+
|
|
20
|
+
> **BẮT BUỘC — kết thúc MỖI lượt thiết kế bằng một file HTML đối chiếu.** Xong bất kỳ lượt
|
|
21
|
+
> sinh nào (anchor pass, batch pass, screen sheet, thumbnail, hay chỉ sinh lại 1 asset) thì CUỐI
|
|
22
|
+
> CÙNG luôn là `make_compare_sheet` → `compare.html`, rồi **đưa đường dẫn file đó cho user**.
|
|
23
|
+
> Chỉ cần **≥1 biến thể** từ backend còn sống — **vẫn phải** dựng `compare.html` (đối chiếu
|
|
24
|
+
> gốc ↔ bản mới). Không kết luận "xong" khi chưa có file này. Không tự chọn hộ bản nào.
|
|
25
|
+
|
|
26
|
+
| Tool | Việc |
|
|
27
|
+
|---|---|
|
|
28
|
+
| `plan_asset(src, avoid)` | Đọc asset gốc → size, bbox, palette, **màu key an toàn** (`key`, `key_safe`) |
|
|
29
|
+
| `process_raws(raws, src, key, size, out_dir, prefix, full_bleed)` | **Tách nền + bám size gốc** cho ảnh THÔ sinh từ Gemini/`codex` — nửa postprocess của `restyle_asset` tách riêng, trả cùng cấu trúc `variants[]`. **Đường mặc định** |
|
|
30
|
+
| `slice_sheet(sheet, key, out_dir, prefix, mockup_frac)` | **Chế độ Screen Sheet**: mổ ảnh "mockup màn hình + dải chi tiết" thành `<prefix>_mockup.png` (giữ nguyên) + từng cell tự dò, tách nền, đánh số theo thứ tự đọc |
|
|
31
|
+
| `restyle_asset(prompt, image_paths, src, key, size, n, out_dir, full_bleed)` | Sinh N biến thể qua **Gemini web (cookie)** + tách nền + bám size gốc (gộp generate + postprocess). Gọn khi CHỈ dùng Gemini (vd thiếu Codex CLI) — đổi lại tên ra `v<i>.png`, không mang nhãn backend |
|
|
32
|
+
| `make_thumbs(sources, out_dir, anchor, prefix)` | **Chế độ Thumbnail**: cắt bù + resize ảnh thô về ĐÚNG 3 size cửa hàng (1:1 1024², 5:7 540×756, 16:9 1280×720). KHÔNG tách nền |
|
|
33
|
+
| `remote_nodes()` | **Chế độ mượn máy**: bảng TẢI + QUOTA của mọi node trong LAN, và vì sao node nào được chọn. Không tốn lượt sinh ảnh |
|
|
34
|
+
| `upscale_image(image_paths, out_dir, size, scale, prefix)` | **Phóng to** ảnh đã có (Real-ESRGAN x4plus_anime_6B) khi bản sinh nhỏ hơn size cần — cũng chạy nhiều cách rồi chấm điểm chọn. Các tool trên đã tự gọi khi cần; tool này để dùng tay |
|
|
35
|
+
| `make_compare_sheet(groups, out, cell)` | Dựng **trang ĐỐI CHIẾU compare.html tự chứa** — gom nhóm theo asset, bản gốc cạnh biến thể, **nhấn giữ để lật về gốc ngay tại chỗ**. **BẢN GIAO BẮT BUỘC sau mỗi lượt thiết kế** |
|
|
36
|
+
| `make_web_sheet(labels, images, out, cell)` | Dựng trang review.html lưới phẳng (mọi ảnh ngang hàng, không nhóm, không lật gốc). Dùng khi chỉ cần soi mép cutout mà KHÔNG cần đối chiếu gốc |
|
|
37
|
+
| `make_contact_sheet(labels, images, out, cell)` | Dựng sheet PNG 3 nền tĩnh (dự phòng khi cần ảnh, không mở được trình duyệt) |
|
|
38
|
+
| `apply_asset(variant, dst, backup_dir, project_root)` | Backup bản gốc **rồi** ghi đè bằng biến thể đã duyệt |
|
|
39
|
+
| `generate_image(prompt, image_paths, out_dir)` | Sinh ảnh thô qua Gemini web (KHÔNG tách nền) — **chính là backend sinh ảnh A**, chạy 2 lượt rồi đưa raw qua `process_raws`. Trả về *chuỗi*, không phải dict |
|
|
40
|
+
|
|
41
|
+
Trong project chỉ để lại **ảnh input/output** dưới `tools/restyle/`. Không có `.py` nào trong project.
|
|
42
|
+
|
|
43
|
+
## Sinh ảnh — backend
|
|
44
|
+
|
|
45
|
+
**Preflight trước mỗi lượt:** `auth_status()` / `remote_nodes()` / `health(deep=true)` → biết
|
|
46
|
+
backend nào sống. Rồi gen bằng **mọi backend còn sống** (1 hoặc 2).
|
|
47
|
+
|
|
48
|
+
| Backend sống | Hành động | Demo |
|
|
49
|
+
|---|---|---|
|
|
50
|
+
| Cả Gemini + Codex | Tuỳ chọn: mỗi AI `N_AI` ảnh (mặc định 2 → tổng 4) **hoặc** chỉ 1 AI nếu user không cần so sánh chéo | `compare.html` với mọi variant có được |
|
|
51
|
+
| Chỉ Gemini | `restyle_asset(n=4)` hoặc `generate_image` ×4 + `process_raws` (prefix `gem`/`v`) | **Vẫn** `compare.html` |
|
|
52
|
+
| Chỉ Codex | `codex` ×4 → `process_raws` (prefix `gpt`) | **Vẫn** `compare.html` |
|
|
53
|
+
| Không cái nào | Dừng, báo user. Không còn đường sinh ảnh | — |
|
|
54
|
+
|
|
55
|
+
**Không bắt buộc so sánh chéo Gemini vs GPT.** User nói "không cần so sánh chéo" / chỉ còn
|
|
56
|
+
1 backend → gen đủ biến thể bằng backend đó, **vẫn luôn** giao `compare.html` (gốc ↔ các bản
|
|
57
|
+
mới). Prompt dựng từ `reference/prompt-template.md` — **cùng nguyên văn** cho backend nào
|
|
58
|
+
đang chạy, kể cả `{KEY_HEX}` và `{SHAPE_LOCK}`.
|
|
59
|
+
|
|
60
|
+
> **Antigravity CLI (`agy`, Nano Banana) ĐÃ TẮT.** Trước đây nó là Backend A; giờ vai trò đó
|
|
61
|
+
> là Gemini web. Đừng gọi `agy`, đừng thêm lại nó vào luồng.
|
|
62
|
+
|
|
63
|
+
### Backend A — Gemini web qua MCP (`generate_image`)
|
|
64
|
+
|
|
65
|
+
Chạy **2 lượt**, mỗi lượt 1 ảnh, ghi thẳng vào thư mục raw:
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
generate_image(prompt="<nguyên văn prompt restyle>",
|
|
69
|
+
image_paths=["<asset gốc>", "<anchor/ref>"],
|
|
70
|
+
out_dir="tools/restyle/out/<ten>/_raw")
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
- **`image_paths` đúng thứ tự** `[asset gốc, anchor/ref…]` — "the FIRST image" trong prompt là
|
|
74
|
+
phần tử đầu. Tối đa 4 ảnh, mỗi ảnh ≤7MB.
|
|
75
|
+
- **Đây là tool DUY NHẤT trong skill trả về *chuỗi*, không phải dict**: thành công thì
|
|
76
|
+
`"Saved:\n<đường dẫn>"`, hỏng thì chuỗi bắt đầu bằng `Error:`. Phải tự parse đường dẫn và tự
|
|
77
|
+
kiểm tiền tố `Error:` — đừng đọc field `error` như các tool khác.
|
|
78
|
+
- Cần **cookie Gemini còn sống**. Hỏng cookie thì MCP tự refresh qua Chrome+CDP; vẫn hỏng thì
|
|
79
|
+
xem bảng "Khi hỏng" (mục cookie).
|
|
80
|
+
- Lỗi `No image URL in response` thường **không phải cookie** mà là prompt bị từ chối — sửa
|
|
81
|
+
câu cho rõ ("Generate an image of …") rồi chạy lại 1 lượt.
|
|
82
|
+
- Ảnh lưu tên theo timestamp (`20260730_0.png`), không phải `gem1.png`. Cứ giữ nguyên tên đó và
|
|
83
|
+
truyền **theo thứ tự** vào `process_raws` — bước đó mới đánh số `gem1/gem2`.
|
|
84
|
+
|
|
85
|
+
### Backend B — Codex CLI (GPT Image 2)
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
bash client/codex_gen.sh --prompt "<nguyên văn prompt restyle>" \
|
|
89
|
+
--ref "<asset gốc>" --ref "<anchor/ref>" \
|
|
90
|
+
--out "tools/restyle/out/<ten>/_raw/gpt<i>.png"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Chạy 2 lượt (i=1,2). `--ref` lặp được, thứ tự `--ref` = thứ tự "FIRST/SECOND image" trong
|
|
94
|
+
prompt. Script tự lo mọi cơ chế codex (exec, snapshot-diff `generated_images/` cho codex mới
|
|
95
|
+
lẫn session-scan cho codex cũ, chọn python chạy được trên Windows). Exit code xem chú thích
|
|
96
|
+
đầu file script; cách xử lý từng mã nằm trong bảng "Khi hỏng".
|
|
97
|
+
|
|
98
|
+
### Song song & tuần tự
|
|
99
|
+
|
|
100
|
+
- 2 lượt `codex` phải **TUẦN TỰ** — snapshot-diff của script không an toàn khi 2 lượt chạy đè nhau.
|
|
101
|
+
- 2 lượt Gemini cũng chạy tuần tự (mỗi lượt mở một chat mới; đừng đua).
|
|
102
|
+
- Gemini và `codex` chạy **SONG SONG với nhau** được (hai hệ độc lập) — nhưng `generate_image` là
|
|
103
|
+
tool MCP nên nó chặn lượt; muốn song song thì chạy `codex_gen.sh` ở chế độ nền trước, rồi gọi
|
|
104
|
+
`generate_image` trong lúc script chạy.
|
|
105
|
+
|
|
106
|
+
### Sau khi có ảnh thô → `process_raws`
|
|
107
|
+
|
|
108
|
+
Gọi **một lần cho mỗi backend đã sinh** (chỉ gọi backend nào có raw):
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
# Chỉ Gemini:
|
|
112
|
+
process_raws(raws=[...gem raws...], src=<asset>, key=<key>, out_dir=..., prefix="gem")
|
|
113
|
+
# Chỉ Codex:
|
|
114
|
+
process_raws(raws=[".../gpt1.png", ".../gpt2.png", ...], src=<asset>, key=<key>,
|
|
115
|
+
out_dir=..., prefix="gpt")
|
|
116
|
+
# Cả hai (tuỳ chọn): gọi cả hai block trên
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Nhãn `gem*` / `gpt*` / `v*` trên trang đối chiếu để user biết nguồn. Luật đọc
|
|
120
|
+
`variants[]`/`flags` y hệt `restyle_asset` (xem Bước 2).
|
|
121
|
+
**Khi retry một backend**: sinh thêm ảnh thô mới rồi gọi lại `process_raws` với **TOÀN BỘ raw
|
|
122
|
+
của backend đó** (cũ + mới, cùng `prefix`) — đánh số lại từ đầu, không lo file đè lệch; tách nền
|
|
123
|
+
lại vài ảnh chỉ tốn vài giây, không tốn lượt sinh.
|
|
124
|
+
|
|
125
|
+
> **Ảnh NỀN tràn viền thì thêm `full_bleed=True`** (nền màn hình, tranh phủ kín khung — chủ thể
|
|
126
|
+
> chạm vành ảnh là đúng thiết kế). Không thêm thì **mọi** bản sinh bị đánh `bad_background` oan dù
|
|
127
|
+
> tách nền hoàn hảo. Sprite/icon/asset rời → **để mặc định**, ở đó lề nền là yêu cầu thật.
|
|
128
|
+
> Xem § Tách nền.
|
|
129
|
+
|
|
130
|
+
Mỗi variant giờ có thêm `cutout_method` (cách tách nền đã **thắng điểm** cho ảnh đó) và
|
|
131
|
+
`cutout_table` (điểm mọi ứng viên, kể cả bị loại). Không phải chọn gì — tool tự chạy nhiều cách
|
|
132
|
+
rồi lấy bản tốt nhất. Chỉ đọc khi cần biết *vì sao* một bản sạch/bẩn.
|
|
133
|
+
|
|
134
|
+
### Thiếu backend thì sao (vẫn phải show demo)
|
|
135
|
+
|
|
136
|
+
- **Thiếu Codex / chỉ Gemini** → báo ngắn ("chỉ Gemini"), sinh **4 ảnh** bằng Gemini
|
|
137
|
+
(`restyle_asset(n=4)` gọn hơn — tên `v1..v4`). **Bắt buộc** `make_compare_sheet` →
|
|
138
|
+
`compare.html` như bình thường.
|
|
139
|
+
- **Gemini chết / chỉ Codex** → báo ngắn ("chỉ GPT/Codex"), sinh **4 ảnh** bằng `codex`
|
|
140
|
+
(`gpt1..gpt4` + `process_raws` prefix `gpt`). **Bắt buộc** `compare.html`. Đồng thời có thể
|
|
141
|
+
sửa cookie/DNS Gemini theo bảng "Khi hỏng" (không chặn lượt hiện tại).
|
|
142
|
+
- **User không cần so sánh chéo** (kể cả khi cả hai sống) → chọn **1 backend** (ưu tiên cái
|
|
143
|
+
đang healthy), gen 4 bản, vẫn `compare.html`.
|
|
144
|
+
- **Mất cả hai** → dừng, báo user. Không còn đường sinh ảnh — **không** dựng compare rỗng.
|
|
145
|
+
- Ảnh Gemini/`codex` ra 1024×1024 hoặc lớn hơn — kệ nó, `process_raws` bám size gốc sau.
|
|
146
|
+
|
|
147
|
+
## Chế độ Screen Sheet — reskin cả màn hình (độc lập với luồng theo-asset)
|
|
148
|
+
|
|
149
|
+
**Khi nào dùng:** user đưa/nhờ chụp **screenshot một màn hình game** và muốn reskin cả màn
|
|
150
|
+
— thay vì restyle từng asset lẻ. Một lượt sinh cho ra MỘT ảnh gồm: nửa trên là **mockup cả
|
|
151
|
+
màn hình đã đổi style** (giữ nguyên layout — duyệt tổng thể được ngay), nửa dưới là **dải
|
|
152
|
+
chi tiết** (nút, icon, panel…) vẽ rời nhau trên nền key để cắt thành asset. Ưu điểm so với
|
|
153
|
+
per-asset: **cả bộ chi tiết cùng ra trong một ảnh nên tự đồng bộ style với nhau và với
|
|
154
|
+
mockup**. Luồng theo-asset (anchor/batch) không thay đổi gì — hai chế độ dùng chung style
|
|
155
|
+
preset, backend CLI và trang review.
|
|
156
|
+
|
|
157
|
+
1. **Screenshot**: user đưa ảnh màn hình, hoặc chụp từ game đang chạy. Ảnh này là "asset
|
|
158
|
+
gốc" của chế độ này.
|
|
159
|
+
2. **Style preset**: y hệt Bước 1 của luồng cũ (dùng chung file `styles/<ten>.md`).
|
|
160
|
+
3. **Chọn key**: `plan_asset(<screenshot>, avoid=[<bảng màu style preset>])` → `key` an
|
|
161
|
+
toàn cho dải chi tiết (tránh cả màu màn hình lẫn màu style).
|
|
162
|
+
4. **Liệt kê chi tiết** (`{ELEMENT_LIST}`): nhìn screenshot, liệt kê tường minh và ĐẾM các
|
|
163
|
+
chi tiết muốn cắt ("the play button, the coin icon, ... — exactly 5 elements"). Đừng
|
|
164
|
+
viết "all UI elements" — model bám danh sách đếm được tốt hơn nhiều.
|
|
165
|
+
5. **Sinh sheet bằng backend đang sống** — prompt theo `reference/prompt-template.md`
|
|
166
|
+
§ *Screen sheet*, ảnh vào = `[<screenshot>]` (+ ≤2 ref style). Mặc định **1 sheet / backend
|
|
167
|
+
sống** (một sheet đã chứa nguyên bộ). Cả hai sống + muốn so sánh chéo → mỗi AI 1 sheet;
|
|
168
|
+
chỉ 1 backend → 1–2 sheet từ backend đó. Lưu thô về `out/<man-hinh>/_raw/{gem|gpt}_sheet.png`.
|
|
169
|
+
6. **Mổ sheet**: nhìn sheet thật để ước `mockup_frac` (ranh giới mockup/dải — model hay
|
|
170
|
+
lệch khỏi 50%), rồi `slice_sheet` **cho mỗi sheet đã sinh** (prefix `gem`/`gpt`):
|
|
171
|
+
```
|
|
172
|
+
slice_sheet(sheet=".../_raw/<prefix>_sheet.png", key=<key bước 3>,
|
|
173
|
+
out_dir="tools/restyle/out/<man-hinh>", prefix="<prefix>", mockup_frac=0.5)
|
|
174
|
+
```
|
|
175
|
+
→ `<prefix>_mockup.png` + `<prefix>1..N.png`. `key_auto` và luật flags như `process_raws`.
|
|
176
|
+
So `n_cells` với số chi tiết đã liệt kê — **model vẽ thiếu/thừa/dính nhau là chuyện thường**:
|
|
177
|
+
thiếu thì sinh lại 1 lượt hoặc bù bằng luồng theo-asset; hai chi tiết dính nhau thành 1 cell
|
|
178
|
+
thì tăng khoảng cách trong prompt ("space them WELL APART") rồi sinh lại.
|
|
179
|
+
7. **Review — BẮT BUỘC một file HTML đối chiếu** (kể cả chỉ 1 backend). `slice_sheet` đã trả
|
|
180
|
+
sẵn `compare_groups` (mockup + cells) — nối mọi lượt đã chạy, gộp theo `name`, rồi
|
|
181
|
+
`make_compare_sheet`:
|
|
182
|
+
```
|
|
183
|
+
groups=[{"name":"Màn hình (mockup)","original":"<screenshot gốc>",
|
|
184
|
+
"variants":[{"label":"<prefix>_mockup","image":"..."}, ...]},
|
|
185
|
+
{"name":"Cells cắt ra","original":null,
|
|
186
|
+
"variants":[{"label":"<prefix>1","image":"..."}, ...]}]
|
|
187
|
+
```
|
|
188
|
+
Nhóm mockup lấy **screenshot gốc làm `original`** → nhấn giữ là lật về màn hình cũ, đó là
|
|
189
|
+
cách duy nhất thấy layout có bị xê dịch không. Nhóm cells để `original: null` vì cell là
|
|
190
|
+
asset MỚI, không có bản gốc 1-1. Gửi đường dẫn file cho user chọn — **chỉ 1 AI cũng đủ demo**.
|
|
191
|
+
8. **Dùng cells**: cells là asset MỚI, kích thước tự nhiên theo sheet. Muốn thay 1-1 một
|
|
192
|
+
asset cũ trong project → coi cell như ảnh thô: `process_raws(raws=[<cell>],
|
|
193
|
+
src=<asset gốc>, key=<key>, ...)` để bám size, rồi `apply_asset` như luồng cũ (mọi rào
|
|
194
|
+
an toàn backup giữ nguyên).
|
|
195
|
+
|
|
196
|
+
**Giới hạn phải nói trước với user:** mockup là cả một màn hình — đúng vùng "chủ thể phức
|
|
197
|
+
tạp" của giới hạn *Style transfer yếu dần* ở trên, nên mockup chủ yếu để **duyệt hướng
|
|
198
|
+
style tổng thể**, đừng hứa nó pixel-perfect; thứ dùng thật là các cell. Text trong mockup
|
|
199
|
+
gần như chắc chắn sai font/lỗi chữ — nếu màn có nhiều chữ, nhắc user rằng chữ sẽ làm lại
|
|
200
|
+
bằng font thật trong game, không lấy từ ảnh.
|
|
201
|
+
|
|
202
|
+
## Chế độ Thumbnail — 3 tỉ lệ cửa hàng (độc lập với luồng theo-asset)
|
|
203
|
+
|
|
204
|
+
**Khi nào dùng:** user nói "tạo thumb game", "làm thumbnail", "ảnh quảng bá game" và đưa
|
|
205
|
+
**style + screenshot Home + các asset cần thiết**.
|
|
206
|
+
|
|
207
|
+
**Ra 3 file, đúng số pixel:**
|
|
208
|
+
|
|
209
|
+
| Tỉ lệ | Yêu cầu cửa hàng | File giao |
|
|
210
|
+
|---|---|---|
|
|
211
|
+
| 1:1 | tối thiểu 512×512 | **1024×1024** (nguồn vốn 1024 — hạ về 512 là bỏ chi tiết không lý do; yêu cầu là SÀN) |
|
|
212
|
+
| 5:7 | đúng 540×756 | **540×756** |
|
|
213
|
+
| 16:9 | tối thiểu 1280×720 | **1280×720** |
|
|
214
|
+
|
|
215
|
+
**Thumbnail KHÔNG đi qua tách nền.** Nó là tranh full-bleed — đừng gọi `process_raws` /
|
|
216
|
+
`restyle_asset` / `plan_asset` / `slice_sheet`, cũng không cần màu key. Chỉ `generate_image`
|
|
217
|
+
(+ `codex_gen.sh`) rồi `make_thumbs`.
|
|
218
|
+
|
|
219
|
+
**Model KHÔNG cho chọn kích thước đầu ra** — nó trả size riêng của nó. Đo thật trên Gemini web:
|
|
220
|
+
yêu cầu vuông → 1024×1024, dọc → 864×1216, ngang → 1376×768. Tức nó **tôn trọng hướng** và rơi
|
|
221
|
+
rất sát mục tiêu, nên luồng đúng là sinh ở tỉ lệ gần nhất rồi để `make_thumbs` cắt bù (đo được
|
|
222
|
+
chỉ mất **0–0.8%**) và resize về đúng pixel. Đừng hứa với user rằng model vẽ đúng size.
|
|
223
|
+
|
|
224
|
+
Các bước:
|
|
225
|
+
|
|
226
|
+
1. **Chốt style + đọc screenshot Home.** Nhìn screenshot rồi tự liệt kê chủ thể/thế giới của
|
|
227
|
+
game; hỏi user asset nào là **hero element**.
|
|
228
|
+
2. **Chọn ≤4 ảnh vào** (giới hạn cứng): screenshot Home luôn đứng đầu, rồi tối đa 3 asset/ref.
|
|
229
|
+
Nhiều hơn → lấy cái nào xuất hiện to nhất trong thumb, **nói rõ cái nào bị bỏ**.
|
|
230
|
+
3. **Sinh 3 lượt RIÊNG, mỗi tỉ lệ một lượt**, prompt ở `reference/prompt-template.md`
|
|
231
|
+
§ Thumbnail — chỉ đổi khối `{ORIENTATION}`. **Đừng cắt 3 size từ một ảnh**: 16:9 → 5:7 mất
|
|
232
|
+
~60% khung, chủ thể bị chặt. Dùng backend đang sống (1 hoặc cả hai nếu muốn so sánh);
|
|
233
|
+
**luôn** giao `compare.html` / sheet duyệt dù chỉ 1 AI.
|
|
234
|
+
4. **Đưa về đúng size:**
|
|
235
|
+
```
|
|
236
|
+
make_thumbs(sources=[
|
|
237
|
+
{"raw": ".../_raw/<vuông>", "preset": "1:1"},
|
|
238
|
+
{"raw": ".../_raw/<dọc>", "preset": "5:7", "anchor": "top"},
|
|
239
|
+
{"raw": ".../_raw/<ngang>", "preset": "16:9"},
|
|
240
|
+
], out_dir="tools/restyle/thumbs/<ten-game>", prefix="gem")
|
|
241
|
+
```
|
|
242
|
+
- `anchor="top"` cho bản dọc: thumb dọc hay dồn chủ thể lên trên, cắt giữa dễ liếm mất đỉnh.
|
|
243
|
+
- **Đọc `warnings[]`**: `upscaled` nghĩa là nguồn NHỎ hơn đích → đã phóng to (xem
|
|
244
|
+
`upscale_method`; `lanczos` = sẽ mềm, `esrgan` = đã dựng nét nhưng chi tiết là model ĐOÁN).
|
|
245
|
+
Sinh lại nguồn, đừng giao bản mềm.
|
|
246
|
+
- `prefix` mang nhãn backend (`gem`/`gpt`) — hai lần gọi cùng prefix sẽ **ghi đè nhau**.
|
|
247
|
+
Trong CÙNG một lời gọi, hai nguồn cùng preset tự được đánh số `_2`.
|
|
248
|
+
5. **Giao trang đối chiếu** (bắt buộc như mọi lượt thiết kế). Mỗi tỉ lệ một group, `original` =
|
|
249
|
+
screenshot Home để lật xem thumb có đúng game hay không:
|
|
250
|
+
```
|
|
251
|
+
groups=[{"name":"1:1 (1024×1024)","original":"<screenshot Home>",
|
|
252
|
+
"variants":[{"label":"gem","image":".../gem_1x1.png"},
|
|
253
|
+
{"label":"gpt","image":".../gpt_1x1.png"}]},
|
|
254
|
+
{"name":"5:7 (540×756)", "original":"<screenshot Home>","variants":[...]},
|
|
255
|
+
{"name":"16:9 (1280×720)","original":"<screenshot Home>","variants":[...]}]
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
**Nói trước với user:** prompt **cấm hẳn chữ/logo** vì model sinh ảnh viết chữ méo và sai chính
|
|
259
|
+
tả gần như luôn luôn — thumb có chữ rác thì phải sinh lại cả ảnh. Logo/tiêu đề chèn sau bằng
|
|
260
|
+
công cụ khác. Đây là hạn chế của model, không phải thiếu sót của prompt.
|
|
261
|
+
|
|
262
|
+
## Tách nền: CHẠY NHIỀU CÁCH RỒI CHẤM ĐIỂM CHỌN BẢN TỐT NHẤT
|
|
263
|
+
|
|
264
|
+
**Không tin sẵn cách nào.** `process_raws` / `restyle_asset` / `slice_sheet` chạy **mọi cách khả
|
|
265
|
+
dụng** trên từng ảnh, chấm điểm bằng chỉ số đo được, rồi giao ra bản thắng. Đây là mặc định, không
|
|
266
|
+
phải tuỳ chọn.
|
|
267
|
+
|
|
268
|
+
**Vì sao**: đo thật 10 cách trên 4 bản sinh — *không cách nào thắng mọi ảnh*.
|
|
269
|
+
|
|
270
|
+
| Cách | Điểm mạnh | Thất bại ở đâu (đo thật) |
|
|
271
|
+
|---|---|---|
|
|
272
|
+
| `unmix` | nghịch đảo đại số phương trình ghép ảnh | cần có phông key để dò màu nền |
|
|
273
|
+
| `chroma-bg` | chroma-key theo màu nền **đo được** | viền còn ám màu nền (cast 382) |
|
|
274
|
+
| `chroma-key` | chroma-key theo màu **yêu cầu** — lưới an toàn | model vẽ lệch màu → sót nguyên nền |
|
|
275
|
+
| `ben2` | mép lông/tơ, ảnh **không có** phông key | ảnh nền full-bleed: **ăn mất 8.99% chủ thể**, mép nhoè thành dải 77.425 px |
|
|
276
|
+
|
|
277
|
+
**4 tiêu chí chấm** (điểm thấp = tốt), mỗi cái bắt một kiểu hỏng riêng — thiếu cái nào là mở đường
|
|
278
|
+
cho một cách dở thắng điểm:
|
|
279
|
+
|
|
280
|
+
| Tiêu chí | Bắt lỗi gì |
|
|
281
|
+
|---|---|
|
|
282
|
+
| `cast` | viền còn ám màu nền, đo khi ghép lên **trắng và đen** |
|
|
283
|
+
| `f_err` | giữ nguyên màu đã bị nền trộn vào (so với nghịch đảo đại số) |
|
|
284
|
+
| `fg_loss` | ăn vào **lòng** chủ thể → **loại thẳng** nếu > 2% |
|
|
285
|
+
| `bg_residue` | để nguyên nền → **loại thẳng** nếu > 2% |
|
|
286
|
+
|
|
287
|
+
`cast` và `f_err` phải đi **cùng nhau**: cách nào để `alpha=255` khắp dải AA sẽ có `f_err≈0` *hiển
|
|
288
|
+
nhiên* (khi α=1 thì "màu đúng" chính là màu đã bị trộn) — chỉ `cast` bắt được ca đó.
|
|
289
|
+
|
|
290
|
+
**Đọc kết quả**: `cutout_method` = cách đã thắng cho ảnh đó · `cutout_table` = điểm của **mọi** ứng
|
|
291
|
+
viên kể cả bị loại (biết *vì sao* nó thắng) · `remover` ở cấp ngoài = danh sách ứng viên khả dụng
|
|
292
|
+
(`multi` / `multi+ben2`), **không** phải cách đã dùng.
|
|
293
|
+
|
|
294
|
+
Đo thật trên `home_grass` (4 ảnh nền): `unmix` thắng cả 4, điểm **0.0018–0.0025** so với
|
|
295
|
+
**1.25–2.06** của chroma — cách nhau ~500×. cast **0**, `bg_residue` **0.0000**.
|
|
296
|
+
|
|
297
|
+
### `full_bleed=True` — BẮT BUỘC cho ảnh nền tràn viền
|
|
298
|
+
|
|
299
|
+
Ảnh nền (background plate) có tranh phủ kín khung nên chủ thể **chạm vành ảnh là đúng thiết kế**.
|
|
300
|
+
Cửa gác `border_impurity` lại giả định vành ảnh toàn là nền → **mọi ảnh nền đều bị đánh
|
|
301
|
+
`bad_background` dù tách nền hoàn hảo** (đo thật: cast 0, `bg_residue` 0.0000, vẫn báo hỏng cả 4).
|
|
302
|
+
|
|
303
|
+
Không suy ra được từ pixel — "thảm cỏ chạm vành dưới" và "mảng panel chưa key chạm vành trên" đều là
|
|
304
|
+
nội dung đục chạm vành, chỉ khác **ý định**. Tỉ lệ vành mang màu key cũng không tách được: 0.552 ở ca
|
|
305
|
+
*cần* gác so với 0.225–0.390 ở ảnh nền *cần tắt* gác — quá gần để đặt ngưỡng. **Nên phải nói ra.**
|
|
306
|
+
|
|
307
|
+
- Ảnh nền / thumbnail → `full_bleed=True`
|
|
308
|
+
- Sprite / icon / asset rời → **để mặc định `False`** (ở đó lề nền là yêu cầu thật)
|
|
309
|
+
- Nó chỉ tắt riêng `border_impurity`; `bg_residue` / `coverage` / bộ chấm điểm vẫn gác như thường
|
|
310
|
+
|
|
311
|
+
### BEN2 (một ứng viên, không còn độc quyền)
|
|
312
|
+
|
|
313
|
+
`PramaLLC/BEN2` — matting ngữ nghĩa qua PyTorch (https://huggingface.co/PramaLLC/BEN2), xem
|
|
314
|
+
`client/bgremove.py`. Nó **thắng ở ca không có phông key** (ảnh chụp/tranh nền thật) — ở đó
|
|
315
|
+
`unmix`/`chroma` đều bị loại vì phủ kín khung.
|
|
316
|
+
|
|
317
|
+
- **Model tự chứa**: trọng số (~1GB) tải từ HuggingFace về `models/` ở lần chạy đầu; các
|
|
318
|
+
lần sau nạp lại từ đó (đặt qua `HF_HOME`). Đổi repo model bằng env `BEN2_MODEL`.
|
|
319
|
+
- **Thiết bị**: mặc định `BEN2_DEVICE=auto` — CUDA nếu máy có GPU, không thì CPU. Ép bằng
|
|
320
|
+
`BEN2_DEVICE=cpu`/`cuda`. `refine_foreground` **bật mặc định** (đo thật: pixel mép mềm bị
|
|
321
|
+
xanh trội tụt 58% → 25%, tốn thêm ~0.4s/ảnh) — tắt bằng `BEN2_REFINE=0` nếu máy yếu.
|
|
322
|
+
- **Cài đặt**: `pip install torch "ben2 @ git+https://github.com/PramaLLC/BEN2.git"` (đã có trong
|
|
323
|
+
`server/requirements.txt`). Thiếu `torch`/`ben2` thì nó chỉ **vắng khỏi danh sách ứng viên**,
|
|
324
|
+
không lỗi — các cách theo màu vẫn chạy đủ.
|
|
325
|
+
- **Giá**: BEN2 là ứng viên đắt nhất. Đo thật trên 4 ảnh ~852×1846: **~5.0s/ảnh** khi có BEN2 so với
|
|
326
|
+
**~2.5s/ảnh** khi không. Vẫn nên bật — nó là cách duy nhất cứu được ca không có phông key.
|
|
327
|
+
- **Màu key giờ chỉ để TĂNG TƯƠNG PHẢN** cho model vẽ nền phẳng, KHÔNG còn là cơ chế xóa duy nhất.
|
|
328
|
+
`key_safe`/`key_margin` của `plan_asset` không còn là rào cản chất lượng — chủ thể trùng màu key
|
|
329
|
+
vẫn tách tốt (ràng buộc **liên thông**: vùng trùng màu nền nằm trong lòng chủ thể không bị xoá,
|
|
330
|
+
muốn bị xoá thì phải nối được ra tới vành ảnh).
|
|
331
|
+
|
|
332
|
+
## Phóng to: khi bản sinh NHỎ HƠN size cần
|
|
333
|
+
|
|
334
|
+
Model sinh ảnh không cho chọn kích thước đầu ra. Khi khung đích **lớn hơn** ảnh sinh, LANCZOS chỉ
|
|
335
|
+
trải mép ra cho mềm đi — nó không có thông tin nào để thêm. `hlky/RealESRGAN_x4plus_anime_6B` thì
|
|
336
|
+
dựng lại nét, và bản `anime_6B` được huấn luyện riêng cho tranh vẽ — đúng loại ảnh của skill này.
|
|
337
|
+
|
|
338
|
+
**Cũng chạy nhiều cách rồi chấm điểm chọn**, giống đường tách nền. Tự động trong
|
|
339
|
+
`process_raws` / `restyle_asset` / `make_thumbs`; gọi tay bằng `upscale_image`.
|
|
340
|
+
Ảnh sinh thường TO hơn asset game nên phần lớn lượt chạy sẽ **không đụng tới** bước này.
|
|
341
|
+
|
|
342
|
+
| Cách | Khi nào thắng |
|
|
343
|
+
|---|---|
|
|
344
|
+
| `lanczos` | hoạ tiết dày, nét mảnh san sát — chỗ model bịa nhiều nhất. Luôn có mặt, là lưới an toàn |
|
|
345
|
+
| `esrgan` | mặc định thắng: model 4x rồi LANCZOS thu về đúng đích |
|
|
346
|
+
| `esrgan-pre` | chỉ dựng khi đích > 4x — LANCZOS lên đích/4 TRƯỚC rồi mới cho model chạy sau cùng |
|
|
347
|
+
|
|
348
|
+
| Tiêu chí | Vai trò | Bắt lỗi gì |
|
|
349
|
+
|---|---|---|
|
|
350
|
+
| `blur` | **xếp hạng** (trọng số 3.0) | ảnh mềm nhũn — năng lượng gradient so với mốc NEAREST |
|
|
351
|
+
| `ring` | **xếp hạng** (0.40) | quầng sáng & chi tiết bịa ra — thứ `blur` chấm NGƯỢC |
|
|
352
|
+
| `lr_err` | phá thế hoà (0.05) + **loại thẳng** > 30 | bịa nội dung mâu thuẫn ảnh nguồn |
|
|
353
|
+
| `cov_err` | **loại thẳng** > 0.08 | matte bị ăn mòn hoặc phình ra |
|
|
354
|
+
|
|
355
|
+
Đọc `upscale_method` (cách thắng) và `upscale_table` (điểm mọi ứng viên).
|
|
356
|
+
|
|
357
|
+
### Phép thử hiển nhiên cho kết luận SAI — đừng lặp lại
|
|
358
|
+
|
|
359
|
+
Cách kiểm tra tự nhiên nhất là **thu nhỏ ảnh sắc nét rồi phóng lại và so với bản gốc**. Làm thế thì
|
|
360
|
+
LANCZOS thắng **20/20** ca. Kết luận đó **sai**, vì phép thử thiên vị từ trong thiết kế: ảnh nhỏ được
|
|
361
|
+
tạo bằng LANCZOS-thu-nhỏ nên LANCZOS-phóng-to gần đúng là phép **nghịch đảo của chính nó**. Ảnh AI
|
|
362
|
+
sinh ra chưa từng đi qua bộ lọc nào.
|
|
363
|
+
|
|
364
|
+
Phép thử không thiên vị: **vẽ cùng một cảnh ở cả hai độ phân giải** (4 cảnh × 5 độ phân giải nguồn ×
|
|
365
|
+
4 hệ số × có/không alpha = 160 ca, không ảnh nào suy ra từ ảnh kia). Kết quả:
|
|
366
|
+
|
|
367
|
+
| Thước đo | lanczos | esrgan | esrgan-pre |
|
|
368
|
+
|---|---|---|---|
|
|
369
|
+
| RMSE (sai số pixel) | 113 | 33 | 14 |
|
|
370
|
+
| **LPIPS (cảm nhận)** | 17 | **107** | 36 |
|
|
371
|
+
|
|
372
|
+
Hai thước đo **không đồng ý ở 61% số ca** và ngược hướng nhau. Đây là đánh đổi
|
|
373
|
+
*distortion–perception*: khi ảnh nhỏ không đủ thông tin để biết cạnh nằm chính xác ở đâu, ước lượng
|
|
374
|
+
tối ưu theo bình phương sai số là một cạnh **mờ** — trung bình của mọi khả năng. LPIPS trung bình:
|
|
375
|
+
lanczos 0.104–0.189 so với esrgan 0.036–0.079, tức **tốt hơn 2–4 lần ở mọi độ phân giải nguồn**.
|
|
376
|
+
|
|
377
|
+
Trọng số được dò theo LPIPS: **đúng 87.5% trên phần huấn luyện VÀ 87.5% trên nửa giữ lại**.
|
|
378
|
+
Hai điều đi ngược trực giác, ghi lại để khỏi "dọn dẹp" nhầm:
|
|
379
|
+
|
|
380
|
+
- **Bỏ `ring` đi thì độ đúng tụt xuống 66.9%** — đúng bằng mức của "cứ luôn chọn esrgan", tức bộ
|
|
381
|
+
điểm không còn đóng góp gì. Chính `ring` bắt được nhóm ca mà LANCZOS thật sự thắng.
|
|
382
|
+
- **`lr_err` và `cov_err` dò ra trọng số tối ưu bằng 0.** Đẩy `lr_err` lên 0.2 làm độ đúng tụt còn
|
|
383
|
+
80.6% — vì nó chính là RMSE thu nhỏ lại, mang nguyên thiên vị thưởng ảnh mờ. Chúng sống bằng vai
|
|
384
|
+
trò **loại thẳng**, không phải xếp hạng.
|
|
385
|
+
|
|
386
|
+
### Alpha và viền
|
|
387
|
+
|
|
388
|
+
- **Alpha đi qua chính model** (dưới dạng ảnh xám), không phải LANCZOS: thắng **9/9** ca, sai số
|
|
389
|
+
matte giảm hơn nửa (3.87 so với 8.98). Đổi bằng `imglib.upscale_rgba(..., alpha_esrgan=False)`.
|
|
390
|
+
- **Màu tiền cảnh được loang ra vùng trong suốt TRƯỚC khi phóng** — bắt buộc, không phải tinh chỉnh.
|
|
391
|
+
Sau tách nền, pixel nền vẫn mang màu key trong kênh RGB (vô hình vì alpha 0), mà model chỉ nhìn
|
|
392
|
+
RGB nên nó thấy magenta thật và kéo vào mép, phá đúng cái viền vừa làm sạch tới mức cast = 0.
|
|
393
|
+
|
|
394
|
+
### Vận hành
|
|
395
|
+
|
|
396
|
+
- **Model tự chứa**: trọng số (~18MB) tải từ HuggingFace về `models/` ở lần chạy đầu. Đổi repo
|
|
397
|
+
bằng env `ESRGAN_MODEL`. **Không cần `basicsr`/`realesrgan`** — `client/upscale.py` tự dựng RRDBNet
|
|
398
|
+
bằng torch thuần, vì `basicsr` import `torchvision.transforms.functional_tensor` đã bị gỡ khỏi
|
|
399
|
+
torchvision >= 0.17 (máy này 0.19) nên cài vào sẽ gãy.
|
|
400
|
+
- **Thiết bị**: `ESRGAN_DEVICE=auto` (mặc định) / `cpu` / `cuda`. `ESRGAN_FP16=0` để tắt nửa độ chính
|
|
401
|
+
xác. Ảnh lớn được **chia ô** (`ESRGAN_TILE`, mặc định 512) với lề chồng lấn `ESRGAN_TILE_PAD`=32 —
|
|
402
|
+
đo thật: có lề thì kết quả trùng bản không chia ô (lệch tối đa 1 mức), bỏ lề thì lệch tới 180.
|
|
403
|
+
- **Giá**: ~4s/ảnh khi phóng 3× ảnh ~900×900 trên RTX 3060. Hết VRAM thì tự hạ cạnh ô rồi rớt về CPU.
|
|
404
|
+
- **Thiếu `torch`** → chỉ còn `lanczos`, **không lỗi**.
|
|
405
|
+
|
|
406
|
+
> **Đây KHÔNG thay được việc sinh lại ở đúng độ phân giải.** Chi tiết thêm vào là model **đoán**.
|
|
407
|
+
> Ưu tiên vẫn là sinh nguồn to hơn; phóng to là cách chữa cháy.
|
|
408
|
+
|
|
409
|
+
## Dùng chung một máy trong LAN (tuỳ chọn)
|
|
410
|
+
|
|
411
|
+
Một máy có cookie Gemini + `codex login` + GPU; các máy khác **mượn** qua mạng. Kiến trúc &
|
|
412
|
+
lý do: `reference/remote-lan.md`. Hướng dẫn thực hành cho **máy khách** (cài, cấu hình `.env`,
|
|
413
|
+
kiểm tra, khắc phục): `reference/client-guide.md`.
|
|
414
|
+
|
|
415
|
+
**MỖI NODE**: đặt token trong `server/.env` (`GAMEART_REMOTE_TOKEN` >= 16 ký tự, không có thì
|
|
416
|
+
node từ chối chạy) rồi **`server\start-node.cmd`** (chạy ngầm, `stop-node.cmd` để dừng; hoặc
|
|
417
|
+
`python server/remote_host.py --host <IP LAN> --port 8765` để foreground).
|
|
418
|
+
**MÁY KHÁCH**: đặt `GAMEART_REMOTE_NODES` (danh sách URL) + `GAMEART_REMOTE_TOKEN` trong `client/.env`.
|
|
419
|
+
**Không đổi gì khác** — tên tool và dòng lệnh `codex_gen.sh` giữ nguyên từng chữ. Để giao cho máy
|
|
420
|
+
khách một **bản gọn không chứa file node** (không `remote_host.py`, không models, không cookie):
|
|
421
|
+
`python server/pack.py` → **`game-art-client.zip`** (máy khách) + **`game-art-node.zip`** (node), đều không kèm token/model. Node tự tải model lúc khởi động. Xem `reference/client-guide.md` + § LAN trong `reference/remote-lan.md`.
|
|
422
|
+
|
|
423
|
+
**Nhiều node thì tự chọn**: xếp hạng theo node rảnh nhất + còn nhiều quota → node báo bận/hết quota
|
|
424
|
+
thì **đổi ngay** sang node kế → hết node dùng được thì **chờ tối đa 15 phút** rồi báo lại kèm lý do
|
|
425
|
+
từng node. Xem cả cụm bằng `remote_nodes()` (tải, quota, vì sao node nào bị bỏ qua).
|
|
426
|
+
|
|
427
|
+
> **ĐỪNG mở `gemini_image_mcp.py` ra mạng.** 11/12 tool của nó nhận đường dẫn đọc/**ghi** tuỳ ý
|
|
428
|
+
> (`out_dir`, `dst`, `image_paths`…) nên expose nó = cấp quyền đọc/ghi ổ đĩa cho mọi máy trong
|
|
429
|
+
> tầm. `remote_host.py` mới là bản đúng: **không tham số đường dẫn nào**, ảnh đi bằng base64.
|
|
430
|
+
|
|
431
|
+
Chỉ ba thứ đi qua mạng — sinh ảnh, BEN2, ESRGAN. **Chấm điểm và chọn bản tốt nhất vẫn chạy ở máy
|
|
432
|
+
khách**, nên nó giữ nguyên quyền quyết định; máy chủ tắt thì chỉ mất ứng viên BEN2/ESRGAN, các
|
|
433
|
+
cách theo màu và LANCZOS vẫn đủ để pipeline chạy tiếp. Có GPU tại chỗ thì **luôn ưu tiên local**.
|
|
434
|
+
|
|
435
|
+
Ba rủi ro phải nói trước: dùng chung = **chung tài khoản** (dùng tài khoản phụ); **codex chạy
|
|
436
|
+
tuần tự** nên nhiều máy sẽ chờ nhau; token là **mật khẩu chung**, chỉ hợp cho LAN tin cậy.
|
|
437
|
+
|
|
438
|
+
## Hai giới hạn THẬT của công cụ này — đọc trước khi hứa với user
|
|
439
|
+
|
|
440
|
+
Cả hai đều đo được trên asset thật, không phải lo xa.
|
|
441
|
+
|
|
442
|
+
### 1. Asset bị `setTint` lúc chạy thì KHÔNG ĐƯỢC restyle
|
|
443
|
+
|
|
444
|
+
Rất nhiều game Phaser dùng kiến trúc **mặt nạ trắng + tint lúc chạy**: asset cố tình là hình
|
|
445
|
+
trắng trơn, code bơm màu vào bằng `setTint`. `setTint` là phép **NHÂN**:
|
|
446
|
+
`màu hiện ra = màu texture × màu tint`.
|
|
447
|
+
|
|
448
|
+
Restyle một asset như thế thành "teal viền vàng" rồi để game nhân nó với tint → **ra màu bùn,
|
|
449
|
+
toàn bộ hệ màu của game vỡ**. Ca thật (MeoBlock): `cell_base`, `cell_completed_ear`,
|
|
450
|
+
`ic_hard_base`, `rule_unknown` và toàn bộ icon top-bar đều bị tint — chiếm phần lớn asset.
|
|
451
|
+
|
|
452
|
+
**BẮT BUỘC kiểm trước khi restyle bất cứ asset nào:**
|
|
453
|
+
```bash
|
|
454
|
+
grep -rn "setTint" src/ --include=*.js | grep "<tên asset>"
|
|
455
|
+
```
|
|
456
|
+
Có tint → **loại khỏi danh sách**, nói rõ với user vì sao. Muốn đổi tông cho nhóm này thì sửa
|
|
457
|
+
**hằng số màu trong code** (vd `src/core/config.js`), không phải sửa asset — vừa tức thì, vừa
|
|
458
|
+
không tốn lượt sinh, vừa không có rủi ro AI vẽ sai.
|
|
459
|
+
|
|
460
|
+
Đừng phân loại asset bằng cách nhìn tên file. Phải đọc code.
|
|
461
|
+
|
|
462
|
+
### 2. Style transfer YẾU DẦN khi chủ thể phức tạp
|
|
463
|
+
|
|
464
|
+
Đo được trên cùng một style, cùng một anchor:
|
|
465
|
+
|
|
466
|
+
| Asset | Độ phức tạp | Kết quả |
|
|
467
|
+
|---|---|---|
|
|
468
|
+
| `btn_hard` (một thanh trơn) | thấp | Style bám **đầy đủ**: bevel vàng dày, gradient dọc, specular |
|
|
469
|
+
| `home_cats` (10 khối + mặt + bố cục) | cao | Style bám **yếu**: chỉ thêm viền vàng mảnh, render vẫn phẳng như asset gốc |
|
|
470
|
+
|
|
471
|
+
Model có ngân sách chú ý hữu hạn. Chủ thể phức tạp → nó dồn hết vào giữ hình dạng và **rơi về
|
|
472
|
+
phong cách render của ảnh gốc**. Không phải lỗi prompt, không phải lỗi ảnh mẫu — thêm ref hay tả
|
|
473
|
+
kỹ hơn đều không cứu được (đã thử cả hai).
|
|
474
|
+
|
|
475
|
+
**Hệ quả thực hành:** chọn anchor là asset **đơn giản** — style sẽ ra rõ nhất và user duyệt được
|
|
476
|
+
đúng cái họ sẽ nhận. Với asset phức tạp, hạ kỳ vọng và nói trước với user, đừng để họ tưởng cả bộ
|
|
477
|
+
sẽ bóng như cái anchor.
|
|
478
|
+
|
|
479
|
+
## Bất biến
|
|
480
|
+
|
|
481
|
+
- **Không bao giờ ghi đè asset gốc khi user chưa duyệt bằng mắt.** Sinh → staging → contact
|
|
482
|
+
sheet → user chọn → mới `apply_asset` (có backup, và backup không bao giờ bị ghi đè bởi lần
|
|
483
|
+
`apply` sau — nó luôn giữ bản gốc THẬT SỰ đầu tiên).
|
|
484
|
+
- **Cả bộ phải đồng nhất.** Một asset đã duyệt trở thành *golden anchor*, mọi asset sau bám theo nó.
|
|
485
|
+
- **Các tool trả về `dict` (JSON có cấu trúc), KHÔNG raise, KHÔNG dùng exit code.** Hỏng thì trả
|
|
486
|
+
`{"error": "..."}`. Luôn kiểm field `error` trước khi coi kết quả là thành công. (`generate_image`
|
|
487
|
+
là ngoại lệ lịch sử: nó trả *chuỗi* bắt đầu bằng `Error:` khi hỏng — nhưng restyle thì dùng
|
|
488
|
+
`restyle_asset`, không dùng `generate_image` trực tiếp.)
|
|
489
|
+
- **`restyle_asset` VÀ `process_raws` trả `variants[]` cùng cấu trúc; mỗi phần tử báo qua field `flags` (một list)**, không chỉ
|
|
490
|
+
`status`. Một bản sinh có thể hỏng NHIỀU kiểu cùng lúc (vd chủ thể vừa bị ăn thủng vừa bị mờ).
|
|
491
|
+
`status` chỉ là flag nặng nhất — giữ để tương thích — nhưng luôn đọc `flags` đầy đủ. Có 5 flag:
|
|
492
|
+
`bad_background`, `bad_subject`, `bad_translucent` (cả ba là LỖI, cần retry — xem bảng "Khi hỏng"),
|
|
493
|
+
và **`sparse`**, **`bad_holes`** (cả hai chỉ **THAM KHẢO** — KHÔNG phải lỗi, KHÔNG chặn ghi file;
|
|
494
|
+
contact sheet là cửa gác thật sự, không phải hai flag này):
|
|
495
|
+
- `sparse` → chủ thể nhỏ (coverage thấp) nhưng ĐẶC (solid_ratio cao) — vd icon/line-art
|
|
496
|
+
mảnh. Không phải hỏng, chỉ đáng chú ý khi soi sheet.
|
|
497
|
+
- `bad_holes` → có vùng trong suốt đáng ngờ NẰM GIỮA chủ thể (`hole_ratio` cao) — có thể là
|
|
498
|
+
màu key ăn thủng một chi tiết bên trong, hoặc có thể là art hollow hợp lệ (nhẫn, chữ "O",
|
|
499
|
+
khung ảnh). Ngưỡng KHÔNG hoàn hảo — luôn nhìn sheet để phân biệt, đừng tự động loại bỏ.
|
|
500
|
+
- **Tách nền CHẠY NHIỀU CÁCH rồi chấm điểm chọn bản tốt nhất** — xem § Tách nền ở trên. Đọc
|
|
501
|
+
`cutout_method` (cách đã thắng) và `cutout_table` (điểm mọi ứng viên) trong mỗi variant.
|
|
502
|
+
Với ảnh NỀN tràn viền phải truyền `full_bleed=True`, không thì mọi ảnh nền đều bị đánh
|
|
503
|
+
`bad_background` oan.
|
|
504
|
+
- **PHÓNG TO cũng chạy nhiều cách rồi chấm điểm chọn** — xem § Phóng to. Chỉ kích hoạt khi bản
|
|
505
|
+
sinh NHỎ HƠN khung đích (ảnh sinh thường to hơn asset game nên thường không đụng tới). Đọc
|
|
506
|
+
`upscale_method` / `upscale_table`. Chi tiết model thêm vào là ĐOÁN — sinh lại nguồn to hơn
|
|
507
|
+
vẫn tốt hơn phóng to.
|
|
508
|
+
- **Tách nền dùng MÀU NỀN ĐO ĐƯỢC, không dùng màu key đã yêu cầu.** Model gần như không bao giờ
|
|
509
|
+
vẽ đúng `{KEY_HEX}` — đo thật: yêu cầu `#00FF00`, model vẽ `#0CF508` và `#0BD009` (G=209).
|
|
510
|
+
Key theo màu YÊU CẦU trên ca thứ hai để lại **100% nền** dưới dạng màng bán trong suốt; key
|
|
511
|
+
theo màu ĐO ĐƯỢC thì sạch 0 px. Các field trong mỗi variant:
|
|
512
|
+
- `bg_color_used` — màu THỰC SỰ đã dùng. `bg_sampled_mode` + `bg_mode_share` — màu **mode**
|
|
513
|
+
trên vành đã lọc theo màu key, và tỉ lệ vành nó chiếm. `bg_source` cho biết màu đó từ đâu:
|
|
514
|
+
`mode_vien` (dò được) / `duoc_truyen_vao` / `khong_thay_mau_key_o_vien` (vành không có mảng
|
|
515
|
+
màu-key nào đáng kể → quay về màu yêu cầu).
|
|
516
|
+
- **Dò bằng MODE, không phải MEAN, và mode phải LỌC theo màu key yêu cầu.** Hai bẫy đo được:
|
|
517
|
+
(a) `sample_border_color` dùng mean nên với ảnh nền full-bleed (nửa trên trời màu key, nửa
|
|
518
|
+
dưới thảm cỏ tràn ra tận vành) nó trả `#AC4978` — **bùn tím, màu không có thật trong ảnh** —
|
|
519
|
+
với `purity 0.0002`, tức cửa auto-key không bao giờ mở; (b) mode **toàn cục** thì chỉ đúng
|
|
520
|
+
NHỜ MAY: nó thắng trên ảnh thật vì nền key phẳng còn thảm cỏ có vân, nhưng nếu chủ thể phẳng
|
|
521
|
+
và chiếm nhiều vành hơn nền thì mode trả về **màu chủ thể** và key theo nó sẽ xoá mất chính
|
|
522
|
+
chủ thể. Lọc theo màu key yêu cầu thì hết phụ thuộc vân bề mặt.
|
|
523
|
+
- `key_auto: true` + `key_requested` — màu đã dùng lệch hẳn màu yêu cầu. **Bình thường, không
|
|
524
|
+
phải lỗi**, gặp rất thường xuyên.
|
|
525
|
+
- `band_w` — bề rộng dải anti-alias **đo từ ảnh**, không phải hằng số. Đo thật: **2px** ở bản
|
|
526
|
+
GPT nhưng **7–8px** ở bản Gemini (chân trời vẽ nhoè). Hằng số cố định thì hoặc sót viền hoặc
|
|
527
|
+
gặm chủ thể — bản đầu cố định 2px để lại **433 px viền hồng đục** trên ảnh Gemini.
|
|
528
|
+
- `bg_px_removed` — số pixel nền sót mà `strip_bg_residue` đã xoá. Lớp này chỉ xoá vùng
|
|
529
|
+
màu-nền **liền mạch với nền đã trong suốt** (hoặc chạm vành ảnh), nên art nằm kín trong
|
|
530
|
+
lòng chủ thể không bao giờ bị chạm.
|
|
531
|
+
- `bg_residue` — tỉ lệ pixel còn đục mà VẪN mang màu nền, đo trên ảnh ĐÃ tách. `> 0.02` →
|
|
532
|
+
cờ `bad_background`. Trước đây đường BEN2 ép `border_impurity = 0` nên **không cờ nào báo
|
|
533
|
+
được nền sót** và lỗi đi thẳng vào asset; `bg_residue` là cửa gác thật cho đường đó.
|
|
534
|
+
- `coverage`/`solid_ratio`/`hole_ratio`/`border_impurity` đo trên **bản chẩn đoán**
|
|
535
|
+
(chroma_key), không phải bản giao ra — vì lớp cờ đọc alpha theo *ngữ nghĩa ramp mềm* của
|
|
536
|
+
chroma_key ("có nội dung nhưng không đục" = bóng ma / lỗ khoét / nền chưa key), còn `unmix`
|
|
537
|
+
cố ý cho alpha **gần như nhị phân** nên đo trên nó thì 4 kiểu defect đều tụt xuống `ok`.
|
|
538
|
+
Các chỉ số đó trả lời "BẢN SINH có dùng được không", độc lập với việc sau đó cắt bằng gì.
|
|
539
|
+
`out_coverage`/`out_solid_ratio` là số của bản **thực sự giao ra**.
|
|
540
|
+
- **Có một loại "dính nền" mà tách nền KHÔNG cứu được**: model dùng chính hue của key làm **màu
|
|
541
|
+
nét** trong tranh (ca đã gặp: bánh răng bạc viền xanh lá đậm `(19,78,27)` — cùng hue với key
|
|
542
|
+
nhưng tối hơn nên cách `#00FF00` tới 362 đơn vị). Đó là art thật, không phân biệt được bằng
|
|
543
|
+
màu; thử xoá theo hue thì gặm mép thành rỗ. Chặn từ prompt — dòng `Do NOT use {KEY_HEX} or ANY
|
|
544
|
+
shade of that hue` đã có trong `reference/prompt-template.md`. Thấy asset ra kiểu này thì sinh
|
|
545
|
+
lại, hoặc đổi `key` sang màu xa bảng màu style hơn.
|
|
546
|
+
- **Watermark ✦ của Gemini: đã xoá TỰ ĐỘNG ngay lúc tải ảnh về, không cần làm gì.** Nó là ngôi sao
|
|
547
|
+
4 cánh TRẮNG THUẦN alpha CỐ ĐỊNH, phủ ô **48x48 px cách cạnh phải/dưới đúng 96 px** (hiệu chuẩn
|
|
548
|
+
trên 3 ảnh nền-đen: trùng khít từng pixel, α ≈ 0.305, 3 kênh RGB lệch `0.0`). Vì alpha cố định
|
|
549
|
+
nên phép trộn ĐẢO ĐƯỢC — `imglib.unwatermark_gemini` lấy lại đúng pixel gốc, sai số ~1 mức, không
|
|
550
|
+
inpaint đoán. Chạy TRƯỚC mọi thao tác khác (`_strip_wm` lúc tải về; `verify=True` ở đầu
|
|
551
|
+
`process_raws`/`slice_sheet` cho ảnh Gemini/`codex` vì nguồn lẫn), báo qua `watermark_removed`.
|
|
552
|
+
Tắt bằng `GEMINI_KEEP_WATERMARK=1`. Chi tiết + vì sao phải xoá sớm: `reference/prompt-template.md`
|
|
553
|
+
§ Watermark ✦.
|
|
554
|
+
- **`speckles_removed` trong mỗi variant: giá trị `0` là BÌNH THƯỜNG** (watermark đã xoá từ trước,
|
|
555
|
+
nên 2 lớp `despeckle` → `strip_gemini_watermark` sau tách nền giờ chỉ là lưới an toàn cho trường
|
|
556
|
+
hợp Google đổi hình học). Đừng retry vì con số này. Chỉ để ý khi nó **lớn bất thường** (>3): khi
|
|
557
|
+
đó có thể chroma key đang vụn asset ra, hãy soi sheet.
|
|
558
|
+
Vẫn giữ prompt LỀ RỘNG (chủ thể ~60% giữa khung, góc trống rộng) trong
|
|
559
|
+
`reference/prompt-template.md` — giờ để phục vụ `border_impurity` và tránh chủ thể chạm mép,
|
|
560
|
+
không còn vì watermark.
|
|
561
|
+
- **Field `out` của mỗi variant nói "có ghi file ra hay không", KHÔNG nói "ảnh có ổn không".**
|
|
562
|
+
`out: null` nghĩa là không ảnh nào được ghi — `bad_subject`: chủ thể biến mất hoàn toàn, HOẶC vừa
|
|
563
|
+
nhỏ vừa bị bào mờ thành bóng ma (nhỏ mà vẫn ĐẶC thì không tính — xem `sparse`). `out` có đường dẫn
|
|
564
|
+
nghĩa là CÓ file — kể cả khi vẫn có `flags` lỗi (`bad_background`, `bad_translucent`) hoặc flag
|
|
565
|
+
tham khảo (`sparse`, `bad_holes`); file đó vẫn nằm chờ soi trong sheet, không phải asset sạch.
|
|
566
|
+
**Luôn đọc `status`/`flags`, đừng chỉ nhìn `out`.**
|
|
567
|
+
- **`plan_asset` báo `key_safe` (bool) cùng `key_margin`.** `key_safe=false` nghĩa là margin của
|
|
568
|
+
asset tới màu key đã chọn KHÔNG đủ xa ngưỡng `chroma_key` dùng để đảm bảo alpha đục hoàn toàn —
|
|
569
|
+
asset có nguy cơ ra mờ như bóng ma. Kiểm field này ở **CẢ anchor pass lẫn batch pass**, không chỉ
|
|
570
|
+
anchor — một asset xui trong lô 52 cái vẫn có thể trúng màu key không an toàn.
|
|
571
|
+
- **`plan_asset(src, avoid=[...])`** gộp bảng màu của STYLE PRESET (không phải chỉ palette asset
|
|
572
|
+
gốc) vào việc chọn key — vì `chroma_key` chạy trên ẢNH ĐÃ RESTYLE, có palette MỚI khác hẳn
|
|
573
|
+
asset gốc. Luôn truyền bảng màu style preset vào `avoid` khi đã có style (bước 1 xong).
|
|
574
|
+
- **`process_raws`/`restyle_asset` cần `key` KHỚP màu nền mà prompt yêu cầu model vẽ.** Prompt bảo
|
|
575
|
+
model vẽ nền màu `{KEY_HEX}`; `key` truyền vào tool phải đúng màu đó thì chroma key mới tách trúng.
|
|
576
|
+
Lấy `key` từ `plan_asset`, nhét vào cả prompt lẫn tham số `key`.
|
|
577
|
+
- **`apply_asset` cần `project_root` cố định.** Không truyền, mirror path của backup phụ thuộc cwd
|
|
578
|
+
lúc gọi — hai lần `apply` từ hai thư mục khác nhau ra hai backup khác nhau và backup không
|
|
579
|
+
còn chắc chắn giữ bản gốc thật. Luôn truyền `project_root=<gốc project tuyệt đối>` tường minh.
|
|
580
|
+
|
|
581
|
+
## Đường dẫn
|
|
582
|
+
|
|
583
|
+
- Tool: MCP server `gemini-image` (self-contained — chứa cả logic tách nền `imglib`, và là
|
|
584
|
+
luôn backend sinh ảnh A) + 1 CLI sinh ảnh (`codex` qua `client/codex_gen.sh`).
|
|
585
|
+
- Artifact (trong project đang mở): `tools/restyle/{styles,out,backup}/`.
|
|
586
|
+
- `out/<ten>/_raw/` = ảnh thô chưa tách nền: ảnh Gemini tên theo timestamp (do
|
|
587
|
+
`generate_image` ghi thẳng) + `gpt<i>.png` (do `codex_gen.sh` ghi thẳng).
|
|
588
|
+
- `out/<ten>/gem<i>.png`, `gpt<i>.png` = biến thể đã tách nền, bám size gốc (đường mặc định);
|
|
589
|
+
`v<i>.png` khi dùng `restyle_asset` (chỉ-Gemini).
|
|
590
|
+
|
|
591
|
+
## Tham số
|
|
592
|
+
|
|
593
|
+
- **Số ảnh mỗi lần sinh** = mặc định **4 biến thể/asset** từ backend đang dùng.
|
|
594
|
+
- Cả hai sống + user muốn so sánh chéo: `N_AI = 2` mỗi AI → tổng 4 (tuỳ chọn, không mặc định bắt buộc).
|
|
595
|
+
- Chỉ 1 backend (hoặc user bỏ so sánh chéo): **4 ảnh từ backend đó**.
|
|
596
|
+
User có thể đổi ("mỗi AI 3 bản", "chỉ GPT 4 bản"…). Batch 50+ asset → giữ số thấp, đừng đốt quota.
|
|
597
|
+
- `restyle_asset` (đường chỉ-Gemini) nhận `n`, dùng `n = 4` khi chỉ còn Gemini.
|
|
598
|
+
|
|
599
|
+
## Bỏ qua asset suy biến
|
|
600
|
+
|
|
601
|
+
Trước khi chọn asset để restyle (anchor lẫn batch), bỏ qua bất kỳ file nào có width HOẶC
|
|
602
|
+
height dưới **~16px**. Đó không phải art — là một dải màu 1-2px được engine/CSS kéo giãn ra
|
|
603
|
+
làm nền/gradient (từng gặp trong một project thật: `home_bg_fill.png` kích thước 2×2048,
|
|
604
|
+
`finished_bg_gradient.png` kích thước 2×1780). Đưa loại file này vào model sinh ảnh để "redraw the
|
|
605
|
+
subject" là vô nghĩa — không có chủ thể nào để vẽ lại. Dùng `plan_asset(<asset>)` để đọc
|
|
606
|
+
`width`/`height` rồi lọc trước khi đưa vào danh sách xử lý.
|
|
607
|
+
|
|
608
|
+
## Bước 0 — Preflight
|
|
609
|
+
|
|
610
|
+
**Kiểm backend trước (đường mặc định):**
|
|
611
|
+
- `auth_status()` / remote `health(deep=true)` → Gemini sống? (`logged_in` + deep OK). Tool
|
|
612
|
+
**không tốn** lượt sinh ảnh. Cookie chết / DNS fail → xem "Khi hỏng"; **không dừng** nếu Codex còn.
|
|
613
|
+
- Codex sẵn sàng? (`codex` trong remote `available` / `codex --version`). Login fail = exit 5
|
|
614
|
+
của `client/codex_gen.sh`, xem "Khi hỏng".
|
|
615
|
+
- **≥1 backend sống → tiếp tục** theo mục "Thiếu backend thì sao" (vẫn show `compare.html`).
|
|
616
|
+
Mất cả hai → dừng.
|
|
617
|
+
|
|
618
|
+
**MCP `gemini-image` vẫn BẮT BUỘC** (plan/process/sheet/apply chạy trên nó). Nếu máy này
|
|
619
|
+
KHÔNG có cookie Gemini/`codex login`/GPU mà mượn máy khác trong LAN thì `auth_status()` trả
|
|
620
|
+
`mode: "remote"` — xem § Dùng chung một máy trong LAN.
|
|
621
|
+
**Đừng hardcode đường dẫn `gemini_image_mcp.py` của một máy cụ thể** — skill này dùng trên
|
|
622
|
+
nhiều máy/project khác nhau, mỗi máy đăng ký MCP server ở một đường dẫn khác nhau. Tự tìm
|
|
623
|
+
đường dẫn thật đã đăng ký:
|
|
624
|
+
|
|
625
|
+
```bash
|
|
626
|
+
claude mcp get gemini-image
|
|
627
|
+
```
|
|
628
|
+
|
|
629
|
+
Code **nằm ngay trong skill này**, đã TÁCH LÀM HAI thư mục cạnh `SKILL.md`:
|
|
630
|
+
- **`client/`** — MCP entry `gemini_image_mcp.py` + `imglib.py` + lớp mượn-node + test. Đây là
|
|
631
|
+
thứ máy khách chạy; MCP đăng ký trỏ vào `client/gemini_image_mcp.py`.
|
|
632
|
+
- **`server/`** — CHỈ code node (`remote_host.py`, launcher, công cụ cookie). Máy khách không cần.
|
|
633
|
+
- **`models/`** (root) — trọng số model, chỉ node dùng, gitignored.
|
|
634
|
+
|
|
635
|
+
Để ship: `python server/pack.py` → 2 bản nén `game-art-client.zip` (máy khách) + `game-art-node.zip` (node), không kèm token/model. (`make_client_bundle.py` tạo THƯ MỤC client thay vì zip nếu cần.)
|
|
636
|
+
Chi tiết máy khách: `reference/client-guide.md`.
|
|
637
|
+
|
|
638
|
+
Đọc output để lấy đường dẫn `.py` sau `-- python`. Ba trường hợp:
|
|
639
|
+
- **Không thấy server `gemini-image`** → MCP chưa đăng ký. Đăng ký trỏ vào MCP entry của skill:
|
|
640
|
+
`claude mcp add --scope user gemini-image -- python "<.../skills/game-art/client/gemini_image_mcp.py>"`,
|
|
641
|
+
nhắc user `pip install -r client/requirements-client.txt` (máy khách) hoặc
|
|
642
|
+
`pip install -r server/requirements.txt` (node, có torch), rồi restart Claude Code.
|
|
643
|
+
- **Có server, có đường dẫn** → kiểm bản đã có đủ tool chưa (mốc mới nhất là `upscale_image`):
|
|
644
|
+
```bash
|
|
645
|
+
python -c "print('upscale_image' in open(r'<đường dẫn vừa đọc được>', encoding='utf-8').read())"
|
|
646
|
+
```
|
|
647
|
+
`False` → server là bản CŨ (thiếu `upscale_image`, có khi thiếu cả `slice_sheet`/`process_raws`).
|
|
648
|
+
Trỏ lại registration vào `client/gemini_image_mcp.py` (bản đủ 12 tool), cài lại
|
|
649
|
+
requirements (client hoặc node), restart Claude Code, rồi dừng.
|
|
650
|
+
- **Đọc được server nhưng không parse ra đường dẫn** (định dạng output đổi) → báo user, hỏi họ
|
|
651
|
+
chỉ thẳng đường dẫn file, đừng đoán.
|
|
652
|
+
|
|
653
|
+
Không cần restart Claude Code chỉ để chạy skill nếu các tool `plan_asset`/`process_raws`/
|
|
654
|
+
`slice_sheet`/`restyle_asset`/`make_compare_sheet`/`apply_asset` đã xuất hiện trong danh sách tool
|
|
655
|
+
MCP. Nếu vừa cập nhật code mà tool chưa xuất hiện → phải restart Claude Code (MCP nạp tool
|
|
656
|
+
lúc khởi động).
|
|
657
|
+
|
|
658
|
+
*(Tự kiểm, không bắt buộc: `cd client && python test_imglib.py` — in `112/112 passed`; `python test_restyle_tools.py` — `0 failed`. Lớp mượn-node: `cd server && python test_remote.py` — `37/37 passed`. Chỉ chạy khi nghi ngờ code bị sửa hỏng.)*
|
|
659
|
+
|
|
660
|
+
## Bước 1 — Style preset
|
|
661
|
+
|
|
662
|
+
Kiểm `tools/restyle/styles/*.md`. Có rồi và user không đòi style mới → dùng luôn, sang bước 2.
|
|
663
|
+
|
|
664
|
+
**Nếu user đưa ảnh mẫu** (`--style-ref`, hoặc paste ảnh, hoặc chỉ vào file):
|
|
665
|
+
1. `plan_asset(<ref>)` → đọc field `palette` để lấy **hex chính xác**. Đừng đoán màu bằng mắt —
|
|
666
|
+
máy đọc chuẩn hơn. (`plan_asset` mở mọi ảnh RGBA, không chỉ asset game, nên dùng được cho ref.)
|
|
667
|
+
2. Đọc ảnh mẫu bằng vision. Rút ra: chất liệu (đất sét / vector phẳng / pixel / màu nước / 3D bóng),
|
|
668
|
+
nét viền (có/không, dày bao nhiêu, màu gì), kiểu đổ bóng, hướng + độ gắt ánh sáng, độ chi tiết,
|
|
669
|
+
texture bề mặt, độ bo góc, tông cảm xúc.
|
|
670
|
+
3. Ghép (1) + (2) → tự viết `tools/restyle/styles/<ten>.md`. Copy ảnh mẫu vào `styles/<ten>.refs/`.
|
|
671
|
+
4. In tóm tắt cho user. Họ sửa câu nào thì sửa câu đó — **đừng bắt họ viết lại từ đầu**.
|
|
672
|
+
|
|
673
|
+
**Nếu user không đưa ảnh mẫu**: hỏi tên style + hướng style, kèm 3–4 gợi ý cụ thể để chọn nhanh.
|
|
674
|
+
|
|
675
|
+
**Nếu có cả hai**: phân tích ảnh trước, rồi apply yêu cầu chữ của user đè lên.
|
|
676
|
+
|
|
677
|
+
Format `styles/<ten>.md`:
|
|
678
|
+
|
|
679
|
+
```markdown
|
|
680
|
+
# Style: <tên>
|
|
681
|
+
|
|
682
|
+
## Mô tả một câu
|
|
683
|
+
<một câu, đây chính là {STYLE_BLOCK} trong prompt>
|
|
684
|
+
|
|
685
|
+
## Bảng màu
|
|
686
|
+
- #RRGGBB — vai trò (nền / chủ đạo / nhấn / viền)
|
|
687
|
+
|
|
688
|
+
## Chất liệu
|
|
689
|
+
## Ánh sáng
|
|
690
|
+
## Nét viền
|
|
691
|
+
## Không được có (negative)
|
|
692
|
+
## Màu key mặc định
|
|
693
|
+
#00FF00 <!-- hoặc màu khác nếu asset xung đột; `plan_asset` quyết định cho từng asset -->
|
|
694
|
+
```
|
|
695
|
+
|
|
696
|
+
## Bước 2 — Anchor pass
|
|
697
|
+
|
|
698
|
+
Chọn 1 asset đại diện (nhiều chi tiết, dễ nhìn ra style — hỏi user nếu không rõ; bỏ qua asset
|
|
699
|
+
suy biến theo mục ở trên).
|
|
700
|
+
|
|
701
|
+
1. `plan_asset(<asset>, avoid=[<bảng màu style preset>])` → lấy `key`, `width`, `height`, `bbox`,
|
|
702
|
+
`key_margin`, `key_safe`. Luôn truyền `avoid` bằng đúng các hex trong `## Bảng màu` của
|
|
703
|
+
`styles/<ten>.md` — `chroma_key` chạy trên ẢNH ĐÃ RESTYLE (palette style mới), không phải
|
|
704
|
+
palette asset gốc mà `plan_asset` tự đọc; bỏ qua `avoid` thì một style neon-xanh-lá trên asset
|
|
705
|
+
đỏ vẫn có thể khiến chọn nhầm xanh lá làm key.
|
|
706
|
+
`key_safe: false` → **cảnh báo user**: màu key nằm quá sát màu asset (margin dưới ngưỡng an
|
|
707
|
+
toàn của `chroma_key`), chính pixel chủ thể có nguy cơ bị gán alpha một phần → asset ra mờ như
|
|
708
|
+
bóng ma. `restyle_asset` sẽ bắt được ca này (flag `bad_translucent`), nhưng biết trước thì đỡ tốn
|
|
709
|
+
một lượt sinh.
|
|
710
|
+
2. Dựng prompt theo `reference/prompt-template.md` (mục *Anchor pass*), nhét `{KEY_HEX}` = `key`
|
|
711
|
+
từ bước 1.
|
|
712
|
+
3. Sinh ảnh thô theo mục "Sinh ảnh — backend" (mặc định **4 bản** từ backend đang sống;
|
|
713
|
+
cả hai sống + muốn so sánh chéo thì 2+2). **Cùng một prompt**, đầu vào ảnh =
|
|
714
|
+
`[<asset>, <=3 ref]` (tối đa 4 ảnh tính cả asset gốc — giới hạn chung cho
|
|
715
|
+
`generate_image` image_paths lẫn `codex --ref`). Ref nhiều hơn 3 → lấy 3 cái đầu,
|
|
716
|
+
**nói rõ cái nào bị bỏ**. Ảnh thô về `out/<ten>/_raw/`.
|
|
717
|
+
4. Gọi `process_raws` **cho mỗi backend đã sinh** (prefix `"gem"` / `"gpt"` / `"v"` —
|
|
718
|
+
xem mục "Sau khi có ảnh thô") → `out/<ten>/…png`.
|
|
719
|
+
5. Đọc `variants[]` trong dict trả về — mỗi variant có `flags` (list). Một bản có thể dính nhiều
|
|
720
|
+
flag cùng lúc. **Retry luôn bằng ĐÚNG backend đã sinh ra bản hỏng** (ảnh thô mới đánh số
|
|
721
|
+
tiếp, rồi `process_raws` lại TOÀN BỘ raw của backend đó):
|
|
722
|
+
- `bad_background` → nền không phẳng (`border_impurity` cao vì bóng/gradient/viền chưa key hết
|
|
723
|
+
ở vành ngoài, hoặc `coverage` > 0.95). **Trước khi flag này nổ, tool ĐÃ tự thử auto-key**
|
|
724
|
+
(đường chroma-key, key trượt cả khung → dò màu nền thật từ vành ảnh, key lại — thấy
|
|
725
|
+
`key_auto: true` nghĩa là đã được cứu, `key` là màu dò được, không cần làm gì). Vẫn flag
|
|
726
|
+
→ sinh lại **1 lượt** backend đó, nhấn mạnh lại dòng `No cast shadow on the background` /
|
|
727
|
+
`No gradient` / `NOT a photographed studio backdrop` trong prompt. (BEN2 đang chạy thì
|
|
728
|
+
flag này gần như chỉ còn nghĩa `coverage` > 0.95 — segmentation trượt.)
|
|
729
|
+
- `bad_subject` → màu key ăn thủng chủ thể (`coverage` gần 0). `out: null`, không file nào ghi
|
|
730
|
+
ra — kiểm field `out`. Sinh lại **1 lượt** với `key` khác (đổi cả trong prompt lẫn tham số
|
|
731
|
+
`process_raws` — màu nền nằm trong ảnh thô nên PHẢI sinh lại, không chỉ process lại).
|
|
732
|
+
- `bad_translucent` → chủ thể ra mờ như bóng ma: `solid_ratio` thấp dù `coverage` bình thường
|
|
733
|
+
(màu key quá sát màu chủ thể, xem `key_margin` bước 1). Sinh lại **1 lượt với `key` khác** —
|
|
734
|
+
chọn ứng viên trong `KEY_CANDIDATES` (`#00FF00`, `#FF00FF`, `#00FFFF`, `#0000FF`) có margin
|
|
735
|
+
lớn hơn. **Sửa prompt KHÔNG cứu được ca này** — chỉ đổi màu key mới cứu.
|
|
736
|
+
- `sparse` / `bad_holes` → **THAM KHẢO, không phải lỗi, đừng retry vì hai flag này**. `sparse`
|
|
737
|
+
là chủ thể nhỏ nhưng đặc (icon/line-art mảnh — bình thường). `bad_holes` là có vùng trong
|
|
738
|
+
suốt đáng ngờ giữa chủ thể — có thể là lỗi key ăn thủng chi tiết, có thể là art hollow hợp lệ
|
|
739
|
+
(nhẫn, chữ "O"). Cứ ghi vào sheet, để mắt người quyết — đây chính là lý do sheet tồn tại.
|
|
740
|
+
- Vẫn hỏng sau 1 lần retry → **giữ nguyên trong sheet, ghi rõ flag/lý do, để user quyết** —
|
|
741
|
+
đừng tự ý loại bỏ khỏi sheet.
|
|
742
|
+
- `solid_ratio`, `border_impurity`, `hole_ratio` luôn có trong mỗi variant kể cả khi `flags`
|
|
743
|
+
rỗng (`ok`) — `solid_ratio` dưới ~0.5 (nhưng trên ngưỡng tự động 0.25) thì vẫn nên soi kỹ.
|
|
744
|
+
- `errors[]` không rỗng → có raw không đọc được (path sai/copy hỏng); `n_produced` cho biết
|
|
745
|
+
thực tế ra được mấy biến thể. (Đường fallback `restyle_asset` thì lỗi sinh nằm ở
|
|
746
|
+
`gen_errors` — xem "Khi hỏng".)
|
|
747
|
+
6. **BẮT BUỘC — dựng file HTML đối chiếu** (kể cả khi chỉ 1 backend / chỉ vài variant).
|
|
748
|
+
Đừng lắp `groups` bằng tay: mỗi lần `process_raws`/`restyle_asset` đã trả sẵn
|
|
749
|
+
`compare_group`. Nhiều prefix (`gem`+`gpt`) → **GỘP `variants`** thành MỘT group cùng
|
|
750
|
+
`name`; chỉ 1 prefix → dùng group đó luôn:
|
|
751
|
+
```
|
|
752
|
+
make_compare_sheet(
|
|
753
|
+
groups=[{"name": "<ten>", "original": "<asset gốc>",
|
|
754
|
+
"variants": [ ...mọi variant từ process_raws/restyle_asset... ]}],
|
|
755
|
+
out="tools/restyle/out/<ten>/compare.html")
|
|
756
|
+
```
|
|
757
|
+
→ bản gốc cạnh các biến thể, **nhấn giữ để lật về gốc**, đổi nền caro/sáng/tối, zoom.
|
|
758
|
+
(Không mở được trình duyệt thì fallback `make_contact_sheet(... out=".../sheet.png")`.)
|
|
759
|
+
7. **Đưa đường dẫn `compare.html` cho user, để user chọn.** Không tự chọn hộ. Chưa gửi file
|
|
760
|
+
này thì lượt thiết kế CHƯA xong — **kể cả khi chỉ gen bằng GPT hoặc chỉ Gemini**.
|
|
761
|
+
8. Bản được chọn → copy sang `tools/restyle/styles/<ten>.anchor.png`. Đây là **golden anchor**.
|
|
762
|
+
Ghi lại backend đã dùng — lần sau ưu tiên backend đó nếu vẫn healthy.
|
|
763
|
+
|
|
764
|
+
## Bước 3 — Batch pass
|
|
765
|
+
|
|
766
|
+
Từ đây anchor **thay thế** ref ngoài (anchor đã đúng chất asset game; ref ngoài chỉ là cảm hứng ban đầu).
|
|
767
|
+
|
|
768
|
+
Với mỗi asset còn lại (đã lọc bỏ asset suy biến theo mục "Bỏ qua asset suy biến"):
|
|
769
|
+
1. `plan_asset(<asset>, avoid=[<bảng màu style preset>])` → màu key **riêng cho asset đó** (asset
|
|
770
|
+
khác nhau, màu xung đột khác nhau). **Kiểm `key_safe` cho TỪNG asset ở đây, không chỉ ở anchor
|
|
771
|
+
pass** — anchor chỉ chứng minh style chọn được MỘT màu key an toàn cho MỘT asset; trong một lô
|
|
772
|
+
50+ asset hoàn toàn có thể có một asset xui bị `key_safe: false`. `key_safe: false` → ghi chú
|
|
773
|
+
lại, kỳ vọng flag `bad_translucent` cho asset đó, đừng bỏ qua.
|
|
774
|
+
2. Sinh ảnh thô như anchor pass (backend đang sống, mặc định 4 bản; hoặc 2+2 nếu so sánh chéo)
|
|
775
|
+
với đầu vào `[<asset>, styles/<ten>.anchor.png]` và prompt batch
|
|
776
|
+
(`reference/prompt-template.md` mục *Batch pass*) → `_raw/…`, rồi `process_raws` theo
|
|
777
|
+
prefix có raw (`gem`/`gpt`/`v`, `src=<asset>`, `key=<key bước 1>`) → `out/<ten>/…png`.
|
|
778
|
+
3. Đọc `variants[]` → cùng luật đọc `flags` và retry như bước 2 (retry bằng đúng backend hỏng;
|
|
779
|
+
`sparse`/`bad_holes` chỉ tham khảo, không retry vì hai flag đó).
|
|
780
|
+
4. **BẮT BUỘC — gom 10 asset một lô → 1 file HTML đối chiếu** (`make_compare_sheet`, fallback
|
|
781
|
+
`make_contact_sheet`): **mỗi asset là MỘT group riêng, kèm `original` của chính nó**.
|
|
782
|
+
Gom mọi `compare_group` đã có (1 hoặc 2 prefix), **gộp theo `name`**:
|
|
783
|
+
```
|
|
784
|
+
groups=[{"name":"coin","original":"<asset coin>","variants":[...các bản có được...]},
|
|
785
|
+
{"name":"button","original":"<asset button>","variants":[...]}, ...]
|
|
786
|
+
out="tools/restyle/out/_batch/compare_<lo>.html"
|
|
787
|
+
```
|
|
788
|
+
Nhóm theo asset là điểm sống-chết của lô nhiều asset: dồn 40 ảnh vào một lưới phẳng thì
|
|
789
|
+
user phải tự nhớ ảnh nào của asset nào, và **không có bản gốc kèm bên cạnh thì không đối
|
|
790
|
+
chiếu được** — lệch tỉ lệ/hình dạng sẽ trôi qua. Đừng dồn hàng chục asset vào một trang.
|
|
791
|
+
5. **Gửi đường dẫn file HTML đó cho user** rồi mới sang Bước 4.
|
|
792
|
+
|
|
793
|
+
## Bước 4 — Apply
|
|
794
|
+
|
|
795
|
+
Chỉ chạy sau khi user duyệt.
|
|
796
|
+
|
|
797
|
+
```
|
|
798
|
+
apply_asset(
|
|
799
|
+
variant="tools/restyle/out/<ten>/<gem|gpt><i>.png", # v<i>.png nếu đi đường fallback
|
|
800
|
+
dst="<path/asset gốc trong project>.png",
|
|
801
|
+
backup_dir="tools/restyle/backup",
|
|
802
|
+
project_root="<gốc project, đường dẫn tuyệt đối>",
|
|
803
|
+
)
|
|
804
|
+
```
|
|
805
|
+
|
|
806
|
+
`apply_asset` backup bằng cách **mirror đúng đường dẫn** của asset đích (tính từ `project_root`,
|
|
807
|
+
không phải cwd lúc gọi) dưới `backup_dir` — nhờ vậy hai asset trùng tên nhưng khác thư mục không
|
|
808
|
+
đè backup của nhau, và mirror path KHÔNG đổi dù được gọi từ đâu. **Luôn truyền `project_root`
|
|
809
|
+
tường minh** (tuyệt đối) — thiếu nó, mirror phụ thuộc cwd và hai lần apply từ hai chỗ khác nhau
|
|
810
|
+
có thể ra hai backup khác nhau cho CÙNG một asset.
|
|
811
|
+
|
|
812
|
+
`apply_asset` cũng **không bao giờ ghi đè backup đã có** — lần apply thứ hai trở đi sẽ không nuốt
|
|
813
|
+
mất bản gốc thật sự. Và nó **từ chối** (trả `{"error": ...}`, không ghi gì) nếu `backup_dir`/
|
|
814
|
+
`project_root` khiến backup resolve trùng lên chính `dst`, hoặc nếu `variant`/`dst` không phải
|
|
815
|
+
file `.png`.
|
|
816
|
+
|
|
817
|
+
Xong thì báo user chạy game xem asset mới lên đúng chỗ, đúng size chưa.
|
|
818
|
+
|
|
819
|
+
## Khi hỏng
|
|
820
|
+
|
|
821
|
+
| Triệu chứng | Nguyên nhân | Xử lý |
|
|
822
|
+
|---|---|---|
|
|
823
|
+
| `codex_gen.sh` exit 3 | Thiếu `codex` hoặc không có python chạy được | Cài Codex CLI + `codex login`; script đã tự né stub `python3` của MS Store, nhưng máy phải có `python` thật |
|
|
824
|
+
| `codex_gen.sh` exit 5 | `codex exec` hỏng — chưa `codex login`, mạng, hết quota ChatGPT | Chạy `codex login` rồi thử lại; vẫn hỏng thì đọc stderr tail script in ra |
|
|
825
|
+
| `codex_gen.sh` exit 6/7 | imagegen không chạy hoặc không tìm thấy ảnh (đời codex đổi cơ chế lưu) | Kiểm `codex --version`; script đã hỗ trợ cả `generated_images/` (codex ≥0.145) lẫn session-scan (codex cũ) — đời mới hơn nữa thì sửa "Đường 1" trong script |
|
|
826
|
+
| `generate_image` trả chuỗi bắt đầu bằng `Error:` | Tool này trả *chuỗi*, không phải dict — đừng đọc field `error` | Đọc phần sau `Error:`; cookie thì xem dòng cookie bên dưới, `No image URL` thì xem dòng kế |
|
|
827
|
+
| Ảnh Gemini/`codex` ra ĐÚNG chủ thể nhưng nền không phải màu key | Backend bỏ qua dòng Output trong prompt | BEN2 vẫn tách được (không phụ thuộc màu nền); chỉ đường chroma-key fallback mới hỏng — soi sheet, cần thì sinh lại 1 lượt |
|
|
828
|
+
| `gen_errors`/`generate_image` chứa `Redirected to consent page...` hoặc `Could not find any auth token...` hoặc `Session ĐĂNG XUẤT...` (đường Gemini web) | Cookie Gemini hết hạn (chặn HẲN backend A) | MCP **tự refresh** qua Chrome+CDP rồi thử lại — nếu vẫn báo lỗi thì profile cố định đã bị Google thu hồi: chạy `python server/refresh_gemini_cookies.py --login`, đăng nhập Gemini một lần, rồi `python server/refresh_gemini_cookies.py`. Chi tiết + bẫy scope cookie: `reference/mcp-image-input.md` § Cookie hết hạn |
|
|
829
|
+
| `gen_errors` chứa `No image URL in response...` (đường Gemini web) | Prompt bị từ chối, hoặc model id/protocol Google đổi | Đổi prompt cho rõ hơn; nếu vẫn hỏng → `reference/mcp-image-input.md` § Khi protocol Google đổi |
|
|
830
|
+
| variant có `key_auto: true` | Model vẽ nền lệch màu key (vd "xanh studio" `#2ED246` thay vì `#00FF00`) — tool đã tự dò màu nền thật từ vành ảnh và key lại thành công | **Không phải lỗi, không cần làm gì.** `key` trong variant là màu dò được, `key_requested` là màu ban đầu. Muốn giảm hẳn ca này: giữ dòng `NOT a photographed studio backdrop` trong prompt (đã có trong template) |
|
|
831
|
+
| variant `flags` chứa `bad_background` ở mọi bản sinh | Model cứ đổ bóng/gradient lên nền, hoặc chưa key hết viền (auto-key chỉ cứu ca key trượt CẢ khung, không cứu nền bẩn một phần) | Nhấn mạnh lại `No cast shadow on the background` / `No gradient` / `NOT a photographed studio backdrop` trong prompt; hoặc bật BEN2 (không phụ thuộc màu nền) |
|
|
832
|
+
| `bad_background` ở **mọi** bản sinh mà `bg_residue` = 0.0000 và `cutout_method` có vẻ ổn | Đây là ảnh NỀN tràn viền và bạn **quên `full_bleed=True`**. `border_impurity` giả định vành ảnh toàn là nền — sai với ảnh nền, nên nó đánh hỏng cả 4 bản tách nền hoàn hảo | Chạy lại `process_raws(..., full_bleed=True)`. Kiểm `impurity_gated` trong report: `true` = cửa đó đang phủ quyết |
|
|
833
|
+
| Asset ra **mềm/nhoè** dù tách nền sạch | Bản sinh NHỎ hơn khung đích nên đã phải phóng to. Kiểm `upscale_method`: `lanczos` = không có `torch` nên rơi về nội suy; `esrgan` = đã dựng nét nhưng chi tiết là model ĐOÁN | Sinh lại nguồn TO hơn (đúng cách). Tạm thời: `pip install torch` để mở ứng viên esrgan. Xem `upscale_from`/`upscale_to` để biết đã phóng bao nhiêu |
|
|
834
|
+
| `upscale_table` báo mọi ứng viên `disqualified` | `lr_err` > 30 (bản phóng mâu thuẫn ảnh nguồn) hoặc `cov_err` > 0.08 (matte bị phá) | Ảnh nguồn quá nhỏ so với đích — sinh lại, đừng phóng to |
|
|
835
|
+
| variant `flags` chứa `bad_subject` | Màu key ăn thủng chủ thể; `out: null` | Sinh lại với `key` khác, ưu tiên ứng viên xa bảng màu asset gốc hơn (xem `key_margin` từ `plan_asset`) |
|
|
836
|
+
| variant `flags` chứa `bad_translucent` | Màu key sát màu chủ thể → chủ thể bị bào thành bóng ma (`solid_ratio` thấp) | Đổi `key` sang ứng viên khác trong `KEY_CANDIDATES`. Xem `key_margin` TRƯỚC khi sinh — sửa prompt không cứu được |
|
|
837
|
+
| variant `flags` chứa `sparse` | Chủ thể nhỏ (coverage thấp) nhưng ĐẶC (icon/line-art mảnh) | **KHÔNG phải lỗi, đừng retry.** Chỉ tham khảo — soi trong sheet như bình thường |
|
|
838
|
+
| variant `flags` chứa `bad_holes` | Vùng trong suốt đáng ngờ GIỮA chủ thể (`hole_ratio` cao) — có thể key ăn thủng chi tiết, có thể art hollow hợp lệ (nhẫn, chữ "O", khung ảnh) | **THAM KHẢO, không phải gate cứng.** Nhìn sheet phân biệt; nếu đúng bị ăn thủng, retry như `bad_subject`/`bad_translucent` tuỳ mức độ |
|
|
839
|
+
| `slice_sheet` ra `n_cells` ÍT hơn số chi tiết đã liệt kê | Model vẽ thiếu, hoặc hai chi tiết dính nhau thành 1 mảng liên thông | Soi sheet thô: thiếu → sinh lại 1 lượt; dính nhau → nhấn "space them WELL APART" trong prompt rồi sinh lại; hoặc bù chi tiết thiếu bằng luồng theo-asset |
|
|
840
|
+
| `slice_sheet` ra `n_cells` NHIỀU hơn | Một chi tiết bị đứt gãy thành nhiều mảng (nét mảnh), hoặc model vẽ thừa | Ghép tay: cell đứt gãy thì tăng `pad`/giảm `min_cell` xem có liền lại không; thừa thì bỏ cell đó khi review |
|
|
841
|
+
| `slice_sheet` cắt lẹm mockup vào dải chi tiết (hoặc ngược lại) | `mockup_frac` không khớp ranh giới model vẽ | Nhìn sheet thô, ước lại `mockup_frac` (model hay lệch khỏi 50%) rồi chạy lại — `slice_sheet` chỉ đọc, chạy lại không tốn lượt sinh |
|
|
842
|
+
| Asset ra bị bóp méo | bbox gốc tỉ lệ khác hẳn chủ thể sinh ra | `fit_into` giữ tỉ lệ nên sẽ chừa lề — cân nhắc `size="WxH"` thay vì bám gốc |
|
|
843
|
+
| Anchor pass tốt, batch trôi style | Anchor chưa đủ đặc trưng | Chọn anchor khác, nhiều chi tiết hơn |
|
|
844
|
+
| Asset gốc chỉ 1-2px một chiều (vd 2×2048) | Đó là dải fill/gradient bị engine kéo giãn, không phải art | Bỏ qua, đừng đưa vào Gemini — xem "Bỏ qua asset suy biến" |
|
|
845
|
+
| `apply_asset` trả `{"error": ...}` nhắc "trùng với chính asset đích" | `backup_dir`/`project_root` resolve backup trùng lên `dst` (vd `backup_dir="."` từ project root) | Đổi `backup_dir` sang thư mục KHÔNG chứa/trùng `dst` (vd `tools/restyle/backup`), luôn kèm `project_root` |
|
|
846
|
+
| `apply_asset` trả `{"error": ...}` nhắc "phải là .png" | `variant` hoặc `dst` không có đuôi `.png` | Kiểm lại đường dẫn — `apply_asset` chỉ ghi đè file `.png` |
|