123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- using UnityEngine;
- using UnityEngine.UI;
- using UnityEngine.Serialization;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using Random = UnityEngine.Random;
- public class ManagerLittleGame : MonoBehaviour
- {
- #region 变量
- private Text ScoreTitle;
- private Text ScoreLabel;
- private Text GameStatus;
- private Text RemainTime;
- private Button Ripping;
- private Button Watering;
- private Button Fertilizing;
- private Button GameBegin;
- private GameObject OperatePanel;
- private float GameTimer;
- private float PenaltyTimer;
- private float OpFrequencyTimer;
- private float _GameTime;
- private float _PenaltyTime;
- private float _OpFrequencyTime;
- private bool GameOnA;
- private List<Flower> IdleFlowerList;
- private List<Flower> OperateFlowerList;
- public static ManagerLittleGame Ins;
-
- #endregion
- private void Awake()
- {
- ScoreTitle = ManagerResource.Ins.ScoreTitle;
- ScoreLabel = ManagerResource.Ins.ScoreLabel;
- GameStatus = ManagerResource.Ins.GameStatusLabel;
- RemainTime = ManagerResource.Ins.RemainTimeLabel;
- Ripping = ManagerResource.Ins.RippingBtn;
- Watering = ManagerResource.Ins.WateringBtn;
- Fertilizing = ManagerResource.Ins.FertilizingBtn;
- GameBegin = ManagerResource.Ins.GameBeginBtn;
- OperatePanel = ManagerResource.Ins.OperatePanel;
- Ripping.onClick.AddListener(OnRipping);
- Watering.onClick.AddListener(OnWatering);
- Fertilizing.onClick.AddListener(OnFertilizing);
- GameBegin.onClick.AddListener(OnGameBeginA);
- Ins = this;
- _GameTime = 15;
- _PenaltyTime = 1;
- _OpFrequencyTime = 1;
- OpFrequencyTimer = _OpFrequencyTime;
- IdleFlowerList = new List<Flower>();
- OperateFlowerList = new List<Flower>();
- }
- private void FixedUpdate()
- {
- #region 小游戏逻辑A
- if (!GameOnA)
- {
- return;
- }
- GameTimer -= Time.fixedDeltaTime; //小游戏计时
- RemainTime.text = GameTimer.ToString("0.0");
- if (GameTimer <= 0)
- {
- OnGameOverA();
- return; //小游戏结束
- }
- if (PenaltyTimer > 0) //冻结时间计时
- {
- PenaltyTimer -= Time.fixedDeltaTime;
- }
- OpFrequencyTimer -= Time.fixedDeltaTime; //生成操作计时
- if (OpFrequencyTimer <= 0)
- {
- if (IdleFlowerList.Count > 0)
- {
- OpFrequencyTimer = _OpFrequencyTime;
- Flower flower = IdleFlowerList[Random.Range(0, IdleFlowerList.Count)];
- flower.NeedOperate(OperateFlowerList.Count);
- IdleFlowerList.Remove(flower);
- OperateFlowerList.Add(flower);
- }
- }
- #endregion
- }
- #region 小游戏函数A
- public void Scoring(int score)
- {
- ScoreLabel.text = (int.Parse(ScoreLabel.text) + score).ToString();
- }
- private void OnRipping()
- {
- if (PenaltyTimer > 0) //冻结操作
- {
- return;
- }
- if (OperateFlowerList.Count > 0)
- {
- if (OperateFlowerList[0].Operate(OperateType.Ripping)) //操作正确
- {
- IdleFlowerList.Add(OperateFlowerList[0]);
- OperateFlowerList.Remove(OperateFlowerList[0]);
- UpdateSequence();
- }
- else //操作错误
- {
- PenaltyTimer = _PenaltyTime;
- ManagerHint.Ins.Show("惩罚" + _PenaltyTime + "秒");
- }
- }
- }
- private void OnWatering()
- {
- if (PenaltyTimer > 0) //冻结操作
- {
- return;
- }
- if (OperateFlowerList.Count > 0)
- {
- if (OperateFlowerList[0].Operate(OperateType.Watering)) //操作正确
- {
- IdleFlowerList.Add(OperateFlowerList[0]);
- OperateFlowerList.Remove(OperateFlowerList[0]);
- UpdateSequence();
- }
- else //操作错误
- {
- PenaltyTimer = _PenaltyTime;
- ManagerHint.Ins.Show("惩罚" + _PenaltyTime + "秒");
- }
- }
- }
- private void OnFertilizing()
- {
- if (PenaltyTimer > 0) //冻结操作
- {
- return;
- }
- if (OperateFlowerList.Count > 0)
- {
- if (OperateFlowerList[0].Operate(OperateType.Fertilizing)) //操作正确
- {
- IdleFlowerList.Add(OperateFlowerList[0]);
- OperateFlowerList.Remove(OperateFlowerList[0]);
- UpdateSequence();
- }
- else //操作错误
- {
- PenaltyTimer = _PenaltyTime;
- ManagerHint.Ins.Show("惩罚" + _PenaltyTime + "秒");
- }
- }
- }
- private void OnGameOverA()
- {
- GameOnA = false;
- OperatePanel.SetActive(false);
- ScoreTitle.gameObject.SetActive(false);
- GameBegin.gameObject.SetActive(true);
- GameStatus.gameObject.SetActive(false);
- for (int i = 0; i < IdleFlowerList.Count; i++)
- {
- IdleFlowerList[i].OnGameOverA();
- }
- for (int i = 0; i < OperateFlowerList.Count; i++)
- {
- OperateFlowerList[i].OnGameOverA();
- }
- IdleFlowerList = new List<Flower>();
- OperateFlowerList = new List<Flower>();
- }
- private void OnGameBeginA()
- {
- GameOnA = true;
- GameTimer = _GameTime;
- ScoreLabel.text = "0";
- OperatePanel.SetActive(true);
- ScoreTitle.gameObject.SetActive(true);
- GameBegin.gameObject.SetActive(false);
- GameStatus.gameObject.SetActive(true);
- IdleFlowerList = new List<Flower>(ManagerResource.Ins.FlowerList);
- for (int i = 0; i < IdleFlowerList.Count; i++)
- {
- IdleFlowerList[i].OnGameBeginA();
- }
- }
- private void UpdateSequence()
- {
- if (OperateFlowerList.Count >= 2)
- {
- OperateFlowerList[0].MarkAsFirst();
- OperateFlowerList[1].MarkAsSecond();
- }
- else if (OperateFlowerList.Count >= 1)
- {
- OperateFlowerList[0].MarkAsFirst();
- }
- }
- #endregion
- }
|