ShipsGadget.Create.cs 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. using GadgetCore.API;
  2. using Subworlds.Scripts;
  3. using UnityEngine;
  4. namespace Subworlds
  5. {
  6. public partial class SubworldsGadget : Gadget<SubworldsGadget>
  7. {
  8. private void CreateShipPart(string name, Texture texture, Texture textureBG, int[][] collisions, int[][] lamp, int tileW = 32, int tileH = 16)
  9. {
  10. var gameObject = Object.Instantiate((GameObject)Resources.Load("z/chunk"));
  11. gameObject.transform.localScale = new Vector3(tileW * 2, tileH * 2, 1);
  12. var rendererBody = gameObject.GetComponentInChildren<Renderer>();
  13. rendererBody.material = new Material(Shader.Find("Transparent/Diffuse"))
  14. {
  15. mainTexture = texture
  16. };
  17. for (int i = 0; i < 6; i++)
  18. GameObject.DestroyImmediate(gameObject.transform.GetChild(0).gameObject);
  19. for (int i = 0; i < 16; i++)
  20. GameObject.DestroyImmediate(gameObject.transform.GetChild(1).gameObject);
  21. for (int i = 0; i < 7; i++)
  22. GameObject.DestroyImmediate(gameObject.transform.GetChild(0).GetChild(0).gameObject);
  23. Component.DestroyImmediate(gameObject.GetComponent<Chunk>());
  24. var bgRenderObject = GameObject.Instantiate(gameObject);
  25. for (int i = 0; i < bgRenderObject.transform.childCount; i++)
  26. GameObject.DestroyImmediate(bgRenderObject.transform.GetChild(0).gameObject);
  27. bgRenderObject.transform.SetParent(gameObject.transform);
  28. bgRenderObject.transform.localScale = new Vector3(1, 1, 1);
  29. bgRenderObject.transform.localPosition = new Vector3(0, 0, -0.3f);
  30. var rendererBG = bgRenderObject.GetComponent<Renderer>();
  31. rendererBG.material = new Material(Shader.Find("Transparent/Diffuse"))
  32. {
  33. mainTexture = textureBG
  34. };
  35. GameObject root = gameObject.transform.GetChild(0).gameObject;
  36. GameObject inst = root.transform.GetChild(0).gameObject;
  37. for (int i = 0; i < collisions.Length; i++)
  38. {
  39. GameObject entry = GameObject.Instantiate(inst);
  40. entry.transform.SetParent(root.transform);
  41. int[] coll = collisions[i];
  42. float w = coll[2] * (2.0f / tileW);
  43. float h = coll[3] * (2.0f / tileH);
  44. float x = coll[0] * (2.0f / tileW) + w / 2;
  45. float y = coll[1] * (2.0f / tileH) + h / 2;
  46. entry.transform.localScale = new Vector3(w, h, 1);
  47. entry.transform.localPosition = new Vector3(x - 1, y - 1, 0);
  48. }
  49. for (int i = 0; i < lamp.Length; i++)
  50. {
  51. int[] coll = lamp[i];
  52. float w = (2.0f / tileW);
  53. float h = (2.0f / tileH);
  54. int type = coll[2];
  55. float x = coll[0] * (2.0f / tileW) + w / 2;
  56. float y = coll[1] * (2.0f / tileH) + h / 2;
  57. GameObject entry = null;
  58. if (type == 0)
  59. entry = Object.Instantiate<GameObject>((GameObject)Resources.Load("prop/" + 2401));
  60. if (type == 1)
  61. entry = Object.Instantiate<GameObject>((GameObject)Resources.Load("prop/" + 2402));
  62. entry.transform.SetParent(root.transform);
  63. entry.transform.localScale = new Vector3(w / 4, h / 4, 1);
  64. entry.transform.localPosition = new Vector3(x - 1, y - 1, -1);
  65. }
  66. GameObject.DestroyImmediate(gameObject.transform.GetChild(0).GetChild(0).gameObject);
  67. GadgetCoreAPI.AddCustomResource("z/Subworlds/" + name, gameObject);
  68. }
  69. private void CreateObject(string name, Texture2D texture, bool large = false)
  70. {
  71. GameObject gameObject = Object.Instantiate<GameObject>((GameObject)Resources.Load("prop/2501"));
  72. Renderer renderer = gameObject.GetComponentInChildren<Renderer>();
  73. renderer.material = new Material(Shader.Find("Unlit/Transparent"))
  74. {
  75. mainTexture = texture
  76. };
  77. if (large)
  78. gameObject.transform.localScale = new Vector3(gameObject.transform.localScale.x * 2, gameObject.transform.localScale.y * 2, 1);
  79. GadgetCoreAPI.AddCustomResource("obj/Subworlds/" + name, gameObject);
  80. }
  81. private void CreateBrakableObject(string name, Texture2D texture, bool large = false, ObjectType type = ObjectType.ORE)
  82. {
  83. var i = new ObjectInfo(type, new Item(57, 1, 0, 0, 0, new int[3], new int[3]), 16, texture).Register(name);
  84. if (large)
  85. {
  86. var t = i.Object.transform.GetChild(0);
  87. t.localScale = new Vector3(4, 4, 1);
  88. }
  89. GadgetCoreAPI.AddCustomResource("obj/Subworlds/" + name, i.Object);
  90. Core.spawnObjects.Add(i.GetID());
  91. }
  92. private void CreateSliverEnemy(string name, Texture2D textureHead, Texture2D textureBody, Texture2D textureTail)
  93. {
  94. GameObject gameObject = Object.Instantiate<GameObject>((GameObject)Resources.Load("e/sliver"));
  95. Renderer rendererHead = gameObject.transform.GetChild(4).GetChild(0).GetChild(0).GetComponentInChildren<Renderer>();
  96. rendererHead.material = new Material(Shader.Find("Unlit/Transparent"))
  97. {
  98. mainTexture = textureHead
  99. };
  100. Renderer rendererBody = gameObject.transform.GetChild(4).GetChild(0).GetChild(1).GetComponentInChildren<Renderer>();
  101. rendererBody.material = new Material(Shader.Find("Unlit/Transparent"))
  102. {
  103. mainTexture = textureBody
  104. };
  105. Renderer rendererTail = gameObject.transform.GetChild(4).GetChild(0).GetChild(2).GetComponentInChildren<Renderer>();
  106. rendererTail.material = new Material(Shader.Find("Unlit/Transparent"))
  107. {
  108. mainTexture = textureTail
  109. };
  110. GadgetCoreAPI.AddCustomResource("e/Subworlds/" + name, gameObject);
  111. }
  112. private void CreateDroidEnemy(string name, Texture2D texture)
  113. {
  114. GameObject gameObject = Object.Instantiate<GameObject>((GameObject)Resources.Load("e/wisp"));
  115. gameObject.name = name;
  116. gameObject.transform.GetChild(0).GetChild(0).gameObject.name = name;
  117. Renderer rendererHead = gameObject.transform.GetChild(0).GetChild(0).GetChild(0).GetComponentInChildren<Renderer>();
  118. rendererHead.material = new Material(Shader.Find("Unlit/Transparent"))
  119. {
  120. mainTexture = texture
  121. };
  122. GameObject.DestroyImmediate(gameObject.transform.GetChild(0).GetChild(0).GetChild(1).gameObject);
  123. Component.DestroyImmediate(gameObject.GetComponent<WispScript>());
  124. gameObject.AddComponent<AttackDroidScript>();
  125. gameObject.transform.GetChild(1).gameObject.SetActive(true);
  126. gameObject.transform.GetChild(1).localScale = new Vector3(65, 40, 1);
  127. AnimationClip clip = new AnimationClip
  128. {
  129. name = "spinn",
  130. wrapMode = WrapMode.Once,
  131. legacy = true
  132. };
  133. clip.SetCurve("", typeof(Transform), "localEulerAngles.z", AnimationCurve.Linear(0, 0, 0.5f, 360));
  134. var animation = gameObject.transform.GetChild(0).gameObject.AddComponent<Animation>();
  135. animation.AddClip(clip, "spinn");
  136. animation.clip = clip;
  137. GadgetCoreAPI.AddCustomResource("e/Subworlds/" + name, gameObject);
  138. }
  139. private void CreateLaserHazard(string name, Texture2D texture)
  140. {
  141. GameObject gameObjectWisp = Object.Instantiate<GameObject>((GameObject)Resources.Load("e/wisp"));
  142. var gameObject = gameObjectWisp.transform.GetChild(0).GetChild(0).GetChild(0).gameObject;
  143. gameObjectWisp.transform.GetChild(3).SetParent(gameObject.transform);
  144. gameObject.transform.SetParent(null);
  145. GameObject.DestroyImmediate(gameObjectWisp);
  146. gameObject.name = name;
  147. Renderer rendererHead = gameObject.GetComponentInChildren<Renderer>();
  148. rendererHead.material = new Material(Shader.Find("Unlit/Transparent"))
  149. {
  150. mainTexture = texture
  151. };
  152. gameObject.AddComponent<BrokenLaserScript>();
  153. var haz = gameObject.transform.GetChild(0).GetComponent<HazardScript>();
  154. haz.damage = 3;
  155. gameObject.transform.localScale = new Vector3(2f, 8f, 1);
  156. gameObject.transform.localRotation = Quaternion.Euler(0, 180, 0);
  157. gameObject.transform.GetChild(0).localScale = new Vector3(1, 1, 1);
  158. var trigger = gameObject.transform.GetChild(0).GetComponent<BoxCollider>();
  159. trigger.size = new Vector3(0.6f, 2, 1);
  160. trigger.isTrigger = true;
  161. var collider = gameObject.transform.GetChild(0).gameObject.AddComponent<BoxCollider>();
  162. collider.size = new Vector3(0.3f, 2, 1);
  163. collider.isTrigger = false;
  164. GadgetCoreAPI.AddCustomResource("haz/Subworlds/" + name, gameObject);
  165. }
  166. private void CreateOldChest(string name, Texture texture)
  167. {
  168. GameObject gameObject = Object.Instantiate<GameObject>((GameObject)Resources.Load("obj/chest"));
  169. Renderer renderer = gameObject.transform.GetChild(0).gameObject.GetComponentInChildren<Renderer>();
  170. renderer.material = new Material(Shader.Find("Unlit/Transparent"))
  171. {
  172. mainTexture = texture
  173. };
  174. Component.DestroyImmediate(gameObject.GetComponent<ChestScript>());
  175. gameObject.AddComponent<OldChestScript>();
  176. GadgetCoreAPI.AddCustomResource("obj/Subworlds/" + name, gameObject);
  177. }
  178. private void CreateBaseBlock(string name, Texture2D texture, float w, float h)
  179. {
  180. var gameObject = Object.Instantiate((GameObject)Resources.Load("z/chunk"));
  181. gameObject.transform.localScale = new Vector3(w, h, 1);
  182. var rendererBody = gameObject.GetComponentInChildren<Renderer>();
  183. rendererBody.material = new Material(Shader.Find("Transparent/Diffuse"))
  184. {
  185. mainTexture = texture
  186. };
  187. for (int i = 0; i < 6; i++)
  188. GameObject.DestroyImmediate(gameObject.transform.GetChild(0).gameObject);
  189. for (int i = 0; i < 16; i++)
  190. GameObject.DestroyImmediate(gameObject.transform.GetChild(1).gameObject);
  191. for (int i = 0; i < 7; i++)
  192. GameObject.DestroyImmediate(gameObject.transform.GetChild(0).GetChild(0).gameObject);
  193. Component.DestroyImmediate(gameObject.GetComponent<Chunk>());
  194. GameObject root = gameObject.transform.GetChild(0).gameObject;
  195. GameObject collision = root.transform.GetChild(0).gameObject;
  196. collision.transform.localScale = new Vector3(1, 1, 1);
  197. collision.transform.localPosition = new Vector3(0, 0, 0);
  198. Core.logger.LogConsole("created: " + "z/Subworlds/" + name);
  199. GadgetCoreAPI.AddCustomResource("z/Subworlds/" + name, gameObject);
  200. }
  201. }
  202. }