All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.cassite.xboxrelay.base.DeadZoneSettings Maven / Gradle / Ivy

The newest version!
package net.cassite.xboxrelay.base;

import vjson.JSON;
import vjson.JSONObject;
import vjson.deserializer.rule.ObjectRule;
import vjson.deserializer.rule.Rule;
import vjson.util.ObjectBuilder;

public class DeadZoneSettings implements JSONObject {
    public DeadZoneConfig min = null;
    public DeadZoneConfig max = null;

    public static final Rule rule = new ObjectRule<>(DeadZoneSettings::new)
        .put("min", (o, it) -> o.min = it, DeadZoneConfig.rule)
        .put("max", (o, it) -> o.max = it, DeadZoneConfig.rule);

    public DeadZoneSettings() {
    }

    public DeadZoneSettings(DeadZoneSettings that) {
        min = DeadZoneConfig.copyOf(that.min);
        max = DeadZoneConfig.copyOf(that.max);
    }

    public boolean validForInitialControlMessage() {
        return min != null && !min.isZero() && max != null && !max.isZero();
    }

    @SuppressWarnings("RedundantIfStatement")
    public boolean valid() {
        if (min != null) {
            if (!min.valid()) {
                return false;
            }
        }
        if (max != null) {
            if (!max.valid()) {
                return false;
            }
        }
        return true;
    }

    public void from(DeadZoneSettings s) {
        if (min == null) {
            min = s.min;
        } else if (s.min != null) {
            min.from(s.min);
        }
        if (max == null) {
            max = s.max;
        } else if (s.max != null) {
            max.from(s.max);
        }
    }

    @Override
    public JSON.Object toJson() {
        var ob = new ObjectBuilder();
        if (min != null && !min.isZero())
            ob.putInst("min", min.toJson());
        if (max != null && !max.isZero())
            ob.putInst("max", max.toJson());
        return ob.build();
    }

    @Override
    public String toString() {
        return "DeadZoneSettings{" +
               "min=" + min +
               ", max=" + max +
               '}';
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy