using UnityEngine;
using System.Collections;

// Made specifically for the player object
// This is used anywhere ingame aswell as in character creation
public class setAppearance : MonoBehaviour {

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

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

	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;
		}
	}

	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 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
    }
}