Files
P4-USB-transfer/main/PET/pet_init.h
T

129 lines
3.6 KiB
C
Raw Normal View History

2026-10-13 21:54:50 +08:00
#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