]> git.cameronkatri.com Git - gmtk-gamejam.git/commitdiff
Add game-end results overlay
authorCarson Katri <carson.katri@gmail.com>
Sun, 13 Jun 2021 03:28:54 +0000 (23:28 -0400)
committerCarson Katri <carson.katri@gmail.com>
Sun, 13 Jun 2021 03:28:54 +0000 (23:28 -0400)
Assets/Scenes/Main.unity
Assets/Scripts/Controllers/GameController.cs

index 95f1d81f733863b745c8e2bed9c71a0f42bb2298..5972c781c7ac9970c6f2501db0b8666c2d671f57 100644 (file)
@@ -544,6 +544,43 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 447684161}
   m_CullTransparentMesh: 1
+--- !u!1 &453079590
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 453079591}
+  m_Layer: 5
+  m_Name: Result
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &453079591
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 453079590}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 1894938101}
+  - {fileID: 1890797813}
+  m_Father: {fileID: 897316900}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0.000061035156, y: 0.000030517578}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &519420028
 GameObject:
   m_ObjectHideFlags: 0
@@ -984,6 +1021,7 @@ RectTransform:
   m_Children:
   - {fileID: 551981878}
   - {fileID: 1302386145}
+  - {fileID: 453079591}
   m_Father: {fileID: 198575129}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -1288,12 +1326,20 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   timeLimit: 60
   ball: {fileID: 707826158}
+  PlayerSpawnPoints:
+    ball: {fileID: 0}
+    character: {fileID: 0}
+  EnemySpawnPoints:
+    ball: {fileID: 0}
+    character: {fileID: 0}
   PlayerHoop: {fileID: 614591307}
   EnemyHoop: {fileID: 1354192742}
   dribbleSound: {fileID: 1174357921}
   playerScoreText: {fileID: 140689492}
   enemyScoreText: {fileID: 447684163}
   timerText: {fileID: 1402491148}
+  resultOverlay: {fileID: 453079590}
+  resultText: {fileID: 1890797814}
 --- !u!82 &1174357921
 AudioSource:
   m_ObjectHideFlags: 0
@@ -1911,6 +1957,160 @@ RectTransform:
   m_AnchoredPosition: {x: 0, y: 0}
   m_SizeDelta: {x: 150, y: 0}
   m_Pivot: {x: 0, y: 0.5}
+--- !u!1 &1890797812
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1890797813}
+  - component: {fileID: 1890797815}
+  - component: {fileID: 1890797814}
+  m_Layer: 5
+  m_Name: Content
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1890797813
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1890797812}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 453079591}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 200, y: 50}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1890797814
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1890797812}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: b6747d7b13b2c4b9cb022acf49f3277b, type: 3}
+    m_FontSize: 14
+    m_FontStyle: 1
+    m_BestFit: 0
+    m_MinSize: 10
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: GAME_RESULT
+--- !u!222 &1890797815
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1890797812}
+  m_CullTransparentMesh: 1
+--- !u!1 &1894938100
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1894938101}
+  - component: {fileID: 1894938103}
+  - component: {fileID: 1894938102}
+  m_Layer: 5
+  m_Name: Darken
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1894938101
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1894938100}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 453079591}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0, y: 0.5}
+--- !u!114 &1894938102
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1894938100}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0, g: 0, b: 0, a: 0.7490196}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 7482667652216324306, guid: 48e93eef0688c4a259cb0eddcd8661f7, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1894938103
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1894938100}
+  m_CullTransparentMesh: 1
 --- !u!1 &2055631263
 GameObject:
   m_ObjectHideFlags: 0
index 9fbe6742b9a8d1f950f4a890d4e57e4fed0c22cd..6ebcabea18a99a0dc5c24ea52a0afa361da7b9e7 100644 (file)
@@ -23,6 +23,10 @@ namespace Controllers
     /// </summary>
     [SerializeField] public Ball ball;
 
+    [Header("Spawn Points")]
+    [SerializeField] private SpawnPoints PlayerSpawnPoints;
+    [SerializeField] private SpawnPoints EnemySpawnPoints;
+
     [Header("Hoops")]
     [SerializeField] public Hoop PlayerHoop;
     [SerializeField] public Hoop EnemyHoop;
@@ -34,6 +38,9 @@ namespace Controllers
     [SerializeField] private Text playerScoreText;
     [SerializeField] private Text enemyScoreText;
     [SerializeField] private Text timerText;
+    
+    [SerializeField] private GameObject resultOverlay;
+    [SerializeField] private Text resultText;
 
     private void Awake()
     {
@@ -60,10 +67,18 @@ namespace Controllers
       playerScoreText.text = $"{player.score}";
       enemyScoreText.text = $"{enemy.score}";
 
-      var remaining = TimeSpan.FromSeconds(timeLimit - (Time.time - startTime));
+      var remainingRaw = timeLimit - (Time.time - startTime);
+      var remaining = TimeSpan.FromSeconds(Mathf.Clamp(remainingRaw, 0, float.MaxValue));
       timerText.text = $"{remaining.Minutes:00}:{remaining.Seconds:00}";
+
+      if (remainingRaw <= 0)
+      {
+        resultOverlay.SetActive(true);
+        var outcome = player.score == enemy.score ? "TIE GAME" : player.score < enemy.score ? "AWAY TEAM WINS" : "HOME TEAM WINS";
+        resultText.text = $"{outcome}\n{player.score}-{enemy.score}";
+      }
     }
-    
+
     public struct Player
     {
       /// <summary>
@@ -167,6 +182,13 @@ namespace Controllers
       EnemyDribble,
       EnemyShoot,
     }
+
+    [Serializable]
+    private struct SpawnPoints
+    {
+      [SerializeField] internal Transform ball;
+      [SerializeField] internal Transform character;
+    }
   }
 
   internal static class GameControllerStateExtensions