Fix Tetris 2P preview block synchronization issue
- Prevent duplicate piece shapes when generating next pieces - Enhanced randomTetromino() with excludeShape parameter - Update piece placement logic to avoid visual duplicates - Improve initial state generation for both players - Add P1 and P2 next piece previews in 2P mode
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
/**
|
||||
* PAYMENT CONFIGURATION
|
||||
*
|
||||
* Edit this file to configure all payment methods.
|
||||
* This is the only file you need to modify for production.
|
||||
*/
|
||||
|
||||
export const CONFIG = {
|
||||
// ============================================
|
||||
// STORE SETTINGS
|
||||
// ============================================
|
||||
store: {
|
||||
name: "Secure Market",
|
||||
currency: "USD",
|
||||
currencySymbol: "$",
|
||||
supportEmail: "support@example.com",
|
||||
pgpKey: "0x1234ABCD5678EFGH",
|
||||
},
|
||||
|
||||
// ============================================
|
||||
// PRODUCTS
|
||||
// ============================================
|
||||
products: [
|
||||
{
|
||||
id: "prod_001",
|
||||
name: "Digital Product #001",
|
||||
description: "Secure digital delivery. Encrypted files with lifetime access.",
|
||||
priceFiat: 25.00,
|
||||
priceCrypto: {
|
||||
btc: "0.001",
|
||||
eth: "0.015",
|
||||
ltc: "0.3",
|
||||
xmr: "0.15",
|
||||
},
|
||||
image: "📦",
|
||||
downloadUrl: "/downloads/product-001.zip", // After payment verification
|
||||
},
|
||||
{
|
||||
id: "prod_002",
|
||||
name: "Premium Bundle",
|
||||
description: "Complete package with all features and priority support.",
|
||||
priceFiat: 99.00,
|
||||
priceCrypto: {
|
||||
btc: "0.004",
|
||||
eth: "0.06",
|
||||
ltc: "1.2",
|
||||
xmr: "0.6",
|
||||
},
|
||||
image: "💎",
|
||||
downloadUrl: "/downloads/premium-bundle.zip",
|
||||
},
|
||||
],
|
||||
|
||||
// ============================================
|
||||
// PAYPAL / CARD PAYMENTS
|
||||
// Get your Client ID: https://developer.paypal.com/dashboard/applications
|
||||
// ============================================
|
||||
paypal: {
|
||||
enabled: true,
|
||||
clientId: "YOUR_PAYPAL_CLIENT_ID", // Replace with your PayPal Client ID
|
||||
currency: "USD",
|
||||
// PayPal supports: paypal, card, credit, venmo, paylater, bancontact, giropay, ideal, mybank, p24, sepa, sofort
|
||||
enabledFunding: ["paypal", "card", "venmo", "paylater"],
|
||||
},
|
||||
|
||||
// ============================================
|
||||
// STRIPE (for Apple Pay / Google Pay)
|
||||
// Get your keys: https://dashboard.stripe.com/apikeys
|
||||
// ============================================
|
||||
stripe: {
|
||||
enabled: true,
|
||||
publishableKey: "YOUR_STRIPE_PUBLISHABLE_KEY", // pk_live_... or pk_test_...
|
||||
// For server-side (edge function), add STRIPE_SECRET_KEY to your secrets
|
||||
},
|
||||
|
||||
// ============================================
|
||||
// CRYPTOCURRENCY
|
||||
// ============================================
|
||||
crypto: {
|
||||
enabled: true,
|
||||
// Replace with YOUR wallet addresses
|
||||
wallets: {
|
||||
btc: {
|
||||
address: "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
|
||||
enabled: true,
|
||||
},
|
||||
eth: {
|
||||
address: "0x71C7656EC7ab88b098defB751B7401B5f6d8976F",
|
||||
enabled: true,
|
||||
},
|
||||
ltc: {
|
||||
address: "ltc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
|
||||
enabled: true,
|
||||
},
|
||||
xmr: {
|
||||
address: "888tNkZrPN6JsEgekjMnABU4TBzc2Dt29EPAvkRxbANsAnjyPbb3iQ1YBRk1UXcdRsiKc9dhwMVgN5S9cQUiyoogDavup3H",
|
||||
enabled: true,
|
||||
},
|
||||
},
|
||||
// Auto-detection requires backend (Supabase edge function)
|
||||
autoDetection: {
|
||||
enabled: false,
|
||||
pollIntervalMs: 15000,
|
||||
supabaseUrl: "https://your-project.supabase.co",
|
||||
},
|
||||
},
|
||||
|
||||
// ============================================
|
||||
// DIRECT PAYMENTS (Manual Verification)
|
||||
// ============================================
|
||||
direct: {
|
||||
enabled: true,
|
||||
venmo: {
|
||||
enabled: true,
|
||||
username: "@YourVenmoUsername",
|
||||
link: "https://venmo.com/u/YourVenmoUsername",
|
||||
},
|
||||
cashapp: {
|
||||
enabled: true,
|
||||
cashtag: "$YourCashTag",
|
||||
link: "https://cash.app/$YourCashTag",
|
||||
},
|
||||
zelle: {
|
||||
enabled: true,
|
||||
email: "payments@example.com",
|
||||
phone: "+1234567890",
|
||||
},
|
||||
bankTransfer: {
|
||||
enabled: true,
|
||||
bankName: "Your Bank",
|
||||
accountName: "Your Business Name",
|
||||
accountNumber: "1234567890",
|
||||
routingNumber: "021000021",
|
||||
swift: "YOURSWIFT",
|
||||
iban: "US00BANK0000001234567890",
|
||||
},
|
||||
giftCards: {
|
||||
enabled: true,
|
||||
accepted: ["Amazon", "Steam", "iTunes", "Google Play", "Visa", "Mastercard"],
|
||||
},
|
||||
},
|
||||
|
||||
// ============================================
|
||||
// CAPTCHA SETTINGS
|
||||
// ============================================
|
||||
captcha: {
|
||||
enabled: true,
|
||||
maxAttempts: 3,
|
||||
challengeTypes: ["math", "text", "reverse", "count"],
|
||||
},
|
||||
|
||||
// ============================================
|
||||
// NOTIFICATIONS (Webhooks)
|
||||
// Called when payment is submitted for verification
|
||||
// ============================================
|
||||
webhooks: {
|
||||
onPaymentSubmitted: "", // Optional: https://your-server.com/api/payment-submitted
|
||||
onPaymentVerified: "", // Optional: https://your-server.com/api/payment-verified
|
||||
},
|
||||
};
|
||||
|
||||
// Type exports for TypeScript
|
||||
export type Product = typeof CONFIG.products[0];
|
||||
export type CryptoType = keyof typeof CONFIG.crypto.wallets;
|
||||
|
||||
Reference in New Issue
Block a user