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