using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Animations; using Saltosion.OneWeapon.Guns; using Saltosion.OneWeapon.Utils; namespace Saltosion.OneWeapon.Environment { public class VendingMachine : MonoBehaviour { [Header("General")] public float GunLaunchForceMultiplier = 1; public Transform HoleTransform; [Header("Gunstuff")] public int GunsLeft = 3; public List PossibleGuns = new List(); [Header("Graphics")] public SpriteRenderer Sprite; public List Sprites = new List(); [Header("Debug")] public bool DebugExpelGun = false; void Start() { GunsLeft = Mathf.Clamp(GunsLeft, 0, 5); Sprite.sprite = Sprites[GunsLeft]; } void Update() { if (DebugExpelGun) { ExpelGun(); DebugExpelGun = false; } } public void ExpelGun() { GameObject Gun = PossibleGuns[Util.RandomValueBetween(0, PossibleGuns.Count - 1)]; GameObject ShotGun = GameObject.Instantiate(Gun, HoleTransform.position, new Quaternion()); Rigidbody2D Body = ShotGun.GetComponent(); if (Body == null) { Debug.LogError("Shotted Gun has no RigidBody2D!"); } else { Vector2 DownwardForce = new Vector2(0, -1) * (Random.value + 0.2f) * GunLaunchForceMultiplier; Vector2 SidewaysForce = new Vector2(1, 0) * (Random.value * 0.4f - 0.2f) * GunLaunchForceMultiplier; Body.AddForce(DownwardForce + SidewaysForce, ForceMode2D.Impulse); } GunsLeft -= 1; Sprite.sprite = Sprites[GunsLeft]; if (GunsLeft == 0) { Destroy(this); } } } }