NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Pause/Impl/ParticalPauser.cs

80 lines
1.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Gameplay.Common;
using Gameplay.Unit;
namespace Gameplay.Pause
{
using UnityEngine;
using Character;
using Gameplay.Skill;
public class ParticalPauser : IPauser
{
public readonly ParticleSystem rawPartical;
private float _logicScale = 1f;
public float logicScale
{
get
{
return _logicScale;
}
}
public bool isScaleChanged;
public GameUnit owner;
public ParticalPauser(ParticleSystem rawPartical)
{
isScaleChanged = false;
this.rawPartical = rawPartical;
}
public void LogicUpdate(float dt)
{
if (IsNeedRemove())
{
return;
}
var slogicScale = 1;
if (SkillManager.instance.needSkillPaused && SkillManager.instance.inSkillingUnit != owner)
{
slogicScale = 0;
}
if (Math.Abs(_logicScale - slogicScale) > 0.1f)
{
_logicScale = slogicScale;
isScaleChanged = true;
}
if (isScaleChanged || PauseManager.instance.isSpeedChanged)
{
isScaleChanged = false;
var main = rawPartical.main;
main.simulationSpeed = PauseManager.instance.globalScale * logicScale;
}
}
public bool isEffect
{
get;
set;
}
public bool IsNeedRemove()
{
return rawPartical == null || rawPartical.isStopped;
}
}
}