// =======================================================
//  ARCSHAPE.JS - Visual & Trigger Receiver (OPTIMIZED)
// =======================================================
class Arcshape {
  constructor(x, y, r, w, h, start, stop, background, opt, lb = '', order, txtcol, strurl, txtleft, txttop, txtsize) {
    const options = {
      isStatic: true,
      render: { fillStyle: background }
    };

    this.angle = 0;
    this.x = x;
    this.y = y;
    this.r = r;
    this.w = w;
    this.h = h;
    this.win = false; 
    this.start = start;
    this.stop = stop;
    
    // ĐỔI TÊN: Để lưu giữ màu gốc không bao giờ bị ghi đè
    this.initialBackground = background; 
    this.currentBackground = background; 

    this.order = order;
    this.txtcol = txtcol;
    this.strurl = strurl;
    this.txtleft = txtleft;
    this.txttop = txttop;
    this.txtsize = txtsize || 16;
    this.label = lb || "arc"; 
    
    this.img = null;
    if (this.strurl && this.strurl !== '') {
        loadImage(this.strurl, (imgData) => {
            this.img = imgData;
        });
    }

    this.body = Bodies.circle(this.x, this.y, this.r, options);
    this.body.label = this.label;
    Composite.add(world, [this.body]);
  }

  update() {
    this.angle = this.angle + speed;
    // Đồng bộ vị trí vật lý (giữ nguyên logic của bạn)
    this.x = centerX + Math.cos(PI / 8 + this.start + this.angle) * (w_arc / 2) * Math.cos(PI / 8);
    this.y = centerY + Math.sin(PI / 8 + this.start + this.angle) * (w_arc / 2) * Math.cos(PI / 8);
    this.body.position.x = this.x;
    this.body.position.y = this.y;
  }

  triggerWin() {
      if (this.win) return;
      this.win = true;
      
      // Chỉ đổi màu hiển thị lúc này
      this.currentBackground = (typeof colwin !== 'undefined') ? colwin : "#FFD700"; 

      // XÓA BỎ LỆNH winsound.play() Ở ĐÂY 
      // Hãy để sketch.js quản lý âm thanh tập trung để tránh xung đột
      
      _getgift = this.label;

      // Kích hoạt thông báo Popup
      if (typeof window.zutalw_show_win === 'function') {
           setTimeout(() => {
               window.zutalw_show_win(this.label);
           }, 150); // Delay nhẹ để người dùng kịp nhìn thấy ô trúng đổi màu
      }
  }

  show() {
    push();
    translate(centerX, centerY);
    rotate(this.angle);
    
    if (this.win) {
      stroke("#FFD700");
      strokeWeight(4);
      fill(this.currentBackground);
    } else {
      // Dùng initialBackground để đảm bảo reset màu luôn đúng
      fill(this.initialBackground);
      strokeWeight(0.5);
      noStroke();
    }
    
    arc(0, 0, this.w, this.h, this.start, this.stop);
    pop();

    // Vẽ Nhãn và Ảnh (giữ nguyên logic tọa độ của bạn)
    push();
    translate(centerX, centerY);
    rotate(this.start + this.angle);
    
    if (this.img) {
        imageMode(CENTER);
        let img_x = this.txtleft + 90; 
        let img_y = this.txttop + 50;  
        image(this.img, img_x, img_y, 40, 40);
    }

    textSize(this.txtsize);
    textAlign(CENTER);
    
    if (this.win) {
        fill("#FFFFFF");
        textStyle(BOLD);
    } else {
        fill(this.txtcol || "#000000");
        textStyle(NORMAL);
    }

    text(this.label, this.txtleft, this.txttop, 180, 200);
    pop();
  }
}

window.Arcshape = Arcshape;