adjustments on saving duration and trigger action belt.
This commit is contained in:
parent
8419962160
commit
2e953f858a
@ -234,6 +234,7 @@ MonoBehaviour:
|
|||||||
- {fileID: 11400000, guid: 7d96731b441634a59ac45755cd094fff, type: 2}
|
- {fileID: 11400000, guid: 7d96731b441634a59ac45755cd094fff, type: 2}
|
||||||
behaviourTags:
|
behaviourTags:
|
||||||
- {fileID: 11400000, guid: ff27007b070ec4488a70def46d82e505, type: 2}
|
- {fileID: 11400000, guid: ff27007b070ec4488a70def46d82e505, type: 2}
|
||||||
|
minTimeToTrigger: 0.5
|
||||||
callables:
|
callables:
|
||||||
- {fileID: 2827466454217994421}
|
- {fileID: 2827466454217994421}
|
||||||
--- !u!114 &2827466454217994421
|
--- !u!114 &2827466454217994421
|
||||||
|
|||||||
@ -15,4 +15,4 @@ MonoBehaviour:
|
|||||||
mode: 0
|
mode: 0
|
||||||
direction: 1
|
direction: 1
|
||||||
soundEffect: {fileID: 0}
|
soundEffect: {fileID: 0}
|
||||||
animationSpeed: 2
|
animationSpeed: 1
|
||||||
|
|||||||
@ -12,7 +12,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 6f2337b04d5e44dba892ac6b72ae7e44, type: 3}
|
m_Script: {fileID: 11500000, guid: 6f2337b04d5e44dba892ac6b72ae7e44, type: 3}
|
||||||
m_Name: action-belt.window.hide
|
m_Name: action-belt.window.hide
|
||||||
m_EditorClassIdentifier: Intrepid General Utilities::Intrepid.Window.Data.WindowAnimationData
|
m_EditorClassIdentifier: Intrepid General Utilities::Intrepid.Window.Data.WindowAnimationData
|
||||||
mode: 3
|
mode: 2
|
||||||
direction: 1
|
direction: 1
|
||||||
soundEffect: {fileID: 0}
|
soundEffect: {fileID: 0}
|
||||||
animationSpeed: 3
|
animationSpeed: 4
|
||||||
|
|||||||
@ -12,7 +12,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 6f2337b04d5e44dba892ac6b72ae7e44, type: 3}
|
m_Script: {fileID: 11500000, guid: 6f2337b04d5e44dba892ac6b72ae7e44, type: 3}
|
||||||
m_Name: action-belt.window.show
|
m_Name: action-belt.window.show
|
||||||
m_EditorClassIdentifier: Intrepid General Utilities::Intrepid.Window.Data.WindowAnimationData
|
m_EditorClassIdentifier: Intrepid General Utilities::Intrepid.Window.Data.WindowAnimationData
|
||||||
mode: 3
|
mode: 2
|
||||||
direction: 0
|
direction: 0
|
||||||
soundEffect: {fileID: 0}
|
soundEffect: {fileID: 0}
|
||||||
animationSpeed: 3
|
animationSpeed: 4
|
||||||
|
|||||||
@ -15,4 +15,4 @@ MonoBehaviour:
|
|||||||
mode: 0
|
mode: 0
|
||||||
direction: 0
|
direction: 0
|
||||||
soundEffect: {fileID: 0}
|
soundEffect: {fileID: 0}
|
||||||
animationSpeed: 2
|
animationSpeed: 1
|
||||||
|
|||||||
@ -15,4 +15,4 @@ MonoBehaviour:
|
|||||||
mode: 0
|
mode: 0
|
||||||
direction: 3
|
direction: 3
|
||||||
soundEffect: {fileID: 0}
|
soundEffect: {fileID: 0}
|
||||||
animationSpeed: 2
|
animationSpeed: 1
|
||||||
|
|||||||
@ -15,4 +15,4 @@ MonoBehaviour:
|
|||||||
mode: 0
|
mode: 0
|
||||||
direction: 2
|
direction: 2
|
||||||
soundEffect: {fileID: 0}
|
soundEffect: {fileID: 0}
|
||||||
animationSpeed: 2
|
animationSpeed: 1
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -1,4 +1,3 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Intrepid.Core.Tags;
|
using Intrepid.Core.Tags;
|
||||||
using Intrepid.Utilities;
|
using Intrepid.Utilities;
|
||||||
|
|||||||
@ -4,7 +4,6 @@ using Intrepid.Core.Entities;
|
|||||||
using Intrepid.Core.Tags;
|
using Intrepid.Core.Tags;
|
||||||
using Intrepid.GameManagers;
|
using Intrepid.GameManagers;
|
||||||
using Intrepid.Gameplay.Entities.Player.ActionBelt.Events;
|
using Intrepid.Gameplay.Entities.Player.ActionBelt.Events;
|
||||||
using Intrepid.Gameplay.Entities.Player.Tags;
|
|
||||||
using Intrepid.Utilities;
|
using Intrepid.Utilities;
|
||||||
using Sirenix.OdinInspector;
|
using Sirenix.OdinInspector;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
@ -16,12 +15,42 @@ namespace Intrepid.Gameplay.Entities.Player.ActionBelt
|
|||||||
{
|
{
|
||||||
public class ActionBeltTrigger : EntityTrigger
|
public class ActionBeltTrigger : EntityTrigger
|
||||||
{
|
{
|
||||||
|
[GroupConfigurations, SerializeField, PropertySpace, PropertyOrder(11), Range(0, 3)] private float minTimeToTrigger = 1.5f;
|
||||||
[GroupConfigurations, SerializeField, PropertySpace, PropertyOrder(12)] private List<ActionCallable> callables;
|
[GroupConfigurations, SerializeField, PropertySpace, PropertyOrder(12)] private List<ActionCallable> callables;
|
||||||
|
|
||||||
|
private Timer Timer { get; } = new();
|
||||||
|
private bool Triggered { get; set; } = false;
|
||||||
|
|
||||||
protected override void WhenRaiseEnterEvent(Collider other, EntitySensor entitySensor, List<BehaviourTag> behaviourTags)
|
protected override void WhenRaiseEnterEvent(Collider other, EntitySensor entitySensor, List<BehaviourTag> behaviourTags)
|
||||||
{
|
{
|
||||||
if (entitySensor.EntityTag is PlayerTag)
|
Timer.Start();
|
||||||
|
Triggered = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void WhenRaiseExitEvent(Collider other, EntitySensor entitySensor)
|
||||||
{
|
{
|
||||||
|
if (!Triggered)
|
||||||
|
{
|
||||||
|
Timer.Stop();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
foreach (var callable in callables)
|
||||||
|
{
|
||||||
|
if (callable.IsNull()) continue;
|
||||||
|
Proxy.Instance.EventBus.Raise(new ActionBeltRemoveByIdEvent
|
||||||
|
{
|
||||||
|
ActionId = callable.Id,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if (Timer.IsNotRunning) return;
|
||||||
|
Timer.Update(Timer.ScaledTime);
|
||||||
|
if (Timer.Check(minTimeToTrigger))
|
||||||
|
{
|
||||||
|
Timer.Stop();
|
||||||
foreach (var callable in callables)
|
foreach (var callable in callables)
|
||||||
{
|
{
|
||||||
if (callable.IsNull()) continue;
|
if (callable.IsNull()) continue;
|
||||||
@ -31,20 +60,7 @@ namespace Intrepid.Gameplay.Entities.Player.ActionBelt
|
|||||||
ActionEnvelope = callable.BuildEnvelope(),
|
ActionEnvelope = callable.BuildEnvelope(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
Triggered = true;
|
||||||
}
|
|
||||||
|
|
||||||
protected override void WhenRaiseExitEvent(Collider other, EntitySensor entitySensor)
|
|
||||||
{
|
|
||||||
if (entitySensor.EntityTag is PlayerTag)
|
|
||||||
{
|
|
||||||
foreach (var callable in callables)
|
|
||||||
{
|
|
||||||
Proxy.Instance.EventBus.Raise(new ActionBeltRemoveByIdEvent
|
|
||||||
{
|
|
||||||
ActionId = callable.Id,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -13,9 +13,10 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine.States
|
|||||||
public class SentinelStateSavingStation : SentinelState
|
public class SentinelStateSavingStation : SentinelState
|
||||||
{
|
{
|
||||||
[GroupInjections, SerializeField] private AnimationClip savingStation;
|
[GroupInjections, SerializeField] private AnimationClip savingStation;
|
||||||
[GroupInjections, SerializeField, Range(0, 3)] private float minSavingStationDuration = 1f;
|
[GroupInjections, SerializeField, Range(0, 5)] private float minSavingStationDuration = 3f;
|
||||||
|
|
||||||
private Timer Timer { get; } = new();
|
private Timer Timer { get; } = new();
|
||||||
|
private bool IsSavingGameIOFinished { get; set; }
|
||||||
|
|
||||||
public override SentinelStateType GetStateKey()
|
public override SentinelStateType GetStateKey()
|
||||||
{
|
{
|
||||||
@ -26,12 +27,12 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine.States
|
|||||||
{
|
{
|
||||||
Subscribe<SavingGameDataBeginEvent>(_ =>
|
Subscribe<SavingGameDataBeginEvent>(_ =>
|
||||||
{
|
{
|
||||||
DLogger.LogDebug("Saving started");
|
DLogger.LogDebug("saving game IO process is going to start!");
|
||||||
});
|
});
|
||||||
Subscribe<SavingGameDataEndEvent>(_ =>
|
Subscribe<SavingGameDataEndEvent>(_ =>
|
||||||
{
|
{
|
||||||
DLogger.LogDebug("Saving ended");
|
DLogger.LogDebug("saving game IO process is over!");
|
||||||
Timer.Start();
|
IsSavingGameIOFinished = true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,13 +49,15 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine.States
|
|||||||
Brain.Entity.Position = deploymentPoint;
|
Brain.Entity.Position = deploymentPoint;
|
||||||
Brain.Entity.ChangeOrientation(Vector2.down);
|
Brain.Entity.ChangeOrientation(Vector2.down);
|
||||||
Brain.Entity.ModelAnimation.Play(savingStation);
|
Brain.Entity.ModelAnimation.Play(savingStation);
|
||||||
Timer.Stop();
|
Timer.Start();
|
||||||
|
IsSavingGameIOFinished = false;
|
||||||
GameManager.Instance.GameSlotPersistenceService.SaveCurrentGameData();
|
GameManager.Instance.GameSlotPersistenceService.SaveCurrentGameData();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void RunOnExit()
|
protected override void RunOnExit()
|
||||||
{
|
{
|
||||||
Timer.Stop();
|
Timer.Stop();
|
||||||
|
IsSavingGameIOFinished = false;
|
||||||
Proxy.Instance.EventBus.Raise(new ActionBeltShowEvent());
|
Proxy.Instance.EventBus.Raise(new ActionBeltShowEvent());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,9 +65,11 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine.States
|
|||||||
{
|
{
|
||||||
if (Timer.IsNotRunning) return;
|
if (Timer.IsNotRunning) return;
|
||||||
Timer.Update(Timer.ScaledTime);
|
Timer.Update(Timer.ScaledTime);
|
||||||
if (Timer.Check(minSavingStationDuration))
|
if (Timer.Check(minSavingStationDuration) && IsSavingGameIOFinished)
|
||||||
{
|
{
|
||||||
|
DLogger.LogDebug($"Total saving time: {Timer.ElapsedTime:F2}s");
|
||||||
Timer.Stop();
|
Timer.Stop();
|
||||||
|
IsSavingGameIOFinished = false;
|
||||||
InputService.Instance.ChangeInputSchema(InputSchema.Sentinel);
|
InputService.Instance.ChangeInputSchema(InputSchema.Sentinel);
|
||||||
Brain.ChangeState(SentinelStateType.Idle);
|
Brain.ChangeState(SentinelStateType.Idle);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user