package com.alterdekim.game.component.game.home;

import com.alterdekim.game.component.game.ClubAccessType;
import com.alterdekim.game.xml.ClubAccessTypeSerializer;
import com.alterdekim.game.xml.NumericBooleanSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import lombok.AllArgsConstructor;

@AllArgsConstructor
public class HomeLocation {

    @JacksonXmlProperty(isAttribute = true, localName = "ID")
    private Integer id;

    @JacksonXmlProperty(isAttribute = true, localName = "AObjectTypeId")
    private Integer objectTypeId;

    @JacksonXmlProperty(isAttribute = true, localName = "AObjectId")
    private Long objectId;

    @JacksonXmlProperty(isAttribute = true, localName = "AObjectRefTypeId")
    private Integer objectRefTypeId;

    @JacksonXmlProperty(isAttribute = true, localName = "MediaResourceID")
    private Integer mediaResourceID;

    @JacksonXmlProperty(isAttribute = true, localName = "TextResourceID")
    private Integer textResourceID;

    @JacksonXmlProperty(isAttribute = true, localName = "IsHome")
    @JsonSerialize(using = NumericBooleanSerializer.class)
    private Boolean isHome;

    @JacksonXmlProperty(isAttribute = true, localName = "IsClub")
    @JsonSerialize(using = NumericBooleanSerializer.class)
    private Boolean isClub;

    @JacksonXmlProperty(isAttribute = true, localName = "IsVisaAccessPermitted")
    @JsonSerialize(using = NumericBooleanSerializer.class)
    private Boolean IsVisaAccessPermitted;

    @JacksonXmlProperty(isAttribute = true, localName = "IsCurrent")
    @JsonSerialize(using = NumericBooleanSerializer.class)
    private Boolean isCurrent;

    @JacksonXmlProperty(isAttribute = true, localName = "IsLocked")
    @JsonSerialize(using = NumericBooleanSerializer.class)
    private Boolean isLocked;

    @JacksonXmlProperty(isAttribute = true, localName = "ClubAccessType")
    @JsonSerialize(using = ClubAccessTypeSerializer.class)
    private ClubAccessType clubAccessType;

    @JacksonXmlProperty(isAttribute = true, localName = "ClubCost")
    private Integer clubCost;

    @JacksonXmlProperty(isAttribute = true, localName = "ClubRate")
    private Integer clubRate;

    @JacksonXmlProperty(isAttribute = true)
    private Double x;

    @JacksonXmlProperty(isAttribute = true)
    private Double y;

    @JacksonXmlProperty(isAttribute = true, localName = "Frame")
    private Integer frame;

    @JacksonXmlProperty(isAttribute = true, localName = "TweenerId")
    private Integer tweenerId;

    @JacksonXmlProperty(isAttribute = true, localName = "IsVisible")
    @JsonSerialize(using = NumericBooleanSerializer.class)
    private Boolean isVisible;

    @JacksonXmlProperty(isAttribute = true, localName = "IsEnabled")
    @JsonSerialize(using = NumericBooleanSerializer.class)
    private Boolean isEnabled;

    @JacksonXmlProperty(isAttribute = true, localName = "IsPositionHeld")
    @JsonSerialize(using = NumericBooleanSerializer.class)
    private Boolean isPositionHeld;

    @JacksonXmlProperty(isAttribute = true, localName = "IsDraggable")
    @JsonSerialize(using = NumericBooleanSerializer.class)
    private Boolean isDraggable;
}
