Files
2025-05-13 03:19:28 +03:00

63 lines
1.3 KiB
C#

using UnityEngine;
using System.Collections;
using System;
public class IgnitionButtonController : IIgnitionStateController{
private bool _pressed;
private float _starterTime = 7.0f;
private float _startBeginTime;
public virtual void SetButtonState(IgnitionSystem sys, int button, bool press){
_pressed = press;
bool brakePressed = sys.Car.GetPedalState (CarPedal.Brake) > 0.5f;
if (press) {
switch(sys.State){
case IgnitionState.Start:
sys.State = IgnitionState.Lock;
break;
case IgnitionState.Lock:
if(brakePressed){
SetStartState(sys);
}else{
sys.State = IgnitionState.Acc;
}
break;
case IgnitionState.Acc:
if(brakePressed){
SetStartState(sys);
}else{
sys.State = IgnitionState.On;
}
break;
case IgnitionState.On:
if(brakePressed){
SetStartState(sys);
}else{
sys.State = IgnitionState.Lock;
}
break;
}
}
}
private void SetStartState(IgnitionSystem sys){
_startBeginTime = Time.time;
sys.State = IgnitionState.Start;
}
public void Update(IgnitionSystem sys){
if (sys.State == IgnitionState.Start) {
if(sys.Car.engine.Started){
sys.State = IgnitionState.On;
}else{
if((Time.time - _startBeginTime) >= _starterTime){
sys.State = IgnitionState.On;
}
}
}
}
}