From 98d0278c03dc237af7d7f7f4c9840d4c6050589e Mon Sep 17 00:00:00 2001 From: Jens Pitkanen Date: Sun, 19 Apr 2020 02:39:52 +0300 Subject: [PATCH] Add burning queue --- Assets/Prefabs/Player/Player.prefab | 8 ++++--- Assets/Scenes/MainScene.unity | 1 + Assets/Scripts/Campfire.cs | 33 ++++++++++++++++++++++++--- ProjectSettings/DynamicsManager.asset | 8 ++++--- ProjectSettings/TagManager.asset | 2 +- 5 files changed, 42 insertions(+), 10 deletions(-) diff --git a/Assets/Prefabs/Player/Player.prefab b/Assets/Prefabs/Player/Player.prefab index 19c5707..d87013a 100644 --- a/Assets/Prefabs/Player/Player.prefab +++ b/Assets/Prefabs/Player/Player.prefab @@ -9,7 +9,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 8433165236288212749} - m_Layer: 0 + m_Layer: 11 m_Name: Item Holder m_TagString: Untagged m_Icon: {fileID: 0} @@ -42,7 +42,7 @@ GameObject: - component: {fileID: 6125707628839966529} - component: {fileID: 6125707628839966528} - component: {fileID: 6125707628839966535} - m_Layer: 0 + m_Layer: 11 m_Name: Main Camera m_TagString: MainCamera m_Icon: {fileID: 0} @@ -188,7 +188,7 @@ GameObject: - component: {fileID: 6125707630481988397} - component: {fileID: 6125707630481988371} - component: {fileID: 7093134810128755097} - m_Layer: 0 + m_Layer: 11 m_Name: Player m_TagString: Untagged m_Icon: {fileID: 0} @@ -222,6 +222,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b656f92dbeaf1784786c317df80ca152, type: 3} m_Name: m_EditorClassIdentifier: + GameState: {fileID: 0} BodyTransform: {fileID: 6125707630481988396} HeadTransform: {fileID: 6125707628839966534} --- !u!114 &6125707630481988397 @@ -277,6 +278,7 @@ MonoBehaviour: CameraTransform: {fileID: 6125707628839966534} HandTransform: {fileID: 8433165236288212749} GrabHint: {fileID: 0} + GrabText: {fileID: 0} ItemLayer: serializedVersion: 2 m_Bits: 1024 diff --git a/Assets/Scenes/MainScene.unity b/Assets/Scenes/MainScene.unity index 8a02aa4..a3d60ae 100644 --- a/Assets/Scenes/MainScene.unity +++ b/Assets/Scenes/MainScene.unity @@ -289,6 +289,7 @@ MonoBehaviour: TooLowFuelColor: {r: 1, g: 0.791215, b: 0.6273585, a: 0} RandomVarianceDuration: 0.2 RandomVarianceMagnitude: 0.25 + LogBurningCooldown: 1 Fuel: 60 --- !u!1 &404370537 GameObject: diff --git a/Assets/Scripts/Campfire.cs b/Assets/Scripts/Campfire.cs index e6f8a86..384485e 100644 --- a/Assets/Scripts/Campfire.cs +++ b/Assets/Scripts/Campfire.cs @@ -12,6 +12,8 @@ public class Campfire : MonoBehaviour { public Color TooLowFuelColor; public float RandomVarianceDuration; public float RandomVarianceMagnitude; + [Tooltip("How long of a break the campfire takes between eating logs, if multiple are placed on it.")] + public float LogBurningCooldown; [Header("Runtime values")] public float Fuel; @@ -23,12 +25,21 @@ public class Campfire : MonoBehaviour { private float NextRandomVariance = 0; private float LastRandomVarianceChange = 0; + private List LogQueue = new List(); + private float LastLogBurned = 0; + private void Awake() { EnoughFuelColor = DynamicLight.color; FullRange = DynamicLight.range; } private void Update() { + if (LogQueue.Count > 0 && Time.time - LastLogBurned > LogBurningCooldown) { + LastLogBurned = Time.time; + BurnLog(LogQueue[0]); + LogQueue.RemoveAt(0); + } + if (Time.time - LastRandomVarianceChange > RandomVarianceDuration) { NextRandomVariance = (Random.value - 0.5f) * 2f * RandomVarianceMagnitude; LastRandomVarianceChange = Time.time; @@ -44,13 +55,29 @@ public class Campfire : MonoBehaviour { } } + private void BurnLog(Burnable burnable) { + Fuel += burnable.Quality.FuelValue; + if (Fuel < GoodFuelAmount) { + Fuel += 2; + } + BurnEffectSource.PlayOneShot(burnable.Quality.BurningSound); + Destroy(burnable.gameObject); + } + private void OnCollisionEnter(Collision c) { if (c.collider.attachedRigidbody != null && c.collider.attachedRigidbody) { Burnable Burnable = c.collider.attachedRigidbody.GetComponent(); if (Burnable != null) { - Fuel += Burnable.Quality.FuelValue; - BurnEffectSource.PlayOneShot(Burnable.Quality.BurningSound); - Destroy(c.collider.attachedRigidbody.gameObject); + LogQueue.Add(Burnable); + } + } + } + + private void OnCollisionExit(Collision c) { + if (c.collider.attachedRigidbody != null && c.collider.attachedRigidbody) { + Burnable Burnable = c.collider.attachedRigidbody.GetComponent(); + if (Burnable != null) { + LogQueue.Remove(Burnable); } } } diff --git a/ProjectSettings/DynamicsManager.asset b/ProjectSettings/DynamicsManager.asset index cdc1f3e..561357e 100644 --- a/ProjectSettings/DynamicsManager.asset +++ b/ProjectSettings/DynamicsManager.asset @@ -3,7 +3,7 @@ --- !u!55 &1 PhysicsManager: m_ObjectHideFlags: 0 - serializedVersion: 11 + serializedVersion: 13 m_Gravity: {x: 0, y: -9.81, z: 0} m_DefaultMaterial: {fileID: 0} m_BounceThreshold: 2 @@ -17,11 +17,12 @@ PhysicsManager: m_ClothInterCollisionDistance: 0 m_ClothInterCollisionStiffness: 0 m_ContactsGeneration: 1 - m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + m_LayerCollisionMatrix: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff m_AutoSimulation: 1 m_AutoSyncTransforms: 0 m_ReuseCollisionCallbacks: 1 m_ClothInterCollisionSettingsToggle: 0 + m_ClothGravity: {x: 0, y: -9.81, z: 0} m_ContactPairsMode: 0 m_BroadphaseType: 0 m_WorldBounds: @@ -31,4 +32,5 @@ PhysicsManager: m_FrictionType: 0 m_EnableEnhancedDeterminism: 0 m_EnableUnifiedHeightmaps: 1 - m_DefaultMaxAngluarSpeed: 7 + m_SolverType: 0 + m_DefaultMaxAngularSpeed: 7 diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index dd585ac..75642c6 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -18,7 +18,7 @@ TagManager: - Post-Processing - Campfire - Item - - + - Player - - -