void Awake()
    {
        List <Dictionary <string, object> > data = CSVReader.Read(file);      //read map values

        GameObject newsquirrel;

        for (var i = Random.Range(0, 30); i < data.Count; i += 20)                                                                //currently this just spawns every 20th squirrel since i tried spawning them in at once and that was a huge mistake
        {
            Vector3 pos = new Vector3(((float)data[i]["X"] - TRANSLATEX) * SCALE, ((float)data[i]["Y"] - TRANSLATEY) * SCALE, 0); //get position of squirrel and transform

            string     squirrelColor = (string)data[i]["Primary Fur Color"];
            GameObject sq            = null;
            if (squirrelColor == "Gray")
            {
                sq = squirrel_gray;
            }
            else if (squirrelColor == "Black")
            {
                sq = squirrel_black;
            }
            else
            {
                sq = squirrel_cinammon;
            }


            newsquirrel = Instantiate(sq, pos, Quaternion.identity);                            //draw a squirrel in each place

            newsquirrel.transform.RotateAround(new Vector3(0, 0, 0), new Vector3(0, 0, 1), 37); //this rotation is arbitrary and can be tuned later
            newsquirrel.transform.rotation = Quaternion.identity;

            //shove variables into squirrel
            SquirrelAi sqAI = newsquirrel.GetComponent <SquirrelAi>();
            sqAI.color = squirrelColor;
            sqAI.id    = (string)data[i]["Unique Squirrel ID"];
            sqAI.age   = (string)data[i]["Age"];
            sqAI.SetAgeSpeed();

            //nightmare of data structures
            Dictionary <string, object> temp = new Dictionary <string, object>();
            temp.Add("Kuks", data[i]["Kuks"]);
            temp.Add("Quaas", data[i]["Quaas"]);
            temp.Add("Moans", data[i]["Moans"]);
            sqAI.noise = pickRandomTrue(temp).ToLower();

            temp = new Dictionary <string, object>();
            //Running,Chasing,Climbing,Eating,Foraging
            temp.Add("Running", data[i]["Running"]);
            temp.Add("Chasing", data[i]["Chasing"]);
            temp.Add("Climbing", data[i]["Climbing"]);
            temp.Add("Eating", data[i]["Eating"]);
            temp.Add("Foraging", data[i]["Foraging"]);
            sqAI.defaultBehavior = pickRandomTrue(temp).ToLower();

            temp = new Dictionary <string, object>();
            //Runs from, indifferent, approaches
            temp.Add("Runs from", data[i]["Runs from"]);
            temp.Add("Approaches", data[i]["Approaches"]);
            temp.Add("Indifferent", data[i]["Indifferent"]);
            sqAI.playerBehavior = pickRandomTrue(temp).ToLower();

            temp = new Dictionary <string, object>();
            //probably extra lol [tail twitches/flags]
            temp.Add("Tail flags", data[i]["Tail flags"]);
            temp.Add("Tail twitches", data[i]["Tail twitches"]);
            sqAI.behaviors = pickRandomTrue(temp).ToLower();

            /*
             * print("X " + data[i]["X"] + " " +
             *              "Y " + data[i]["Y"] + " " +
             *              "ID " + data[i]["Unique Squirrel ID"] + " " +
             *              "Hectare " + data[i]["Hectare"]);
             */

            totSquirrels++;
        }

        Player.position = SpawnPoints.GetChild(random.Next(0, SpawnPoints.childCount)).position;
    }
    // Update is called once per frame
    void Update()
    {
        //if (gameLogic.currState != GameLogic.GameState.GAME_RUNNING)
        //return;


        //player physical movement
        movement.x = 0;
        movement.y = 0;
        if (Input.GetKey("a"))
        {
            movement.x = -1;
            if (dir == "")
            {
                dir = "left";
            }
            else
            {
                secdir = "left";
            }
        }
        else if (Input.GetKey("d"))
        {
            movement.x = 1;
            if (dir == "")
            {
                dir = "right";
            }
            else
            {
                secdir = "right";
            }
        }

        if (Input.GetKey("w"))
        {
            movement.y = 1;
            if (dir == "")
            {
                dir = "up";
            }
            else
            {
                secdir = "up";
            }
        }
        else if (Input.GetKey("s"))
        {
            movement.y = -1;
            if (dir == "")
            {
                dir = "down";
            }
            else
            {
                secdir = "down";
            }
        }

        //override direction
        if ((dir == "down" && !Input.GetKey("s")) || (dir == "up" && !Input.GetKey("w")) || (dir == "left" && !Input.GetKey("a")) || (dir == "right" && !Input.GetKey("d")))
        {
            dir    = secdir;
            secdir = "";
        }

        if (movement != Vector2.zero)
        {
            sprAnim.animating = true;
            sprAnim.PlayAnim("move_" + dir);
        }
        else
        {
            if (dir != "")
            {
                sprAnim.PlayAnim("idle_" + dir);
                sprAnim.animating = false;
                dir = "";
            }
        }

        Vector2 mousePos  = Input.mousePosition;
        Vector2 targetPos = mainCamera.ScreenToWorldPoint(mousePos);


        //take pic and add to gallery
        if (Input.GetMouseButtonUp(0) && srScript.Hit() && srScript.squirrel != null && srScript.squirrel.GetComponent <SquirrelAi>().eating)
        {
            Debug.Log("Click!");
            //Debug.Log(srScript.squirrel.GetComponent<SquirrelAi>().id);
            SquirrelAi sqai = srScript.squirrel.GetComponent <SquirrelAi>();
            gameLogic.AddSquirrel(sqai.id, sqai.color, sqai.defaultBehavior, sqai.noise, sqai.playerBehavior, FunFact(), sqai.upright);
        }

        //show snap ring
        if (Input.GetMouseButton(0))
        {
            picMode = true;
            snapRing.SetActive(true);
            snapRing.transform.position = new Vector3(targetPos.x, targetPos.y, 0);
        }
        else
        {
            if (picMode)
            {
                picMode = false;
                snapRing.SetActive(false);
                srScript.curSize = 2.0f;
            }
        }



        Vector2 direction = (targetPos - (Vector2)transform.position).normalized;
        float   angle     = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg - 90.0f;

        if (Input.GetMouseButtonDown(1) && gameLogic.acornCt > 0)
        {
            ThrowAcorn(direction, targetPos);
        }

        Vector2 changePos = movement * moveSpeed * Time.deltaTime;

        transform.position += new Vector3(changePos.x, changePos.y, 0);
        //transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);

        Vector2 cameraPos = transform.position;

        mainCamera.transform.position = new Vector3(cameraPos.x, cameraPos.y + camOffY, -10.0f);
    }