Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class WeaponGenerator : MonoBehaviour
- {
- public List<WeaponData> barrels = new List<WeaponData>();
- public List<WeaponData> scopes = new List<WeaponData>();
- public List<WeaponData> bodies = new List<WeaponData>();
- public List<WeaponData> magazines = new List<WeaponData>();
- public List<WeaponData> grips = new List<WeaponData>();
- public List<WeaponData> stocks = new List<WeaponData>();
- // Update is called once per frame
- void Update()
- {
- if (Input.GetKeyDown(KeyCode.Space))
- {
- GenerateWeapon();
- }
- }
- void GenerateWeapon()
- {
- //TODO: pick weapon type
- ConstructWeapon(GetRandomWeapon());
- }
- void ConstructWeapon(List<WeaponData> parts)
- {
- foreach (WeaponData weaponData in parts)
- {
- // spawn body
- if (weaponData.partType == PartType.Body)
- {
- GameObject insBodyGO = Instantiate(weaponData.itemObject);
- Body insBody = insBodyGO.GetComponent<Body>();
- // spawn other parts
- foreach (WeaponData weaponPrt in parts)
- {
- switch (weaponPrt.partType)
- {
- case PartType.Barrel:
- SpawnWeaponPart(insBody.GetSocket(PartType.Barrel), weaponPrt);
- break;
- case PartType.Magazine:
- SpawnWeaponPart(insBody.GetSocket(PartType.Magazine), weaponPrt);
- break;
- case PartType.Stock:
- SpawnWeaponPart(insBody.GetSocket(PartType.Stock), weaponPrt);
- break;
- case PartType.Handle:
- SpawnWeaponPart(insBody.GetSocket(PartType.Handle), weaponPrt);
- break;
- case PartType.Scope:
- SpawnWeaponPart(insBody.GetSocket(PartType.Scope), weaponPrt);
- break;
- }
- }
- }
- }
- }
- void SpawnWeaponPart(Transform socket, WeaponData partToSpawn)
- {
- Instantiate(partToSpawn.itemObject, socket.position, socket.rotation, socket);
- }
- List<WeaponData> GetRandomWeapon()
- {
- // get random data for each part
- WeaponData randomBody = PickRandomWeaponPart(bodies);
- WeaponData randomBarrel = PickRandomWeaponPart(barrels);
- WeaponData randomScope = PickRandomWeaponPart(scopes);
- WeaponData randomMagazine = PickRandomWeaponPart(magazines);
- WeaponData randomGrip = PickRandomWeaponPart(grips);
- WeaponData randomStock = PickRandomWeaponPart(stocks);
- List<WeaponData> randomizedWeapon = new List<WeaponData>()
- {
- randomBody,
- randomBarrel,
- randomScope,
- randomMagazine,
- randomGrip,
- randomStock
- };
- return randomizedWeapon;
- }
- WeaponData PickRandomWeaponPart(List<WeaponData> weaponData)
- {
- int randomNmbr = Random.Range(0, weaponData.Count);
- return weaponData[randomNmbr];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement