package com.caliverse.admin.domain.entity.metadata;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.List;

@Data
public class MetaBuffData {
    @JsonProperty("buff_id")
    private int buffId;

    @JsonProperty("buff_name")
    private String buffName;

    @JsonProperty("buff_description")
    private String buffDescription;

    @JsonProperty("buff_category")
    private String buffCategory;

    @JsonProperty("buff_channel")
    private int buffChannel;

    @JsonProperty("buff_priority")
    private int buffPriority;

    @JsonProperty("action_buff_id")
    private int actionBuffId;

    @JsonProperty("Traits")
    private List<Trait> traits;

    @JsonProperty("propmesh_name")
    private String propmeshName;

    @JsonProperty("propmesh_name_opacity")
    private String propmeshNameOpacity;

    @JsonProperty("use_required")
    private int useRequired;

    @JsonProperty("InactiveRange")
    private int inactiveRange;

    @JsonProperty("GuideHeight")
    private int guideHeight;

    @JsonProperty("GuideOffset")
    private int guideOffset;

    @JsonProperty("GuideScale")
    private double guideScale;

    @JsonProperty("prop_effect")
    private String propEffect;

    @JsonProperty("buff_start_condition")
    private String buffStartCondition;

    @JsonProperty("buff_start_condition_value")
    private int buffStartConditionValue;

    @JsonProperty("buff_end_condition")
    private String buffEndCondition;

    @JsonProperty("buff_end_condition_value")
    private int buffEndConditionValue;

    @JsonProperty("duration_time")
    private int durationTime;

    @JsonProperty("buff_end_execution_type")
    private String buffEndExecutionType;

    @JsonProperty("buff_end_execution_value")
    private int buffEndExecutionValue;

    @JsonProperty("attach_effect_bp")
    private String attachEffectBp;

    @JsonProperty("attach_avatar_socket")
    private String attachAvatarSocket;

    @JsonProperty("tool_id")
    private int toolId;

    @JsonProperty("buff_action_name")
    private String buffActionName;

    @JsonProperty("buff_motion_set")
    private String buffMotionSet;

    @JsonProperty("buff_hand_type")
    private String buffHandType;

    @JsonProperty("buff_activate_name")
    private String buffActivateName;

    @JsonProperty("buff_deactivate_name")
    private String buffDeactivateName;

    @JsonProperty("buff_swap_name")
    private String buffSwapName;

    @JsonProperty("buff_icon_2D")
    private String buffIcon2D;

    @JsonProperty("buff_action_cooltime")
    private int buffActionCooltime;

    @JsonProperty("using_aim_offset")
    private String usingAimOffset;

    @JsonProperty("user_detachable")
    private boolean userDetachable;

    @JsonProperty("is_normal_remain")
    private boolean isNormalRemain;

    @JsonProperty("is_concert_remain")
    private boolean isConcertRemain;

    @JsonProperty("is_movie_remain")
    private boolean isMovieRemain;

    @JsonProperty("is_meeting_remain")
    private boolean isMeetingRemain;

    @JsonProperty("is_myhome_remain")
    private boolean isMyhomeRemain;

    @JsonProperty("is_beacon_remain")
    private boolean isBeaconRemain;

    @JsonProperty("is_dressroom_remain")
    private boolean isDressroomRemain;

    @Data
    public static class Trait {
        @JsonProperty("Attribute")
        private String attribute;

        @JsonProperty("Value")
        private int value;

        @JsonProperty("Operation")
        private String operation;
    }
}
