using o0.Num; using o0.Wave.RealTime.Old; using Org.BouncyCastle.Security; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Net.WebSockets; using TMPro; using UnityEngine; using UnityEngine.UI; public enum EndGameReason { UserExit, GameOver, } public class GamingManager : MonoBehaviour { private SmartBowManager bowManager; private AudioManager audioManager; [SerializeField] private AudioSource BowFireAudio; [SerializeField] private AudioSource LooseLifeAudio; [SerializeField] private GameObject FruitPrefab; [SerializeField] private GameObject ArrowPrefab; [SerializeField] private GameObject BulletPrefab; [SerializeField] private GameObject ComboTextPrefab; [SerializeField] private GameObject CriticalTextPrefab; [SerializeField] private GameObject AddLifeTextPrefab; [SerializeField] private GameObject GamingUIContainer; [SerializeField] private Image AimingCross_img; [SerializeField] private GameObject Resume_btn; [SerializeField] private GameObject Pause_btn; [SerializeField] private GameObject Exit_btn; [SerializeField] private Image Life_0_img; [SerializeField] private Image Life_1_img; [SerializeField] private Image Life_2_img; [SerializeField] private TextMeshProUGUI ScoreText; [SerializeField] private CannonController Cannon; [SerializeField] private GameObject FullscreenClearBubble; [SerializeField] private int StartScores; private int uploadScore;//需要上传的分数 [SerializeField] private float AimingCrossPosMultiplier = 1f; [SerializeField] private Camera Cam; //子弹部分 [SerializeField] private BulletManager bulletManager; //是否是子弹初始的状态, public bool isBulletStatus { get; set; } = false; public const float ArrowSpeedMultiplier = 8.0f; public const float GravityMultiplier = 2.5f; private Quaternion CurrentRotation; private int Scores; private int Combos; private int Life; private bool bGameStarted; private bool bGamePaused; // FrozenBanana related variables private bool bFreeze; private bool bFreezing; private float FreezeTimeEclipsed; // ComboPomegarante related variables private bool bEnterComboTime; private bool bComboTime; private float ComboTimeEclipsed; FruitBehavior ActiveComboPomegarante; List FruitVelocityCache_Linear = new List(); List FruitVelocityCache_Angular = new List(); private float MakeNewWaveCountdown; private List FruitsInField = new List(); private List FruitsPendingSpawn = new List(); private float TimeSinceLastFruitSpawn = 0f; public delegate void GameEndDelegate(EndGameReason reason, int scores); public event GameEndDelegate OnGameEnd; private int FruitWaves = 0; private Vector2 ScreenMidPoint; private float FireCooldownTime_Current = 0f; private const float FireCooldownTime = 0.5f; UserGameAnalyse1 userGameAnalyse1; //射箭状态下 private bool bAddCountScore = false; private void Awake() { audioManager = gameObject.GetComponent(); Debug.Assert(audioManager); bowManager = gameObject.GetComponent(); Debug.Assert(bowManager); Debug.Assert(Cannon); ScreenMidPoint = new Vector2(Screen.width / 2, Screen.height / 2); //枪模式连接的情况下需要判断子弹 isBulletStatus = BluetoothAim.ins && BluetoothAim.ins.isMainConnectToGun(); if (!isBulletStatus) { bulletManager.gameObject.SetActive(false); } } // Start is called before the first frame update void Start() { // byte[] dataToDecrypt = { 0x5A, 0xD4, 0x80, 0xA2, 0xB3, 0x03, 0x5D }; // byte[] dataToDecrypt = { 0x5A, 0x76, 0xD1, 0x02, 0xEB, 0x8E, 0x5D }; // Decryptor.GetResponseStr(dataToDecrypt); Resume_btn.GetComponentInChildren