#ifndef PET_INIT_H #define PET_INIT_H #include #include #include #include "main.h" #ifdef __cplusplus extern "C" { #endif typedef enum { PET_STAGE_BABY = 0, PET_STAGE_TEEN, PET_STAGE_ADULT, } pet_stage_t; typedef enum { PET_VEHICLE_WALK = 0, PET_VEHICLE_BIKE, PET_VEHICLE_MOTORCYCLE, PET_VEHICLE_CAR, PET_VEHICLE_PLANE, } pet_vehicle_t; typedef enum { PARK = 0, STREET, // 街道 RIVER, // 河流 ANCIENT_TOWN, // 古镇 MOUNTAIN_TRAIL, // 山道 RESERVOIR, // 水库 SETTLEMENT, // 聚落 ORCHARD, // 果园 HUIZHOU, // 惠州 DONGGUAN, // 东莞 FOSHAN, // 佛山 ZHONGSHAN, // 中山 JIANGMEN, // 江门 QINGYUAN, // 清远 ZHAOQING, // 肇庆 HEYUAN, // 河源 MEIZHOU, // 梅州 CHONGQING, // 重庆 XIAN, // 西安 GUANGZHOU, // 广州 NANJING, // 南京 SANYA, // 三亚 BEIJING, // 北京 CHANGSHA, // 长沙 ZHANGJIAJIE, // 张家界 XIANGXI, // 湘西 FENGHUANG_GUZHEN, // 凤凰古镇 SHANGHAI, // 上海 XIANGGELILA, // 香格里拉 LIJIANG, // 丽江 DALI, // 大理 XIZANG, // 西藏 XIAMEN, // 厦门 JINGDEZHEN, // 景德镇 PINGTAN, // 平潭 QINGDAO, // 青岛 BEIHAI, // 北海 WANNING, // 万宁 ZIBO, // 淄博 YANJI, // 延吉 LIUZHOU, // 柳州 YICHANG, // 宜昌 MOHE, // 漠河 GUILIN, // 桂林 HANGZHOU, // 杭州 XITANG, // 西塘 QINGHAI, // 青海 XISHUANGBANNA, // 西双版纳 DUNHUANG, // 敦煌 YUNNAN, // 云南(省/区域) CITY_COUNT, // 枚举计数(必须放最后) } travel_city_t; extern const char *city_names[CITY_COUNT]; typedef struct { uint8_t hunger; // 0-100 uint8_t cleanliness; // 0-100 uint8_t mood; // 0-100 uint16_t intimacy; // 0-300 pet_stage_t stage; pet_vehicle_t vehicle; uint64_t last_timestamp; // UTC seconds stored as u64 struct tm last_time; // 本地时间表示 bool is_travelling; //是否在旅行 uint64_t travel_timestamp; bool can_travel; uint16_t travel_time; uint16_t feed_time; //喂食状态 uint64_t feed_timestamp; bool is_feed_cd; } pet_status_t; /* 全局标志(在 pet_init.c 中定义) */ extern bool g_pet_need_first_sync; // true 表示需要第一次 NTP 同步并写入时间 extern bool g_pet_ntp_synced; // NTP 同步成功 extern bool g_pet_animation_ready; // 同步成功后,动画可用标志 /* 对外接口 */ void pet_init(void); const pet_status_t *pet_get_status(void); pet_stage_t pet_get_stage(uint16_t intimacy); pet_vehicle_t pet_get_vehicle_stage(uint16_t intimacy); void pet_feed(void); void pet_bath(void); void pet_interact(void); void pet_travel_return(void); /* 时间同步任务控制 */ void pet_start_time_task(void); extern bool g_wifi_state; #ifdef __cplusplus } #endif #endif