mirror of
https://github.com/nothke/quality-control.git
synced 2024-12-23 08:17:29 +00:00
74 lines
1.8 KiB
C#
74 lines
1.8 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
public class Converter: MonoBehaviour
|
|||
|
{
|
|||
|
public List<Product> inputProducts;
|
|||
|
|
|||
|
public ProductType expectedReagent;
|
|||
|
public Transform outputPoint;
|
|||
|
public ProductType conversionProduct;
|
|||
|
|
|||
|
public bool isBroken;
|
|||
|
public float conversionTime = 5f;
|
|||
|
private float _conversionTimer;
|
|||
|
|
|||
|
public Transform refuseLauncher;
|
|||
|
public float launchPower = 10f;
|
|||
|
|
|||
|
public void OnTriggerEnter(Collider other)
|
|||
|
{
|
|||
|
var product = other.GetComponentInParent<Product>();
|
|||
|
|
|||
|
if (product)
|
|||
|
{
|
|||
|
product.gameObject.SetActive(false);
|
|||
|
inputProducts.Add(product);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void Update()
|
|||
|
{
|
|||
|
if (isBroken)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if (inputProducts.Count == 0)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if (_conversionTimer <= 0f)
|
|||
|
{
|
|||
|
var currentProduct = inputProducts[0];
|
|||
|
|
|||
|
if (inputProducts[0].Type == expectedReagent)
|
|||
|
{
|
|||
|
ProductType.SpawnProduct(conversionProduct, outputPoint);
|
|||
|
inputProducts.RemoveAt(0);
|
|||
|
Destroy(currentProduct);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
Expel(inputProducts[0]);
|
|||
|
inputProducts.RemoveAt(0);
|
|||
|
}
|
|||
|
|
|||
|
_conversionTimer = conversionTime;
|
|||
|
}
|
|||
|
|
|||
|
_conversionTimer -= Time.deltaTime;
|
|||
|
}
|
|||
|
|
|||
|
private void Expel(Product product)
|
|||
|
{
|
|||
|
product.transform.position = refuseLauncher.position;
|
|||
|
product.transform.rotation = refuseLauncher.rotation;
|
|||
|
|
|||
|
product.gameObject.SetActive(true);
|
|||
|
|
|||
|
product.GetComponent<Rigidbody>().velocity = launchPower * refuseLauncher.forward;
|
|||
|
}
|
|||
|
}
|