# ৫. WinGo — একটাই ফোল্ডার, একটাই গেম

## এখন কাঠামো
```
games/wingo/
├── game.php          ← গেম পেজ (একমাত্র আসল)
├── history.php       ← My history → Detail
└── assets/           ← css/ js/ (game.js, wingo.js) img/ sound/   (+ .htaccess: শুধু এটা পাবলিক)
```
পাবলিক URL গুলো ৩-লাইনের stub, সবাই `games/wingo/game.php` (বা `history.php`) খোলে:

| URL | stub ফাইল | খোলে |
|---|---|---|
| `/wingo.php` (হোম এটাই লিংক করে) | `wingo.php` | `games/wingo/game.php` |
| `/wingo` বা `/wingo/` | `wingo/index.php` | `games/wingo/game.php` |
| `/wingo/history.php` | `wingo/history.php` | `games/wingo/history.php` |

## মুছে ফেলা (ডুপ্লিকেট)
- পুরোনো ইনলাইন গেম `games/wingo/game.php`, `_review/patches/wingo_fix/wingo.php`, `_review/legacy/history.php`
- `wingo/assets/*` (সরে গেছে `games/wingo/assets/*`)
- রুটের পুরোনো কপি: `assets/css/wingo.css`, `assets/js/wingo.js`, `assets/js/game.js`, `assets/img/wingo/`, `assets/img/clock-*.png|svg`, `assets/sound/tick*.mp3` (কোনো ফাইল এগুলো ব্যবহার করত না)

## UI
- **সাপোর্ট আইকন ২টা**: (১) হেডারে সাউন্ড বাটনের ঠিক বাঁ পাশে হেডসেট আইকন (প্রফেশনাল স্ক্রিনশট থেকে হুবহু আঁকা SVG, `.hd-ic.sup`), ক্লিক করলে `customer_service.php`। (২) নিচে ডানে ভাসমান বাটন — আপলোড করা ছবি `games/wingo/assets/img/support.png` (৫৩.৩u, ডান থেকে ১৪.৩u, নিচ থেকে ৮৬.৭u, `position:fixed`); স্ক্রল করলে ডান দিকে লুকায়, স্ক্রল থামলে ডান দিক থেকে ফিরে আসে (`.wg-fab.hide` + `game.php`-এর ছোট স্ক্রিপ্ট)।
- ব্যালেন্সের রিফ্রেশ আইকন এখন টাকার লেখার ঠিক পাশে (৭u ফাঁক, `.balw`), লেখা মাঝখানেই থাকে।
- সংখ্যা ০–৯: প্রফেশনাল স্ক্রিনশট থেকে পিক্সেল মেপে SVG চিপ (রিম + রিং + সাদা ডিস্ক + ৪ নচ + গ্লস), ব্যাস ৫০u, কলামের দূরত্ব ৬১.৭u। কোড: `wingo.js`-এর শুরুতে (`wgb-*` symbol)। ০ ও ৫ এ কোণাকুনি বেগুনি ভাগ (রিং/ডিস্কে); **সংখ্যা নিজে পুরোটা বেগুনি** (আগে অর্ধেক লাল/সবুজ দেখাত)। ডিস্কের সাদা অংশ আগের চেয়ে বেশি সাদা (গ্রেডিয়েন্ট ৪৬% পর্যন্ত খাঁটি সাদা), চার পাশের সাদা নচ আরও গাঢ় ও একটু বড় (অস্বচ্ছতা ১.০→০.৭২)।
- হেডারে সাপোর্ট আইকন নেই; ফ্লোটিং বাটনটা নতুন করে (নিচে) বসানো। হেডারের লোগো: games/wingo/assets/img/logo.png (নতুন সাদা HGNICE লোগো)।
- `<base>` এখন নিজে হিসাব করে, তাই যে stub থেকেই খোলা হোক asset ঠিক পাথে লোড হয়।

## সতর্কতা
- zip আনজিপ করলে সার্ভারের **পুরোনো ফাইল মোছে না**। তাই পুরোনো `wingo/assets`, `wingo/` এর বাড়তি ফাইল ইত্যাদি হাতে মুছতে হবে (তালিকা রিপ্লাইতে)।
- এখানে PHP/ব্রাউজার ছিল না; রেন্ডার করে দেখা হয়নি, শুধু JS সিনট্যাক্স ও পাথ মিলিয়ে দেখা হয়েছে।

---
## v3 — Number balls (0-9) rebuilt from the reference screenshot
- Ball body = real shading cut from the reference (games/wingo/assets/img/ball-r.png, ball-g.png, ball-v0.png, ball-v5.png); digits are live text.
- Geometry: ball 50.67u, column pitch 61.7u, row pitch 56.33u (measured from the reference).
- Ring pixel error vs reference: 5108 -> 835 (MSE, same crop).
- Installer: tables are now created whenever they are missing, even if old .schema_*_installed marker files exist.

---
## v5 — Admin panel
- Folder: hgx-ctl-n4w8r2p6/  (password-only login, bcrypt, 5 wrong tries/15 min lock, CSRF, 30 min idle logout)
- Pages: Dashboard, Users (search/filter), User detail (freeze withdraw, give game access, suspend, note), Settings (game gate on/off, bulk access, change password)
- Shared: includes/admin_flags.php (tables user_admin_flags, admin_settings) used by includes/game_gate.php and includes/withdraw_service.php


---
## v8 — বেট শিট (নিচ থেকে ওঠা মডেল) + ব্যালেন্সের সংখ্যা ছোট
- নতুন ফাইল: `games/wingo/assets/js/betsheet.js`; HTML `game.php`-এ (`#bsh`); স্টাইল `wingo.css`-এর শেষে (`.bsh-*`)।
- ছয়টা প্রফেশনাল স্ক্রিনশট থেকে পিক্সেল মেপে (১u = ৩px): শিটের উচ্চতা ৩১২u, উপরের কোণ ১৪u, হেডার V-আকৃতির (বাঁ/ডানে ৬৩u, মাঝে ৯০.৩৩u), ডিম ব্যাকগ্রাউন্ড rgba(0,0,0,.7)।
- রং: Big `#ffaa57` · Small `#6ea7f4` · Green হেডার গ্রেডিয়েন্ট `#3eaa70→#47b97b`, বাটন/বার `#18b661` · Red `#fb5b5b` · Violet `#c76efe` · সংখ্যা ০ = লাল/বেগুনি কোণাকুনি ভাগ, ৫ = সবুজ/বেগুনি (৫-এর স্ক্রিনশট ছিল না, বলের মতো ধরা হয়েছে), বেজোড় = সবুজ, জোড় = লাল।
- কাজ: Balance (১/১০/১০০/১০০০) × Quantity (−, লেখা যায় এমন ঘর, +, X১…X১০০) = Total amount। শিটে X বদলালে পেজের X বাটনও মেলে। I agree টিক না থাকলে কনফার্ম হয় না। শেষ ৫ সেকেন্ডে (লক) শিট নিজে বন্ধ হয়। Random চাপলে ০–৯ এর যেকোনো একটা নিয়ে শিট খোলে।
- কনফার্মে `wingo:place` ইভেন্ট যায় (bet, amount, quantity, total, mode, period)। **এখন বেট সেভ বা ব্যালেন্স কাটা হয় না** — আসল API এখানে হুক করতে হবে।
- "Pre-sale rules" লিংক আপাতত How to play-এর লেখা খোলে (আলাদা লেখা পাওয়া যায়নি)।
- ব্যালেন্স `৳0.00`: ফন্ট ১৯u → ১৭u, সাথে অক্ষরের ফাঁক +০.৭u (প্রফেশনাল স্ক্রিনশটে অঙ্কের উচ্চতা ৩৭px, আগেরটা ছিল প্রায় ৪১px)। লাইন-হাইট ও বাকি সব আগের মতো।
- রেন্ডার করে দেখা হয়নি (এখানে ব্রাউজার/PHP ছিল না); JS সিনট্যাক্স ও CSS ব্র্যাকেট মেলানো হয়েছে।
