石头功能修改
This commit is contained in:
@@ -14,16 +14,17 @@ namespace AibisDream
|
||||
[SerializeField] private float airMinRatio;
|
||||
[SerializeField] private float baseAirMax;
|
||||
[SerializeField] public int maxLevel;
|
||||
[SerializeField] public float invalidTime;
|
||||
|
||||
[Header("系统数据")]
|
||||
[SerializeField]
|
||||
private EngineData engineData;
|
||||
private bool IsValid => engineData.isValid.Value;
|
||||
|
||||
[Header("系统数据")] [SerializeField] private EngineData engineData;
|
||||
|
||||
public event Action<EngineData> UpdateDashboard;
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
engineData = new EngineData();
|
||||
engineData = new EngineData(invalidTime);
|
||||
}
|
||||
|
||||
private void Update()
|
||||
@@ -48,7 +49,11 @@ namespace AibisDream
|
||||
/// </summary>
|
||||
public void AddOil()
|
||||
{
|
||||
engineData.OilChange(oilUpRatio);
|
||||
if (IsValid)
|
||||
{
|
||||
engineData.OilChange(oilUpRatio);
|
||||
}
|
||||
// 失效期无法加油门
|
||||
}
|
||||
|
||||
public void UpdateAirLevel(int curLevel)
|
||||
@@ -65,9 +70,23 @@ namespace AibisDream
|
||||
public float curAir;
|
||||
public float curAirMin;
|
||||
public float curAirMax;
|
||||
|
||||
public int curAirLevel;
|
||||
|
||||
public AutoFlipBool isValid;
|
||||
public bool inAirRange;
|
||||
|
||||
public EngineData(float flipDelayTime)
|
||||
{
|
||||
isValid = new AutoFlipBool(flipDelayTime, true);
|
||||
curSpeed = 0;
|
||||
curOil = 0;
|
||||
curAir = 0;
|
||||
curAirMin = 0;
|
||||
curAirMax = 0;
|
||||
curAirLevel = 0;
|
||||
inAirRange = false;
|
||||
}
|
||||
|
||||
public void OilChange(float oilChangeRatio)
|
||||
{
|
||||
curOil = CommonUtil.LimitedAdd(curOil, oilChangeRatio * Time.deltaTime, 1f, 0f);
|
||||
@@ -75,7 +94,7 @@ namespace AibisDream
|
||||
|
||||
public void CalcSpeed(float acceleratedSpeed, float resistance)
|
||||
{
|
||||
var addNum = InAirLevel()
|
||||
var addNum = inAirRange && isValid.Value
|
||||
? (curOil * acceleratedSpeed - curSpeed * resistance) * Time.deltaTime
|
||||
: -curSpeed * resistance * Time.deltaTime;
|
||||
|
||||
@@ -84,10 +103,16 @@ namespace AibisDream
|
||||
|
||||
public void CalcAir(float airMaxRatio, float airMinRatio, float baseAirMax)
|
||||
{
|
||||
curAir = curOil;
|
||||
|
||||
curAirMax = curSpeed * (curAirLevel + 1) * airMaxRatio + baseAirMax;
|
||||
curAirMin = curSpeed * (curAirLevel + 1) * airMinRatio;
|
||||
|
||||
curAir = curOil;
|
||||
// 如果离开范围且当前在系统有效期,就进入一段失效期
|
||||
var curInAirRange = curAir <= curAirMax && curAir >= curAirMin;
|
||||
if (inAirRange && !curInAirRange && isValid.Value)
|
||||
{
|
||||
isValid.Value = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateAirLevel(int level, int maxLevel)
|
||||
@@ -103,10 +128,5 @@ namespace AibisDream
|
||||
curAirLevel = 0;
|
||||
}
|
||||
}
|
||||
|
||||
private bool InAirLevel()
|
||||
{
|
||||
return curAir <= curAirMax && curAir >= curAirMin;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user