Add Alot of stuff, Computer, repairStation, Whole game, Many things!
This commit is contained in:
105
Assets/RepairStation/RepairStationBehaviour.cs
Normal file
105
Assets/RepairStation/RepairStationBehaviour.cs
Normal file
@@ -0,0 +1,105 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
|
||||
public class RepairStationBehaviour : MonoBehaviour, IInteractable, IObjectParentHolder {
|
||||
[SerializeField] private Transform _holderTransform;
|
||||
[SerializeField] private TextMeshProUGUI _countDownText;
|
||||
private Object _object;
|
||||
|
||||
private float _timeToFix;
|
||||
private float _costToFix;
|
||||
|
||||
private double _countDown;
|
||||
|
||||
private bool _fixedCurrentObject = false;
|
||||
|
||||
InteractionBehaviour _interactionBehaviour;
|
||||
|
||||
|
||||
|
||||
public void Interact(InteractionBehaviour interactionBehaviour) {
|
||||
_interactionBehaviour = interactionBehaviour;
|
||||
if (interactionBehaviour.HasObject()) {
|
||||
//Player has an object
|
||||
//Check if its broken
|
||||
Object obj = interactionBehaviour.GetObject();
|
||||
if (obj.IsBroken) {
|
||||
//Object needs fixing
|
||||
|
||||
HUDManager.Instance.ShowRepairHUD();
|
||||
_timeToFix = obj.ObjectSo.timeToFix;
|
||||
_costToFix = obj.ObjectSo.costToFix;
|
||||
|
||||
//Add a random deviation to the time and cost
|
||||
_timeToFix += Random.Range(-10f, 5f);
|
||||
_costToFix += Random.Range(-2f, 15f);
|
||||
|
||||
//Round to 1 decimal
|
||||
_timeToFix = (float) System.Math.Round(_timeToFix, 1);
|
||||
_costToFix = (float) System.Math.Round(_costToFix, 1);
|
||||
|
||||
|
||||
HUDManager.Instance.SetRepairHudItem(this, obj, _timeToFix, _costToFix);
|
||||
}
|
||||
} else if (_fixedCurrentObject && this.HasObject()) {
|
||||
//Player has nothing and the object is fixed
|
||||
//Give the object to the player
|
||||
_object.setObjectParent(_interactionBehaviour);
|
||||
ClearObject();
|
||||
}
|
||||
}
|
||||
|
||||
public void ConfirmRepair() {
|
||||
_interactionBehaviour.GetObject().setObjectParent(this);
|
||||
|
||||
_countDown = _timeToFix;
|
||||
_countDownText.gameObject.SetActive(true);
|
||||
|
||||
//Remove the cost from the player
|
||||
GameController.Instance.Money -= _costToFix;
|
||||
|
||||
HUDManager.Instance.HideCurrentHUD();
|
||||
}
|
||||
|
||||
private void Update() {
|
||||
if (_countDown > 0) {
|
||||
_countDown -= Time.deltaTime;
|
||||
_countDownText.text = _countDown.ToString("F2");
|
||||
if (_countDown <= 0) {
|
||||
//Repair done
|
||||
_object.IsBroken = false;
|
||||
_fixedCurrentObject = true;
|
||||
SoundFXController.Instance.PlayOvenDoneFX();
|
||||
_countDownText.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#region Counter stuff
|
||||
|
||||
public Transform GetHolderTransform() {
|
||||
return _holderTransform;
|
||||
}
|
||||
|
||||
public void SetObject(Object obj) {
|
||||
_object = obj;
|
||||
}
|
||||
|
||||
public Object GetObject() {
|
||||
return _object;
|
||||
}
|
||||
|
||||
public void ClearObject() {
|
||||
_object = null;
|
||||
}
|
||||
|
||||
public bool HasObject() {
|
||||
return _object != null;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
Reference in New Issue
Block a user