// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.procedurallib.json;

import javax.annotation.Nonnull;
import com.hypixel.hytale.procedurallib.random.CoordinateOriginRotator;
import com.google.gson.JsonElement;
import java.nio.file.Path;
import com.hypixel.hytale.procedurallib.random.CoordinateRotator;

public class CoordinateRotatorJsonLoader<K extends SeedResource> extends JsonLoader<K, CoordinateRotator>
{
    public CoordinateRotatorJsonLoader(final SeedString<K> seed, final Path dataFolder, final JsonElement json) {
        super(seed, dataFolder, json);
    }
    
    @Nonnull
    @Override
    public CoordinateRotator load() {
        final double pitch = this.has("Pitch") ? (this.get("Pitch").getAsDouble() * 0.01745329238474369) : 0.0;
        final double yaw = this.has("Yaw") ? (this.get("Yaw").getAsDouble() * 0.01745329238474369) : 0.0;
        if (pitch == 0.0 && yaw == 0.0) {
            return CoordinateRotator.NONE;
        }
        final double originX = this.has("OriginX") ? this.get("OriginX").getAsDouble() : 0.0;
        final double originY = this.has("OriginY") ? this.get("OriginY").getAsDouble() : 0.0;
        final double originZ = this.has("OriginZ") ? this.get("OriginZ").getAsDouble() : 0.0;
        if (originX == 0.0 && originY == 0.0 && originZ == 0.0) {
            return new CoordinateRotator(pitch, yaw);
        }
        return new CoordinateOriginRotator(pitch, yaw, originX, originY, originZ);
    }
    
    public interface Constants
    {
        public static final String KEY_ROTATE = "Rotate";
        public static final String KEY_PITCH = "Pitch";
        public static final String KEY_YAW = "Yaw";
        public static final String KEY_ORIGIN_X = "OriginX";
        public static final String KEY_ORIGIN_Y = "OriginY";
        public static final String KEY_ORIGIN_Z = "OriginZ";
    }
}
