using FSM; using System.Collections.Generic; using UnityEngine; using ZXKFramework; namespace YiLiao.XinFeiTingZhen { public class XinBaoMoCaYin : FsmState { bool step1; //成功的标志 List success = new() { "11", "13" }; string audioName = "81--心包摩擦音"; Coroutine cor; string PositionValue { get { return GameManager.Instance.senSor.GetSensor().positionValue.ToString(); } } bool step2_kh; public override void OnStateEnter() { base.OnStateEnter(); GameManager.Instance.senSor.SendFunction("#ID:11,13;SONG:81,81;%"); if (fsm.main_gameModel.modeType == ZXKFramework.ModeType.KaoHe) { step2_kh = true; fsm.HideTzq(); fsm.ShowTxtImgQuestion("心脏听诊——心脏杂音——心包摩擦音", 27, 0, 5, () => { fsm.nextState = true; }); } if (fsm.main_gameModel.modeType == ZXKFramework.ModeType.ShiXun) { fsm.PlayBgm(0); fsm.ShowTip(0); fsm.Light("胸骨左缘第3肋间听诊器位置1"); fsm.Light("胸骨左缘第4肋间听诊器位置1"); fsm.ShowArrow("将实物听诊器放置于胸骨左缘第3、4肋间进行听诊。", "胸骨左缘第3肋间听诊器位置1", 0, 999); Countdown(); } } void Countdown() { fsm.HideTzq(); step1 = true; GameManager.Instance.uiManager.ShowUI(); GameManager.Instance.uiManager.GetUI().StartCountdown(() => { fsm.AddScore(0, 0); step1 = false; Confirm(); }); } void Confirm() { GameManager.Instance.uiManager.GetUI().StopCountdown(); GameManager.Instance.uiManager.GetUI().ShowConfirmPanel(() => { Countdown(); }, () => { fsm.nextState = true; }); } void Success() { step1 = false; fsm.AddScore(0, 2); GameManager.Instance.uiManager.GetUI().StopCountdown(); cor = Game.Instance.IEnumeratorManager.Run(1f, () => { GameManager.Instance.uiManager.GetUI().ShowSuccessPanel(() => { Game.Instance.sound.StopBGM(); fsm.nextState = true; }); }); } void False() { fsm.AddScore(0, 0); step1 = false; GameManager.Instance.uiManager.GetUI().StopCountdown(); cor = Game.Instance.IEnumeratorManager.Run(1f, () => { Confirm(); }); } void Audio() { GameManager.Instance.uiManager.ShowUI(); GameManager.Instance.uiManager.GetUI().LoadAudioClip(audioName); } public override void OnStateStay() { base.OnStateStay(); if (Input.GetKeyDown(KeyCode.L) && step1) { fsm.ShowTzq(success[0]); fsm.HideArrow(); fsm.Unlight("胸骨左缘第3肋间听诊器位置1"); fsm.Unlight("胸骨左缘第4肋间听诊器位置1"); Audio(); Success(); } if (step1) { fsm.ShowTzq(PositionValue); if (success.Contains(PositionValue)) { fsm.HideArrow(); fsm.Unlight("胸骨左缘第3肋间听诊器位置1"); fsm.Unlight("胸骨左缘第4肋间听诊器位置1"); Audio(); Success(); } else if (PositionValue != "0" && !success.Contains(PositionValue)) { False(); } } if (step2_kh) { fsm.ShowTzq(PositionValue); } } public override void OnStateExit() { base.OnStateExit(); step2_kh = false; fsm.HideTzq(); Game.Instance.IEnumeratorManager.Stop(cor); GameManager.Instance.uiManager.CloseUI(); fsm.nextState = false; } } }