ScrapYardGenerator.cs 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using GadgetCore.API;
  2. using System.Collections.Generic;
  3. using System.Reflection;
  4. using UnityEngine;
  5. using Random = System.Random;
  6. namespace ScrapYard
  7. {
  8. public class ScrapYardGenerator
  9. {
  10. private static readonly FieldInfo chunksField = typeof(SpawnerScript).GetField("chunks", BindingFlags.NonPublic | BindingFlags.Instance);
  11. private static readonly Material materialaParalex0 = new Material(Shader.Find("Unlit/Transparent")) { mainTexture = GadgetCoreAPI.LoadTexture2D("bScrapYardbg0.png") };
  12. private static readonly Material materialaParalex1 = new Material(Shader.Find("Unlit/Transparent")) { mainTexture = GadgetCoreAPI.LoadTexture2D("bScrapYardbg1.png") };
  13. private static readonly Material materialaParalex2 = new Material(Shader.Find("Unlit/Transparent")) { mainTexture = GadgetCoreAPI.LoadTexture2D("bScrapYardbg2.png") };
  14. private static readonly Material materialaParalex3 = new Material(Shader.Find("Unlit/Transparent")) { mainTexture = GadgetCoreAPI.LoadTexture2D("bScrapYardbg3.png") };
  15. public static readonly FieldInfo networkStuffField = typeof(Chunk).GetField("networkStuff", BindingFlags.NonPublic | BindingFlags.Instance);
  16. public static readonly FieldInfo tempField = typeof(Chunk).GetField("temp", BindingFlags.NonPublic | BindingFlags.Instance);
  17. public static void GenarateTown(SpawnerScript s, int[] param)
  18. {
  19. try
  20. {
  21. s.backLights.SetActive(true);
  22. s.mainLight.SetActive(true);
  23. s.mainLight.GetComponentInChildren<Light>().color = new Color(0.05f, 0.05f, 0.05f, 0.1f);
  24. s.bg[0].GetComponent<Renderer>().material = materialaParalex0;
  25. s.bg[1].GetComponent<Renderer>().material = materialaParalex1;
  26. s.bg[2].GetComponent<Renderer>().material = materialaParalex2;
  27. s.bg[3].GetComponent<Renderer>().material = materialaParalex3;
  28. var chunks = (GameObject[])chunksField.GetValue(s);
  29. var num = 0;
  30. chunks[num] = (GameObject)UnityEngine.Object.Instantiate(Resources.Load("z/entrance"), new Vector3(224.5f, 0f, 5f), Quaternion.Euler(0f, 0f, 0f));
  31. num++;
  32. chunks[num] = (GameObject)UnityEngine.Object.Instantiate(Resources.Load("z/ScrapYard/chunkBase"), new Vector3((float)(300 + 0 * 128), 0f, 5f), Quaternion.Euler(0f, 180f, 180f));
  33. num++;
  34. int extensionAmount = 0;
  35. for (int i = 0; i < extensionAmount; i++)
  36. {
  37. chunks[num] = (GameObject)UnityEngine.Object.Instantiate(Resources.Load("z/ScrapYard/chunkExtension"), new Vector3((float)(300 + 0 * 128), 64 * (i + 1), 5f), Quaternion.Euler(0f, 180f, 180f));
  38. num++;
  39. }
  40. chunks[num] = (GameObject)UnityEngine.Object.Instantiate(Resources.Load("z/ScrapYard/chunkTop"), new Vector3((float)(300 + 0 * 128), 64 * (extensionAmount + 1), 5f), Quaternion.Euler(0f, 180f, 180f));
  41. num++;
  42. chunks[num] = (GameObject)UnityEngine.Object.Instantiate(Resources.Load("z/exit"), new Vector3(375.5f, 0f, 5f), Quaternion.Euler(0f, 0f, 180f));
  43. num++;
  44. if (Network.isServer)
  45. {
  46. chunks[num] = new GameObject("chunk");
  47. var chunk = chunks[num].AddComponent<Chunk>();
  48. PopulateTown(chunk);
  49. num++;
  50. }
  51. }
  52. catch (System.Exception e) { Core.logger.LogConsole(e); }
  53. }
  54. public static void PopulateTown(Chunk chunk)
  55. {
  56. GameObject[] networkStuff = (GameObject[])networkStuffField.GetValue(chunk);
  57. int temp = (int)tempField.GetValue(chunk);
  58. networkStuff[temp] = (GameObject)Network.Instantiate(Resources.Load("prop/ScrapYard/scrapYardShopBuilding"), new Vector3(250f, -6f + 0.118f, 0.3f), Quaternion.identity, 0);
  59. temp++;
  60. networkStuff[temp] = (GameObject)Network.Instantiate(Resources.Load("prop/ScrapYard/scrapYardMerchant"), new Vector3(255f, -6f - 0.118f * 12, 0.2f), Quaternion.identity, 0);
  61. }
  62. }
  63. }