using UnityEngine;
using System.Collections;

// Made specifically for the player object
// This is used anywhere ingame aswell as in character creation
// It sets the players appearance based on chosen options
// If nothing chosen, goes to default
public class setAppearance : MonoBehaviour {

	private static Sprite curFace;
	private static Sprite curHead;
	private static Sprite curLegs;
    private static Sprite curPot;
	private static float curRed = 1f;
	private static float curGreen = 1f;
	private static float curBlue = 1f;

	public static SpriteRenderer head;
	public static SpriteRenderer face;
	public static SpriteRenderer body;
	public static SpriteRenderer legR; // looking AT the player right
	public static SpriteRenderer legL; // looking AT the player left
	public static SpriteRenderer arm;
	public static SpriteRenderer forearm;
    public static SpriteRenderer pot;

	private static bool created;


	void Awake() {
		face = transform.FindChild("face").gameObject.GetComponent<SpriteRenderer> ();
		body = transform.FindChild("body").gameObject.GetComponent<SpriteRenderer> ();
		head = transform.FindChild("head").gameObject.GetComponent<SpriteRenderer> ();
		arm = transform.FindChild("arm").gameObject.GetComponent<SpriteRenderer> ();
		forearm = transform.FindChild("forearm").gameObject.GetComponent<SpriteRenderer> ();
		legR = transform.FindChild("legR").gameObject.GetComponent<SpriteRenderer> ();
		legL = transform.FindChild("legL").gameObject.GetComponent<SpriteRenderer> ();
		refresh ();
		addColor (curRed, curGreen, curBlue);
	}

	public void refresh(){
		if (created) { // If character creation NOT skipped
			face.sprite = curFace;
			head.sprite = curHead;
			legR.sprite = curLegs; // two legs, do twice
			legL.sprite = curLegs;
            head.color = new Color(1, 1, 1, 1);
            body.color = new Color(1, 1, 1, 1);
            legR.color = new Color(1, 1, 1, 1);
            legL.color = new Color(1, 1, 1, 1);
            arm.color = new Color(1, 1, 1, 1);
            forearm.color = new Color(1, 1, 1, 1);
        }
	}

	public void addColor(float red, float green, float blue){
		// Don't change face color
		curRed = red;
		curGreen = green;
		curBlue = blue;
		head.color = new Color(red,green,blue,1);
		body.color = new Color(red,green,blue,1);
		legR.color = new Color(red,green,blue,1);
		legL.color = new Color(red,green,blue,1);
		arm.color = new Color(red,green,blue,1);
		forearm.color = new Color(red,green,blue,1);
	}

	public void setFace(Sprite newFace){
		curFace = newFace;
	}

	public void setHead(Sprite newHead){
		curHead = newHead;
	}

	public void setLegs(Sprite newLegs){
		curLegs = newLegs;
	}

    public void setPot(Sprite newPot) {
        curPot = newPot;
    }

	public void creationDone(){
		created = true;
	}

    // methods necessary for player portrait
    public Sprite getHead() {
        return curHead;
    }
    public Sprite getFace() {
        return curFace;
    }
    public Color getColor() {
        return new Color(curRed, curGreen, curBlue, 1); // potential change
    }
}