package com.o3dr.services.android.lib.drone.mission.item; import android.os.Parcel; import android.os.Parcelable; import com.o3dr.services.android.lib.coordinate.LatLongAlt; import com.o3dr.services.android.lib.drone.mission.MissionItemType; /** * Created by fhuya on 11/5/14. */ public abstract class MissionItem implements Cloneable, Parcelable { public interface Command {} public interface SpatialItem { LatLongAlt getCoordinate(); void setCoordinate(LatLongAlt coordinate); } public interface ComplexItem<T extends MissionItem> { void copy(T source); } private final MissionItemType type; protected MissionItem(MissionItemType type) { this.type = type; } public MissionItemType getType() { return type; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(this.type.ordinal()); } protected MissionItem(Parcel in){ this.type = MissionItemType.values()[in.readInt()]; } @Override public abstract MissionItem clone(); @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof MissionItem)) return false; MissionItem that = (MissionItem) o; return type == that.type; } @Override public int hashCode() { return type != null ? type.hashCode() : 0; } @Override public String toString() { return "MissionItem{" + "type=" + type + '}'; } }