纳入固件源码、屏幕组件、nand_xfer 工具和文档。忽略本机构建产物、sdkconfig,以及含本机路径的依赖锁。 Co-authored-by: Cursor <cursoragent@cursor.com>
129 lines
3.6 KiB
C
129 lines
3.6 KiB
C
#ifndef PET_INIT_H
|
|
#define PET_INIT_H
|
|
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
#include <time.h>
|
|
#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
|
|
|