// 游戏AUG突击步枪辅助瞄准功能实现类
public class AUGAssaultRifleAimAssist {
    // 辅助瞄准目标部位枚举（对应配置中的Head/GameCharacterModelBody）
    public enum AimTargetPart {
        HEAD("Head"), // 头部目标
        BODY("GameCharacterModelBody"); // 身体目标
        private final String partName;
        AimTargetPart(String partName) {
            this.partName = partName;
        }
        public String getPartName() {
            return partName;
        }
    }

    // 辅助瞄准参数（对应配置中的1、3、5）
    private final int[] aimAssistParams = {1, 3, 5};
    // 默认瞄准目标（A、B、C对应头部，D对应身体）
    private AimTargetPart defaultTargetPart;
    // 头部辅助瞄准概率（配置中为100%）
    private final int headAimAssistProbability = 100;

    // 初始化：根据配置设置默认瞄准目标（示例默认A，即头部）
    public AUGAssaultRifleAimAssist(String defaultTargetKey) {
        // 根据配置中的"A""B""C""D"映射到对应目标部位
        switch (defaultTargetKey.toUpperCase()) {
            case "A":
            case "B":
            case "C":
                this.defaultTargetPart = AimTargetPart.HEAD;
                break;
            case "D":
                this.defaultTargetPart = AimTargetPart.BODY;
                break;
            default:
                // 默认值：若key无效，默认瞄准头部
                this.defaultTargetPart = AimTargetPart.HEAD;
                break;
        }
    }

    // 执行辅助瞄准逻辑：返回最终瞄准目标和使用的辅助参数
    public AimAssistResult executeAimAssist() {
        // 1. 确定瞄准目标（配置中头部瞄准概率100%，故优先头部）
        AimTargetPart finalTarget = AimTargetPart.HEAD;
        // （若后续需支持概率随机，可通过Random类结合headAimAssistProbability实现）

        // 2. 选择辅助瞄准参数（示例取第一个有效参数，可根据需求调整逻辑）
        int selectedParam = aimAssistParams[0];
        for (int param : aimAssistParams) {
            if (isValidAimAssistParam(param)) {
                selectedParam = param;
                break; // 此处取第一个有效参数，可按需修改（如随机选、按场景选）
            }
        }

        // 3. 返回辅助瞄准结果
        return new AimAssistResult(finalTarget, selectedParam, headAimAssistProbability);
    }

    // 校验辅助瞄准参数是否有效（配置中仅1、3、5有效）
    private boolean isValidAimAssistParam(int param) {
        for (int validParam : aimAssistParams) {
            if (param == validParam) {
                return true;
            }
        }
        return false;
    }

    // 辅助瞄准结果封装类（存储目标部位、参数、头部概率）
    public static class AimAssistResult {
        private final AimTargetPart targetPart;
        private final int usedAssistParam;
        private final int headAimProbability;

        public AimAssistResult(AimTargetPart targetPart, int usedAssistParam, int headAimProbability) {
            this.targetPart = targetPart;
            this.usedAssistParam = usedAssistParam;
            this.headAimProbability = headAimProbability;
        }

        // Getter方法：获取结果数据
        public String getTargetPartName() {
            return targetPart.getPartName();
        }

        public int getUsedAssistParam() {
            return usedAssistParam;
        }

        public int getHeadAimProbability() {
            return headAimProbability;
        }

        // 打印结果（便于调试）
        @Override
        public String toString() {
            return "AUG辅助瞄准结果：" +
                    "目标部位=" + targetPart.getPartName() +
                    ", 使用辅助参数=" + usedAssistParam +
                    ", 头部瞄准概率=" + headAimProbability + "%";
        }
    }

    // 测试示例
    public static void main(String[] args) {
        // 初始化：默认瞄准目标为"A"（对应头部）
        AUGAssaultRifleAimAssist augAimAssist = new AUGAssaultRifleAimAssist("A");
        // 执行辅助瞄准
        AimAssistResult result = augAimAssist.executeAimAssist();
        // 打印结果
        System.out.println(result);
    }
}
