package com.zombie.game.model;

/** Game constants / 游戏常量 */
public class Constants {
    // Grid cell size in pixels / 网格单元格大小（像素）
    public static final int GRID_SIZE = 32;
    // Tick rate per second / 每秒逻辑帧率
    public static final int TICK_RATE = 30;
    // Duration of one tick in seconds / 每帧持续时间（秒）
    public static final float TICK_INTERVAL = 1.0f / TICK_RATE;
    // Player collision size / 玩家碰撞体积
    public static final float PLAYER_SIZE = 0.8f;
    // Player movement speed / 玩家移动速度
    public static final float PLAYER_SPEED = 5.0f;
    // Zombie collision size / 僵尸碰撞体积
    public static final float ZOMBIE_SIZE = 0.8f;
    // Zombie movement speed / 僵尸移动速度
    public static final float ZOMBIE_SPEED = 2.0f;
    // Nut wall max health / 坚果墙最大生命值
    public static final float NUT_WALL_MAX_HEALTH = 500.0f;
    // Nut wall extra movement cost for flow field / 坚果墙流场额外移动代价
    public static final float NUT_WALL_MOVEMENT_COST = 20.0f;
    // Grid center threshold for retarget / 到达网格中心后重新选方向的阈值
    public static final float GRID_CENTER_THRESHOLD = 0.15f;
    // Zombie spawn interval in seconds / 僵尸刷新间隔（秒）
    public static final float ZOMBIE_SPAWN_INTERVAL = 3.0f;
    // Max zombie count / 最大僵尸数量
    public static final int ZOMBIE_MAX_COUNT = 20;

    // Create room message type / 创建房间消息类型
    public static final String MSG_CREATE_ROOM = "create_room";
    // Join room message type / 加入房间消息类型
    public static final String MSG_JOIN_ROOM = "join_room";
    // Leave room message type / 离开房间消息类型
    public static final String MSG_LEAVE_ROOM = "leave_room";
    // Room list message type / 房间列表消息类型
    public static final String MSG_ROOM_LIST = "room_list";
    // Room state message type / 房间状态消息类型
    public static final String MSG_ROOM_STATE = "room_state";
    // Ready state message type / 准备状态消息类型
    public static final String MSG_READY = "ready";
    // Start game message type / 开始游戏消息类型
    public static final String MSG_START_GAME = "start_game";
    // Game started notification / 游戏已开始通知
    public static final String MSG_GAME_STARTED = "game_started";
    // Player input message type / 玩家输入消息类型
    public static final String MSG_PLAYER_INPUT = "player_input";
    // Game state broadcast / 游戏状态广播
    public static final String MSG_GAME_STATE = "game_state";
    // Player joined notification / 玩家加入通知
    public static final String MSG_PLAYER_JOIN = "player_join";
    // Player left notification / 玩家离开通知
    public static final String MSG_PLAYER_LEAVE = "player_leave";
    // Error message type / 错误消息类型
    public static final String MSG_ERROR = "error";
}
