using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class PlayerScript : MonoBehaviour { public int SPEED = 10; public GameObject interactMessage; public Text text; public ParticleSystem hurt; public GameObject wall; private Direction currentDirection = Direction.DOWN; private Animator animator; private List selectedCombustibleItem = new List(); public int score = 0; public float previousTime = 0; // Start is called before the first frame update void Start() { Global.player = this; animator = GetComponent(); previousTime = Time.realtimeSinceStartup; } // Update is called once per frame void Update() { if (Time.realtimeSinceStartup - previousTime > 1.0f) { score++; previousTime = Time.realtimeSinceStartup; } text.text = "Bois : " + selectedCombustibleItem.Count; if ((Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.Z) || Manette.IsUp()) && (Input.GetKey(KeyCode.Q) || Input.GetKey(KeyCode.A) || Manette.IsLeft())) { this.gameObject.transform.position = new Vector3(this.gameObject.transform.position.x - SPEED * Time.deltaTime * 0.70710678118655f, this.gameObject.transform.position.y + SPEED * Time.deltaTime * 0.70710678118655f, this.gameObject.transform.position.z); animator.Play("PlayerWalkLeft", 0); currentDirection = Direction.UP_LEFT; } else if ((Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.Z) || Manette.IsUp()) && (Input.GetKey(KeyCode.D) || Manette.IsRight())) { this.gameObject.transform.position = new Vector3(this.gameObject.transform.position.x + SPEED * Time.deltaTime * 0.70710678118655f, this.gameObject.transform.position.y + SPEED * Time.deltaTime * 0.70710678118655f, this.gameObject.transform.position.z); animator.Play("PlayerWalkRight", 0); currentDirection = Direction.UP_RIGHT; } else if ((Input.GetKey(KeyCode.S) || Manette.IsDown()) && (Input.GetKey(KeyCode.Q) || Input.GetKey(KeyCode.A) || Manette.IsLeft())) { this.gameObject.transform.position = new Vector3(this.gameObject.transform.position.x - SPEED * Time.deltaTime * 0.70710678118655f, this.gameObject.transform.position.y - SPEED * Time.deltaTime * 0.70710678118655f, this.gameObject.transform.position.z); animator.Play("PlayerWalkLeft", 0); currentDirection = Direction.DOWN_LEFT; } else if ((Input.GetKey(KeyCode.S) || Manette.IsDown()) && (Input.GetKey(KeyCode.D) || Manette.IsRight())) { this.gameObject.transform.position = new Vector3(this.gameObject.transform.position.x + SPEED * Time.deltaTime * 0.70710678118655f, this.gameObject.transform.position.y - SPEED * Time.deltaTime * 0.70710678118655f, this.gameObject.transform.position.z); animator.Play("PlayerWalkRight", 0); currentDirection = Direction.DOWN_RIGHT; } else if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.Z) || Manette.IsUp()) { this.gameObject.transform.position = new Vector3(this.gameObject.transform.position.x, this.gameObject.transform.position.y + SPEED * Time.deltaTime, this.gameObject.transform.position.z); animator.Play("PlayerWalkUp", 0); currentDirection = Direction.UP; } else if (Input.GetKey(KeyCode.S) || Manette.IsDown()) { this.gameObject.transform.position = new Vector3(this.gameObject.transform.position.x, this.gameObject.transform.position.y - SPEED * Time.deltaTime, this.gameObject.transform.position.z); animator.Play("PlayerWalkDown", 0); currentDirection = Direction.DOWN; } else if (Input.GetKey(KeyCode.Q) || Input.GetKey(KeyCode.A) || Manette.IsLeft()) { this.gameObject.transform.position = new Vector3(this.gameObject.transform.position.x - SPEED * Time.deltaTime, this.gameObject.transform.position.y, this.gameObject.transform.position.z); animator.Play("PlayerWalkLeft", 0); currentDirection = Direction.LEFT; } else if (Input.GetKey(KeyCode.D) || Manette.IsRight()) { this.gameObject.transform.position = new Vector3(this.gameObject.transform.position.x + SPEED * Time.deltaTime, this.gameObject.transform.position.y, this.gameObject.transform.position.z); animator.Play("PlayerWalkRight", 0); currentDirection = Direction.RIGHT; } else if ((Input.GetKey(KeyCode.Space) || Manette.IsPlaceBlock()) && this.selectedCombustibleItem.Count >= 30) { this.BurnObjects(300); Vector3 objectPlacement = new Vector3(this.gameObject.transform.position.x, this.gameObject.transform.position.y, 0); switch (currentDirection) { case Direction.LEFT: objectPlacement.x--; break; case Direction.RIGHT: objectPlacement.x++; break; case Direction.UP: objectPlacement.y++; break; case Direction.DOWN: objectPlacement.y--; break; } Instantiate(wall, objectPlacement, Quaternion.identity); } else { if (currentDirection == Direction.DOWN) { animator.Play("PlayerStopDown", 0); } else if (currentDirection == Direction.UP) { animator.Play("PlayerStopUp", 0); } else if (currentDirection == Direction.LEFT || currentDirection == Direction.UP_LEFT || currentDirection == Direction.DOWN_LEFT) { animator.Play("PlayerStopLeft", 0); } else if (currentDirection == Direction.RIGHT || currentDirection == Direction.UP_RIGHT || currentDirection == Direction.DOWN_RIGHT) { animator.Play("PlayerStopRight", 0); } else { animator.Play("PlayerStopDown", 0); } } } public bool PickupObject (CombustibleItem combustibleItem) { score += (int)combustibleItem.GetQuantityOfEnergy(); GetComponent().Play(); if (this.selectedCombustibleItem.Count < 30) { this.selectedCombustibleItem.Add(combustibleItem); return true; } else { return false; } } public int GetNumberOfWood () { return selectedCombustibleItem.Count; } public CombustibleItem[] BurnObjects(float leftIntensity) { List combustibles = new List(); foreach (CombustibleItem combustibleItem in selectedCombustibleItem) { if (leftIntensity < combustibleItem.GetQuantityOfEnergy()) break; leftIntensity -= combustibleItem.GetQuantityOfEnergy(); combustibles.Add(combustibleItem); } foreach (CombustibleItem c in combustibles) { selectedCombustibleItem.Remove(c); } return combustibles.ToArray(); } public void SetInteractMessage(bool visible, string tag) { if (interactMessage is GameObject) interactMessage.SetActive(visible); if (tag is string) interactMessage.GetComponent().text = "Press E to interact with " + tag; } public void EmitHurtParticle() { score -= 100; hurt.Play(); } public int GetScore () { return this.score; } }