Completely remake mobile gameplayer buttons, and rever graphics renderer changes and just have linux on Vulkan instead

This commit is contained in:
2025-08-24 14:21:35 -07:00
parent d3c898231f
commit 458e60de2f
15 changed files with 2637 additions and 178 deletions

View File

@@ -3,6 +3,7 @@ using System.Numerics;
using TMPro;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UI;
public class GamePlayer : MonoBehaviour
{
@@ -37,14 +38,16 @@ public class GamePlayer : MonoBehaviour
private float nextUpdate;
private float fps;
public SpriteRenderer overlayRender;
private GameObject leftArrow;
private GameObject rightArrow;
private GameObject jumpArrow;
private GameObject restartButton;
private GameObject backButton;
private float lastMoveTime;
public GameObject berryParent;
public GameObject mobileButtons;
public HoldableButton pauseButton;
public HoldableButton restartButton;
public HoldableButton jumpButton;
public HoldableButton rightButton;
public HoldableButton leftButton;
void Start()
{
var customIconData = BazookaManager.Instance.GetCustomBirdIconData();
@@ -149,51 +152,7 @@ public class GamePlayer : MonoBehaviour
Cursor.lockState = CursorLockMode.Locked;
backgroundMusic.volume = BazookaManager.Instance.GetSettingMusicVolume();
screenWidth = Camera.main.orthographicSize * 2f * Camera.main.aspect;
if (Application.isMobilePlatform)
{
leftArrow = new("LeftArrow");
rightArrow = new("RightArrow");
jumpArrow = new("JumpArrow");
restartButton = new("RestartButton");
backButton = new("BackButton");
leftArrow.AddComponent<SpriteRenderer>();
rightArrow.AddComponent<SpriteRenderer>();
jumpArrow.AddComponent<SpriteRenderer>();
restartButton.AddComponent<SpriteRenderer>();
backButton.AddComponent<SpriteRenderer>();
var leftArrowSprite = leftArrow.GetComponent<SpriteRenderer>();
var rightArrowSprite = rightArrow.GetComponent<SpriteRenderer>();
var jumpArrowSprite = jumpArrow.GetComponent<SpriteRenderer>();
var restartButtonSprite = restartButton.GetComponent<SpriteRenderer>();
var backButtonSprite = backButton.GetComponent<SpriteRenderer>();
leftArrowSprite.sprite = Resources.Load<Sprite>("Arrows/Arrow");
leftArrowSprite.sortingOrder = 1000;
rightArrowSprite.sprite = Resources.Load<Sprite>("Arrows/Arrow");
rightArrowSprite.sortingOrder = 1000;
jumpArrowSprite.sprite = Resources.Load<Sprite>("Arrows/Arrow");
jumpArrowSprite.sortingOrder = 1000;
restartButtonSprite.sprite = Resources.Load<Sprite>("Arrows/Restart");
restartButtonSprite.sortingOrder = 1000;
backButtonSprite.sprite = Resources.Load<Sprite>("Arrows/Back");
backButtonSprite.sortingOrder = 1000;
leftArrow.transform.rotation = UnityEngine.Quaternion.Euler(0f, 0f, 90f);
rightArrow.transform.rotation = UnityEngine.Quaternion.Euler(0f, 0f, -90f);
leftArrow.transform.position = new UnityEngine.Vector3(-screenWidth / 2.5f, -3.8f, 0f);
rightArrow.transform.position = new UnityEngine.Vector3(screenWidth / 2.5f, -3.8f, 0f);
jumpArrow.transform.position = new UnityEngine.Vector3(screenWidth / 2.5f, -1f, 0f);
restartButton.transform.position = new UnityEngine.Vector3(screenWidth / 2.3f, Camera.main.orthographicSize - 1.2f, 0f);
backButton.transform.position = new UnityEngine.Vector3(-screenWidth / 2.3f, Camera.main.orthographicSize - 1.2f, 0f);
leftArrow.transform.localScale = new UnityEngine.Vector3(screenWidth / 14f, screenWidth / 14f, 1f);
rightArrow.transform.localScale = new UnityEngine.Vector3(screenWidth / 14f, screenWidth / 14f, 1f);
jumpArrow.transform.localScale = new UnityEngine.Vector3(screenWidth / 14f, screenWidth / 14f, 1f);
restartButton.transform.localScale = new UnityEngine.Vector3(screenWidth / 14f, screenWidth / 14f, 1f);
backButton.transform.localScale = new UnityEngine.Vector3(screenWidth / 14f, screenWidth / 14f, 1f);
}
if (Application.isMobilePlatform) mobileButtons.SetActive(true);
UpdateStats(0, 1);
}
@@ -246,26 +205,11 @@ public class GamePlayer : MonoBehaviour
var pos = touches[i].screenPosition;
UnityEngine.Vector3 clickPosition = Camera.main.ScreenToWorldPoint(new UnityEngine.Vector3(pos.x, pos.y, 0f));
clickPosition.z = 0f;
if (leftArrow.GetComponent<SpriteRenderer>().bounds.Contains(clickPosition))
{
doMoveLeft = true;
}
if (rightArrow.GetComponent<SpriteRenderer>().bounds.Contains(clickPosition))
{
doMoveRight = true;
}
if (jumpArrow.GetComponent<SpriteRenderer>().bounds.Contains(clickPosition))
{
doJump = true;
}
if (restartButton.GetComponent<SpriteRenderer>().bounds.Contains(clickPosition))
{
doRestart = true;
}
if (backButton.GetComponent<SpriteRenderer>().bounds.Contains(clickPosition))
{
doBack = true;
}
if (leftButton.isPressed) doMoveLeft = true;
if (rightButton.isPressed) doMoveRight = true;
if (jumpButton.isPressed) doJump = true;
if (restartButton.isPressed) doRestart = true;
if (pauseButton.isPressed) doBack = true;
}
}
if (doMoveLeft && !doMoveRight)
@@ -335,17 +279,17 @@ public class GamePlayer : MonoBehaviour
if (boostLeft > 0f)
{
boostLeft -= Time.deltaTime;
boostText.text = "Boost expires in " + $"{boostLeft:0.0}" + "s";
boostText.text = "Boost expires in " + string.Format("{0:0.0}", boostLeft) + "s";
}
else if (slownessLeft > 0f)
{
slownessLeft -= Time.deltaTime;
boostText.text = "Slowness expires in " + $"{slownessLeft:0.0}" + "s";
boostText.text = "Slowness expires in " + string.Format("{0:0.0}", slownessLeft) + "s";
}
else if (speedyLeft > 0f)
{
speedyLeft -= Time.deltaTime;
boostText.text = "Speed expires in " + $"{speedyLeft:0.0}" + "s";
boostText.text = "Speed expires in " + string.Format("{0:0.0}", speedyLeft) + "s";
}
else
{
@@ -428,20 +372,6 @@ public class GamePlayer : MonoBehaviour
{
screenWidth = Camera.main.orthographicSize * 2f * Camera.main.aspect;
ClampPosition(bird);
if (Application.isMobilePlatform)
{
leftArrow.transform.position = new UnityEngine.Vector3(-screenWidth / 2.5f, -3.8f, 0f);
rightArrow.transform.position = new UnityEngine.Vector3(screenWidth / 2.5f, -3.8f, 0f);
jumpArrow.transform.position = new UnityEngine.Vector3(screenWidth / 2.5f, -1f, 0f);
restartButton.transform.position = new UnityEngine.Vector3(screenWidth / 2.3f, Camera.main.orthographicSize - 1.2f, 0f);
backButton.transform.position = new UnityEngine.Vector3(-screenWidth / 2.3f, Camera.main.orthographicSize - 1.2f, 0f);
leftArrow.transform.localScale = new UnityEngine.Vector3(screenWidth / 14f, screenWidth / 14f, 1f);
rightArrow.transform.localScale = new UnityEngine.Vector3(screenWidth / 14f, screenWidth / 14f, 1f);
jumpArrow.transform.localScale = new UnityEngine.Vector3(screenWidth / 14f, screenWidth / 14f, 1f);
restartButton.transform.localScale = new UnityEngine.Vector3(screenWidth / 14f, screenWidth / 14f, 1f);
backButton.transform.localScale = new UnityEngine.Vector3(screenWidth / 14f, screenWidth / 14f, 1f);
}
}
GameObject[] normalBerries = GameObject.FindGameObjectsWithTag("NormalBerry");
GameObject[] poisonBerries = GameObject.FindGameObjectsWithTag("PoisonBerry");
@@ -627,10 +557,7 @@ public class GamePlayer : MonoBehaviour
berry.GetComponent<Rigidbody2D>().linearVelocity = UnityEngine.Vector2.zero;
}
}
if (!Application.isMobilePlatform && (Keyboard.current.escapeKey.wasPressedThisFrame || (Gamepad.current != null && (Gamepad.current.startButton.wasPressedThisFrame || Gamepad.current.buttonEast.wasPressedThisFrame))))
{
TogglePause();
}
if ((Application.platform == RuntimePlatform.Android && Keyboard.current.escapeKey.wasPressedThisFrame) || !Application.isMobilePlatform && (Keyboard.current.escapeKey.wasPressedThisFrame || (Gamepad.current != null && (Gamepad.current.startButton.wasPressedThisFrame || Gamepad.current.buttonEast.wasPressedThisFrame)))) TogglePause();
}
void Respawn()
@@ -681,7 +608,7 @@ public class GamePlayer : MonoBehaviour
scoreText.text = $"Score: {Tools.FormatWithCommas(score)} \\u2022 Attempts: {Tools.FormatWithCommas(attempts)}";
highScoreText.text = $"High Score: {Tools.FormatWithCommas(highscore)} \\u2022 Total Attempts: {Tools.FormatWithCommas(totalAttempts)}";
coinText.text = $"Coins: {Tools.FormatWithCommas(totalCoins)}";
if (restartButton != null) restartButton.GetComponent<Renderer>().material.color = score == 0 ? Color.gray : Color.white;
if (Application.isMobilePlatform) restartButton.transform.GetChild(0).GetComponent<TMP_Text>().material.color = score == 0 ? Color.gray : Color.white;
}
void CheckIfGrounded()
@@ -695,10 +622,7 @@ public class GamePlayer : MonoBehaviour
bird.transform.position = new UnityEngine.Vector2(bird.transform.position.x, -4.1359f);
rb.linearVelocity = new UnityEngine.Vector2(rb.linearVelocity.x, 0f);
}
if (jumpArrow != null && jumpArrow.GetComponent<Renderer>() != null)
{
jumpArrow.GetComponent<Renderer>().material.color = isGrounded ? Color.white : Color.red;
}
if (Application.isMobilePlatform) jumpButton.transform.GetChild(0).GetComponent<TMP_Text>().color = isGrounded ? Color.white : Color.red;
}
internal void TogglePause()