package main

import (
	"cicv-data-closedloop/pjisuv_msgs"
	"fmt"
	"math"
	"sync"
	"time"
)

var (
	StartTime int64
	IsFollow  bool
)

func Topic() string {
	return "/tpperception"
}

// 禁止存在下划线_
func Label() string {
	return "CPLA"
}

func Rule(shareVars *sync.Map, data *pjisuv_msgs.PerceptionObjects) string {
	defer func() {
		if r := recover(); r != nil {
			fmt.Println("Recovered from panic:", r)
		}
	}()
	OutsideWorkshopFlag, ok3 := shareVars.Load("OutsideWorkshopFlag")
	AbsSpeed, ok2 := shareVars.Load("AbsSpeed")

	if ok3 && ok2 && OutsideWorkshopFlag.(bool) && AbsSpeed.(float64) > 1 {

		for _, obj := range data.Objs {
			if obj.Type == 1 && obj.X >= 2 && obj.X <= 20 && math.Abs(float64(obj.Y)) <= 1.2 {
				if StartTime == 0 {
					StartTime = time.Now().Unix()
				}

				// 判断是否持续超过一分钟
				if time.Now().Unix()-StartTime > 5 {
					if !IsFollow {
						event_label := "CPLA"
						fmt.Println(event_label)
						IsFollow = true
						return Label()

					}
				}
			} else {
				StartTime = 0
				IsFollow = false
			}
		}
	}

	return ""
}