LogicBattleFieldStateDialogBS.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using UnityEngine;
  2. using System.Collections;
  3. public class LogicBattleFieldStateDialogBS : LogicBattleFieldState
  4. {
  5. public static LogicBattleFieldStateDialogBS Creator(LogicBattleField field)
  6. {
  7. return new LogicBattleFieldStateDialogBS(field);
  8. }
  9. public LogicBattleFieldStateDialogBS(LogicBattleField field)
  10. :base(field,LogicBattleFieldStateType.DialogBeforeSearch)
  11. {
  12. }
  13. int curDlgId = 0;
  14. bool dlgFinished = false;
  15. public override void OnEnter()
  16. {
  17. curDlgId = mField.BattleInfo.DlgId;
  18. if(curDlgId > 0)
  19. {
  20. dlgFinished = false;
  21. EventMgr.AddEventListener<int>(ECoreEventType.EID_Dialogue_Finished, onDialogueFinished);
  22. GameMgr.Instance.PlayDialog(curDlgId);
  23. }
  24. else
  25. {
  26. dlgFinished = true;
  27. }
  28. }
  29. public override void OnLeave()
  30. {
  31. if(curDlgId > 0)
  32. {
  33. EventMgr.RemoveEventListener<int>(ECoreEventType.EID_Dialogue_Finished, onDialogueFinished);
  34. }
  35. }
  36. public override void Update(float deltaTime)
  37. {
  38. if(dlgFinished)
  39. {
  40. ChangeState(LogicBattleFieldStateType.Search);
  41. }
  42. else
  43. {
  44. mField.Battle.FighterMgr.FixedUpdate(deltaTime);
  45. }
  46. }
  47. public override void OnDataChanged()
  48. {
  49. }
  50. private void onDialogueFinished(CoreEvent<int> ce)
  51. {
  52. int dlgId = ce.Data;
  53. if(dlgId == curDlgId)
  54. {
  55. dlgFinished = true;
  56. }
  57. }
  58. }