/*
Copyright (C) 2005 David Green <green@couchpotato.net>
All Rights Reserved.

This file is part of Aelfengard.

Aelfengard is proprietary software. You may not redistribute it without
prior written permission from the copyright holder.
*/

package common;

import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Face implements Externalizable {

    private static final long serialVersionUID = 2951581181148535005L;
    
    private FaceModel model;
    private List<Integer> parts;
    
    public Face() {
        // Used for deserialization only
    }
    
    public Face(FaceModel model, List<Integer> parts) {
        this.model = model;
        this.parts = Collections.unmodifiableList(new ArrayList<Integer>(parts));
    }
    
    public FaceModel getFaceModel() {
        return model;
    }
    
    public List<Integer> getParts() {
        return parts;
    }
    
    @Override
    public String toString() {
        return model + ":" + parts;
    }

    public void writeExternal(ObjectOutput out) throws IOException {
        out.writeInt(1); // protocol version
        out.writeObject(model);
        out.writeObject(parts);
    }

    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
        in.readInt(); // protocol version
        model = (FaceModel) in.readObject();
        parts = CommonUtils.uncheckedCast(in.readObject());
    }
    
}