TO SQUASH: Shark notifications.

This commit is contained in:
2026-08-27 22:05:44 -04:00
parent ba1a7ba281
commit dbed42424f
7 changed files with 85 additions and 60 deletions
+2
View File
@@ -308,6 +308,8 @@ MonoBehaviour:
hitSound: {fileID: 8300000, guid: 0535a1781b9d2e8018f56aa45b71932a, type: 3}
player: {fileID: 0}
gameBoardSpriteRenderer: {fileID: 0}
notificationPrefab: {fileID: 6394082776706812922, guid: 5cb297a990ab535aa8ef2b8054c9db1b, type: 3}
canvas: {fileID: 0}
normalMaxSpeed: 2.5
turnRateDegreesPerSecond: 180
speedChangeRate: 4
+1
View File
@@ -462,6 +462,7 @@ MonoBehaviour:
sharkPrefab: {fileID: 1185323843861964289, guid: 4bb45ba16a3bbd351a45d39c3f0b62f9, type: 3}
gameBoardSpriteRenderer: {fileID: 297740151}
player: {fileID: 1002905792}
canvas: {fileID: 2071745861}
--- !u!1 &83016091
GameObject:
m_ObjectHideFlags: 0
+62
View File
@@ -0,0 +1,62 @@
using UnityEngine;
using System.Collections;
public class NotifierBase : MonoBehaviour
{
public Canvas canvas;
public GameObject notificationPrefab;
protected GameObject notificationInstance;
protected void ShowNotification(string text)
{
if (notificationPrefab == null || canvas == null)
{
return;
}
notificationInstance = Instantiate(notificationPrefab);
notificationInstance.transform.SetParent(canvas.transform, false);
notificationInstance.transform.localScale = Vector3.one;
var notificationRect = notificationInstance.GetComponent<RectTransform>();
var canvasRect = canvas.GetComponent<RectTransform>();
var label = notificationInstance.GetComponent<UnityEngine.UI.Text>();
if (label != null)
{
label.text = text;
}
if (notificationRect != null && canvasRect != null)
{
Camera worldCamera = canvas.worldCamera != null ? canvas.worldCamera : Camera.main;
Camera uiCamera = canvas.renderMode == RenderMode.ScreenSpaceOverlay ? null : worldCamera;
if (worldCamera != null)
{
Vector2 screenPoint = worldCamera.WorldToScreenPoint(transform.position);
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRect, screenPoint, uiCamera, out Vector2 localPoint))
{
notificationRect.anchoredPosition = localPoint;
}
}
}
StartCoroutine(HideNotification());
}
protected IEnumerator HideNotification()
{
yield return new WaitForSeconds(1.5f);
if (notificationInstance != null)
{
Destroy(notificationInstance);
}
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: c976d582b8415504b9c7e375271452a2
+13 -3
View File
@@ -1,7 +1,7 @@
using UnityEngine;
using System.Collections;
public class Shark : MonoBehaviour
public class Shark : NotifierBase
{
public AudioClip spawnSound;
@@ -37,7 +37,7 @@ public class Shark : MonoBehaviour
private float angryProbability = 0.1f;
private static int sharkKillPoints = 100;
private static int sharkKillPoints = 1000;
private bool spawnFinished = false;
@@ -167,7 +167,17 @@ public class Shark : MonoBehaviour
}
audioSource.PlayOneShot(deathSound);
player.score += sharkKillPoints;
player.score += sharkKillPoints + (isAngry ? 500 : 0);
if (isAngry)
{
ShowNotification("1500");
}
else
{
ShowNotification("1000");
}
StartCoroutine(DestroyShark());
}
+4 -1
View File
@@ -8,6 +8,8 @@ public class SharkSpawner : Spawner
public Player player;
public Canvas canvas;
private Bounds gameBoardBounds;
private float spawnTimer = 0f;
@@ -30,7 +32,7 @@ public class SharkSpawner : Spawner
{
spawnTimer += Time.fixedDeltaTime;
if (spawnTimer >= 1f && isActive && isSpawning && player.level >= 10)
if (spawnTimer >= 1f && isActive && isSpawning && player.level >= 1)
{
spawnTimer = 0f;
if (Random.value < spawnProbability)
@@ -39,6 +41,7 @@ public class SharkSpawner : Spawner
Shark sharkScript = shark.GetComponent<Shark>();
sharkScript.gameBoardSpriteRenderer = gameBoardSpriteRenderer;
sharkScript.player = player;
sharkScript.canvas = canvas;
isActive = false;
}
}
+1 -56
View File
@@ -1,7 +1,7 @@
using UnityEngine;
using System.Collections;
public abstract class YummyBase : MonoBehaviour
public abstract class YummyBase : NotifierBase
{
public AudioClip bounceSound;
@@ -9,12 +9,6 @@ public abstract class YummyBase : MonoBehaviour
public AudioClip missedSound;
public Canvas canvas;
public GameObject notificationPrefab;
protected GameObject notificationInstance;
private AudioSource audioSource;
private Animator animator;
@@ -119,53 +113,4 @@ public abstract class YummyBase : MonoBehaviour
}
protected abstract void ObtainedCallback(Player player);
protected void ShowNotification(string text)
{
if (notificationPrefab == null || canvas == null)
{
return;
}
notificationInstance = Instantiate(notificationPrefab);
notificationInstance.transform.SetParent(canvas.transform, false);
notificationInstance.transform.localScale = Vector3.one;
var notificationRect = notificationInstance.GetComponent<RectTransform>();
var canvasRect = canvas.GetComponent<RectTransform>();
var label = notificationInstance.GetComponent<UnityEngine.UI.Text>();
if (label != null)
{
label.text = text;
}
if (notificationRect != null && canvasRect != null)
{
Camera worldCamera = canvas.worldCamera != null ? canvas.worldCamera : Camera.main;
Camera uiCamera = canvas.renderMode == RenderMode.ScreenSpaceOverlay ? null : worldCamera;
if (worldCamera != null)
{
Vector2 screenPoint = worldCamera.WorldToScreenPoint(transform.position);
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRect, screenPoint, uiCamera, out Vector2 localPoint))
{
notificationRect.anchoredPosition = localPoint;
}
}
}
StartCoroutine(HideNotification());
}
protected IEnumerator HideNotification()
{
yield return new WaitForSeconds(1.5f);
if (notificationInstance != null)
{
Destroy(notificationInstance);
}
}
}